导读:
随着个人电脑和因特网的迅速发展,嵌入式系统的开发也变的越来越流行,而基于Linux的嵌入式操作系统的开发已经越来越受到人们的关注。uClinux是一款专门用于微型控制领域的嵌入式Linux操作系统。它已经被成功地移植到了很多平台上。
这里主要以uClinux嵌入式操作系统为例来介绍嵌入式操作系统的有关知识,并讨论如何在华恒公司的开发套件HHDREZ328—R2上基于uClinux实现Web Server。基于uClinux实现Web Server的主要技术难点是:如何利用嵌入式系统本身有限的资源对信息进行HTTP、SMTP、POP3、TCP、UDP、ICMP、IP及PPP等协议的处理,使之变成可以在互联网上传输的IP数据包,以及可以在内置Web页上浏览的数据。
嵌入式操作系统uClinux 嵌入式操作系统EOS(Embedded Operating System)负责嵌入系统的全部软、硬件资源的分配、调度、控制、协调并发活动。它必须体现其所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能。随着Internet技术的发展、信息家电的普及应用及EOS的微型化和专业化,EOS开始从单一的弱功能向高专业化的强功能方向发展。
Linux是一种非常受欢迎的操作系统,它与Unix系统兼容,源代码开放。它现在广泛应用于服务器领域,而更大的影响在于它正逐渐地应用于嵌入式设备。uClinux正是在这种氛围下产生的。uClinux是面向无MMU的CPU的嵌入式操作系统。它的内核是由Linux 2.0 Kernel发展起来的,目前可以支持Linux Kernel Veriosn 2.0.X。由于Linux具有很高的可移植性,所以嵌入式Linux操作系统可以很容易地提供对特定厂家CPU的支持。该嵌入式Linux操作系统使用的是通用Linux API接口,即Posix标准接口。嵌入式Linux操作系统Kernel小于512KB, Kernel及Tools(fs) 小于900kB。
该嵌入式Linux操作系统具有强大的网络功能,支持PPP、Enternet等多种网络连接方式,包括完整的TCP/IP协议栈及大量的其他协议。目前,有很多的网络协议正在开发中。另外,由于Linux的开放性,任何新的网络协议可以很容易地加入到内核中。
该嵌入式Linux操作系统支持丰富的外部设备。目前在内核级已经实现了对多种外部设备的支持,包括:LCD、触摸屏、键盘、多路串口、Modem、IrDA、PWM音频输出等等。同时,它还支持大量的文件系统:Rom-Disk、Ram-Disk、NFS、ext2、FAT16/32等。
基于uClinux应用程序设计 总的来说,在uClinux上的开发与标准Linux是很类似的。通常有两种情形:
1.基于以太网的开发环境,这种开发方式比较适合团队开发。我们可以把目标机和硬件调试器挂接在局域网上,开发小组可以通过PC机(运行Windows操作系统),以超级终端的形式通过Fterm登陆到运行Linux的主机上。这样每个小组成员都可以编译调试自己的应用程序。在编译通过后,可以通过Fterm以telnet的方式登陆到目标机上,然后通过目标机提供的NFS,mount到 Linux主机,然后就可以调试或运行程序了。采用这种方式比较适合组团开发。
2.如果所设计的程序和硬件的关联不大。可以先在标准Linux上编译和调试通过。然后移植到uClinux。将x86上的GCC编译好的应用程序用交叉编译工具来编译。交叉编译通过后,通过网络(nfsmount)运行交叉编译成功的应用程序;如果程序不能正常运行,需修改程序重新编译。检查的重点放在与uClinux的内存特性有关的那部分代码。
如果编译时发现错误,那么很可能存在以下问题:
(1)交叉编译器或库文件的路径不正确。最彻底的解决办法是重新装一次编译器。
(2)遇到库不支持的函数。此时需要自己把函数的实现做成另外一个库供应用程序使用。如果是uClinux本身不支持的调用,那么就需要改写代码了。
(3)C++的一些写法不太标准,需要修改。
(4)注意fork的问题。uClinux下只有vfork,没有fork。
开发平台选择 硬件系统
华恒公司的HHDREZ328—R2是基于龙珠EZ328的开发套件。龙珠EZ328集成处理器具有丰富的接口资源、低廉的价格、省电低功耗等等个性鲜明的特点,成为Motorola在国内销售最广的处理器。因此,HHDREZ328—R2开发板成为低端手持设备、PDA、显示终端等设备开发商的首选开发平台。其硬件结构如图1所示。
图1 硬件结构图
软件系统
宿主机操作系统采用Red Hat Linux 6.2,完全安装。目标机采用uClinux操作系统。
开发模式
1.系统开发模式,如图2所示。
2.应用程序开发模式
直接在目标板上进行开发,并将宿主机和目标板通过串口相连,在宿主PC 机上运行minicom 作为目标板的显示终端,实现在目标板上的调试。下面给出这种TARGET 开发模式下的开发流程,如图3所示。
图2 系统开发模式图
图3 开发流程图
嵌入式Web Server的实现 由于要实现的Web Server是用在嵌入式系统里,嵌入式系统的容量和处理速度有很大的限制,因此Web服务器的功能也将受到很大的限制。在这里我们按照Web服务器的原理,实现了服务器的基本功能。
工作流程和软件设计
整个系统的工作流程如图4所示。当数据包通过相应接口传送到以太网控制器和MCU后,系统内部的TCP/IP堆栈进行数据包解析和流向判断,然后进行解包或者打包的动作,以继续进行后续工作。显然,最终的处理结果都要通过Web Server来进行。
图4 系统工作流程
网络协议栈的实现
通常,所谓的TCP/IP协议是一个四层协议系统,包括数据链路层、网络层(含IP协议)、传输层(含TCP协议)和应用层,每一层负责不同的通信功能。基于TCP/IP协议可以实现多种功能应用,如:HTTP(超文本传输控制协议)、TELNET(远程登录)、FTP(文件传输协议)、(下转第77页)(上接第76页)SMTP(简单邮件传送协议)、SNMP(简单网络管理协议)等。本文主要讨论HTTP,也就是Web Server在应用层的主要构成协议。
1.TCP/IP协议栈
IP包含编址方案,并提供寻址功能;TCP则是在不同主机的对等进程之间提供可靠的进程间通信。与TCP两端口所连接的实体中,一端为应用程序进程或用户,另一端则为底层协议,如IP协议。TCP在建立连接过程中采用三向握手机制,以保证数据的可靠性。当通信建立以后,就可以在此基础上进行后续的进一步功能扩展,开展例如HTTP、PPP等应用层的协议实现。
2.HTTP
HTTP(超文本传输协议)服务器可使HTML(超文本链接标示语言)页面,如Web页等和其它文件为客户端所使用。用户可以根据自己的需要添加构成Web Server的所有其它动态或静态元素(无论是否符合HTML标准)。限于篇幅,具体示例不再列出。HTTP是WWW上的协议。当用户要浏览服务器上的一个网页时,一个HTTP 请求就会从用户的浏览器发到HTTP服务器。服务器响应这个请求,把指定的网页传送回来,用户才能够看到网页。
E2PROM的编程
在Web Server启动以前,要先把资源文件下载到E2PROM中。在这个方案中采用RS232端口从电脑上传输资源文件。下载程序自动从电脑中载入磁盘的目录结构并在E2PROM中创建E2PROM文件系统。
不足之处
在我们的开发板上有2片1MB的闪存,相当于PC机的硬盘,其中又有一部分来装uClinux嵌入式操作系统,剩下的我们可使用的空间就很小了。这就大大限制了对应用程序功能的开发。在此次开发中,实现了最基本的Web服务器的功能,可以响应浏览器的基本请求,将目录或文件的内容返回给浏览器。
小结 网络技术正在以惊人的速度渗透到社会的每一个角落,嵌入式产品也不例外。因此,嵌入式Web Server的研究意义深远,而基于uClinux的Web Server的研究与实现更具有一定的实用价值。这里给出了基于uClinux构架Web Server的主要原理和方法,至于采用其它平台或方案的实现步骤及过程大同小异,大家可举一反三。(T111)
本文转自
http://www.oklinux.cn/html/developer/qrs/20070520/25530.html