Linux 3.3.0移植到S3C6410开发板上

     这里仅仅是移植成功内核,可以挂载文件系统运行,至于驱动会陆续添加。

第一步:到内核官网上下载最新的内核,我下载的是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的。如下:           

[plain]

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,具体如下:

[plain]

obj-$(CONFIG_MACH_JFJ6410)      += mach-jfj6410.o  

        第三步:配置内核,make menuconfig。这里我是使用内核自带的s3c6400_defconfig文件进行修改的,这样比较简单,呵呵。基本去掉了大部分的驱动,留下了串口驱动和NAND驱动。

第四步:编译make zImage。呵呵,这样就生成了我们需要的内核。

第五步:烧写,测试内核。因为我们是测试内核,所以U-Boot以及根文件系统都是使用之前的,这里没有移植yaffs,所以我目前使用cramfs格式的文件系统。

启动开发板后出现了如下的错误:

[html]

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 append a correct "root=" boot option; here are the available partitions:   1f00        192 mtdblock0 (driver?)   1f01       1856 mtdblock1 (driver?)   1f02      30720 mtdblock2 (driver?)   1f03      32768 mtdblock3 (driver?)   Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(31,2)  

       后来上网查了很久才发现是驱动的问题。U-boot使用软件ECC,我们在配置NAND驱动的时候提示是否选择使用NAND硬件ECC,我试了一下,无论你选不选都出现这个问题,我才发现,它的配置包含三重含义,选中--->使用硬件ECC;不选--->使用NAND的软件ECC(和U-Boot的软件ECC不是一回事);而我们这里需要的是不使用NAND的ECC,也就是禁止,不然就会和U-Boot冲突,出现上面的错误。要禁止NAND的ECC,我们修改drivers/mtd/nand/s3c2410.c这个文件,在845行的地方。

源代码为:                      

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wyzjdx.html