單片機的快速啟動技術(shù)-基礎(chǔ)電子_第1頁
單片機的快速啟動技術(shù)-基礎(chǔ)電子_第2頁
單片機的快速啟動技術(shù)-基礎(chǔ)電子_第3頁
單片機的快速啟動技術(shù)-基礎(chǔ)電子_第4頁
單片機的快速啟動技術(shù)-基礎(chǔ)電子_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

精品文檔-下載后可編輯單片機的快速啟動技術(shù)-基礎(chǔ)電子系統(tǒng)硬件初始化

系統(tǒng)上電或復(fù)位后,程序從位于地址0x0的ResetExceptionVector處開始執(zhí)行,因此需要在這里放置Bootloader的條指令:bResetHandler,跳轉(zhuǎn)到標號為ResetHandler處進行階段的硬件初始化,主要內(nèi)容為:關(guān)看門狗定時器,關(guān)中斷,初始化PLL和時鐘,初始化存儲器系統(tǒng)。執(zhí)行完以上程序后,系統(tǒng)進行堆棧和存儲器的初始化。系統(tǒng)堆棧初始化取決于用戶使用了哪些中斷,以及系統(tǒng)需要處理哪些錯誤類型。一般情況下,管理者堆棧必須設(shè)置,如果使用了IRQ中斷,則IRQ堆棧也必須設(shè)置。如果系統(tǒng)使用了外設(shè),則需要設(shè)置相關(guān)的寄存器,以確定其刷新頻率、總線寬度等信息。

代碼段復(fù)制到RAM中運行

因為嵌入式系統(tǒng)的代碼通常都是固化在ROM或者Flash中,上電后開始運行。由于ROM和Flash的讀取速度相對較慢,這樣無疑會降低代碼的執(zhí)行速度和系統(tǒng)的運行效率。為此,需要把系統(tǒng)的代碼復(fù)制到RAM中運行。使用SDT鏈接器ARMLink產(chǎn)生的定位信息,把RO的有效代碼和數(shù)據(jù)段到RAM中。ARMLink將編譯后的程序鏈接成ELF文件。映像文件內(nèi)部共有三種輸出段:RO段、RW段和ZI段。這三種輸出段分別包含了只讀代碼及包含在代碼段中的少量數(shù)據(jù)、可讀寫的數(shù)據(jù)、初始化為0的數(shù)據(jù),ARMLink同時還產(chǎn)生了這三種輸出段的起始和終止定位信息:Image$$RO$$Base、Image$$RO$$Limit、Image$$RW$$Base、Image$$Limit、Image$$Linit和Image$$ZI$$Limit。可以在程序中使用這些定位信息。將ROM中的代碼和數(shù)據(jù)搬移到RAM中,具體程序如下。

LDRr0,=|Image$$RO$$Base|/*RO段起始地址*/

LDRr1,=|Image$$RO$$Limit|/*RO段結(jié)束地址*/

LDRr2,=|Image$$RW$$Base|

LDRr3,=|Image$$RW$$Limit|

/*分別求出需要映像的代碼和數(shù)據(jù)的長度并累加,放到寄存器R1中*/

SUBr1,r1,r0

SUBr3,r3,r2

ADDr1,r1,r3

/*將需要映象的代碼和數(shù)據(jù)復(fù)制到RAM中去*/

0/*標示符*/

LDRr3,[r0],#4

STRr3,[r2],#4

SUBSr1,r1,#4

BNE%B0/*如果沒有復(fù)制完,跳轉(zhuǎn)到0標示符處的匯編語句,繼續(xù)復(fù)制,參見ARM指令幫助手冊*/

建立二級中斷向量表

在ARM系統(tǒng)中,中斷向量表位于0X0開始的地址處,意味著無論運行什么樣的上層軟件,一旦發(fā)生中斷,程序就得到Flash存儲器中的中斷向量表里去,降低系統(tǒng)的運行效率。因此在RAM中建立自己的二級中斷向量表,當中斷發(fā)生后,程序直接從RAM中取中斷向量進入中斷子程序。尤其是在中斷頻繁發(fā)生的系統(tǒng)里,這種方法可以大大提高系統(tǒng)的運行效率,具體的實現(xiàn)代碼如下。

bResetHandler

bHandlerUndef/*未定義模式句柄*/

bHandlerSWI/*SWI中斷句柄*/

bHandlerPabort/*PAbort中斷句柄*/

bHandlerDabort/*Dabort中斷句柄*/

b./*保留*/

bHandlerIRQ/*IRQ中斷句柄*/

bHandlerFIQ/*FIQ中斷句柄*/

HandlerFIQHANDLERHandleFIQ

HandlerIRQHANDLERHandleIRQ

HandlerUndefHANDLERHandleUndef

HandlerSWIHANDLERHandleSWI

HandlerDabortHANDLERHandleDabort

HandlerPabortHANDLERHandlePabort

其中HANDLER是一個宏,用于查找中斷處理程序的入口地址。這些地址存放在由HandleXXX指向的表項中,該表定位在RAM高端,基地址為_ISR_STARTADDRESS。

^_ISR_STARTADDRESS

HandleReset#4

HandleUndef#4

HandleSWI#4

HandlePabort#4

HandleDabort#4

HandleReserved#4

HandleIRQ#4

HandleFIQ#4

MMU的應(yīng)用

MMU是存儲器管理單元的縮寫,是用來管理虛擬內(nèi)存系統(tǒng)的器件。MMU通常是CPU的一部分,本身有少量存儲空間存放從虛擬地址到物理地址的匹配表,此表稱作TLB(轉(zhuǎn)換旁置緩沖區(qū))。所有數(shù)據(jù)請求都送往MMU,由MMU決定數(shù)據(jù)是在RAM內(nèi)還是在大容量外部存儲器設(shè)備內(nèi)。如果數(shù)據(jù)不在存儲空間內(nèi),MMU將產(chǎn)生頁面錯誤中斷。MMU存儲器系統(tǒng)的結(jié)構(gòu)允許對存儲器系統(tǒng)的精細控制,大部分的控制細節(jié)由存在存儲器中的轉(zhuǎn)換表提供。這些表的入口定義了從1KB~1MB的各種存儲器區(qū)域的屬性。MMU完成的兩個主要功能是:將虛地址轉(zhuǎn)換成物理地址,控制存儲器存取允許。MMU關(guān)掉

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論