由于调试阶段要经常修改内核,烧写flash比较耗时,准备采用u-boot+uImage+initrd机制,内核基础版本采用linux 2.6.38
单板需要支持的:
CPU: S3C6410 ARM1176JZF-S
DDR: 256MB
FLASH:MLC 2 NAND FLASH 2GB
串口 4
网口 DM9000
RTC驱动
看门狗
音频驱动
USB
(USB HOST,摄像头,无线网卡,3G上网卡,键盘,鼠标,优盘,移动硬盘)
SD卡
SD WIFI
SPI
I2C
GPIO
按键8个
DA输出
LCD
CMOS
由于一次配置后所有驱动比较困难,计划先配置编译出一个可用的内核,后面再对每一个驱动进行配置和确认,初步考虑第一次需要配置的地方有:
CPU体系/支持initrd机制
2、内核代码下载地址:
ftp://ftp.kernel.org/pub/linux/kernel/v2.6/
3、配置:
3.1 make menuconfig是出现2个错误:
A、安装CentOS时没有安装gcc工具
B、安装centos时没有安装ncurses
3.2具体配置:
配置CPU和单板,先不深究单板做了哪些修改:
System Type-->ARM system type-->Samsung S3C64xx System Type-->MINI 6410 initrd机制: General setup-->Initial RAM filesytem and RAM disk(initramfs and initrd)support 后面需要调试驱动模块,对于加载模块需要修改选项: 取消下面两个选项: Enable loadable module support-->Module versioning support Enable loadable module support-->Source checksum for all modules 确定不需要的,取消配置,这是给笔记本电脑使用的内存卡总线: Bus support -->PCCard (PCMCIA/CardBus) support 4、make menuconfig出现的错误解决:
[root@localhost linux-2.6.38]# make menuconfig
HOSTCC scripts/basic/fixdep
/bin/sh: gcc: command not found
make[1]: *** [scripts/basic/fixdep] 错误 127
make: *** [scripts_basic] 错误 2
这个真是折磨了我好几天,因为我总是把注意力集中在交叉编译链arm-linux-gcc上,一直以为这个没有安装好,可是我前面都已经编译过用户态程序了啊,为什么?终于想到这个配置界面是运行在虚拟机的linux系统上的,也就是他不应该用arm-linux-gcc来编译,而是要用linux系统本身的gcc工具来编译,一是使用命令which gcc,果真我安装的centos5.5,并没有安装gcc工具。手动安装后,问题解决。
应用程序-->添加/删除 centos安装gcc工具