新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于ARM硬件初始化的一些細節(jié)問題的解釋

        基于ARM硬件初始化的一些細節(jié)問題的解釋

        作者: 時間:2016-11-10 來源:網(wǎng)絡 收藏
        ARM硬件啟動程序的工作一般包括:

        1.分配中斷向量表;

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

        2.初始化存儲器系統(tǒng);

        3.初始化各工作模式下的堆棧;

        4.初始化有特殊要求的硬件模塊;

        5.初始化用戶程序的執(zhí)行環(huán)境;

        6.切換處理器的工作模式;

        7.調用主應用程序;

        這里主要講解寫初始化應用程序執(zhí)行環(huán)境:

        一個典型的可執(zhí)行程序的映像結構通常如表所列。

        可執(zhí)行程序映像的結構

        分區(qū)說明
        ZI(初始化為0的可讀/寫數(shù)據(jù))只定義了變量名的全局變量
        RW(可讀/寫數(shù)據(jù))定義了帶初始值的全局變量
        RO(代碼和只讀數(shù)據(jù))編譯后的程序

        映像一開始總是存儲在ROM/Flash中的,其RO部分既可以在ROM/Flash中執(zhí)行,也可以轉移到速度更快的RAM中執(zhí)行;而RW和ZI這兩部分必須轉移到可寫的RAM中。所謂應用程序執(zhí)行環(huán)境的初始化,就是必須完成必要的從ROM到RAM的數(shù)據(jù)傳輸和內容清空。

        下面是在ADS集成開發(fā)環(huán)境中,一種常用存儲器模型的直接實現(xiàn)。

        LDR     R0,=|Image$$RO$$Limit|LDR     R1,=|Image$$RW$$Base|LDR     R3,=|Image$$ZI$$Base|CMP	  R0,R1BEQ   %F10	CMP   R1,R3LDRCC R2,[R0],#4STRCC R2,[R1],#4BCC   %B01       LDR   R1,=|Image$$ZI$$Limit|MOV   R2,#02CMP     R3,R1STRCC   R2,[R3],#4BCC     %B2 

        程序實現(xiàn)了RW數(shù)據(jù)的和ZI區(qū)域的清空。其中引用到的4個符號是由鏈接器定義的。

        |Image$$RO$$Limit|:表示RO區(qū)末地址后面的地址,即RW數(shù)據(jù)源的起始地址。|Image$$RW$$Base|:RW區(qū)在RAM里的執(zhí)行區(qū)起始地址,也就是編譯器選項RW_Base指定的地址;程序中是RW數(shù)據(jù)的目的地址。|Image$$ZI$$Base|:ZI區(qū)在RAM中的起始地址。|Image$$ZI$$Limit|:ZI區(qū)在RAM中的結束地址后面的一個地址。

        程序先把ROM中|Image$$RO$$Limit|地址開始的RW初始數(shù)據(jù)到RAM中|Image$$RW$$Base|開始的地址,當RAM這邊的目標地址到達|Image$$ZI$$Base|后,
        就表示RW區(qū)的結束和ZI區(qū)的開始,然后就對這片Zi區(qū)進行清零操作,直到遇到結束地址|Image$$ZI$$Limit|。


        關鍵詞: ARM硬件初始

        評論


        技術專區(qū)

        關閉
        主站蜘蛛池模板: 陕西省| 紫云| 麻栗坡县| 肇东市| 大丰市| 阜康市| 安康市| 绥芬河市| 岳阳市| 柏乡县| 辉县市| 永顺县| 宝鸡市| 金秀| 黑山县| 德安县| 襄樊市| 淳安县| 南阳市| 荔波县| 宾阳县| 获嘉县| 河南省| 鹤峰县| 余江县| 于田县| 汝城县| 武山县| 乌恰县| 大田县| 都安| 吉首市| 原平市| 毕节市| 若尔盖县| 北票市| 临桂县| 肥乡县| 肥东县| 白玉县| 南和县|