實驗用的開發板是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個零)。從新啓動就能夠啦。