0 引言
华南数控使用的嵌入式操作系统是基于2.4版本内核的Linux操作系统,以RTLinux作为实时微内核,在此基础上运行数控软件。此系统在实时性、稳定性测试中获得了不错的性能。随着Linux的不断发展,2.6版本的内核获得了更加稳定的性能,且对硬件支持更加广泛,更重要的是,内核主体中加入了提高中断性能和调度响虑时间的改进,其中最硅麓的改进为采用可抢占内核和更加有效的调度算法。但是高版本的RTLinux不再开源,之前的RTLinux也没有提供对2.6版本的内核的完好的支持,所以升级Linux内核、更换觚Al实时微内核、同时对数控软件的源代码做一些必要的调整,足升级数控系统所必需的、关键的环节。此项目包括两个主要环节:嵌入式系统的升级以及数控软件的调整。
1 数控系统的结构
华南数控的软件系统是一个以实时微内核为底层,操作系统以及数控软件层层铺垫起来的多层次结构。实时微内核在整个嵌入式系统的最底层,与硬件及Linux内核通讯,负责截取及分析中断。LinIlx内核位于实时微内核的上层,其上运行着Linux操作系统本身所需要的程序,提供系统运行的基本功能。严格地说,数控软件中除,一个负责运动控制的内核模块处于与内核同一个层次,其他的部分均属于上层。软件系统的层次结构图如图1所示。
图1 数控软件系统的层次结构
2 嵌入式操作系统的升级
操作系统层面上的更改较少,主要包括为内核打实时补丁、根据嵌入式系统的特点编译内核、安装RTAl实时微内核、升级系统库文件、调整嵌入式系统的启动脚本等。
2.1 编译内核
把刚下载的“洁净”的内核打上RTAI补丁,按照硬件的要求以及实施性的要求配置内核选项。例如,USB、FrameBuffer、ext2/ext3,vfat文件系统、是否需要模块版本支持、是否是多CPU,本地语言支持等。这里需要注意的是,为了获得更好的实时性能,APM BIOS Support支持需要关掉。配置完成之后执行编译安装生成内核与内核模块,用新编译的内核替换原有内核,再将启动时需要加载的内核模块放置到镜像文件illi仃d.img中的合适的位置。
2.2 编译安装RTAI实时微内核
RTAI的编译安装和Linux内核的编译类似,也需要经过配置、编泽、安装3步。由于RTAI的共享内存和实时FIFO需要一些特殊的字符设备,因此在安装了RTAI之后还需要自己动手写一个shell脚本程序,当程序中要用到共享内存和实时FIFO的时候就是用此脚本在/dev目录下创建相应的字符设备。
2.3 升级系统库文件
由于数控软件在编译时,大部分应用程序对库文件的操作是采用动态链接的,因此在运行时仍然需要这些库文件的支持,否则在运行时会提示找不到某些共享目标文件的错误。要升级的库文件主要有:标准C++的共享库文件(1ibstdc抖.so.6),GCC的共享库文件(1ibgcc s.so.1),数学库库文件(1ibm.so.6),c库的库文件(1ibc舯.6),ld.1inIlx.so.2,图形界面正常运行所需要的libdl.so.2,以及线程库libpthread.so.0。以一卜提到的大部分是一些共享库文件的符号链接,在升级的时候需要将原文件替换之后再创建同名的符号链接。
2.4 启动脚本的修改
2.6版本的Linux内核相对于2.4的做了一些调整和修改,例如内核模块、文件系统等,系统启动时可能要加载某些内核模块或者某些文件系统,例如2.6的内核新增了对usb2.O的支持,增加了一些有关于USB的模块,文件系统方面用tmpfs替换了shmfs等,这就要根据实际情况修改启动脚本。