uboot修改原始碼之支援燒寫檔案系統

2021-09-27 11:30:37 字數 3112 閱讀 2325

燒寫檔案系統

tftp 30000000 fs_mini_mdev.jffs2

nand erase.part root

nand write.jffs2 30000000 260000 5b89a8

啟動之前修改啟動引數

set  bootargs  console=ttysac0 root=/dev/mtdblock3 rootfstype=jffs2    //重新設定檔案系統屬性

bootm     //啟動

s3c2410iis_probe...

uda1341 audio driver initialized

alsa device list:

no soundcards found.

tcp cubic registered

net: registered protocol family 1

drivers/rtc/hctosys.c: unable to open rtc device (rtc0)

s3c2410-sdi s3c2410-sdi: running at 0khz (requested: 0khz).

s3c2410-sdi s3c2410-sdi: running at 98khz (requested: 97khz).

s3c2410-sdi s3c2410-sdi: running at 98khz (requested: 97khz).

vfs: mounted root (jffs2 filesystem). //掛載成功

freeing init memory: 140k

init started: busybox v1.7.0 (2008-01-22 10:04:09 est)

starting pid 765, tty '': '/etc/init.d/rcs

燒寫yaffs檔案系統

tftp 30000000 fs_mini_mdev.yaffs2

nand erase.part rootfs

nand write.yaffs 30000000 260000 889bc0    

或者直接一起輸入:tftp 30000000 fs_mini_mdev.yaffs2;nand erase.part rootfs;nand write.yaffs 30000000 260000 889bc0 

啟動會出現如下錯誤

smdk2410 #  nand write.yaffs2 30000000 260000 889bc0

nand write: device 0 offset 0x260000, size 0x889bc0

unknown nand command suffix '.yaffs'.

根據錯誤資訊,在cmd_nand.c裡搜尋.yaffs,可以知道需要加入config_cmd_nand_yaffs的巨集,

#ifdef config_cmd_nand_yaffs

} else if (!strcmp(s, ".yaffs"))

ret = nand_write_skip_bad(nand, off, &rwsize,

(u_char *)addr, with_yaffs_oob);

#endif

重新編譯程式,燒寫檔案系統

vfs: mounted root (yaffs filesystem).

freeing init memory: 140k

warning: unable to open an initial console.

kernel panic - not syncing: no init found. try passing init= option to kernel.

然後對比燒到板子裡的檔案和原來的檔案系統,可以發現燒寫的不一樣,然後定位到程式中nand_util.c中,有些東西需要修改

rval = nand_write (nand, offset, length, buffer);

if (rval == 0)

return 0;

*length = 0;

printf ("nand write to offset %llx failed %d\n",

offset, rval);

return rval;

} ops.len = pagesize;

ops.ooblen = nand->oobsize;

ops.mode = mtd_oob_raw; //讀取原來自己的oob

ops.ooboffs = 0;

for (page = 0; page < pages; page++)

再重新編譯燒寫,測試檔案系統

tftp 30000000 u-boot.bin;protect off all;erase 0 3ffff;cp.b 30000000 0 40000

vfs: mounted root (yaffs filesystem).

freeing init memory: 140k

init started: busybox v1.7.0 (2008-01-22 10:04:09 est) //可以正常啟動busybox

starting pid 764, tty '': '/etc/init.d/rcs'

s3c2410-sdi s3c2410-sdi: running at 0khz (requested: 0khz).

s3c2410-sdi s3c2410-sdi: running at 98khz (requested: 97khz).

s3c2410-sdi s3c2410-sdi: running at 98khz (requested: 97khz).

製作補丁

將製作完成的uboot目錄  和解壓縮出來的原來目錄用diff命令去實現

make distclean     //首先清除所有檔案

diff -urn  老目錄  新目錄 > my_1st_uboot.pach

打補丁  patch -p1 < 補丁檔案        p的引數根據當前打補丁的目錄決定

安凱燒寫工具原始碼的簡單分析

begin to set register set registers successfully begin to download producer begin to init usb begin to erase 設定分割槽表 begin to download file on command ...

kibana原始碼修改之webpack初始化 爬坑

最近想研究kibana原始碼,看看他的視覺化部分的實現,花了兩天才把webpack初始化成功,其中的出現的問題就是在平常看來很正常的一步,導致我卡了很久 二 切到kibana目錄下 執行npm install.在這裡我為了圖快。用了 映象cnpm install.然後坑爹的事情發生了 安裝成功執行下...

uboot系列之 命令的處理過程 原始碼

在uboot執行到第二個階段後,會進入到main loop函式中,該函式有乙個作用就是處理使用者所輸入的命令,下面詳細分析命令處理的流程 一 命令的結構及定義 在uboot裡面,命令的建立是通過巨集定義u boot cmd來實現的,該巨集定義在檔案include command.h檔案中,defin...