271 Ch
- 1. 7.3.1 配置和编译 U-Boot
注意:要编译 U-Boot 请使用光盘带的 arm-linux-gcc-3.4.1 编译器,这是带有浮点处理
功能的编译器。U-Boot 源代码包位于光盘的/OpenSourceBootloader 目录中
首先解压源代码包到工作目录:
#tar xvzf u-boot-1.1.6-FA24x0.tar.gz –C /opt/FriendlyARM/mini2440
执行该命令将把 U-Boot 源代码解压到/opt/FriendlyARM/mini2440 目录。
再检查一下当前编译器版本,执行:
#arm-linux-gcc -v
如图,注意是带软浮点运算功能的编译器:
配置 U-Boot 十分简单,进入 U-Boot 目录,执行:
#make open24x0_config
#make
就可以开始编译了,编译完毕,如图所示生成 u-boot.bin
第 - 271 - 页
- 2. 7.3.2 把 U-Boot 烧写到开发板
要烧写 U-Boot,需要把开发板拨动开关 S2 设置为 Nor Flash 启动,连接好串口和 USB
线,打开超级终端,打开电源,串口显示如图:
第 - 272 - 页
- 3. 选择功能号 “a” 打开 DNW,
, 确认 USB 连接正常 OK, UsbPort Transmit/Restore,
点
选择刚才所编译的 u-boot.bin,下载和烧写很快就会结束。
把 mini2440 启动模式改为 Nand Flash 启动,重新复位或者重启开机电源开关,在串
口终端可以看到如图信息,如果开发板中已经安装了 linux 系统,U-Boot 将会自动启动它,
否则会进入 U-Boot 的功能菜单(也可以根据提示,在开机后 3 秒中内按任意键进入):
第 - 273 - 页
- 6. 第八章 配置和编译 linux 内核
注意:编译内核需要设置交叉编译环境为 3.4.1 版本的编译器,请参考“建立 linux 开
发环境”一节。
8.1 使用缺省配置文件编译内核
8.1.1 解压内核源代码
Linux 内 核 的 源 代 码 包 位 于 光 盘 的 linux 目 录 , 您 在 该 目 录 下 还 会 看 到 类 似
linux-2.6.13-mini2440_20080910.tgz 的文件。
把内核源代码包复制到某一个目录,进入该目录,运行以下命令:
#tar xvzf linux-2.6.13-mini2440_20080910.tgz –C /opt/FriendlyARM/mini2440
第 - 276 - 页
- 8. 8.1.3 编译内核
再次提示:编译内核需要 arm-linux-gcc-3.4.1 版本的编译器,请务必检查安装好。
输入以下命令,开始编译内核:
#make zImage
第 - 278 - 页
- 10. 您可以使用以上章节介绍的方法把 zImage 下载到开发板测试。
8.1.4 各个 Linux 驱动程序源代码位置
说明: 解压内核源代码(linux-2.6.13 开头的 tgz 压缩文件)可以找到如下驱动, mini2440
提供 linux-2.6.13 内核 100%完全可以使用的驱动源代码,绝无库文件,敬请放心使用。
(1)DM9000 网卡驱动
kernel-2.6.13/drivers/net/dm9000x.c
(2)串口(包括三个串口驱动 0,1,2,对应设备名/dev/tts/0,1,2)
kernel-2.6.13/drivers/serial/s3c2410.c
(3)实时时钟 RTC 驱动
kernel-2.6.13/drivers/char/s3c2410-rtc.c
(4)LED 驱动
kernel-2.6.13/drivers/char/qq2440_leds.c
(5)按键驱动
kernel-2.6.13/drivers/char/qq2440_buttons.c
(6)触摸屏驱动
kernel-2.6.13/drivers/input/touchscreen/s3c2410_ts.c
第 - 280 - 页
- 11. (7)yaffs 文件系统源代码目录
kernel-2.6.13/fs/yaffs2
(8)USB 鼠标、键盘源代码
kernel-2.6.13/drivers/ usb/input/hid-input.c
(9)SD/MMC 卡驱动源代码目录(在 2.6.13 内核中仅支持 2G 容量以内的 SD 卡)
kernel-2.6.13/drivers/mmc
(10)Nand Flash 驱动
kernel-2.6.13/drivers/mtd/nand
(11)UDA1341 音频驱动目录
kernel-2.6.13/ sound/oss/uda1341.c
kernel-2.6.13/ drivers/l3
(12)LCD 驱动(包含 3.5quot;, 7quot;, 8.4quot;, 10.4quot;, 12.4quot;, 15quot;等大小的驱动)
kernel-2.6.13/drivers/video/s3c2410fb.c
(13)优盘支持驱动
kernel-2.6.13/drivers/usb/storage
(14)中星微 USB 摄像头驱动
kernel-2.6.13/drivers/usb/media/gspca
8.2 定制 linux 内核
上面我们使用缺省文件配置和编译了内核,其实 linux 内核的配置选项有很多,下面我
们就常见的一些选项分别予以图解,帮助你尽快熟悉内核配置,以便定制自己需要的内核。
运行 make menuconfig 后,进入内核配置主菜单
第 - 281 - 页
- 13. 可以看到,系统大部分使用了标注了 S3C2410 的选项,这是因为 S3C2410 和 S3C2440
的很多寄存器地址等地址和设置是完全相同的, 该版本的 linux-2.6 内核不再对这两种 CPU 分
别设置。
如果您要选择板级选项,可以进入 S3C24XX Implementations 子菜单,里面有很多常
见的使用基于 S3C2410 和 S3C2440 的目标板平台选项
第 - 283 - 页
- 14. 它们分别对应于 arch/arm/mach-s3c2410/mach-* 开头的文件, IPAQ H1940 对应于
如
mach-h1940.c,我们的开发板平台为 mini2440,它和 QQ2440 使用基本相同的配置,因此它
对应于 mach-qq2440.c。另外,在这个文件中,还会用到一个机器码 MACH_TYPE,该机器
码的定义文件为 arch/arm/tools/mach-types,其中,我们开发板的机器码为 782,它还对应于
vivi 源代码中 include/platform/smdk2440.h 文件的 MACH_TYPE
8.2.2 如何配置各个尺寸的 LCD 驱动支持
在主菜单里面,选择 Device Drivers,按回车进入
第 - 284 - 页