|
经以上步骤,我们得到了多协议路由器的硬件平台。
3.2 操作系统uClinux
由于硬件的限制,嵌入式系统通常只具有极稀少的硬件资源,如主频较低的CPU、较小的内存等。Linux是一种很受欢迎的类Unix操作系统。它免费并开放源代码,在个人计算机、服务器领域应用广泛。更重要的是,Linux采用模块化设计,实际应用中可以定制,因此Linux也适用于嵌入式领域。
MCF5272是一种没有MMU的微处理器,故我们选择了专为嵌入式NOMMU微处理器定制的操作系统uCLinux、uClinux正是Linux的一个嵌入式版本,其内核的二进制映像文件可以做到小于512KB。UClinux支持多任务,支持多种文件系统,具有完备的TCP/IP协议栈,并支持多种网络协议,可满足Ad Hoc网络节点接入Internet的需要。另外,uClinux可移植性很强,用户通过重新配置、编译内核,能很方便地把其移植到多种处理器计算平台。
嵌入式Linux移植技术是从事嵌入Linux开发的一项关键技术,要求开发人员对Linux内核有相当程度的理解,具备修改内核的能力。下面简单介绍uClinux的移植过程。
(1)精简内核M
精简内核构造内核的常用命令包括:make config、dep、clean、mrproper、zImage、bzImage、modules、modules_install。可使用这些命令把所有可以去掉的选项都去掉,尽可能地精简内核。
(2)修改硬件相关代码
作为源泉代码公开的操作系统,uClinux源码可以从www.uClinux.org获得。系统启动过程中,需要添加三个文件:crt0_rom.s、sysinit.c和rom.ld。crt0_rom.s可以由crt0_ram.s修改得到,它提供一个ROM矢量表以供CPU上电时读取,初始化CPU寄存器,设置程序堆栈,并最终跳转到uClinux内核。Sysinit.c针对实际情况做必要的修改,主要就实际占用的片选资源CS0~CS7、SDRAM控制寄存器SDCR、SDTR作一些修改以适应硬件平台。rom.ld文件用于计算ROMFS文件系统的二进制映像romfs.img在ROM中的实际存放地址。
(3)修改启动脚本
在uClinux完成内核初始化之后,由init(void *)内核调用/bin/init,然后执行/etc/re脚本的命令。
可以利用这个脚本完成系统上电后的自动配置,或运行用户程序。
(4)内核配置与编译
需要建立一个交叉编译环境来完成内核和应用程序的编译,生成ROMFS文件系统,并最终形成一个固化文件。www.uClinux.org也提供这样一个工具包。正确安装后,就可以进行编译了。首先进入源代码目录uClinuxdist,执行make xconfig,在弹出的对话框中选择“Target Platform Selection”,然后进行相应配置。配置完毕后,在源代码目录执行“make dep”以及“make”,就得到了所要的二进制内核映像image.bin,可以直接下载到硬件平台运行。
3.3 路由器软件
移植成功后的uClinux操作系统只向用户提供了一个最基本的系统平台,针对实际应用还必须编写用户所必需的驱动程序和应用软件。MCF5272集成了2个UART控制器、1个从USB控制器和1个以太网控制器。我们又扩展了1个主USB控制器和4个UART控制器,为这些设备编写相应的驱动程序,并且在uClinux和驱动程序的基础上,实现路由器软件(包括路由模块、协议转换模块和无线网络节点浏览Internet代理模块)。
在路由模块中,可根据具体的情况选择适当的路由协议进行加载。根据实际情况,在骨干网中采用按需路由协议AODV。其基本实现思想是:当骨干网某一路由请求节点有分组发送并发现没有到达目的节点的有效路由时,它把启动路由建立过程,即组建一个路由寻找分组RREQ(Route Request Message)并在网络中泛洪寻址。路由表中有到目的节点有效路由,并组建一个路由响应分组RREP(Route Reply Message)并反向回播给路由请求节点建立路由,否则继续泛洪RREQ分组。如果路由请求节点再收到RREP分组,说明网络中已经建立到目的节点的路由,可以直接发送数据分组,否则可能继续发起下一次路由建立过程,也可以对数据丢弃处理。这里值得注意的是,每一个节点在接收RREQ的时候会反向建立到路由发起节点的路由(反向建链过程),以使得RREP可以沿此路径返回源节点;同时,每个节点在接收RREP的时候会正在向建立到目的节点的路由(正向建链过程)以使得分组可以沿此路径把分组传输给目的节点。在上述寻找路由的过程中,RREQ和RREP中均包含路由信息和节点的序号标识,以用来进行路由更新及避免路由闭环。
结语
近年来,嵌入式系统与Linux系统的有机结合,已广泛应用于网络通信、工业控制、机顶盒 、PDA等诸多领域。本文提出了一种基于嵌入式Linux平台的多协议路由器的设计方案,目前该设计方案已经实现。实践证明,此多协议路由器易于实现、性能稳定、运行效率较高,可应用于分级式Ad Hoc网络。
共2页: 上一页 [1] 2 下一页
|