移植uboot第九步:支持yaffs映像烧写
生活随笔
收集整理的這篇文章主要介紹了
移植uboot第九步:支持yaffs映像烧写
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
寫在前面:
我的博客已遷移至自建服務器:博客傳送門,CSDN博客暫時停止,如有機器學習方面的興趣,歡迎來看一看。
此外目前我在gitHub上準備一些李航的《統(tǒng)計學習方法》的實現(xiàn)算法,目標將書內算法全部手打實現(xiàn),歡迎參觀并打星。GitHib傳送門
正文
uboot啟動以后,先燒寫jffss看看能不能用
tftp 30000000 fs_mini_mdev.jffs2 nand erase.part rootfs nand write.jffs2 30000000 0x00260000 5b89a8“5b89a8”是實際文件的大小,下載以后會顯示的,直接copy過來就可以了。這個時候還不能直接啟動,uboot傳給內核的參數需要修改
bootargs=console=ttySAC0 root=/dev/mtdblock3修改為
bootargs=console=ttySAC0 root=/dev/mtdblock3 rootfstype=jffs2說明根文件系統(tǒng)的格式是jffs2的。
命令:boot 啟動。
結果:成功啟動jffs格式的根文件系統(tǒng)
再來試試yaffs格式的根文件
uboot的參數修改為
燒寫YAFFS
tftp 30000000 fs_mini_mdev.yaffs2 nand erase.part rootfs nand write.yaffs 30000000 260000 889bc0出現(xiàn)錯誤,說沒有yaffs,進入文件查找
#ifdef CONFIG_CMD_NAND_YAFFS} else if (!strcmp(s, ".yaffs")) {if (read) {printf("Unknown nand command suffix '%s'.\n", s);return 1;}ret = nand_write_skip_bad(nand, off, &rwsize,(u_char *)addr, WITH_YAFFS_OOB); #endifCONFIG_CMD_NAND_YAFFS沒有宏定義,將其在s3c2440.h文件中宏定義。
此外還需要一些修改,我直接跟著韋東山改的,是uboot里面邏輯之類的錯誤,不好好查代碼根本查不出來。
在剛才的函數中找到nand_write_skip_bad函數,進入
a.找到下面這段代碼
修改為
for (page = 0; page < pages; page++) {WATCHDOG_RESET();ops.datbuf = p_buffer;ops.oobbuf = ops.datbuf + pagesize;rval = nand->write_oob(nand, offset, &ops);if (rval) /* 原先是非,這樣是錯的,把非去掉 */break;offset += pagesize;p_buffer += pagesize_oob;}b.在上面代碼的上方的
ops.mode = MTD_OOB_AUTO;修改為
ops.mode = MTD_OOB_RAW;編譯,燒寫。成功啟動根文件系統(tǒng)
總結
以上是生活随笔為你收集整理的移植uboot第九步:支持yaffs映像烧写的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 移植uboot第八步:裁剪、修改默认参数
- 下一篇: 移植uboot第十步:制作uboot补丁