APP下载

嵌入式数控系统人机界面开发

2013-12-14陆亭华郭义芬唐厚君

电气自动化 2013年4期
关键词:数控系统内核嵌入式

陆亭华,郭义芬,唐厚君

(上海交通大学 电子信息与电气工程学院,上海 200240)

0 引言

数控系统中一个重要组成部分就是优秀的人机界面模块。数控系统中,应用程序是特定的,要求编译工具必须定制;硬件资源有其有限性、专用性的特点,要合理分配和管理;人机交互的方式上,需要设计有针对性的交互软件。

本文就高性能处理器S3C6410,利用开源嵌入式Linux操作系统,对数控系统中人机交互系统进行了一定研究及开发,主要完成了嵌入式UI开发环境的搭建、输入输出设备的驱动移植、人机交互界面的设计,其中UI开发环境的搭建又包括两方面内容:PC开发环境搭建,即PC主机上交叉编译环境及Qt开发环境的建立;嵌入式系统运行环境搭建,即开发板上内核移植、文件系统、Qt应用库文件及环境变量配置等内容。

其中作为软件载体的UT-S3C6410目标板为基于ARM内核技术的运算和信息处理平台。嵌入式Linux操作系统则以其精简、稳定、开源等诸多优点,在顺利运行Qt程序的同时使得开发过程简便许多。最终搭建的系统最突出的特点在于其可移植性强、开放性强。

图1 系统框架

1 PC开发环境搭建

设计的主要开发任务是在PC主机上完成的,而嵌入式平台仅是目标测试平台。PC主机上的开发环境主要包括交叉编译工具和Qt开发环境。为了对嵌入式系统进行交叉编译,并考虑到兼容性等问题,在PC主机上安装 Linux操作系统(此为 Ubuntu 10.10),主要的搭建工作都在Linux环境下完成。

交叉编译即一种计算机环境中运行的编译程序编译出在另外一种环境下运行的代码的编译过程。要实现针对特定两种计算机的交叉编译,特制的交叉编译工具必不可少。建立针对ARM的交叉编译链,与其他的体系结构相类似,过程大致有以下几个步骤[1]:

(1)下载源文件(包括 binutils、gcc、glibc、linux kernel)、补丁和建立编译的目录

图6给出了τ1=5,Cwf= 1,ηc=ηT=0.85,D1=D2=0.96时,总压比πout与总热导率λT的关系.由图6可以发现,πout随着λT的增加而增大.

(2)建立内核头文件

(3)建立二进制工具(binutils)

(4)建立初始编译器(bootstrap gcc)(5)建立c库(glibc)

(6)建立全套编译器(full gcc)

通过交叉编译工具制作得到合适的编译工具之后,还需要在PC主机Linux系统下安装该编译工具并修改环境变量使之生效,可以使用export指令查看添加是否成功。

完成交叉编译工具的安装之后,就可以开始安装需要使用到的开发工具了,本设计主要的开发工具为开源的Qt界面开发套件。Qt工具的安装包括了Qt Creator、Qt Designer和Qt/Embedded的安装,其中Qt/Embedded的编译比较复杂,但它提供了将应用程序使用于目标嵌入式平台的编译工具和必要支持库,所以必须在主机上安装。

首先进入主机工作目录,在Linux终端下修改使用的交叉编译工具,然后对Qt/Embedded的源代码进行交叉编译:

2 嵌入式运行环境搭建

如图2所示,一个完整的嵌入式 Linux系统组成包括:bootloader、boot parameters、kernel、root filesystem。嵌入式运行环境的搭建包括内核配置、根文件系统制作、库文件移植等内容。嵌入式系统上电启动直至进入内核文件系统的过程中,我们从启动装载程序(bootloader)开始逐一搭建。

嵌入式系统运行平台千差万别,必须要使用适合于自身平台的内核及工具软件。本设计中建立开发环境使用到的部分工具如下[2]:

(1)交叉编译器:cross-4.2.2 -eabi

(2)内核版本:linux2.6.28

(3)Bootloader版本:u-boot-1.1.6

(4)根文件系统:yaffs2

Bootloader代码是芯片复位后进入操作系统之前执行的一段代码,主要用于完成由硬件启动到操作系统启动的过渡,从而为操作系统提供基本的运行环境,如初始化CPU、堆栈、存储器系统等,其功能类似于PC机的BIOS程序,本设计中选用比较流行的 u-boot版本。而 Linux从技术上来说是一个内核(kernel),提供硬件抽象层、磁盘及文件系统控制、多任务等功能,向外部提供了对计算机设备的核心管理调用。Linux是开源的,其内核源码可以在 www.kernel.org网站上下载到。

制作适用于目标平台的bootloader和kernel同样需要使用到之前安装的交叉编译工具。内核制作时,可根据自身平台的资源和应用要求修改内核配置参数(本设计主要须添加LCD)。最后将编译得到的二进制映像文件烧写到目标平台中。

之后还须制作必要的根文件系统。文件系统是包括在一个磁盘(包括光盘、软盘、闪盘及其它存储设备)或分区的目录结构[3]。Linux引入了虚拟文件系统 VFS(Virtual File System),为各类文件系统提供一个统一的操作界面和应用编程接口,它将低层数据结构映射到高层数据结构,决定目录项中存储文件的哪些信息等。Linux启动时,第一个必须挂载的是根文件系统,之后可以自动或手动挂载其他的文件系统。

通过借助Busybox工具可以完成文件系统的制作,大致步骤如下:

