版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、ARM9啟動(dòng)代碼(裸機(jī)版)所謂啟動(dòng)代碼,就是處理器在啟動(dòng)的時(shí)候執(zhí)行的一段代碼,主要任務(wù)是初始化處理器模式,設(shè)置堆棧,初始化變量等等。由于以上的操作均與處理器體系結(jié)構(gòu)和系統(tǒng)配置密切相關(guān),所以一般由匯編來編寫。在一般32位ARM應(yīng)用系統(tǒng)中,軟件大多數(shù)采用c語言進(jìn)行編程,并且以嵌入式操作系統(tǒng)為開發(fā)平臺(tái),這樣就大大提高了開發(fā)效率和軟件性能。為了能夠進(jìn)行系統(tǒng)初始化,通常采用一個(gè)匯編文件作啟動(dòng)代碼。它可以實(shí)現(xiàn)向量表定義、堆棧初始化、系統(tǒng)變量初始化、
2、中斷系統(tǒng)初始化、IO初始化、地址重映射等操作。啟動(dòng)代碼是芯片復(fù)位后進(jìn)入c語言的main函數(shù)前執(zhí)行的一段代碼,主要是為運(yùn)行c語言程序提供基本運(yùn)行環(huán)境。在實(shí)際應(yīng)用中,為提高系統(tǒng)的實(shí)時(shí)性,加快代碼的執(zhí)行速度,系統(tǒng)啟動(dòng)后程序往往要被搬移到RAM中,因?yàn)镽AM的存取速度要比ROM快得多,這樣大大提升系統(tǒng)的性能。啟動(dòng)程序要完成的任務(wù)包括:硬件初始化,系統(tǒng)存儲(chǔ)系統(tǒng)的配置,復(fù)制二級(jí)中斷向量表。啟動(dòng)程序大概過程如下:(1)系統(tǒng)硬件初始化系統(tǒng)上電或復(fù)位后,
3、程序從位于地址0x0的ResetExceptionVect處開始執(zhí)行,因此需要在這里放置bootloader的第一條指令:bReset,跳轉(zhuǎn)到標(biāo)號(hào)為Reset處進(jìn)行第一階段的硬件初始化,主要內(nèi)容為:關(guān)看門狗定時(shí)器,關(guān)中斷,初始化PLL和時(shí)鐘,初始化存儲(chǔ)器系統(tǒng)。執(zhí)行完以上程序后,系統(tǒng)進(jìn)行堆棧和存儲(chǔ)器的初始化。系統(tǒng)堆棧初始化取決于用戶使用了哪些中斷,以及系統(tǒng)需要處理哪些錯(cuò)誤類型。一般情況下,管理者堆棧必須設(shè)置,如果使用了IRQ中斷,則IRQ
4、堆棧也必須設(shè)置。如果系統(tǒng)使用了外設(shè),則需要設(shè)置相關(guān)的寄存器,以確定其刷新頻率、總線寬度等信息。(2)代碼復(fù)制到RAM中運(yùn)行因?yàn)榍度胧较到y(tǒng)的代碼通常都是固化在ROM或Flash中,上電后開始運(yùn)行。由于ROM和Flash的讀取速度相對(duì)較慢,這樣無疑會(huì)降低代碼的執(zhí)行速度和系統(tǒng)的運(yùn)行效率。因此,需要把系統(tǒng)的代碼復(fù)制到RAM中運(yùn)行。(3)建立二級(jí)中斷向量表在ARM系統(tǒng)中,中斷向量表位于0x0開始的地址處,意味著無論運(yùn)行什么樣的上層軟件,一旦發(fā)生中
5、斷,程序就得到Flash存儲(chǔ)器的中斷向量表里去,降低系統(tǒng)的運(yùn)行效率。因此在RAM中建立自己的二級(jí)中斷向量表,當(dāng)中斷發(fā)生后,程序直接從RAM中取中斷向量進(jìn)入中斷子程序。(4)MMU的應(yīng)用MMU是存儲(chǔ)器管理單元的縮寫,是用來管理虛擬內(nèi)存系統(tǒng)的器件。MMU完成的兩個(gè)主要功能是:將虛地址轉(zhuǎn)換成物理地址,控制存儲(chǔ)器存取允許。MMU關(guān)掉時(shí),虛地址直接輸出到物理地址總線。由于跑的是裸機(jī),沒有用到操作系統(tǒng),以下啟動(dòng)代碼不包含MMU的應(yīng)用。@下面是對(duì)ar
6、m處理器模式寄存器對(duì)應(yīng)的常數(shù)進(jìn)行賦值,arm處理器有一個(gè)CPSR寄存器,@它的后五位決定了處理器處于哪個(gè)模式下??梢钥闯龀?shù)的定義都不會(huì)超過后.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會(huì)不斷重啟ldrr0=INTMSKldrr1=0xffffffff@allint
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- arm地址空間分配與啟動(dòng)時(shí)地址的映射
- spring源代碼解析(二)ioc容器在web中啟動(dòng)
- ibm筆記本啟動(dòng)故障錯(cuò)誤代碼大全
- 如何把xp啟動(dòng)時(shí)間縮短的技巧
- arm-linux啟動(dòng)流程分析
- 帶有啟動(dòng)時(shí)間的訂單處理異步休假排隊(duì)系統(tǒng)優(yōu)化研究.pdf
- 雙核處理器接口的研究和啟動(dòng)引導(dǎo)的實(shí)現(xiàn).pdf
- 重載啟動(dòng)時(shí)圓環(huán)鏈激振載荷分析.pdf
- 新建 啟動(dòng)器
- 軟啟動(dòng)器
- 電子軟啟動(dòng)器啟動(dòng)方式及現(xiàn)場(chǎng)應(yīng)用
- 強(qiáng)實(shí)時(shí)RTAI在ARM9處理器的實(shí)現(xiàn)及性能研究.pdf
- 基于ARM9處理器的GPS導(dǎo)航定位系統(tǒng).pdf
- 汽輪機(jī)啟動(dòng)時(shí)為何排汽缸溫度升高
- 壓縮機(jī)重錘啟動(dòng)器與ptc啟動(dòng)器區(qū)別
- 企業(yè)市場(chǎng)危機(jī)應(yīng)急預(yù)案啟動(dòng)時(shí)間管理研究.pdf
- 不同啟動(dòng)時(shí)間下漢語換位效應(yīng)的ERP研究.pdf
- 軟啟動(dòng)器原理
- 電機(jī)軟啟動(dòng)器
- 軟啟動(dòng)器 總結(jié)
評(píng)論
0/150
提交評(píng)論