移植uboot第九步:支持yaffs映像烧写
寫在前面:
我的博客已遷移至自建服務(wù)器:博客傳送門,CSDN博客暫時(shí)停止,如有機(jī)器學(xué)習(xí)方面的興趣,歡迎來看一看。
此外目前我在gitHub上準(zhǔn)備一些李航的《統(tǒng)計(jì)學(xué)習(xí)方法》的實(shí)現(xiàn)算法,目標(biāo)將書內(nèi)算法全部手打?qū)崿F(xiàn),歡迎參觀并打星。GitHib傳送門
正文
uboot啟動(dòng)以后,先燒寫jffss看看能不能用
tftp 30000000 fs_mini_mdev.jffs2 nand erase.part rootfs nand write.jffs2 30000000 0x00260000 5b89a8“5b89a8”是實(shí)際文件的大小,下載以后會(huì)顯示的,直接copy過來就可以了。這個(gè)時(shí)候還不能直接啟動(dòng),uboot傳給內(nèi)核的參數(shù)需要修改
bootargs=console=ttySAC0 root=/dev/mtdblock3修改為
bootargs=console=ttySAC0 root=/dev/mtdblock3 rootfstype=jffs2說明根文件系統(tǒng)的格式是jffs2的。
命令:boot 啟動(dòng)。
結(jié)果:成功啟動(dòng)jffs格式的根文件系統(tǒng)
再來試試yaffs格式的根文件
uboot的參數(shù)修改為
燒寫YAFFS
tftp 30000000 fs_mini_mdev.yaffs2 nand erase.part rootfs nand write.yaffs 30000000 260000 889bc0出現(xiàn)錯(cuò)誤,說沒有yaffs,進(jìn)入文件查找
#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里面邏輯之類的錯(cuò)誤,不好好查代碼根本查不出來。
在剛才的函數(shù)中找到nand_write_skip_bad函數(shù),進(jìn)入
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) /* 原先是非,這樣是錯(cuò)的,把非去掉 */break;offset += pagesize;p_buffer += pagesize_oob;}b.在上面代碼的上方的
ops.mode = MTD_OOB_AUTO;修改為
ops.mode = MTD_OOB_RAW;編譯,燒寫。成功啟動(dòng)根文件系統(tǒng)
總結(jié)
以上是生活随笔為你收集整理的移植uboot第九步:支持yaffs映像烧写的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 移植uboot第八步:裁剪、修改默认参数
- 下一篇: 移植uboot第十步:制作uboot补丁