<var id="fnfpo"><source id="fnfpo"></source></var>
<rp id="fnfpo"></rp>

<em id="fnfpo"><object id="fnfpo"><input id="fnfpo"></input></object></em>
<em id="fnfpo"><acronym id="fnfpo"></acronym></em>
  • <th id="fnfpo"><track id="fnfpo"></track></th>
  • <progress id="fnfpo"><track id="fnfpo"></track></progress>
  • <tbody id="fnfpo"><pre id="fnfpo"></pre></tbody>

  • x
    x
    查看: 4311|回復: 2
    打印 上一主題 下一主題

    [提問] 為啥剛剛enable MMU后系統立刻就掛了?

    [復制鏈接]
    跳轉到指定樓層
    樓主
    發表于 2013-10-7 01:33:36 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
    嵌入式門外漢,手頭有個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。不知道有沒有大俠可以幫我看看這是咋回事?





    沙發
     樓主| 發表于 2013-10-10 20:41:27 | 只看該作者
    搞定了,媽的,基礎知識不牢。。。原來是bootloader設置的啟動參數區(0x30000100)作祟。
    zImage解壓程序貌似會讀取這個區域,其內容是頁的大小和數量,bootloader設置分別為0x1000和0x4000,我在uboot啟動zImage前將0x30000100和0x30000104兩個32位清零,kernel就能正常啟動了。

    大概就是這個意思,我還沒時間深究zImage的解壓過程,希望有懂的大俠澄清一下。
    板凳
    發表于 2013-10-14 20:22:38 | 只看該作者
    多謝分享,樓主辛苦
    您需要登錄后才可以回帖 登錄 | 立即注冊

    本版積分規則

    關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
    電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
    快速回復 返回頂部 返回列表
    精品一区二区三区自拍图片区_国产成人亚洲精品_亚洲Va欧美va国产综合888_久久亚洲国产精品五月天婷