本文主要解決的問題是,s5pv210_BV3S刷完機後系統無法完整啟動,并且進入無限重新開機的狀态。
實驗材料:朱有鵬老師嵌入式核心課程配套的開發闆(s5pv210_BV3S)和鏡像(linux+QT4.8)
正确刷機步驟如下:
(1)、刷目錄:朱有鵬老師嵌入式核心課程\不同版本開發闆刷機看這裡\X210V3S鏡像\linux+QT4.8
中的uboot.bin。
(2)、運作uboot,在指令行中輸入fdisk -c 0去重新分區,然後再fastboot。
s5pv210_BV3S對應的rootfs有256MB左右,而之前的uboot中對inand的system分區隻有100多MB确實放不下。在這個新提供的uboot.bin中已經重新設定了分區資訊,隻需要fdisk -c 0來重新對inand分區即可。
(3)、在指令行下刷kernel和rootfs(所用檔案都在(1)中目錄去找)。
(4)、設定bootcmd和bootargs,在uboot的shell下輸入以下三行指令:
set bootcmd 'movi read kernel 30008000; bootm 30008000'
set bootargs console=ttySAC2,115200 root=/dev/mmcblk0p2 rw init=/linuxrc rootfstype=ext3
save
其中:save一定不能少,沒儲存的話,重新開機系統會從Flash中重新讀一份到記憶體中,原設定值丢失。
沒有save,以上環境變量設定丢失,會找不到根檔案,出現以下錯誤:
[ 5.542799] VFS: Cannot open root device "(null)" or unknown-block(0,0)
[ 5.549251] Please append a correct "root=" boot option; here are the available partitions:
[ 5.557587] b300 3866624 mmcblk0 driver: mmcblk
[ 5.562744] b301 264495 mmcblk0p1
[ 5.566990] b302 264495 mmcblk0p2
[ 5.571235] b303 105798 mmcblk0p3
[ 5.575482] b304 3207946 mmcblk0p4
[ 5.579729] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
這個錯誤對應的現象就是,系統進入無線重新開機狀态,運作一會兒後就會rebooting。
上面配置的環境變量bootcmd和bootargs含義如下:
bootcmd=movi read kernel 30008000; bootm 30008000
意思是:将iNand的kernel分區讀取到DDR記憶體的0x30008000位址處,
然後使用bootm啟動指令從記憶體0x30008000處去啟動核心。
bootargs=console=ttySAC2,115200 root=/dev/mmcblk0p2 rw init=/linuxrc rootfstype=ext3
意思是:console=ttySAC2,115200 控制台使用序列槽2,波特率115200.
root=/dev/mmcblk0p2 rw根檔案系統在SD卡端口0裝置(iNand)第2分區,根檔案系統是可讀可寫的
init=/linuxrc linux的程序1(init程序)的路徑 rootfstype=ext3 根檔案系統的類型是ext3