1、准备:
由于调试阶段要经常修改内核,烧写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工具
后面make menuconfig又报错,这次提示已经比较明显了:安装ncurses。
[root@localhost linux-2.6.38]# make menuconfig
HOSTCC scripts/basic/fixdep
HOSTCC scripts/basic/docproc
HOSTCC scripts/kconfig/conf.o
HOSTCC scripts/kconfig/kxgettext.o
*** Unable to find the ncurses libraries or the
*** required header files.
*** 'make menuconfig' requires the ncurses libraries.
***
*** Install ncurses (ncurses-devel) and try again.
***
make[1]: *** [scripts/kconfig/dochecklxdialog] 错误 1
make: *** [menuconfig] 错误 2
应用程序-->添加/删除