【精品博文】嵌入式3G机器人项目实战——工具链的编译
工具的获得有多种途径,第一种方法也是最简单的一种方法是在下面这个网站下载
http://www.codesourcery.com/sgpp/lite/arm/portal/release1600在这个网站上下载的工具链默认支持的是ARMV5的指令集,而我们的s3c2410使用的是ARV4T的,所以在使用这个工具链的的时候我们在编译的时候需要加参数-march armv4t。第二种方法是自己编译移植支持armv4t的工具链,编译方式参考实验指导书,这里我们采用的工具链是arm-none-linux-gnueabi-gcc-4.3.2
3.2 uboot移植
u-boot我们采用的是u-boot.2010.03的版本,具体的移植步骤参考实验指导书
3.3 内核移植
内核的移植分为两个部分,一部分是基本驱动的添加如nand flash、网卡等,这部分的移植参考实验,另一部分驱动的添加我们在下面一一介绍。
3.3.1 摄像头驱动的移植
我们选择的摄像头使用的芯片是中星微的ZC301,这个摄像头的驱动在内核里已经支持,我们需要做的工作是通过配置内核选项,使我们的内核支持这个摄像头。
make menuconfig
Device Drivers --->
<*> Multimedia support --->
<*> Video For Linux
[*] Enable Video For Linux API 1 (DEPRECATED) (NEW)
[*] Video capture adapters (NEW) --->
[*] V4L USB devices (NEW) --->
<*> USB Video Class (UVC)
[*] UVC input events device support (NEW)
<*> GSPCA based webcams --->
<*> ZC3XX USB Camera Driver
在摄像头驱动驱动中添加如下代码
修改文件drivers/media/video/gspac/gspca.c
220 goto error_buffer;
221 }
+ urb->transfer_flags = URB_NO_TRANSFER_DMA_MAP;
222 usb_fill_int_urb(urb, dev,
223 usb_rcvintpipe(dev, ep->bEndpointAddress),
无线网卡驱动的移植
我们选择的无线网卡是ralink的rt73芯片,这个芯片的驱动在内核中也有了支持,但是内核中的这个驱动功能有限,所以我们需要去ralink官网上去下载驱动,但是我们还是需要去配置内核,选择wifi相关的选项。
1) 内核配置
make menuconfig
[*] Networking support --->
-*- Wireless --->
<*> cfg80211 - wireless configuration API
<*> Generic IEEE 802.11 Networking Stack (mac80211)
[*] Enable mac80211 mesh networking (pre-802.11s) support
Bus support --->
<*> PCCard (PCMCIA/CardBus) support --->
Device Drivers --->
[*] Network device support --->
[*] Wireless LAN --->
<*> Aviator/Raytheon 2.4GHz wireless support
1) 驱动移植
a) 驱动下载
下载网站http://www.ralinktech.com/
下载驱动2010_0817_RT73_Linux_STA_v1.1.0.4.tar.bz2
b) 驱动编译
解压内核并修改makefile
tar xvf 2010_0817_RT73_Linux_STA_v1.1.0.4.tar.bz2
cd 2010_0817_RT73_Linux_STA_v1.1.0.4
vim Makefile
修改Makefile内容为
5 #PLATFORM=PC
6 PLATFORM=CMPC
33 #EXTRA_CFLAGS += -DDBG
40 ifeq ($(PLATFORM),CMPC)
41 LINUX_SRC = /source/kernel/linux-2.6.35
42 endif
注:#EXTRA_CFLAGS += -DDBG 一定要关掉,否则终端会不停的循环打印扫描网络的信息
make
c) 安装
编译好之后我们关心的文件有三个rt73.bin、rt73.ko和rt73sta.dat将这些文件拷贝到我们做好的文件系统中。
cp rt73.ko /source/rootfs/drivers
cp rt73.bin /source/rootfs/etc/Wireless/RT73STA/
cp rt73sta.dat /source/rootfs/etc/Wireless/RT73STA/
到此为止,移植成功了,继续驾校。。。。。