JZ2440开发板运行环境搭建
u-boot移植
NAND Flash空间分配:
256M空间分区如下:
SMDK2410 # mtdpart device nand0 <jz2440-0>, # parts = 4 #: name size offset mask_flags 0: u-boot 0x00040000 0x00000000 0 1: params 0x00020000 0x00040000 0 2: kernel 0x02d00000 0x00060000 0 3: rootfs 0x0d2a0000 0x02d60000 0 active partition: nand0,0 - (u-boot) 0x00040000 @ 0x00000000 defaults: mtdids : nand0=jz2440-0 mtdparts: mtdparts=jz2440-0:256k(u-boot),128k(params),45m(kernel),-(rootfs)
进行如此分区的原因:
①、256M的Flash中,0x00260000~0x02b80000共41M空间为坏块区。保持u-boot和params区域空间不变,坏块前预留给内核的空间为2M,而本次编译内核大小为2.78M。为此将内核空间进行拓展,预留空间大小为45M,除去坏块41M,可用空间为4M。
②、后期将扩大u-boot区域,使u-boot和params占用坏块前位置,坏块作为保留区存放,而后放置内核和文件系统。
问题定位过程:
按照预留4M内核空间的方案将uImage写入NAND Flash时出现如下错误:
Creating 4 MTD partitions on "NAND": 0x000000000000-0x000000040000 : "U-boot" 0x000000040000-0x000000060000 : "params" 0x000000060000-0x000000460000 : "kernel" 0x000000460000-0x000010000000 : "rootfs" NAND read: device 0 offset 0x60000, size 0x400000 Skipping bad block 0x00260000
..........
.......... Skipping bad block 0x02b80000 4194304 bytes read: OK ## Booting kernel from Legacy Image at 30000000 ... Image Name: Linux-4.4.15-g7d0cfbc-dirty Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 2852712 Bytes = 2.7 MiB Load Address: 30008000 Entry Point: 30008000 Verifying Checksum ... Bad Data CRC ERROR: can't get kernel image! SMDK2410 #
而通过tftp将uImage传输到内存的0x30000000位置时可以正常启动,排除内核问题。错误信息中已经将内核头部读取出来,而在进行crc校验时出错,将问题定位到内核写入时出错,通过Skipping发现坏块区已经超过kernel分区。考虑到当前内核区域只有2M空间可用,而内核文件却有2.7M,因此定位可能是由于内核文件的后边部分未写完整,因此进行空间修改,之后问题解决。
编译执行过程:
1、采用打补丁方式,进入u-boot-2012.04.01目录,执行“patch -p1 < ../u-boot-2012.04.01_100ask.patch”,将制作好的补丁打到当前U-boot。
2、执行“make smdk2440_config”配置U-BOOT。
3、执行“make”编译U-BOOT。
5、使用openJTAG进行烧录,烧录完成之后执行“mtdpart”可以看到相应的分区信息。
6、通过“tftp 30000000 uImage”传输内核镜像到内存地址0x30000000,然后执行“nand erase.part kernel”擦除内核镜像空间,最后执行“nand write 30000000 kernel”将内核文件写入NAND Flash空间。
7、通过“tftp 30000000 rootfs.jiffs2”传输文件系统到地址0x30000000,然后执行“nand erase.part rootfs”擦除文件系统镜像空间,最后执行“nand write.jffs2 30000000 d2a0000 $filesize”将该文件写入到NAND Flash空间。
kernel移植
浙公网安备 33010602011771号