这里仅仅是移植成功内核,可以挂载文件系统运行,至于驱动会陆续添加。
第一步:到内核官网上下载最新的内核,我下载的是linux-3.3-rc3.tar.bz2。
第二步:解压内核,进入arch/arm/mach-s3c64xx目录下,看到不少6410的板级文件,我们这里选择mini6410开开展工作,在目录下将mach-mini6410.c文件复制一份,命名为:mach-jfj6410.c。这里我们将文件里面关于mini6410的字样都修改为jfj6410.但是这里要注意,MACHINE_START(JFJ6410, "JFJ6410")这里的JFJ6410要使用大写,稍候说明为什么。大家都知道在一个目录下添加了文件后,都应该修改当前目录下的Kconfig和Makefile两个文件,这是Linux系统编译的要求。至于怎么修改,仔细看一下文件内容我相信大家都知道。
Kconfig文件是进行make menuconfig时出现的配置选项,这里我们添加了自己的板级文件肯定要添加配置选项。内容可以复制MINI6410的。如下:
config MACH_JFJ6410
bool "JFJ6410"
select CPU_S3C6410
select S3C_DEV_HSMMC
select S3C_DEV_HSMMC1
select S3C64XX_SETUP_SDHCI
select S3C_DEV_USB_HOST
select S3C_DEV_NAND
select S3C_DEV_FB
select S3C64XX_SETUP_FB_24BPP
select SAMSUNG_DEV_ADC
select SAMSUNG_DEV_TS
help
Machine support for the JFJKJ JFJ6410
这里你应该能够看出之前为什么要在那个地方单独使用大写了吧,就是为了保持一致。
Makefile文件就是说明要编译的文件,以及编译的规则,这里显然就是要编译我们自己的板级文件mach-jfj6410.c,具体如下:
obj-$(CONFIG_MACH_JFJ6410) += mach-jfj6410.o
第三步:配置内核,make menuconfig。这里我是使用内核自带的s3c6400_defconfig文件进行修改的,这样比较简单,呵呵。基本去掉了大部分的驱动,留下了串口驱动和NAND驱动。
第四步:编译make zImage。呵呵,这样就生成了我们需要的内核。
第五步:烧写,测试内核。因为我们是测试内核,所以U-Boot以及根文件系统都是使用之前的,这里没有移植yaffs,所以我目前使用cramfs格式的文件系统。
启动开发板后出现了如下的错误:
end_request: I/O error, dev mtdblock2, sector 0
FAT: unable to read boot sector
VFS: Cannot open root device "mtdblock2" or unknown-block(31,2)
Please