HZDJ 型主断路器试验台的嵌入式Linux 系统设计.pdf
-1-HZDJ 型主断路器试验台的嵌入式 Linux 系统设计HZDJ 型主断路器试验台的嵌入式 Linux 系统设计1 李中奇(华东交通大学 电气与电子工程学院,江西 南昌 330013)摘要:摘要:介绍了HZDJ型主断路器试验台的嵌入式Linux系统设计。Linux是一个成熟的开放源码的现代操作系统,具有内核稳定,功能强大以及极好的硬件兼容性和软件可裁减性,非常适合应用在嵌入式领域。本系统是采用Linux-2.4.18-14内核,主要包括Grub引导装载程序、初始化程序、设备文件、uClibc运行库、MiniGUI图形用户界面、MySQL数据库以及在此基础上构建的应用程序。关键词:嵌入式系统;Linux;uClibc;MiniGUI;MySQL 中图分类号:TP316 文献标识码:A Design Linux embedded operating system for HZDJ Test Equipment of Main Break Li Zhong-Qi(School of Electrical and Electronic engineering at East China Jiao tong University,Nanchang 330013,China)Abstract:To design Linux embedded operating system for HZDJ Test Equipment of Main Break is introduced.Linux is a modern mature operating system with open source code and suitable to embedded field,which has steady kernel,powerful function,better features of hardware compatibility and software flexibility.In this system,the kernel of Linux-2.4.18-14 is used.The system mainly includes Grub boot loader,initialization programs,device files,uClibc lib files,MiniGUI and MySQL database,based on which the user programs are built.Key words:Embedded operating system;Linux;uClibc;MiniGUI;MySQL 0.引言引言 HZDJ 型主断路器测试台是华东交通大学交通信息工程及控制研究所开发的新一代电力机车主断路器智能检测设备。以前主断路器测试台多采用集中式结构。即测试主机,时间测试装置,电阻测试装置,机械特性测试装置和真空度测试装置都集中在一起,结构庞大造价高,由于机务段的检修制度,造成其中一些设备的使用率较低,常年暴露在车间内,及容易老化或损坏。我们设计的主断路器测试台采用采用分布式结构。主机小巧灵活,其它测试装置分别成各自嵌入式系统平台,主机和个测试装置采用 485 通信,主机可将测试结果通过网络接口上传到机务段检修网络。操作系统是管理硬件和软件资源、控制程序运行、改善人机界面和为应用软件提供支持的一种系统软件。在检测装置智能化、网络化的趋势下,需要一个高度简练、界面友善、质量可靠、应用广泛、易开发、多任务,并且价格低廉的操作系统作为应用软件操作平台。Linux 操作系统以其“开放源码”、低成本、系统性能稳定、网络功能强大等优点成为嵌入式领域的首选操作系统。本检测仪以自行裁减的大小约 10M 的微型 Linux 为软件操作平台,不仅无需支付购买操作系统和应用软件的费用,而且大大降低了硬件平台的资源消耗,降低了硬件成本。减小了测试系统的结构。本文给出了该型主断路器测试台主机的嵌入式 Linux系统设计过程。1.Linux 系统的定制系统的定制 内核是一个操作系统的核心。它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。为了裁减掉不需要的功能,增加电子盘驱动、frambuffer 作者简介作者简介:李中奇(1975),男,黑龙江哈尔滨人,硕士,主要从事测控技术和嵌入式系统开发等方面的研究和开发。-2-等功能,重新编译 kernel 2.4.18-14 内核。进行内核配置,去除不需要的选项。1.1安装和配置源系统 安装Red Hat Linux 8.0(kernel 2.4.18-14)作为源系统,并在该系统上构建uClibc环境,用uClibc来代替庞大的glibc,使之更适合嵌入式系统的需要。1.2创建目录 Linux 采用的是树形结构。最上层是根目录,其他的所有目录都是从根目录出发而生成的。在根目录下建立如下目录:/bin (主要包括系统中各种基本命令)/boot(系统启动目录,主要包括引导装载程序 Grub 相关文件,内核镜像文件vmlinuz-2.4.18-14,内核引导盘 initrd-2.4.18-14.img)/dev (包括系统所需各种设备文件,/dev/console,/dev/null,/dev/hda,/dev/tty 等)/etc (包括系统的各种配置文件,如 inittab,rcs 等)/lib (包括系统所需的共享函数库)/sbin(包括系统中各种重要的应用程序,如 mingetty,fsck 等)/mnt (系统挂载目录)/usr,/tmp,/var,/home,/initrd,/proc 等。鉴于嵌入式系统资源有限,也不需要过多的功能,所以需要重新编写/etc/inittab、/etc/rcs、reboot、halt 等脚本;为了支持电子盘,必须在/dev 目录下创建 mtd0、nftla、nftla1 等设备文件。1.3 引导装载程序 引导转载程序是系统加电后运行的第一段软件代码。在个人计算机 PC 中,引导装载程序是由 BIOS 和位于硬盘 MBR 中的 OS Boot Loader 一起组成的。BIOS 在完成硬件检测和资源分配后,将硬盘 MBR 中的 Boot Loader 读到系统 RAM 中,然后将系统控制权交给 OS Boot Loader。Boot Loader 的主要任务是将内核映像从硬盘读到 RAM 中,然后跳转到内核入口,启动操作系统。在本系统中我们采用由 BIOS 和 OS Boot Loader(我们采用目前比较常用的 Grub 引导程序)一起组成引导装载程序。要将引导装载程序 Grub 安装在 DOM 盘的 MBR 中,需要如下步骤:(1)在 Linux bash 中以 root 身份运行 grub (2)在 grub提示符处,输入:grub root(hd1,0)grub setup(hd1)如果安装成功,则会提示 Successful。1.4 构建 Linux 微内核 内核是 Linux 系统的核心。针对嵌入式系统的软硬件环境,对内核进行定制,是构建一个有效的嵌入式系统的基础。以下是该系统构建内核的步骤:1)cd/usr/src/linux-2.4.18-14 2)make mrproper 3)make xconfig 在打开的内核配置菜单中,按照系统的软硬件环境对内核进行配置。4)make dep make bzImage make modules make modules_install-3-5)将生成的内核镜像文件 bzImage 拷贝到/boot cp arch/i386/boot/bzImage /mnt/doc/boot/vmlinz-2.4.18-14 6)在/boot 下生成内核引导盘 initrd-2.4.18-14.img,并复制到目标系统。mkinitrd initrd-2.4.18-14.img 2.4.18-14 cp initrd-2.4.18-14.img/mnt/doc/boot/1.5 实现自动登录 实现启动级别为 3 是的自动登录,主要包括修改 mingetty 和 login 的源代码。1)mingetty 首先,安装 mingetty 的源代码包,打开 mingetty.c 文件。然后,找到如下代码:while(logname=get_logname()=0);/mingetty.c 文件 438 行 execl(_PATH_LOGIN,_PATH_LOGIN,-,logname,NULL);error(%s:cant exec _PATH_LOGIN:%s,tty,sys_errlisterrno);将其修改为:/while(logname=get_logname()=0);/mingetty.c 文件 438 行 logname=checker;execl(_PATH_LOGIN,_PATH_LOGIN,-,logname,NULL);error(%s:cant exec _PATH_LOGIN:%s,tty,sys_errlisterrno);最后,重新编译,生成 mingetty。2)login 安装 util-linux-2.11r-10.src.rpm 软件包,修改 login.c 文件,402 fflag=hflag=pflag=0;/login.c 文件 402 行 403/passwd_req=1 /缺省时,要求进行密码验证,注释掉本行 404 passwd_req=0 /添加本行 编译生成 login。将生成的 mingetty 和 login 拷贝到目标系统相应位置,即可实现自动登录。2.安装及配置MiniGUI图形系统2.安装及配置MiniGUI图形系统 2.1 FrameBuffer支持 MiniGUI的运行需要目标系统内核支持FrameBuffer,这个我们应该在构建系统内核时完成。然后修改目标系统Grub的配置文件grub.conf:default=0 timeout=5 splashimage=(hd0,0)/boot/grub/splash.xpm.gz title Red Hat Linux(2.4.18-14)root(hd0,0)kernel/boot/vmlinuz-2.4.18-14 ro root=/dev/hda1 vga=0 x0311 initrd/boot/initrd-2.4.18-14.img 2.2 编译并安装MiniGUI函数库 首先解开函数库文件压缩包:tar zxvf libminigui-1.3.3.tar.gz 完成后进入目录libminigui-1.3.3,运行configure命令:./configure 然后编译并安装函数库:make-4-make install 2.3 安装MiniGUI资源文件 用tar命令解开资源文件压缩包minigui-res-1.3.3.tar.gz,执行make install即可正确安装。2.4 移植MiniGUI到目标系统 以上步骤已完成了MiniGUI的开发运行环境的安装,在目标系统中运行MiniGUI的应用程序,只需将编译好的MiniGUI运行库文件libminigui-1.3.so.3,配置文件MiniGui.cfg和资源文件拷贝到目标系统相应目录即可。3.安装MySQL数据库 3.安装MySQL数据库 MySQL是一种小型、功能强大、源代码开放的关系型数据库管理系统,非常适合应用于嵌入式系统中。在目标系统中安装MySQL数据库,我们采用从源系统中移植的方法,其具体步骤为:1)在源系统安装MySQL Server和MySQL Client 2)从源系统中移植MySQL MySQL安装完成后,它的数据库文件、配置文件和命令文件分别在不同的目录。其数据库目录/var/lib/mysql/,配置文件/usr/share/mysql,相关命令/usr/bin/和/usr/sbin/(主要是mysql 和mysqld等)。了解了其主要文件分布之后,我们只需将MySQL运行所需的基本文件分别复制到目标系统中相应位置即可。4.结论结论 在本系统中采用了104-1542CLD工业控制控制主板,256M SDRAM,以及64M DiskOnChip,按照以上步骤,使用Red Hat Linux 8.0作为源系统,最终建立了包括Linux系统,MiniGUI图形系统,MySQL数据库服务器和客户端等在内的一共9.6M的目标系统,该系统目前已成功运行在HZDJ型电力机车主断路器试验台主机中,运行稳定可靠。本文作者创新点本文作者创新点:本文采用源代码开发、可任意裁剪、免费的嵌入式 linux 操作系统主断路器检测平台操作系统,和以往测试台比较结构简单,造价低廉,运行安全稳定。项目经济效益:项目经济效益:每测试台软件造价比一般低 1 万元。批量生产效益可观。参考文献参考文献 1 赵洁,丁香乾嵌入式 Linux 环境网络驱动程序的开发及实现原理J 微计算机信息,2008,6-2:64-66。2彭晓明,王强.Linux核心源代码分析.人民邮电出版社,2000:23-69 3刘峥嵘,张智超,许振山.嵌入式Linux开发详解.机械工业出版社,2004:56-185 4Leon Atkinson.MySQL核心编程高级开发者指南.清华大学出版社,2003:78-102 5北京飞漫软件技术有限公司.MiniGUI用户手册,2004:29-76 作者简介:作者简介:李中奇:(1975),男,黑龙江哈尔滨人,硕士,主要从事交通信息工程及控制、测控技术和嵌入式系统开发等方面的研究和开发。Biography:Li ZhongQi,Male,Born in HERBIN City、HELONGJIANG Province,Master,Research area:embeddedsystem