嵌入式門外漢,手頭有個2410的老開發板,自帶bootloader沒動,可通過usb下載zImage并啟動成功。
我有個想法是做雙bootloader,也就是除了本身的bootloader外,另外安裝一個uboot在以前屬于linux kernel的nand分區上。但是出現了問題:
1、從bootloader啟動寫在nand分區上的uboot,再通過uboot下載linux內核zImage,顯示解壓完成后就掛住了。
2、從bootloader通過USB下載和上面相同的uboot.bin,并在下載完成后運行該uboot,再通過uboot下載和上面相同的linux內核,內核可以成功啟動。
這兩個方法唯一的區別就是,第一次是加載nand分區上的uboot運行,而第二次是下載uboot直接運行。
我寫了一段閃燈的匯編,插入到內核啟動代碼,發現,在head.S的__turn_mmu_on中,執行完mcr p15, 0, r0, c1, c0, 0(也就是開啟mmu),系統就掛住了。通過實驗,我觀察到的r0值是0xc0007177。對了,kernel版本是2.6.14。不知道有沒有大俠可以幫我看看這是咋回事?
|