




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、嵌入式系統(tǒng)開發(fā)方法與調(diào)試演講人:劉淼(博創(chuàng)科技 threewaterup-2004.5.22從硬件開始ARM體系結(jié)構(gòu)硬件工程師的成長之路8位單片機(jī)8051匯編言、(交叉編譯器、原理圖&PCB16位處理器DSPC語言、流水線、鎖頻環(huán)、哈佛結(jié)構(gòu)可編程邏輯器件GAL、CPLD、FPGA硬件描述語言、數(shù)字電路的根本作為當(dāng)代的一個(gè)硬件工程師,這些詞語并不陌生,這可能是大多數(shù)做硬件人的成長之路。嵌入式處理器時(shí)代常見的嵌入式處理器核:ARMMIPSPowerPC68Kx86馮·諾依曼體系結(jié)構(gòu)模型指令寄存器控制器數(shù)據(jù)通道輸入輸出中央處理器存儲(chǔ)器程序指令0指令1指令2指令3指令4數(shù)據(jù)數(shù)據(jù)0數(shù)據(jù)
2、1數(shù)據(jù)2哈佛體系結(jié)構(gòu)指令寄存器控制器數(shù)據(jù)通道輸入輸出中央處理器程序存儲(chǔ)器指令0指令1指令2數(shù)據(jù)存儲(chǔ)器數(shù)據(jù)0數(shù)據(jù)1數(shù)據(jù)2地址指令地址數(shù)據(jù)CISC和RISCCISC:復(fù)雜指令集(Complex Instruction Set Computer具有大量的指令和尋址方式8/2原則:80%的程序只使用20%的指令大多數(shù)程序只使用少量的指令就能夠運(yùn)行。RISC:精簡指令集(Reduced Instruction Set Computer在通道中只包含最有用的指令確保數(shù)據(jù)通道快速執(zhí)行每一條指令使CPU硬件結(jié)構(gòu)設(shè)計(jì)變得更為簡單流水線流水線技術(shù):幾個(gè)指令可以并行執(zhí)行提高了CPU 的運(yùn)行效率內(nèi)部信息流要求通暢流動(dòng)
3、譯碼取指執(zhí)行add 譯碼取指執(zhí)行sub 譯碼取指執(zhí)行cmp時(shí)間AddSubCmp高速緩存(CACHE1、為什么采用高速緩存微處理器的時(shí)鐘頻率比內(nèi)存速度提高快得多,高速緩存可以提高內(nèi)存的平均性能。2、高速緩存的工作原理高速緩存是一種小型、快速的存儲(chǔ)器,它保存部分主存內(nèi)容的拷貝。CPU 高速緩存控制器CACHE主存數(shù)據(jù)數(shù)據(jù)地址說說ARMARMARM(Advanced RISC Machines公司是全球領(lǐng)先的16/32位RISC微處理器知識(shí)產(chǎn)權(quán)設(shè)計(jì)供應(yīng)商。ARM公司通過轉(zhuǎn)讓它的高性能、低成本、功耗低的RISC微處理器、外圍和系統(tǒng)芯片設(shè)計(jì)技術(shù)給合作伙伴來生產(chǎn)各具特色的芯片。ARM公司已成為移動(dòng)通信、
4、手持設(shè)備、多媒體數(shù)字消費(fèi)嵌入式解決方案的RISC標(biāo)準(zhǔn)。ARM體系結(jié)構(gòu)版本-1Version 1 (obsolete基本數(shù)據(jù)處理字節(jié),字以及多字load/store軟件中斷26 bit 地址總線Version 2 (obsoleteMultiply & Multiply-accumulate 支持協(xié)處理器支持線程同步26 bit 地址總線ARM體系結(jié)構(gòu)版本-2z V3版本推出32位尋址能力,結(jié)構(gòu)擴(kuò)展變化為T16位壓縮指令集M增強(qiáng)型乘法器,產(chǎn)生全64位結(jié)果(32X3264or32X32+64 64 z V4版本增加了半字load和store指令z V5版本改進(jìn)了ARM和Thumb之間的交互
5、,結(jié)構(gòu)擴(kuò)展變化為:E-增強(qiáng)型DSP指令集,包括全部算法操作和16位乘法操作J-支持新的JAVA,提供字節(jié)代碼執(zhí)行的硬件和優(yōu)化軟件加速功能ARM家族的更新 感受ARM的幾個(gè)突出優(yōu)點(diǎn)全新設(shè)計(jì)的RISC結(jié)構(gòu)的32位處理器因?yàn)槭侨碌脑O(shè)計(jì),開始就是32位,沒有歷史遺留問題(比如, x86。所以,更便于對(duì)處理器結(jié)構(gòu)進(jìn)行優(yōu)化價(jià)格低廉ARM公司不生產(chǎn)芯片,專心研究處理器內(nèi)核的解決方案把ARM的核授權(quán)給各個(gè)IC制造公司,各個(gè)公司生產(chǎn)自己的芯片,分工明確,體系統(tǒng)一,導(dǎo)致ARM處理器的價(jià)格低廉ARM公司的合作伙伴眾多從IC制造到操作系統(tǒng),可以提供給用戶大量的工具和開發(fā)資料,推廣ARM的應(yīng)用低功耗ARM指令的特點(diǎn)指
6、令長度固定,所有的ARM指令長度都是32bit 結(jié)構(gòu)簡單,更有利于處理器的優(yōu)化設(shè)計(jì)會(huì)引起指令的密度降低,增加系統(tǒng)的總線的負(fù)擔(dān)(對(duì)于存儲(chǔ)器的需求的增加不予考慮,因?yàn)?現(xiàn)在的存儲(chǔ)器可以做的很大,也很便宜。所以,產(chǎn)生了16bit的Thumb指令。可以彌補(bǔ)一些不足3寄存器指令操作,所有的指令都可條件執(zhí)行,避免條件跳轉(zhuǎn)中的流水線的停頓,應(yīng)用更靈活(參考ARM Soc體系結(jié)構(gòu)THUMB指令集( TTHUMB 指令集: 32位ARM指令集的子集,按16位指令重新編碼代碼尺寸小( up to 40 % compression簡化設(shè)計(jì) 工作狀態(tài)之間的切換ARM7TDMI 處理器有兩種工作狀態(tài):ARM -32-b
7、it, 按字排列的ARM指令集Thumb -16-bit,按半字排列的Thumb指令集ARM7TDMI 核的操作狀態(tài)可能通過BX指令(分支和交換指令在ARM狀態(tài)和Thumb狀態(tài)之間切換例:從ARM狀態(tài)切換到Thumb狀態(tài):LDR R0,=Label+1BX R0從Thumb狀態(tài)切換到ARM狀態(tài):LDR R0,=LabelBX R0存儲(chǔ)器模式大端模式字?jǐn)?shù)據(jù)的高位字節(jié)存儲(chǔ)在低地址中 字?jǐn)?shù)據(jù)的低字節(jié)則存放在高地址中小端模式低地址中存放字?jǐn)?shù)據(jù)的低字節(jié) 高地址中存放字?jǐn)?shù)據(jù)的高字節(jié)312423161587字地址1110988765443210低地址高地址312423161587字地址89101184567
8、40123低地址高地址ARM上編程值得注意的地方(1ARM是一個(gè)32位處理器,通常,如果沒有特殊的要求,C語言中的結(jié)構(gòu)體(struct要求4字節(jié)對(duì)齊的。在實(shí)際的代碼中(比如,TCP/IP協(xié)議,會(huì)有如下兩種問題:要求多個(gè)數(shù)據(jù)是緊縮在一個(gè)4字節(jié)中有的4字節(jié)的數(shù)據(jù),但是,數(shù)據(jù)在內(nèi)存中并不是4字節(jié)對(duì)齊存儲(chǔ)的字節(jié)對(duì)齊問題的解決通過,使用緊縮數(shù)據(jù)相關(guān)的關(guān)鍵字,可以讓C語言的結(jié)構(gòu)體以緊縮的方式存儲(chǔ)(并不不是每個(gè)結(jié)構(gòu)體成員都是4字節(jié)對(duì)齊,比如在ARM SDT中,使用_packed關(guān)鍵字定義的結(jié)構(gòu)體(struct編譯的時(shí)候,就可以生成緊縮的數(shù)據(jù)段。代碼A:struct_Aunsigned char time;u
9、nsigned int data; A;代碼B:_packed struct_Bunsigned char time;unsigned int data; B;比較如下面ARM SDT中的C代碼中兩段結(jié)構(gòu)體的定義:緊縮的結(jié)構(gòu)體結(jié)構(gòu)體A是成員4字節(jié)的存儲(chǔ)方式(sizeof(struct A=8,結(jié)構(gòu)體B是成員非4字節(jié)對(duì)齊的存儲(chǔ)方式(sizeof(struct B=5。 ARM的問題然而,作為32位處理器,和x86不同的是,ARM不支持非對(duì)齊字節(jié)的數(shù)據(jù)傳輸。就是說,在C語言里,一旦使用了32位的指針操作一個(gè)非4字節(jié)對(duì)齊的數(shù)據(jù),ARM就會(huì)陷入一個(gè)異常。這個(gè)問題將會(huì)給一些軟件的移植,帶來很多麻煩。一定
10、要小心的處理這些問題。比如,如果這么訪問:B b;int i=0;b.data=i;/錯(cuò)誤這里看上去很正常的C代碼,在ARM中將產(chǎn)生一個(gè)異常因?yàn)榻Y(jié)構(gòu)b中的data成員不是字對(duì)齊的。有時(shí)類似的錯(cuò)誤在編譯的時(shí)候是無法發(fā)現(xiàn)的,在運(yùn)行的時(shí)候,ARM7不能進(jìn)行非對(duì)齊的字傳輸,所以,就會(huì)進(jìn)入一個(gè)ABORT異常。其實(shí)是因?yàn)閷?duì)應(yīng)匯編STR Rd, xxxLDR Rd, xxx指令中的有效地址,必須是4字節(jié)對(duì)齊的。非對(duì)齊字能否傳輸?在現(xiàn)在常用的ARM版本中,都不支持非對(duì)齊字的傳輸,主要包括:ARMv3、ARMv4、ARMv5及相關(guān)的系列產(chǎn)品。在ARMv6中,開始支持非對(duì)齊字的傳輸。ARM上編程值得注意的地方(2
11、流水線的影響通常是在匯編中才能遇到的問題比如:ARM7中的三級(jí)流水線導(dǎo)致,所讀取的PC (程序計(jì)數(shù)器指針,總是比當(dāng)前執(zhí)行的匯編代碼的地址多8ARM7 TDMI的指令流水線取指譯碼執(zhí)行從存儲(chǔ)器取指指令所用的寄存器譯碼從從寄存器組中讀寄存器移位和ALU操作把寄存器寫回到存儲(chǔ)器組每條指令可以分3個(gè)階段執(zhí)行ARM 單周期指令3段流水線操作取指譯碼執(zhí)行取指譯碼執(zhí)行取指譯碼執(zhí)行t指令123注:程序計(jì)數(shù)器PC指向正在取指的指令而不是正在執(zhí)行的指令簡單的例子mov pc, pc這條指令將使程序跳轉(zhuǎn)到了當(dāng)前指令的下下條指令(既跳過一條指令執(zhí)行程序Sub pc, pc,#4執(zhí)行的是下一條指令。Sub pc, pc
12、,#8則是,一條死循環(huán)。中斷中的情況SUBS pc, lr, #4這條指令的作用是ARM7中斷子程序的返回在ARM7進(jìn)入中斷異常(主要是IRQ或者FIQ時(shí),lr中裝載的在進(jìn)入中斷前pc指針指向的指令。因?yàn)?IRQ(或者FIQ異常發(fā)生在流水線的最后的階段,所以,當(dāng)時(shí)的PC是當(dāng)前的指令地址+8。也就是lr中的地址,是要返回的地址+8,所以,lr-4,就是中斷發(fā)生時(shí)的下一條指令,即中斷返回的位置。這個(gè)具體的可以參考ARM7TDMI DataSheet感受ARM現(xiàn)在,結(jié)合我的實(shí)際工作,談?wù)勎沂褂肁RM的一些感受,和一些值得注意的地方以ARM7TDMI和ARM920T內(nèi)核為例以S3C44B0、S3C45
13、10B和S3C2410X處理器為基礎(chǔ)在UP-NETARM3000等平臺(tái)上驗(yàn)證Bank 的劃分面對(duì)不同速度、總線寬度的外設(shè),通常,嵌入式處理器都把外部總線分成不同的Bank空間,對(duì)應(yīng)不同的地址。不同的Bank可以有不同的配置,或者對(duì)應(yīng)的功能也不一樣,支持的外設(shè)也不同。比如:S3C44B0的Bank0-5支持,ROM、SRAM等那些線性尋址的存儲(chǔ)器或者外設(shè);Bank6-7,還可以支持SDRAM、DRAM等。而且,每一個(gè)Bank都可以配置成8-32bit的總線,大端(big endian或者小端(little endian等嵌入式處理器的啟動(dòng)過程(1通常系統(tǒng)上電(或者復(fù)位以后,程序從地址空間的0x0
14、開始即PC(程序計(jì)數(shù)器指針,指向0x0。從這個(gè)地址開始讀取指令并運(yùn)行。通常這個(gè)地址對(duì)應(yīng)的是Bank0嵌入式處理器的啟動(dòng)過程(2因?yàn)橄到y(tǒng)是從bank0上引導(dǎo)的,所以,在Bank0上連接保存有啟動(dòng)代碼的Flash ROM,這就是我們常說的Boot ROMBoot ROM要實(shí)現(xiàn)的主要工作(1硬件系統(tǒng)自檢配置其他Bank或者端口、外設(shè)等工作模式處理中系統(tǒng)的中斷在不支持remap的處理器中,中斷必然要經(jīng)過Boot ROM的空間,這時(shí),Boot ROM需要處理的任務(wù)就是把固定的中斷向量映射到一個(gè)可編程的中斷處理子程序的地址Boot ROM要實(shí)現(xiàn)的主要工作(2引導(dǎo)操作系統(tǒng)系統(tǒng)配置完成以后,Boot ROM需
15、要把操作系統(tǒng)(或者其他程序裝載到SDRAM(就是系統(tǒng)的RAM區(qū),然后,把PC指針指向程序的RAM空間,使操作系統(tǒng)啟動(dòng),這就是引導(dǎo)。因此,Boot ROM中的代碼有常稱之為BootloaderBoot ROM要實(shí)現(xiàn)的主要工作(3Flash(Boot ROM編程對(duì)引導(dǎo)Flash(或者其他的非易失性存儲(chǔ)器編程,通過串口或者以太網(wǎng)口下載編譯成功的操作系統(tǒng)或者應(yīng)用程序,甚至Boot ROM本身。Note: 要想實(shí)現(xiàn)Boot ROM的自編程,必須讓Boot 程序是在RAM中運(yùn)行Boot ROM的燒錄Boot ROM使用來配置系統(tǒng)啟動(dòng)的。沒有Boot ROM,系統(tǒng)就不能配置,更不能啟動(dòng)。Boot ROM可以
16、自編程,但是,第一次系統(tǒng)啟動(dòng)用的Boot ROM是如何燒錄的呢?使用插座連接Flash配合編程器通過ARM的JTAG接口ARM的C編譯器的選擇常見的ARM的C編譯器主要有,SDT 2.5(ARM Software Development ToolkitADS 1.1/1.2(ARM Developer SuiteRealView Developer Suitearm-elf-gcc、arm-linux-gccSDT集成開發(fā)環(huán)境用來編寫、編譯和調(diào)試ARM系列的RISC處理器的應(yīng)用程序。可以開發(fā)C,C+或ARM 匯編程序它的WINDOWS開發(fā)工具有兩個(gè):the ARM Project Manage
17、r(APMThe ARM Debugger for Windows(ADWARM SDT完全適合uCOS-II的編譯。SDT支持ARM公司的RDI調(diào)試協(xié)議,配合JTAG可以很容易的實(shí)現(xiàn)源碼級(jí)的程序調(diào)試ARM 調(diào)試結(jié)構(gòu)JTAGARM的JTAG調(diào)試結(jié)構(gòu)AngelJTAG宿主機(jī)調(diào)試器宿主機(jī)調(diào)試器通過固定的協(xié)議控制下位機(jī)(協(xié)議轉(zhuǎn)換器。比如,SDT中通過Angel協(xié)議或者第三方調(diào)試器所提供的協(xié)議宿主機(jī)調(diào)試器只發(fā)送宏觀的命令,比如:程序運(yùn)行、終止。讀些內(nèi)存、ARM寄存器等通訊的介質(zhì)可以是串口、并口、以太網(wǎng)、USB等JTAG與AngelJTAG調(diào)試:協(xié)議轉(zhuǎn)換器解釋上位機(jī)傳送過來的命令,通過JTAG控制ARM執(zhí)行Angel調(diào)試:協(xié)議轉(zhuǎn)換器可以直接做為目標(biāo)板的Firmware的一部分。直接執(zhí)行從宿主機(jī)傳送過來的調(diào)試命令;并回送相應(yīng)的數(shù)據(jù)。Angel可以節(jié)省專門的JTAG仿真器,但是,它需要軟件,或者是嵌入式操作系統(tǒng)的支持,做不到完全的實(shí)時(shí)仿真。而JTAG仿真是通過硬件和控制ARM的EmbeddedICE實(shí)現(xiàn)的,可以做到實(shí)時(shí)仿真。UARMJTAG的調(diào)試結(jié)構(gòu) 什么是JTAG?JTAG是Joint Test Action G
溫馨提示
- 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. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 租地合同附屬協(xié)議
- 山東省濟(jì)寧市任城區(qū)2024-2025學(xué)年七年級(jí)上學(xué)期期末生物學(xué)試題(含答案)
- 湖南省郴州市2024-2025學(xué)年高一上學(xué)期期末考試生物學(xué)試題(含答案)
- 離婚協(xié)議書條款補(bǔ)充協(xié)議
- 初中數(shù)學(xué)競(jìng)賽指導(dǎo)策略訓(xùn)練課教案
- 水務(wù)工程設(shè)計(jì)與施工合同管理協(xié)議
- 非謂語動(dòng)詞的用法與解析:高中英語語法
- (一模)2025屆安徽省“江南十?!备呷?lián)考地理試卷(含官方答案)
- 電氣物資知識(shí)培訓(xùn)課件
- 水療產(chǎn)品知識(shí)培訓(xùn)課件
- GA 1383-2017報(bào)警運(yùn)營服務(wù)規(guī)范
- 高低壓開關(guān)柜安裝檢驗(yàn)記錄
- 益生菌精品課件
- 一級(jí)公司向二級(jí)公司授權(quán)管理制度
- 沃爾瑪全國的分布
- (自考)財(cái)務(wù)管理學(xué)完整版課件全套ppt教程(最新)
- 第四紀(jì)地質(zhì)與環(huán)境:第十一章 第四紀(jì)氣候變遷及其動(dòng)力機(jī)制
- 小學(xué)生心理健康講座-(精)
- 蝴蝶豌豆花(課堂PPT)
- 口腔修復(fù)學(xué)-第七章-牙列缺失的全口義齒修復(fù)
- Y-Y2系列電機(jī)繞組標(biāo)準(zhǔn)數(shù)據(jù)匯總
評(píng)論
0/150
提交評(píng)論