嵌入式Linux系统的网络实现
2010-08-23张祖鹰
张祖鹰
ZHANG Zu-ying
(南京化工职业技术学院,南京 210048)
0 引言
嵌入式系统是电脑软件与硬件的综合体,它是以应用为中心,以计算机技术为基础,软件硬件可裁剪,从而能够适应应用系统,对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。它将操作系统和功能软件集成于计算机硬件系统之中,简单的说就是系统的应用软件与系统的硬件一体化,类似于BIOS的工作方式,具有软件代码小,高度自动化,响应速度快等特点,适合于要求实时的和多任务的体系。
在网络日益重要的今天,越来越多的嵌入式产品有了联网的要求。Linux对网络有很强的支持能力,甚至比大多数操作系统的性能更好。实际上,Linux的发展是人们在网络上的相互合作下进行的,且Linux本来就是用在网络上的。Linux几乎支持所有常见的Internet协议,如FTP、POP、DNS、NIS等等,Linux也适合各种局域网。
1 嵌入式网络的实现方案
基于嵌入式linux的系统以嵌入式微处理器为核心,运行嵌入式Linux操作系统。应用程序可通过网络进行更新,通过键盘进行人机对话,数据可通过LCD现场显示,重要数据可以文件形式保存在Flash等闪存存储器中,数据和报警信息可通过串口向上位机传输,也可通过以太网口向工业以太网或Internet发布信息,用户还可通过网络实现远程监控、远程维护。更为关键的是可充分利用Internet上已有的软件和协议,如ftp、http、Apache、PHP、MySQL等应用程序,迅速搭建前台数据采集系统、测控系统和后台管理系统的通信。其优点是不需要专用的通信线路,可用现成的Internet网络传送数据;可以传送音响和图像;Internet的协议是现成和公开的,大到几十MB的MicrosoftIE浏览器,小到只有600KB的Mosaic浏览器都可以对网络数据进行读取。系统结构如图1。
图1 系统结构图
2 嵌入式设备的网络构成
对于嵌入式设备,系统结构框图如图2。硬件部分,两个串行通信接口可以采用RS232。用以采集来自其他设备的远程的数据,然后由ARM微处理器进行处理,处理后的结果通过以太网接口分发给其他设备。Flash存储器可为一到两个,512K的用于存储引导装载程序,2M的用来承载包含应用程序的操作系统映像。此种设计方式可以使在启动加载方式下,调试不同操作系统的应用程序时,只需要简单的更换包含对应的操作系统的引导程序的Flash芯片就能做到。满足大多数情况的需要,内存选用容量可为16M的16bit的芯片。10M以太网接口的设计是考虑到通用性。为了调试的方便,这里使用了一个JTAG(国际标准测试协议)接口,可以访问其他系统资源,它还可以跟仿真器相连。USB接口分为两个主机接口和一个设备接口。LED用来在调试和使用过程中的显示数据结果。
图2 嵌入式设备结构图
软件实现,软件的实现包括两个方面,一个是系统的内核,另一个是设备的驱动程序。
2.1 首先编译 Kernel的源代码:
执行下列命令:
会出现一个界面,可以根据自己的实际需要来选择。在编译内核的过程中,最繁杂的事情就是这步配置工作。在配置过程中,大部分选项可以使用其缺省值,只有小部分需要根据用户不同的需要选择。选择的原则是将与内核其它部分关系较远且不经常使用的部分功能代码编译成为可加载模块,有利于减小内核的长度,减小内核消耗的内存,简化该功能相应的环境改变时对内核的影响;不需要的功能就不要选;与内核关系紧密而且经常使用的部分功能代码直接编译到内核中。在选项Code maturity level options、Loadable module support、Processor type and features、Networking options、Network device support、ISDN subsystem、Character devices等分别选择适合自己所需要的项目。File systems建议选择相应的项目,为了以后扩充使用。
2.2 为每个设备编写程序
Linux系统的设备驱动程序完成的主要工作是:
1)对每个硬件设备进行初始化和释放;
2)数据传输,将数据从内核传到硬件设备,或者从硬件设备传到内核,读取应用程序传送给硬件设备的数据和回送应用程序请求的数据;
3)检测和处理硬件设备出现的错误和异常;
Linux系统的设备驱动程序的主要组成部分有:
1)自动配置和初始化子程序;
2)服务于I/O请求的子程序;
3)中断服务子程序;
根据所选择的设备和设备所要完成的功能分别进行编写。
3 嵌入式网络设备地址的设置
Linux不仅能很好地用于通用计算机,而且已很好地移植于嵌入式系统。嵌入式Linux,就是经过小型化裁减,而且可以被烧制到容量仅为几KB或几MB的存储器中,不需要硬盘,应用于各种特定的嵌入式环境的专用中,不需要硬盘,应用于各种嵌入式环境的专用操作系统。它保留了Linux的大多功能,特别是网络支持能力。Uclinux就是一个优秀的嵌入式Linux操作系统。在嵌入式系统中,操作系统和所有的应用软件都被固化到Flash等存储设备中。在嵌入式系统中很少使用外存。嵌入式系统的启动往往也是“自动”的,即从上电到处于工作状态,不用人的介入。这是嵌入式设备应用的要求和特点。嵌入式网络设备的启动,很自然会遇到地址的设置问题。
对于通用计算机,其以太网的MAC地址一般是不能变的,它是由网卡生产厂家固化在网卡中的。除了网卡生产厂家,很少有其他人关心它。而IP地址,可以根据用户的需要设为指定值。其设定的IP地址是存储在硬盘上的,操作系统启动时,可以自动取得该值并启用它。
嵌入式网络设备中地址的设置有它的特点:
1)关心和接触嵌入式网络设备MAC地址的人比关心和接触通用计算机MAC地址的人多得多。因为设计、研究和生产嵌入式网络设备的厂家比网卡的厂家多得多。
2)在嵌入式设备中往往没有硬盘,它的操作系统和应用软件通常是打包放在Flash等存储设备中。系统启动时,把Flash中的代码释放到内存中,再在内存中运行。比如嵌入式操作系统Uclinux,在用于S3C4510B这样的带以太网接口的嵌入式设备时,把内核和应用程序代码压成一个映像文件包,在包中有网络部分MAC及IP地址。但这些MAC及IP地址的值是在编译映像文件时设定的,而且在编译后的映像文件中的值是不能直观地看到的,而且在编译后的映像文件中的值是不能直观地看到的,它是压缩了的二进制数据,不方便地映像文件中直接更改MAC及IP地址的值。
3)对于使用同一映像文件的嵌入式网络设备,如果不做进一步的处理,其MAC及IP地址是相同的。这显然不能满足应用,因为不同的设备应该有不同的MAC及IP地址。而编译生成映像文件往往要用十几甚至几十分钟。对于生产厂家,不可能为每台设备编译一个特定的映像文件。
嵌入式网络设备系统的MAC及IP地址设置的基本思想是:把MAC及IP地址存放在Flash的未用扇区(一般在高扇区),嵌入式操作系统启动后,自动运行一个程序去读取MAC及IP地址并设置它。
用户使用的方法是通过计算机串口与网络设备的RS232接口(即串口)相连,使用超级终端的方式,运行网络设备中的程序把数据写入Flash中。
嵌入式网络设备的“身份证”——MAC及IP地址的设置,与通用计算机的设置有独特之处。嵌入式网络设备往往没有硬盘,不能像通用计算机那样操作;也不可能为每一台设备“量身”编译映像文件。可以把MAC及IP地址存放在Flash等存储设备上,嵌入式操作系统启动后,自动运行一个程序去读取MAC及IP地址并设置它。这样就可以在同一映像文件包下方便地配置嵌入式网络设备MAC及IP地址。
4 结论
如今,互联网的应用正在转向以嵌入式设备为中心。系统与Internet的结合实现网络化是一种必然的趋势。把嵌入式linux微内核嵌入到32位MCU系统中,通过构造TCP/IP多种网络协议和基本网络通信协议,充分利用嵌入式操作系统对底层硬件和网络协议的支持,
并对系统实时性的要求改造linux内核和虚拟内存机制来保证任务完成的实时性和可靠性,在各类应用领域有很好的前景,具有开发周期短、系统稳定可靠、适应性强等特点。
[1]班建民,付保川等,基于嵌入式数据库的实时数据采集方法[J].微计算机信息,2005,10.
[2]田霖,李正熙,童朝南.实时仿真与嵌入式系统[J].微计算机信息,2005,13.
[3]王保进,一种提高构件化嵌入式操作系统性能的方案[J].微计算机信息,2005,7.
[4]许海燕,付炎.嵌入式系统技术与应用[M].北京:机械工业出版社,2003
[5]雷澎,Linux 的内核与编程[M].北京:机械工业出版社,2000.
[6]陈莉君,Linux 操作系统内核分析[M].北京:人民邮电出版社,2000.
[7]邹思轶,嵌入式 Linux 设计与应用[M].北京:清华大学出版社,2002.
[8]王学龙,嵌入式Linux系统设计与应用[M].北京:清华大学出版社,2001.
[9]张星烨,基于Linux的嵌入式系统在测控系统中的设计与应用[J].贵州工业大学学报,2002,(4).
[10]waynewolf,著,孙玉芳,译.嵌入式计算系统设计原理[M].北京:机械工业出版社,2002.