新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > ARM+Linux嵌入式系統(tǒng)的BootLoader設(shè)計(jì)

        ARM+Linux嵌入式系統(tǒng)的BootLoader設(shè)計(jì)

        作者: 時(shí)間:2011-06-27 來源:網(wǎng)絡(luò) 收藏
        2.2 第二階段拷貝到RAM

        本文引用地址:http://www.104case.com/article/150562.htm

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

          

        程序

          2.3 堆棧指針的設(shè)置

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

          

        程序

          3 Stage2的

          3.1 可執(zhí)行映像Stage2的入口

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

          

        程序

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

          3.2 內(nèi)存影射

          一般S3C2410上配置的SDRSAM大小為64 MB,該SDRAM的物理地址范圍是Ox30000000~Ox33FFFFFF(屬于Bank 6)。由Section的大小可知,該物理空間可被分成64個(gè)物理段。因?yàn)?a class="contentlabel" href="http://www.104case.com/news/listbylabel/label/ARM">ARM體系結(jié)構(gòu)中數(shù)據(jù)緩沖必須通過MMU開啟,因此Boot Loader效率不是很高,但是MMU可以通過平板映射(虛擬地址和物理地址相同)方式被開啟,這樣使用內(nèi)存空間Dcache,從而使Boot Loader的運(yùn)行速度得到有效的提高。映射關(guān)系代碼如下:

          

        程序 linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


        評(píng)論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 大宁县| 科技| 高雄市| 衡阳县| 当雄县| 祁门县| 贵溪市| 建德市| 灵武市| 越西县| 广德县| 广昌县| 额尔古纳市| 谷城县| 上饶县| 冀州市| 波密县| 沁阳市| 固安县| 青川县| 裕民县| 萍乡市| 康保县| 湄潭县| 商洛市| 池州市| 巴南区| 镇坪县| 舒城县| 青阳县| 吉首市| 崇左市| 彭阳县| 青海省| 甘孜| 嘉义市| 澄城县| 涪陵区| 广元市| 德兴市| 读书|