<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于A(yíng)RM硬件初始化的一些細節問(wèn)題的解釋

基于A(yíng)RM硬件初始化的一些細節問(wèn)題的解釋

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

1.分配中斷向量表;

本文引用地址:http://dyxdggzs.com/article/201611/317430.htm

2.初始化存儲器系統;

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

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

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

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

7.調用主應用程序;

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

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

可執行程序映像的結構

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

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

下面是在A(yíng)DS集成開(kāi)發(fā)環(huán)境中,一種常用存儲器模型的直接實(shí)現。

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 

程序實(shí)現了RW數據的和ZI區域的清空。其中引用到的4個(gè)符號是由鏈接器定義的。

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

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


關(guān)鍵詞: ARM硬件初始

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>