实验用的开发板是nuc970-evb开发板,nuvoton提供的一个测试开发板。所以u-boot直接采用的了官方给出的bsp包中的uboot.bin。这里u-boot.bin 和u-boot-spl.bin的做用不太清楚。在配置yaffs2文件系统的时候,uboot启动后这里须要注意的是u-boot环境变量的设置。linux
baudrate=115200 bootargs=noinitrd root=/dev/mtdblock2 rootfstype=yaffs2 rootflags=inband-tags console=ttyS0 rdinit=/sbin/init bootcmd=nboot 0x7fc0 0 0x200000;bootm 0x7fc0 bootdelay=3 ethact=emac ethaddr=00:00:00:11:66:88 stderr=serial stdin=serial stdout=serial
在这里我出现了一个问题在bootargs参数的设置上,官方给出的安装手册里在yaffs2的配置中,启动参数以下app
我测试了不少中方法,可是yaffs2没有启动成功的缘由是mem=64M的参数设置,这里感受很奇怪。工具
这里咱们须要注意的是取消initranfs的配置 测试
配置内核默认启动参数,配置若是有bootloader传递的参数,则使用bootloader传递的参数(其实这里通常状况下uboot都会向内核传递参数,其实就是uboot启动时bootargs设置的参数) ui
而后配置device driver,配置nand flash支持。(nand flash 有两组管脚可供选择,Port C和Port I,选择须要按照硬件链接而定,这里我成功配置的是选的Port I)里面标红的选项意思是,若是须要u-boot环境变量传入nand flash分区表,则勾选。(这里我没有配置这个,uboot环境变量没有u-boot分区信息表) spa
配置yaffs2文件件系统的支持,这里以前遇到的问题是须要配置Caching block device access to MTD devices,才会产生这个配置选项。3d
而后到此位置就能够保存退出了。执行 make -j4,来编译内核。code
编译完成后编译好的内核镜像nuc970image会在linux内核目录的上层目录中的image目录里,这里咱们还要使用mkimage讲linux内核打包(这里和我以前接触的不同,以前接触的是编译的内核映像为uiamge直接能够下载的)blog
这里我会进入nuc970bsp目录中执行以下命令开发
uboot/tools/mkimage -A arm -O linux -T kernel -S crc32 -a 0x7fc0 -e 0x8000 -d image/970image image/970yaffs.bin
这里制做yaffs2文件系统须要mkyaffs2文件工具,这个文件的源码在nuc970bsp/application/yaffs2util 中若是不存在,或者执行出错,咱们能够进入到nuc970bsp/application/yaffs2uti目录中,依次执行make clen; make 就能够从新编译出本机与开发环境试用的mkyaffs2工具了。制做命令以下:
./mkyaffs2 --inband-tags -p 2048 rootfs rootfs_yaffs2.img
最后是烧写步骤,烧录u-boot-spl.bin。
烧录u-boot到nand的0x100000地址处。
内核烧录与上图一致,咱们将内核烧录到0x200000(这里5个零)地址的位置,最后将yaffs2文件系统映像烧录到0x2000000(注意这里6个零)。从新启动就能够啦。