基于路由器的开源嵌入式操作系统学习平台
摘要:针对现有嵌入式操作系统学习中存在的问题,设计了一种既适合基本理论学习,又可以进行高级开发实践的学习平台。通过对WRT54 GL路由器硬件的简单改造,使其成为学习开源OpenWrt和Xinu操作系统的优秀平台。平台设计简单易行,简繁得当,费用低廉,是嵌入式操作系统学习的一个好的选择。
关键词:路由器;嵌入式操作系统;OpenWrt;Xinu
引言
近年来,随着嵌入式系统的飞速发展和广泛应用,裸机模式已无法适应日益复杂的系统开发,嵌入式操作系统已经成为开发中不可或缺的核心软件,对其进行学习研究的需求也日益突出。
嵌入式操作系统的学习平台虽然多种多样,但选择一个合适的平台却并不简单。商业系统通常有着完善的支持,但复杂的架构、昂贵的价格和不公开的源代码使得它们难以成为初学者学习的对象。主流的开源操作系统,虽然可以获得源代码实现,但庞大的代码行,使得系统的机理被复杂的细节掩盖,依然令人望而却步。专门的教学操作系统,有针对地简化了代码实现,但又因为缺乏应用实例而缺乏公信力。
此外还存在硬件平台成本过高造成的软硬件脱节的问题,完全脱离硬件平台的软件学习使人难以全面掌握嵌入式系统。基于虚拟环境进行仿真虽然一定程度上解决了这个问题,但是缺少硬件平台的实践终究无法获得较深的感性认识,极易忽视很多真实环境的注意事项。
针对这些问题,本文提出了一种基于路由器设计嵌入式操作系统学习平台的思路,以LinKsys WRT54GL路由器作为硬件平台,选择开源OpenWrt作为主操作系统用于高级实践开发的学习,嵌入式Xinu作为从操作系统用于基础理论的学习。把两个优秀的嵌入式操作系统集中到同一个硬件平台,比较好地解决了当前嵌入式操作系统学习平台存在的功能繁简不当、软硬件容易脱节的问题,同时大大降低了学习成本。
1 平台的架构设计
1.1 硬件平台选择
现在,市面上常用的无线路由器大多采用的是ARM或MIPS的处理器,这些产品本身就是嵌入式系统的典型应用。更为重要的是有很多产品不仅有着强大的运算能力和丰富的板载资源,而且支持众多第三方固件,可以通过升级固件丰富功能,扩展能力极佳,作为嵌入式操作系
统的硬件平台非常合适。
LinKsys公司的WRT54GL是一个极易采购的经典无线路由器,它拥有200 MHz的处理器,板载4 MB Flash和16 MB Ram完全胜任嵌入式开发的学习、研究和开发。更为重要的是,在网络上已有很多为它设计的开源项目,使得学习资源唾手可得。
1.2 软件平台架构
考虑到学习研究的需要,源代码的公开与否是选择软件平台的首要条件,因此确立了以开源操作系统为选择目标。同时考虑到功能的平衡——既要能够用于操作系统基本原理的学习,又要能够完成进一步的高级功能学习,繁简得当的双操作系统的软件架构就成为当然的选择。这样的架构使得既可以在学习初期利用代码较为简洁的从操作系统完成理论的学习和实践,又可以在后期利用功能强大的主操作系统完成进阶学习,两者结合相得益彰,贯穿整个嵌入式操作系统的学习过程。
1.2.1 主操作系统
在选定了WRT54GL作为硬件平台后,自然就需要为其选择适当的开源路由操作系统。开源路由操作系统非常之多,常见的有Vyatta、Cle arOS、Endian、Untangle、RouterOS、HyperWRT、OpenWrt、DD—WRT等。其中OpenWrt和DD—WRT获得了更为广泛的支持,有着良好的社区资源,它们都可以被看作一个独立的嵌入式设备的Linux发行版,而不仅仅是一个单一的、静态的固件,支持的硬件相当丰富,WRT54GL也不例外。
DD—WRT功能强大而且简单易用,它重点关注的是Web配置方式,这使得DD—WRT的Web功能比OpenWrt强大得多,因此DD—WRT的用户群很庞大。
OpenWrt的优势是用户可以随意地安装软件。OpenWrt的包管理提供了一个完全可写的文件系统,并允许自定义设备和应用软件包,具有完全定制的能力。
DD—WRT和OpenWrt各有优缺点。总的来说DD—WRT倾向于关注使用者的感受,因此较为易用,OpenWrt倾向于关注开发者的使用,因此更为开放。
但是就学习研究而言,OpenWrt的扩展性要更胜一筹。现在的DD—WRT虽然也可以自己装软件,但只能装在jffs或mmc目录中,除jffs、mmc、tmp目录外其他的目录是不可写的,而OpenWrt则不存在这些限制。
此外,OpenWrt系统使用和Linux类似的库文件,比如它所包含的uClibc的C库使得开发人员通过简单的补丁包即可轻松运行现有的Linux程序。而且程序通过TFTP和CFE上传到路由器后,用户还可以使用串行口进行通信和调试。因此我们选择OpenWrt作为主操作系统,便于在掌握了操作系统基本理论之后,进行高阶的学习研究。
1.2.2 从操作系统
Xinu操作系统20世纪80年代中期诞生于美国普渡大学,目标主要是用于操作系统教学。它是一种小巧、优雅的操作系统,支持动态创建进程、动态分配内存等操作系统的功能,有shell命令和I/O函数。同时支持TCP/IP协议,可以管理本地和远程文件系统。
除了应用于教育领域以外,由于Xinu的体积很小,功能强大,所以也非常适用于嵌人式环境,现在已被移植到从8位、16位到32位嵌入式处理器平台上,并有多个工业级的应用,有较好的应用价值。
美国马奎特大学的嵌入式Xinu项目对其进行了相应的研究,并将其移植到嵌入式MIPS平台。嵌入式Xinu是一个持续研究和实施的项目,当前版本支持Linksys公司的WRT54GL和WRT160NL的路由器,以及Qemu虚拟机。因此我们选择嵌入式Xinu作为从操作系统进行基础理论的学习。
2 平台的实现
2.1 硬件改造
由于WRT54GL无线路由器没有把串口外接出来,为了便于OpenWrt和Xinu的移植,并能通过控制台对它们进行交互调试,需要对其进行简单的硬件改造。
该路由器电路本身就有两个UART接口,只是没有从印刷电路板上用接插件引出来,因此将这两个串口引出是平台构建的第一个步骤。
首先,需要将印刷电路板和路由器的外壳分离,找到Linksys公司提供的串行接头连接,它位于电路板的右下角,有10个针脚支持两个串行接口(UART0和UART1),可以用10-pin接插件将这10个针脚引出。
其次,由于路由器和PC机串口的电平不同,所以还要进行相应的电平转换,把路由器的3.3 V电平转换为RS-232的串口电平。这就需要制作一个转换电路,这里采用的串行接口电平转换芯片为ADM202,参考电路如图1所示。
路由器 嵌入式操作系统 OpenWrt Xinu 相关文章:
- 嵌入式Linux的SOHO路由器电路设计(11-18)
- 基于网络处理器的可编程路由器技术研究(06-05)
- 水晶头为什么放不进去路由器接口中?(12-13)
- 教你玩转无线路由器USB接口(12-12)
- 基于WiFi的可实时视频同传的探测小车(10-15)
- 一种基于嵌入式Linux系统的的无线路由器设计方案(09-02)