嵌入式系統(tǒng)開發(fā)與應(yīng)用-2_第1頁
嵌入式系統(tǒng)開發(fā)與應(yīng)用-2_第2頁
嵌入式系統(tǒng)開發(fā)與應(yīng)用-2_第3頁
嵌入式系統(tǒng)開發(fā)與應(yīng)用-2_第4頁
嵌入式系統(tǒng)開發(fā)與應(yīng)用-2_第5頁
已閱讀5頁,還剩22頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、2012第二章 ARM編程進(jìn)階目錄ARM匯編偽指令A(yù)TPCS與混合編程裸機(jī)硬件的控制方法與例程啟動(dòng)例程ARM匯編偽指令基礎(chǔ)匯編偽操作與匯編偽指令偽操作不會(huì)被編譯成機(jī)器指令匯編偽指令需要被編譯成機(jī)器指令匯編偽指令和指令的區(qū)別一條指令與一條機(jī)器指令對應(yīng)編譯器會(huì)把一條偽指令編譯為一條或多條機(jī)器指令ldr 偽指令形式1:ldr 寄存器,常數(shù)執(zhí)行:如果常數(shù)能夠被12位表示出來,那么該指令就變?yōu)椋?mov r0, #常數(shù)如果常數(shù)不能夠被12位表示出來,那么會(huì)采用ldr指令文字池的方式形式2:ldr 寄存器,標(biāo)號教材圖22問題:1、用指令實(shí)現(xiàn)將常數(shù)20放入寄存器r0 2、用指令實(shí)現(xiàn)將常數(shù)10000放入寄存器

2、r0偽指令adr作用將基于PC相對偏移的地址值讀取到寄存器中教材圖2-4adr與ldr的區(qū)別adr采用相對地址,而ldr使用的是絕對地址adr偽指令要求標(biāo)號與adr偽指令在同一段中,而ldr偽指令沒有這樣的要求adr指令的局限偽指令adr被表示為”add r0,pc,#0 x3c”,其中常數(shù)0 x3c是放在機(jī)器指令的12bit中的立即數(shù),這個(gè)立即數(shù)有可能不能被12bit來表示nop偽指令該偽指令將被替換成MOV R0,R0主要用于短延時(shí)操作ATPCS與混合編程ATPCS規(guī)則ATPCS規(guī)則是ARM程序和Thumb程序中子程序調(diào)用的基本規(guī)則目的是使單獨(dú)編譯的c語言程序和匯編程序之間能夠相互調(diào)用主要

3、內(nèi)容:寄存器的使用規(guī)則數(shù)據(jù)棧的使用規(guī)則ATPCS規(guī)定數(shù)據(jù)棧為FD類型參數(shù)傳遞規(guī)則代碼分析裸機(jī)硬件的控制方法與例程軟件控制硬件的編程原理每一種硬件在其控制器芯片上都會(huì)有物理的寄存器這些存儲(chǔ)單元與內(nèi)存進(jìn)行統(tǒng)一編址寄存器的類型命令寄存器狀態(tài)寄存器數(shù)據(jù)寄存器程序控制硬件的方法程序通過str指令向命令寄存器寫入合適的內(nèi)容,就可以完成對硬件進(jìn)行配置的操作或者要求硬件進(jìn)行某種物理操作。在硬件完成操作后,程序又可以通過ldr指令從數(shù)據(jù)寄存器中獲得想要的數(shù)據(jù),或者從狀態(tài)寄存器中獲得硬件的狀態(tài)。對程序員的要求理解要控制的硬件的運(yùn)行機(jī)制能熟練查閱硬件的手冊能看懂硬件的連線原理圖裸機(jī)硬件控制程序?qū)嵗滩腜86啟動(dòng)例程

4、作用:完成一些基本硬件初始化操作和硬件檢測工作給操作系統(tǒng)的運(yùn)行提供正常的軟硬件環(huán)境加載并且啟動(dòng)操作系統(tǒng)嵌入式系統(tǒng)啟動(dòng)硬件支持將用于引導(dǎo)系統(tǒng)的二進(jìn)制映像文件燒寫到只讀的ROM中,系統(tǒng)啟動(dòng)后從ROM里加載并執(zhí)行映像文件嵌入式系統(tǒng)啟動(dòng)方式“硬盤”啟動(dòng)方式嵌入式系統(tǒng)中的“硬盤”,即NandflashROM啟動(dòng)方式當(dāng)系統(tǒng)選擇從Nand Flash啟動(dòng)時(shí),硬件會(huì)完成以下操作:通過Nand Flash控制器將Nand Flash中前4KB的指令數(shù)據(jù)復(fù)制到Stepping stone中將0 x0地址映射到Stepping stone所在地址0 x40000000PC從0 x0地址處取指令執(zhí)行ROM方式啟動(dòng)使用

5、專門的存儲(chǔ)固件存放啟動(dòng)程序該存儲(chǔ)固件通常是XIP(片內(nèi)可執(zhí)行)類型的ROM嵌入式系統(tǒng)經(jīng)常使用Nor Flash作為啟動(dòng)程序存儲(chǔ)固件當(dāng)系統(tǒng)以該方式啟動(dòng)時(shí),CPU直接從存儲(chǔ)固件里運(yùn)行啟動(dòng)程序嵌入式系統(tǒng)啟動(dòng)軟件支持嵌入式系統(tǒng)啟動(dòng)程序被稱為Boot Loader二進(jìn)制映像文件(image)由編譯器將源碼編譯而成的可執(zhí)行二進(jìn)制文件Image輸入只讀(RO)可讀寫(RW)初始化為0(ZI)具有相同屬性的輸入數(shù)據(jù)段組成image文件的輸出域RAM中的執(zhí)行程序Image文件是存儲(chǔ)在外部存儲(chǔ)設(shè)備里的,而執(zhí)行程序只能運(yùn)行在內(nèi)存中程序中初始化為0的變量,在image文件中不存在,加載后還要為ZI段準(zhǔn)備地址空間來存放初始化為0的ZI數(shù)據(jù)段嵌入式系統(tǒng)的啟動(dòng)是指處理器從復(fù)位進(jìn)入到操作系統(tǒng)或程序能夠運(yùn)行的狀態(tài)的過程過程初始化必要硬件關(guān)閉看門狗初始化內(nèi)存初始化C程序軟件執(zhí)行環(huán)境初始化C程序棧指針清零ZI段將啟動(dòng)代碼從ROM復(fù)制到RAM中跳轉(zhuǎn)到RAM里繼續(xù)執(zhí)行啟動(dòng)代碼讓CPU執(zhí)行RAM里的啟動(dòng)代碼ADS1.2中實(shí)現(xiàn)ROM到RAM復(fù)制見教材S3C2440的

溫馨提示

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

評論

0/150

提交評論