2016-11-20 44 views
-1

我在一個支持phyCORE-MPC5200的小板上安裝了MPC5200 v2.2,Core v1.4。 DRAM 64 MB,FLASH 16 MB。 RTOS VxWorks 6.9。爲什麼U-Boot(DENX)停留在引導循環中並給出「程序檢查異常」?

我在啓動嵌入式系統時遇到了問題,當U-Boot/uboot(DENX)嘗試如此加載映像時,它仍處於引導循環中,並說:「程序檢查異常」。

對於開發過程中的調試,我使用TFTP服務器將vxWorks二進制文件直接加載到RAM中(U-Boot命令:'tftpboot 0x100000 vxWorks.bin')。在這種情況下,一切正常。 爲了發佈pure * .bin VxWorks文件(大小爲8,07 MB(8.462.808字節))被壓縮並打包成U-Boot兼容映像文件(具有引導加載程序特定的頭文件信息)並且結果大小爲5, 25 MB(5.509.763字節)。映像文件放在閃存中,從未壓縮的位置加載到RAM(U-Boot命令:'bootm 0xff800000')。之後,上述異常被拋出,導致重新啓動循環(請參見下面的截圖)。

我已經調查過,如果準備好的圖像的大小低於5 MB,U-Boot會毫無誤差地加載它。也許未壓縮的文件大小可能是一個問題?! (在8MB?)

enter image description here

你有任何想法,如何可以解決問題?

+0

請勿發佈圖片的文字! – Olaf

+0

看來,使用bootm命令時,問題是由於U-Boot中的8MB限制引起的。任何想法如何繞過這個啓動限制? – Chris

+0

我調查過,失敗的一點是'bootm'的解壓縮步驟。通過TFTP(和'cp'命令)我已經將未壓縮的二進制文件和壓縮的圖像複製到閃存中。 然後我再次嘗試用bootm啓動壓縮的映像。 經過預期的崩潰和重置後,我能夠將RAM中的(通過'bootm')未壓縮數據與閃存中的未壓縮二進制數據(使用'cmp'命令)進行比較。 8mb之後,數據不再匹配! 在第二個測試中,我創建了一個未壓縮的映像,「bootm」可以在沒有問題的情況下啓動。有任何想法嗎? – Chris

回答

1

U-boot(自2011.06起)提供環境變量「bootm_mapsize」來更改啓動內核映像所需的空間。

但是,你的u-boot似乎真的很老, &可能不包含此內容。

在你的u-boot我明白這個值被設置爲 「包括/ CONFIGS /」 文件:

定義CONFIG_SYS_BOOTMAPSZ(8 < < 20)/ *初始存儲器映射的Linux */

您可以更改此值&重新編譯u-boot以解決問題。

我希望這會有所幫助。

+0

感謝您的提示。我們會檢查,如果它會影響行爲。最初我們可以發現,上面的參數在我們的版本中不存在,但是對應於CFG_BOOTMAPSZ。 – Chris

相關問題