嵌入式學(xué)習(xí)-基于arm系統(tǒng)_第1頁(yè)
嵌入式學(xué)習(xí)-基于arm系統(tǒng)_第2頁(yè)
嵌入式學(xué)習(xí)-基于arm系統(tǒng)_第3頁(yè)
嵌入式學(xué)習(xí)-基于arm系統(tǒng)_第4頁(yè)
嵌入式學(xué)習(xí)-基于arm系統(tǒng)_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余69頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

微芯力科嵌入式軟件開(kāi)發(fā)關(guān)鍵“ARM”軟件設(shè)計(jì)基“ARM”嵌入式軟件開(kāi)發(fā)關(guān)鍵程序 定啟動(dòng)代碼 處理器上電復(fù)位的程序運(yùn) 啟動(dòng)代碼常見(jiàn)實(shí)時(shí)操作系統(tǒng)的板基支持包——啟動(dòng)代碼最小高級(jí)語(yǔ) 函數(shù)調(diào)Main()MyRoot()啟動(dòng)代碼典型中斷向量設(shè)全局寄存器初始 區(qū)設(shè)置初始化堆棧數(shù)據(jù)區(qū)清零高級(jí)語(yǔ) 函數(shù)調(diào)程序 定一部分嵌入式軟件開(kāi)發(fā)均屬于系統(tǒng)級(jí)開(kāi)發(fā) 常 程序以下程序段存在于各個(gè)目標(biāo)文件中*.obj*.o定位后按段的類別收集在一起同時(shí)指定在text:代碼段所有代碼塊部分rodata:data:bss:簡(jiǎn) 定位文{.=.=}典 定位文{

.= .text:{*(.text)Image_RO_Limit=Image_RW_Base=.data:{*(.data).rodata:{}.bss:{*(.bss)PROVIDE(stack=end=_end= 0:} 0:} 0:{ 0:{*(.debug_frame)}調(diào)試技在應(yīng)用程序的編輯編譯工作完成后開(kāi)發(fā)人員需要借助一些調(diào)試設(shè)備或調(diào)試模塊對(duì)應(yīng)用程序進(jìn)行調(diào)試發(fā)現(xiàn)程序設(shè)計(jì)中的缺陷常用的調(diào)試設(shè)備或調(diào)試模塊有以下幾種指令集模擬駐留軟件JTAG仿真仿真指令集模而 運(yùn)行速調(diào)駐 軟駐留軟件ResidentMonitors是一段運(yùn)行在目標(biāo)板上的程序集成開(kāi)發(fā)環(huán)境中的調(diào)試模塊通過(guò)以太網(wǎng)口并行端口或者串行端口等通訊端口與駐留軟件進(jìn)行交互由調(diào)試模塊發(fā)送命令通知駐 軟件控制程序的執(zhí)行讀 置斷駐 軟件是一種比較低廉有效的調(diào)試方

讀寫(xiě)寄不需要任何的硬件調(diào)試和仿真設(shè)備ARM公司的Angel就是該類軟件大部分嵌入式實(shí)時(shí)操作系統(tǒng)也是采用該類軟件進(jìn)行調(diào)試不同的是在嵌入式實(shí)時(shí)操作系統(tǒng)中駐留 駐留軟件的不便之處在于它對(duì)硬件設(shè)備的要求比較高一般在硬件穩(wěn)定之后才能進(jìn)行應(yīng)用軟件的開(kāi)發(fā)同時(shí)它占用目標(biāo)板上的一部分資源而且不能對(duì)程序的全速運(yùn)行進(jìn)行完全仿真所以對(duì)JTAG仿真JTAG仿真器也稱為JTAG調(diào)試器是通過(guò) 的邊界掃描口進(jìn)行調(diào)試的設(shè)JTAG仿真器比較便宜掃連接比較方便通過(guò)現(xiàn)有的JTAG邊描口ARMCPU核通)調(diào) 它無(wú)需目 是駐 軟件所必需

屬于完全非插入式(即不使用片不占用目標(biāo)系統(tǒng)的任何端口而這另外由于JTAG調(diào)試的目標(biāo)程序是在目標(biāo)板上執(zhí)行仿真接近于目標(biāo)硬件因此許多接口問(wèn)題如高頻操作限D(zhuǎn)C參數(shù)不匹配電線長(zhǎng)度的限制等被最小

AC使用集成開(kāi)發(fā)環(huán)境配合JTAG仿真器進(jìn)行開(kāi)發(fā)是目前采用的一種調(diào)試方仿真仿真器使用仿真頭完全取代目標(biāo)板上的 可以完仿真M 的行為提供更加深入的調(diào)試功能為了能夠全速仿真時(shí)鐘速度高于的處理極其復(fù)雜的設(shè)計(jì)和工藝因而其價(jià)格比較昂貴

仿真器通常用在ARM的硬件開(kāi)發(fā)中在軟件的開(kāi)發(fā)中較少使用其價(jià)格高昂也是 實(shí)時(shí)操作系統(tǒng)RTOS選擇的原EmbestIDE與RTOS的配常見(jiàn)的幾種RTOS介RTOS基礎(chǔ)知保證優(yōu)先任務(wù)得到優(yōu)先任務(wù)間的通信互斥機(jī)制實(shí)現(xiàn)任務(wù)間同步和通保證任務(wù)在確定時(shí)間內(nèi)執(zhí)行完RTOS選 RTOS選擇原 包括任務(wù)最長(zhǎng)切換時(shí)時(shí)間可調(diào)度的任務(wù)數(shù)和優(yōu)先級(jí)數(shù) 標(biāo)準(zhǔn)兼容性是否支 標(biāo)RTOS發(fā)送形式是源代碼還是二進(jìn)制代碼是否需 EmbestIDE和RTOS的配EmbestIDE完全支持源代碼方式提供的RTOS 和應(yīng)用程序一起編譯即可調(diào)試RTOS及應(yīng)用程序EmbestIDE支持二進(jìn)制碼方式提供的RTOS條件是RTOS的二進(jìn)制碼是使用GNU工具鏈編譯的將該二進(jìn)制碼文件作為庫(kù)進(jìn)EmbestIDE應(yīng)用工程即可調(diào)試uCOS操作系簡(jiǎn)單高效易完全免費(fèi)支持64個(gè)任支持多種

提供全部源提供郵箱信號(hào)量以及消息隊(duì)列三種任務(wù)間通訊 缺乏足夠多的應(yīng)用模塊如TCP/IP協(xié)議以及GUI模塊等等無(wú)技術(shù)支eCOS操作系從linux移植而來(lái)復(fù)雜但完全功完全免費(fèi)使支持多種

提供全部源使用GNU工具鏈開(kāi)有完備的設(shè)備驅(qū)動(dòng)程序和應(yīng)用模技術(shù)支持支持POSIX標(biāo)需要較多的系統(tǒng)資

可從linux中移uCLinux操作系從linux移植而來(lái)復(fù)雜但完全功完全免費(fèi)使支持多種

提供全部源使用GNU工具鏈開(kāi)發(fā)提供通用的linux有完備的設(shè)備驅(qū)動(dòng)程序和應(yīng)用模使用直接物理內(nèi) 方完整的TCP/IP需要較多的系統(tǒng)資源內(nèi)核無(wú)技術(shù)支持但國(guó)內(nèi)使用較

可從linux中移Vxworks操作系銷售額最大的實(shí)時(shí)操作系通常只提供二進(jìn)制碼內(nèi)支持多種完整的開(kāi)發(fā)工具和測(cè)試工

價(jià)格昂完備的設(shè)備驅(qū)動(dòng)程序和應(yīng)用技術(shù)支持支持POSIX標(biāo)需要中等系統(tǒng)資源性能好功能齊ARM寄存器組各種模式下的寄主要寄存器的ARM寄存器組31個(gè)32ARM寄存器分程序計(jì)數(shù)器(PC)特殊功能寄存用做堆棧寄存器

用做程序計(jì)數(shù)器

區(qū)配區(qū)配ARM 器組復(fù)位的時(shí)候0地址為ROM區(qū)很 允 區(qū)的重映ARM指令寄存器裝載 指SWIThumb指令 指寄存器裝載 指舉STRRd, RdRbase所包含的有效STRRd, RdPCplace所合成的有效地STRRd,Rbase,RindexLSL RdRbaseRindex*;所合成的有效算術(shù)和邏輯舉ADCSR3,R7,ANDR0,R0,加高端的字帶進(jìn)R0R0的丟棄其余BICR0,R0,MOVR0,R0,;清除R0中的位 ;R0=R0*保持其余的移位操作邏輯左算術(shù)左邏輯右算術(shù)右循環(huán)右?guī)U(kuò)展的循環(huán)右乘法指MLA{條件}{S}destop1op2op3>dest=(op_1*op_2)+op_3MLA的行為同于 但它把操作數(shù)3的值加到結(jié)果上在求總和時(shí)有MUL乘法MUL{條件}{Sdestop1opdest=op_1*MUL提供32位整數(shù)乘法如果操作數(shù)是有符號(hào)的

可以假比較指舉CMNR0 R0-1進(jìn)行TSTR0 測(cè)試在R0中是否設(shè)置了0分支指B分支(Branch)指令處理器PC立即跳轉(zhuǎn)到給定的B{條件}<地址在寄存器14中裝載上R15的內(nèi)BL{條件}<地址

在分支之偽指?jìng)沃噶钏鼈儾皇翘幚砥鲗?shí)際上能理解的指令但可以轉(zhuǎn)換能理解的某種東西它們的存在能使你的程序更加簡(jiǎn)異常向ARM的ExceptionUndefinedPrefetchDataabort正常情況下系統(tǒng)reset

使用匯編語(yǔ)言編寫(xiě)可控制CUndefined未定義駐留

處理程序通常做法是首先進(jìn)行現(xiàn)場(chǎng)保護(hù)然后Donothing當(dāng)出現(xiàn)此錯(cuò)誤時(shí)主因大致是仿真器跳入錯(cuò)軟中駐留于0x8Perfect駐留于Data駐留于通常是保護(hù)現(xiàn)場(chǎng)然后do出錯(cuò)主因程序跳飛查程序FIQ和FIQ快速中斷駐留于IRQ中斷駐留于編程實(shí)例1.數(shù)碼管功能顯示012……F板卡ROM編本章包含如下部分內(nèi)存映射的 ROMatRAMatRAMat系統(tǒng)的初系統(tǒng)的初始執(zhí)行環(huán)境的初始點(diǎn)的識(shí)設(shè)置向量?jī)?nèi)存系統(tǒng)的初堆棧指針的初任何關(guān)鍵的I/O設(shè)備的初通過(guò)中斷系統(tǒng)初始化RAM變中斷的使改變處理器模改變處理器狀應(yīng)用的初應(yīng)用的初始根據(jù)C代碼的要求初始化使用主函TobuildtheexamplefromtheCodeWarriorUsetheCodeWarriorprojectSelectexecute