(1)配置Busybox,配置制作的文件系统

(2)编译 BusyBox,生成 bin、sbin、linuxrc 文件夹

(3)创建文件系统其它目录(boot、dev、etc、home、lib、mnt、proc、root、sys、tmp、var、usr)

(4)建立、复制文件系统所需的文件(包括console和null节点文件、fstab和inittab文件、rcS文件)

(5)复制lib库文件,完成文件系统制作

制作完成文件系统之后还须将文件系统烧写到目标平台的存储设备内,并设置启动参数使之开机后能自动加载该文件系统。

图2 嵌入式系统上电启动过程

最后需要将程序在目标平台运行必要的支持库文件下载到目标平台中。本设计中将编译好的tslib库和QtEmbedded-arm下/lib、/plugin文件夹下载到目标平台文件系统相同路径下,同时修改目标平台的环境变量,包括库链接路径、触摸屏设备、字体文件等。

3 Qt交互界面设计

Qt/Embedded是著名的Qt库开发商TrollTech发布的面向嵌入式系统的 Qt版本。同样基于客户/服务器体系结构,Qt/Embedded延续了Qt在X上的强大功能,在底层摒弃了 X lib,针对高端嵌入式图形领域的应用而设计,仅采用Framebuffer作为底层图形接口,支持键盘、GPM鼠标、触摸屏以及用户自定义的设备等。FrameBuffer是出现在 Linux 2.2.xx内核当中的一种驱动程序接口,而Qt/Embedded就是采用Framebuffer作为底层图形接口的。

Qt包含了许多支持嵌入式系统开发的工具,其中有两个完全集成在一起实用工具:qmake和Qt designer(图形设计器)[4]。qmake 是 一个为编译Qt/Embedded库和应用而提供的 Makefile生成器。它能够根据一个工程文件(.pro)产生不同平台下的 Makefile文件。qmake支持跨平台开发和影子生成,易于在不同的配置之间切换。Qt图形设计器可以使开发者可视化地设计对话框而不需编写代码,图3所示为Qt开发流程图。

如图4所示,信号和插槽机制是 Qt的核心机制[5]。信号和插槽是Qt自行定义的一种通信机制,它独立于标准的C/C++语言,因此要正确地处理信号和插槽,必须借助一个称为 moc(Meta Object Compiler)的Qt工具,该工具是一个C++预处理程序,它为高层次的事件处理自动生成所需要的附加代码。所谓GUI就是要对用户的动作做出响应,程序中必须把事件和相关代码联系起来,这样才能对事件做出响应。信号与插槽机制则是一种强有力的对象间通信机制,完全可以取代原始的回调和消息映射机制。在Qt中信号和插槽取代了函数地址指针,使得通信程序更为简洁明了,而且不会像回调函数那样产生core dumps。

一般情况下,数控系统人机界面需要实现对特定类型文件的读取,将其以图形形式显示,并且能够提供基本图形来组建比较复杂的图形来满足用户的加工需求。同时,通过交互界面,数控切割机的运行参数情况可以由用户来设置保存以及实时显示。针对这些基本需求,如图5所示,本设计中在主界面下创建4个子界面入口,分别为:

图3 Qt开发流程

文件导入:该子界面下可以选择打开指定格式的文档,将文档中指定的图形在绘图区域绘制出来,并提供了运行管理界面的入口;

图形选择:此界面提供直线、弧线、矩形等六种基本图形作为构图元素,可以设置这些基本图形的参数来绘制所需要的图形,也提供了运行界面的入口;

图4 信号和插槽机制

图5 交互系统基本框架

参数设置:数控系统中所需设置的参数众多,此界面中罗列了三块十余个可设置参数,并可以将设置好的参数保存,下次启动时将自动载入保存过的参数设置;

运行管理:此界面主要设计用来启停数控切割机的运行,目前为对模拟运行的操作,其中将部分参数显示出来,并将所要切割的图形显示出来,返回显示走线过程中当前坐标的位置,如图6所示。

图6 图形选择界面

4 结束语

本文在ARM11高性能处理器的基础上,使用嵌入式Linux操作系统平台,详细地阐述了嵌入式开发平台的构建过程,包括交叉编译环境、PC主机平台、嵌入式应用平台和嵌入式应用程序支持库等。最后依靠Qt/Embedded工具,初步完成了一款针对数控系统的人机界面的实现。

[1]孙纪坤,张小全.嵌入式 Linux系统开发技术详解——基于 ARM[M].北京:人民邮电出版社,2006.

[2]UT-S3C6410开发板Linux使用手册[Z].深圳市友坚恒天科技有限公司,2009.

[3]鸟哥.鸟哥的 Linux私房菜基础学习篇[M].北京:人民邮电出版社,2010.

[4]Jasmin Blanchette,Mark Summerfield.C++GUI Programming with Qt 4[M].New Jersey:Prentice Hall,2008.

[5]蔡志明.精通Qt4编程[M].北京:电子工业出版社,2008.

猜你喜欢

数控系统内核嵌入式
多内核操作系统综述①
强化『高新』内核 打造农业『硅谷』
TS系列红外传感器在嵌入式控制系统中的应用
基于嵌入式Linux内核的自恢复设计
Linux内核mmap保护机制研究
搭建基于Qt的嵌入式开发平台
基于FANUC 32i A数控系统的外部测量设计
西门子840D sl数控系统在SC125大型车铣镗床技术改造中的应用
基于FANUC Oi mate TD数控系统的手动功能开发
数控系统中GUI软件平台设计和实现