新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > ARM-Linux嵌入式系統(tǒng)的Boot Loader分析與設(shè)計(jì)

ARM-Linux嵌入式系統(tǒng)的Boot Loader分析與設(shè)計(jì)

作者: 時(shí)間:2011-02-12 來源:網(wǎng)絡(luò) 收藏

2.2 第二階段拷貝到RAM
把第二階段Stage2拷貝到RAM地址的最頂大小為1 MB的開始空間,RAM的起始地址為0x30000000。代碼如下所示:

2.3 堆棧指針的設(shè)置
用戶使用哪些中斷決定了系統(tǒng)堆棧的初始化,以及系統(tǒng)需要處理的哪些錯(cuò)誤類型。一般情況下,堆棧設(shè)置是必須,而且是由管理者自己設(shè)置的。如果需要使用IRQ中斷,那么IRQ堆棧的設(shè)置也是必須的,下面是IRQ堆棧的設(shè)置:


3 Stage2的設(shè)計(jì)
3.1 可執(zhí)行映像Stage2的入口

由于Glibc庫支持的函數(shù)不能用于編譯和鏈接Boot Loader這樣用C語言編寫的程序,因此把main()函數(shù)的起始地址作為第二階段的入口點(diǎn)是最直接的想法??梢杂脜R編編寫一段Trampoline小程序,用CPU跳轉(zhuǎn)指令跳到main()函數(shù)去執(zhí)行,當(dāng)函數(shù)返回時(shí)會(huì)再次回到Trampoline程序,代碼如下:

程序順利時(shí)就不會(huì)再回到開始的Trampoline程序,不然就會(huì)回到最后的語句,系統(tǒng)就會(huì)重新啟動(dòng)。


關(guān)鍵詞: ARM

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