微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于路由器的开源嵌入式操作系统学习平台

基于路由器的开源嵌入式操作系统学习平台

时间:04-23 来源:互联网 点击:

然后把引出的串口固定在前面板上,复原外壳即可,这样就得到有两个外接串口的路由器。使用时把UART0通过串口线和PC机的串口相连,通过任意串口通信软件就可以进行数据通信了。
2.2 OpenWrt的移植
由于WRT54GL路由器支持第三方固件,所以OpenWrt移植并不困难,加之OpenWrt支持软件包的定制安装,不需完全从零开始构建,所以可以直接利用现有比较稳定可靠的镜像资源加以改造。当然,如果要构建相应的交叉开发环境,从头做起的话,也可以参考相应文献。由于步骤和Xinu类似,这里不作展开。
2.2.1 部署OpenWrt
首先在www.openwrt.org网站下载WRT54Gsquashfs.bin固件,然后通过路由器管理菜单更新固件,相关步骤如下:http://192. 168.1.1→Adminisllration→Firmware Upgrade。需要注意的是,需要给PC分配192.168.1.2和192.168.1.254之间的一个静态IP地址,以便使PC和路由器在同一个网段。当路由器重新启动后,telnet到其IP地址为192.168.1.1,并发出以下命令:
root@OpenWrt:/#nvram set boot_wait=on
root@OpenWrt:/#nvram set boot_time=10
root@OpenWrt:/#nvram commitreboot
如果觉得使用命令行配置路由器比较麻烦,还可以添加相应的Web GUI包,命令如下:
root@OpenWrt:/#opkg update
root@OpenWrt:/#opkg install luci-light
root@OpenWrt:/#opkg install luci
然后用浏览器打开http://192.1 68.1.1,就能够更容易地配置路由器了。
2.2.2 更新现有OpenWrt
OpenWrt的软件包定制安装和标准Linux没什么区别,这里只介绍如何更新已经运行了OpenWrt操作系统的路由器固件的方法。
步骤和部署OpenWrt极为相似,所不同的是不需要运行NVRAM命令,另外固件文件名不同。第一次部署路由器固件时,需要用.bin文件,更新升级已有固件时则需要用.trx文件。原因是,.bin是将路由器的相关配置信息和.trx封装在一起而生成的镜像,在第一次部署固件镜
像文件时,需要提供这样的信息,而在后续升级时则不再需要,用.trx文件即可,命令如下:
root@OpenWrt:/#cd/tmp
root@OpenWrt:/tmp#mtd-r write openwrt-XXX.trx linux
重启后路由器就重新引导到新版本的固件。
2.3 嵌入式Xinu的编译与移植
Xinu的移植和完整的OpenWrt移植一样,涉及从交叉编译工具环境构成到镜像生成及部署的一系列工作,下面作简要介绍。
2.3.1 构建MIPS交叉编译环境
移植Linux需要专门的交叉编译环境,选择Linux环境构建基于MIPS架构平台的交叉编译工具链,如果采用Windows的环境也可基于Cygwin来构建类似的交叉编译工具链,下面的操作需要拥有ROOT权限。
首先下载binutils,现在可以得到的较新版本是2.2.2,命令如下:
./configure -prefix=/usr/local/project/mipsel-dev-target=mipsel
make
make install
由于这里采用的Linux开发环境是ubuntul2.04操作系统,它的安全管理会把警告也强制转化为错误处理,这就可能造成编译错误。因此,还需要为configure添加“-disable-werror”选项,或者待配置完后修改Makfile中的对应选项。
第二步是为include目录建立链接。
Xinu有自己的小型库用于编译,并不需要完整的UNIX交叉编译器环境,但是因为GCC在编译时需要关联相应的头文件,所以这里还需要建立一个链接,将目标平台相关的include和宿主PC机的include目录链接起来。
mkdir-P/usr/local/project/mipsel-dev/mipsel/usr
In-S/usr/include/usr/local/project/mipsel-dev/mipsel/usr/in-clude
第三步是安装GNU C Compiler编译器,设计中采用的GCC是最新版本的4.7.2,下载解压后进行编译安装。由于ubuntul2.04的环境,安装4.6版本以上的GCC需要GMP、MPFR、MPC这三个库,所以还需要从网上下载三个库的压缩包。需要注意的是,由于MPFR依赖GMP,而MPC依赖GMP和MPFR,所以要先安装GMP,其次MPFR,最后才是MPC。这里三个库在本设计实际使用的版本分别是gmp5.0.1、mpfr2.4.2和mpc 0.8.1。限于篇幅仅对安装gcc-4.7.2作简要叙述。

当以上步骤都完成,就在宿主机上构建了基于littleendian的MIPS架构的gcc cross—compiler。可以看到/usr/local/project/ mipsel —dev/bin/mipsel—gcc,表明安装成功。
2.3.2 构建Xinu镜像
下载并解压相应的压缩包,可以看到类似这样的目录结构:device、lib、loader、system、compile、include、mailbox、shell、test。
和交叉编译相关的主要是compile下的相关文件,由于采用的嵌入式Xinu是最新版本的xinu_mips-2.01,它支持三种不同平台wrt54gl、wrt160nl和虚拟器版本的mipsel—qemu。因此根据我们的硬件平台,进入xinu mips2.01/compile/platforms/wrt54gl目录,对其中的文件platformVars作对应修改,去除CFLAGS的-Werror选项,目的依然是防止把警告当成错误。另外最重要的一个设置是MIPS_ROOT变量,它指出了交叉编译工具所在的目录,如MIPS_ROOT=/usr/local/project/mipsel-dev/bin,这需要根据前面的交叉编译工具的路径相应调整。然后在compile/目录下运行make clean和make这两个命令,就可以获得相应的镜像文件xinu.boot。
2.3.3 部署Xinu镜像
部署并运行编译好的Xinu镜像的第一步是在PC机上运行TFTP服务器,它可以将镜像文件通过网络连接传输到路由器上。Linux上安装TFTP服务器相当简单,只要下载tftp—server软件包后安装即可,这里不再详述。
安装完TFTP服务后,还需简单的设置以使服务运行起来,xinetd是一个服务器守护程序,可以运行许多不同类型的服务器上。当tftp服务正常运行,且xinu.boot文件也正确复制后,就可以进行最后的引导工作了。由于路由器默认的IP地址是192.168.1.1,所以还需要把PC机的IP也设在相同的网段,如192.168.1.2。
这时已经在物理上通过串口将作为后端的路由器和作为宿主机的PC机连接起来了,通过相应的串口通信程序就可实现两者的数据交互。如果一切正常,将可以看到路由器的命令提示符CFE>。
命令格式为boot—elf[host ip]:xinu.boot,其中[hostip]就是链接了作为后端的路由器的PC机,如CFE>boot—elf 192.168. 1.2:xi nu.boot。
这样就可以在路由器上将Xinu引导起来,顺利的话将看到xsh$提示符。Xinu提供了一些最基本的命令,可以用help来查看。
至此已经完成了基本的嵌入式Xinu部署的整个流程,进一步的工作就是修改Xinu的源代码,重新生成镜像文件,用boot—elf[host ip]:xinu.boot命令重新引导运行新的系统。

结语
本文详细阐述了将WRT54GL路由器改造为适合于学习开源OpenWrt与Xinu操作系统的平台的过程。整个改造过程简单、易行,可以贯穿整个嵌入式操作系统的学习过程。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top