arm9啟動代碼裸機(jī)版 所謂啟動代碼就是處理器在啟動時候執(zhí)行_第1頁
已閱讀1頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、ARM9啟動代碼(裸機(jī)版)所謂啟動代碼,就是處理器在啟動的時候執(zhí)行的一段代碼,主要任務(wù)是初始化處理器模式,設(shè)置堆棧,初始化變量等等。由于以上的操作均與處理器體系結(jié)構(gòu)和系統(tǒng)配置密切相關(guān),所以一般由匯編來編寫。在一般32位ARM應(yīng)用系統(tǒng)中,軟件大多數(shù)采用c語言進(jìn)行編程,并且以嵌入式操作系統(tǒng)為開發(fā)平臺,這樣就大大提高了開發(fā)效率和軟件性能。為了能夠進(jìn)行系統(tǒng)初始化,通常采用一個匯編文件作啟動代碼。它可以實現(xiàn)向量表定義、堆棧初始化、系統(tǒng)變量初始化、

2、中斷系統(tǒng)初始化、IO初始化、地址重映射等操作。啟動代碼是芯片復(fù)位后進(jìn)入c語言的main函數(shù)前執(zhí)行的一段代碼,主要是為運行c語言程序提供基本運行環(huán)境。在實際應(yīng)用中,為提高系統(tǒng)的實時性,加快代碼的執(zhí)行速度,系統(tǒng)啟動后程序往往要被搬移到RAM中,因為RAM的存取速度要比ROM快得多,這樣大大提升系統(tǒng)的性能。啟動程序要完成的任務(wù)包括:硬件初始化,系統(tǒng)存儲系統(tǒng)的配置,復(fù)制二級中斷向量表。啟動程序大概過程如下:(1)系統(tǒng)硬件初始化系統(tǒng)上電或復(fù)位后,

3、程序從位于地址0x0的ResetExceptionVect處開始執(zhí)行,因此需要在這里放置bootloader的第一條指令:bReset,跳轉(zhuǎn)到標(biāo)號為Reset處進(jìn)行第一階段的硬件初始化,主要內(nèi)容為:關(guān)看門狗定時器,關(guān)中斷,初始化PLL和時鐘,初始化存儲器系統(tǒng)。執(zhí)行完以上程序后,系統(tǒng)進(jìn)行堆棧和存儲器的初始化。系統(tǒng)堆棧初始化取決于用戶使用了哪些中斷,以及系統(tǒng)需要處理哪些錯誤類型。一般情況下,管理者堆棧必須設(shè)置,如果使用了IRQ中斷,則IRQ

4、堆棧也必須設(shè)置。如果系統(tǒng)使用了外設(shè),則需要設(shè)置相關(guān)的寄存器,以確定其刷新頻率、總線寬度等信息。(2)代碼復(fù)制到RAM中運行因為嵌入式系統(tǒng)的代碼通常都是固化在ROM或Flash中,上電后開始運行。由于ROM和Flash的讀取速度相對較慢,這樣無疑會降低代碼的執(zhí)行速度和系統(tǒng)的運行效率。因此,需要把系統(tǒng)的代碼復(fù)制到RAM中運行。(3)建立二級中斷向量表在ARM系統(tǒng)中,中斷向量表位于0x0開始的地址處,意味著無論運行什么樣的上層軟件,一旦發(fā)生中

5、斷,程序就得到Flash存儲器的中斷向量表里去,降低系統(tǒng)的運行效率。因此在RAM中建立自己的二級中斷向量表,當(dāng)中斷發(fā)生后,程序直接從RAM中取中斷向量進(jìn)入中斷子程序。(4)MMU的應(yīng)用MMU是存儲器管理單元的縮寫,是用來管理虛擬內(nèi)存系統(tǒng)的器件。MMU完成的兩個主要功能是:將虛地址轉(zhuǎn)換成物理地址,控制存儲器存取允許。MMU關(guān)掉時,虛地址直接輸出到物理地址總線。由于跑的是裸機(jī),沒有用到操作系統(tǒng),以下啟動代碼不包含MMU的應(yīng)用。@下面是對ar

6、m處理器模式寄存器對應(yīng)的常數(shù)進(jìn)行賦值,arm處理器有一個CPSR寄存器,@它的后五位決定了處理器處于哪個模式下??梢钥闯龀?shù)的定義都不會超過后.externmain.text.global_start_start:@@中斷向量@bReset@0x04:未定義指令中止模式的向量地址bHlerUndef@0x08:管理模式的向量地址,通過SWI指令進(jìn)入此模式bHlerSWI@0x0c:指令預(yù)取終止導(dǎo)致的異常的向量地址bHlerPrefetc

7、hAbt@0x10:數(shù)據(jù)訪問終止導(dǎo)致的異常的向量地址bHlerDataAbt@0x14:保留bHlerNotUsed@0x18:中斷模式的向量地址bHlerIRQ@0x1c:快中斷模式的向量地址bHlerFIQReset:ldrsp=4096@設(shè)置棧指針,以下都是C函數(shù),調(diào)用前需要設(shè)好棧bldisable_watch_dog@關(guān)閉WATCHDOG,否則CPU會不斷重啟ldrr0=INTMSKldrr1=0xffffffff@allint

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論