首先先说linux配置,基本上是用 arch/arm/configs/s3c2410_defconfig 来修改
#cp arch/arm/configs/s3c2410_defconfig .config
#make menuconfig ARCH=arm
配置内核,参考内核配置手册,即每一个项的作用,一般修改的就是system type 里的2410 2440之类的,然后修改一下device driver,看哪个要哪个不要,再修改一下file system
修改device driver时要注意block device里的一个选项,Default Ramdisk
它是指你如果用ramdisk文件系统时,引导的ramdisk镜像大小,详情后面有,主要是启动不了
配置完就编译
成功后并不能直接下载到uboot里运行,为什么?缺少头信息,要加,怎么加?
将uboot里的tools/下的mkimage复制到根目录/usr/bin/下,当一个命令来用,
对于mkimage的详情用法看另一文章
对于mkimage里指定的-e -a 地址跟你tftp下载到内存里是不一样的,为什么?因为有一个mkimage的头,大小为40字节,所以要将那地址
-40字节,例如为-a 30008000 则要下载的地址为0x30008000-40字节=0x30007fc
对于ramdisk的制作,可看另一文章,其实就是创一堆文件夹以及用busybox将一些命令复制下去
再用genext2fs 制作ramdisk,再压缩一下,因为太大内核解压不了
但是直接生成的不能直接给内核解压,怎么办?加头信息
也是用mkimage,用法跟上面一样
[ GT2440 ]# set serverip 192.168.0.20
[ GT2440 ]# tftp 30007fc0 uImage.img
TFTP from server 192.168.0.20; our IP address is 192.168.0.69
Filename 'uImage.img'.
Load address: 0x30007fc0
Loading: #################################################################
#################################################################
#####
done
Bytes transferred = 1976436 (1e2874 hex)
[ GT2440 ]# tftp 31807fc0 ramdisk.img
TFTP from server 192.168.0.20; our IP address is 192.168.0.69
Filename 'ramdisk.img'.
Load address: 0x31807fc0
Loading: #################################################################
#################################################################
#################################################################
#########################
done
Bytes transferred = 3215485 (31107d hex)
[ GT2440 ]# bootm 30007fc0 31807fc0
## Booting kernel from Legacy Image at 30007fc0 ...
Image Name: linux-image
Created: 2010-12-01 15:54:56 UTC
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 1976372 Bytes = 1.9 MB
Load Address: 30008000
Entry Point: 30008000
Verifying Checksum ... OK
Loading Kernel Image ... OK
OK
## Loading init Ramdisk from Legacy Image at 31807fc0 ...
Image Name: ramdisk-image
Created: 2010-12-01 14:58:55 UTC
Image Type: ARM Linux RAMDisk Image (gzip compressed)
Data Size: 3215421 Bytes = 3.1 MB
Load Address: 31808000
Entry Point: 31808000
Verifying Checksum ... OK
Starting kernel ...
出现这样就成功,但是还会出现这样问题。。
1、wrong ramdisk image format
这就是头信息不对
2、还有一个是启动到最后面,会提示
RAMDISK: Compressed image found at block 0
RAMDISK: incomplete write (2270 != 32768)
之类,这问题就是上面说的内核配置的ramdisk大小不对,要去修改一下内核配置
我将它修改成12288(1024的整数倍)