執(zhí)行Assembletheinitializationarmasm-gvectors.sarmasm-ginit.sCompilethemain編譯以下程序步驟如下armcc-c-g-O1main.c-DEMBEDDEDarmcc-c-g-O1retarget.carmcc-c-g-O1serial.c-Linkthe使用如下命 映像(allononearmlinkvectors.oinit.omain.oretarget.oserial.o-ro-base0x0-rw-base-firstvectors.o(Vect)-entry-oembed.axf-infototals-map-listRunthe

-binSpecifiesabinaryoutputimagewithnofromelfembed.axf-bin-oUseARMulatortoARMulatorForarmsduse:getfileembed.bin0x0readsymsembed.axfForADW&ADU,

UseARMulatorto GetFileandspecifyembed.binwithaddress LoadsymbolsonlyandspecifyForAXD LoadMemoryFromFileandembed.binwithload LoadDebugSymbolsandspecify內(nèi)存映.ROMisaddress0asspecifiedby-ro-.RAMisat0x040000,asspecifiedby-rw-base,toholdthestack,and.Thestackpointerisinitializedto0x80000inWritingCodefor.Theheapbaseisinitializedto0x060000user_initial_stackheap()retarget.c.ThestackpointerisinheritedfromthevaluesetMemoryThefilelist.txtshowsthemap(segmentlisting)forthesampleImagecomponentCodeRODataRWDataZIData1152648127660Object219087720648576LibraryTotalsCodeRODataRWDataZIDataDebug2306083687616236GrandTotalsTotalROSize(Code+ROData)23896(23.34kB)TotalRWSize(RWData+ZIData)84(0.08kB)TotalROMSize(Code+ROData+RWData)23904BootLoader編BootLoader功HALallowsforrapid andportingapplications(includingRTOSs).Onanexistingtarget,anapplicationcanbewrittenin‘C’frommain().PortingtoanewenvironmentissimplebecauseofHALsmodulardesign.Thefileboot.sinthelibdirectoryperformsinitialconfigurationofexceptionvectors,memory,stack,MMUandcacheinitialisation,beforecallingmain().Vectors向向量ARMprocessorshaveeighttypesofRoutinesTheentry-pointtoanARMprogramisdefinedbythedirective HALattachesthisdirectivetotheroutine main’.Byactuallyexecutingtheresetexceptionvectorasthe HALcanbeloadedintorambyanotherprogram,storedinstaticmemoryatzero.Whenusedinasystemwithstaticmemoryatzero,thedefaultvectorsinthefileboot.sinthelibdirectorywillneedtobechangedtocorrespondtotheonesactuallyusedinthehigh-levelEachtargetmayprovideadifferentnumberofLight-Emittingforuseasstatusindicators.Byusingastandardaccessmechanism,applicationcanbetransferredtonewplatformswithoutconcernaboutspaceaddressing,orwhetherwritinga1turnsaLEDonorSerialHALcurrentlyonlyprovidesminimalserialIOsupport,justenoughtoresetthedefinedserialportandtohandlepolledinputandoutput.IOSpaceIOSpaceByusingroutinestoaccessperipheralsintheIOAddressSpace,allregardingdifferentbussesandaccessmechanismssuchasISA/PCIcanbe ymasked.Suchroutinesalsoalloweas

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論