版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- arm地址空間分配與啟動時地址的映射
- spring源代碼解析(二)ioc容器在web中啟動
- ibm筆記本啟動故障錯誤代碼大全
- 如何把xp啟動時間縮短的技巧
- arm-linux啟動流程分析
- 帶有啟動時間的訂單處理異步休假排隊系統(tǒng)優(yōu)化研究.pdf
- 雙核處理器接口的研究和啟動引導(dǎo)的實現(xiàn).pdf
- 重載啟動時圓環(huán)鏈激振載荷分析.pdf
- 新建 啟動器
- 軟啟動器
- 電子軟啟動器啟動方式及現(xiàn)場應(yīng)用
- 強(qiáng)實時RTAI在ARM9處理器的實現(xiàn)及性能研究.pdf
- 基于ARM9處理器的GPS導(dǎo)航定位系統(tǒng).pdf
- 汽輪機(jī)啟動時為何排汽缸溫度升高
- 壓縮機(jī)重錘啟動器與ptc啟動器區(qū)別
- 企業(yè)市場危機(jī)應(yīng)急預(yù)案啟動時間管理研究.pdf
- 不同啟動時間下漢語換位效應(yīng)的ERP研究.pdf
- 軟啟動器原理
- 電機(jī)軟啟動器
- 軟啟動器 總結(jié)
評論
0/150
提交評論