今天听中央经济广播电台说,今年有559万大学毕业生,大学生的就业形式严峻.我想那些精通Linux开发的毕业大学生们,估计一点也不用担心,因为他们已经不再是一颗大白菜了.
最近在帮一个朋友把OpenWrt移植到一块单板上,有一些心得,分享给大家.
OpenWrt是一个很好的学习Linux的平台,而且使用一台现成Linksys的路由器做为你的硬件开发平台.希望下面对OpenWrt的开发环境的一些介绍能够对初学Linux的嵌入式开发的同学们有用.(下面的文字有部分翻译自OpenWrt的Document)
当对于刚刚开始做嵌入式linux设备的开发的最大挑战是:你不能只安装一个linux拷贝就期望能够生成firmware.由于大多数嵌入式设备的硬件平台大多数时间和你的开发机器的硬件不兼容,因此需要一个过程叫做交叉编译,才能编译并生成一个的linux发行版本运行在你的设备上.
这个创建交叉编译器的过程比较复杂.大多数情况下你不会这样做,一般使用一个现成的交叉编译工具,这样能够节省很多时间,但是这个现成的工具一般不是最新的,且一般不会更新.同样对于linux kernel来说,一般使用单板或者芯片供应商提供的,它一般不是最新的,而你并不清楚这个kernel是否打过补丁,做过哪些修改.
在OpenWrt的开源项目,它只提供了你需要的源代码包的补丁,当你编译的时候,它的Makefile能够从网站上下载源代码,打补丁,编译,安装.这些包包含了你需要的linux kernel,交叉编译工具,C库,应用程序等.简单的操作就能够实现生成你需要的firmware.下面是一个例子,你会发现实在太简单和方便了.
在一台安装linux的主机上(我用的是Fedora Core 4, 这个环境的搭建可以参考我的blog的文章《eCos 开发环境搭建指南-1.0.0》),编译一个Linksys WRT54G的firmware,只要下列步骤:
1. svn checkout https://svn.openwrt.org/openwrt/trunk kamikaze 下载OpenWrt的主干版本
2. cd kamikaze
3. make menuconfig 配置你需要的硬件平台,需要的软件包等
4. make 编译
OpenWrt会帮你生成开发环境,编译和安装交叉编译工具,编译linux kernel等.当然它会下载所有源码,因此第一次编译的时间会很长(以后再编译就很快了),而且你一定要确保你的linux主机始终接在Internet上.
当前OpenWrt支持下面的硬件平台:
AMCC Taishan [2.6]
AMD Alchemy AU1x00 [2.6]
Atheros [2.6]
Atmel AVR32 [2.6]
Broadcom BCM947xx/953xx [2.4]
Broadcom BCM947xx/953xx [2.6]
Intel XScale IXP4xx [2.6]
Magicbox [2.6]
Mikrotik RouterBoard 532 [2.6]
x86 [2.6]
这些硬件平台大多基于厂商提供的一些基于Linux的产品,当前OpenWrt已经支持全球的76家厂商的产品,最值得一提的就是Linksys WRT54G的无线路由器(v1-v4版本是基于linux的,v5以上是vxWorks版本的,因此如果购买时需注意版本号,要买旧货,taobao上有卖),OpenWrt开源项目最初就是基于这款的路由器,后来还衍生出DD-WRT,TOMATO等开源项目.
下图是我的编译一个截屏