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

下載本文檔

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

文檔簡介

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

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

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

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

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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

提交評論