版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、嵌入式系統(tǒng)開發(fā)方法與調試演講人:劉淼(博創(chuàng)科技 threewaterup-2004.5.22從硬件開始ARM體系結構硬件工程師的成長之路8位單片機8051匯編言、(交叉編譯器、原理圖&PCB16位處理器DSPC語言、流水線、鎖頻環(huán)、哈佛結構可編程邏輯器件GAL、CPLD、FPGA硬件描述語言、數(shù)字電路的根本作為當代的一個硬件工程師,這些詞語并不陌生,這可能是大多數(shù)做硬件人的成長之路。嵌入式處理器時代常見的嵌入式處理器核:ARMMIPSPowerPC68Kx86馮·諾依曼體系結構模型指令寄存器控制器數(shù)據(jù)通道輸入輸出中央處理器存儲器程序指令0指令1指令2指令3指令4數(shù)據(jù)數(shù)據(jù)0數(shù)據(jù)
2、1數(shù)據(jù)2哈佛體系結構指令寄存器控制器數(shù)據(jù)通道輸入輸出中央處理器程序存儲器指令0指令1指令2數(shù)據(jù)存儲器數(shù)據(jù)0數(shù)據(jù)1數(shù)據(jù)2地址指令地址數(shù)據(jù)CISC和RISCCISC:復雜指令集(Complex Instruction Set Computer具有大量的指令和尋址方式8/2原則:80%的程序只使用20%的指令大多數(shù)程序只使用少量的指令就能夠運行。RISC:精簡指令集(Reduced Instruction Set Computer在通道中只包含最有用的指令確保數(shù)據(jù)通道快速執(zhí)行每一條指令使CPU硬件結構設計變得更為簡單流水線流水線技術:幾個指令可以并行執(zhí)行提高了CPU 的運行效率內部信息流要求通暢流動
3、譯碼取指執(zhí)行add 譯碼取指執(zhí)行sub 譯碼取指執(zhí)行cmp時間AddSubCmp高速緩存(CACHE1、為什么采用高速緩存微處理器的時鐘頻率比內存速度提高快得多,高速緩存可以提高內存的平均性能。2、高速緩存的工作原理高速緩存是一種小型、快速的存儲器,它保存部分主存內容的拷貝。CPU 高速緩存控制器CACHE主存數(shù)據(jù)數(shù)據(jù)地址說說ARMARMARM(Advanced RISC Machines公司是全球領先的16/32位RISC微處理器知識產權設計供應商。ARM公司通過轉讓它的高性能、低成本、功耗低的RISC微處理器、外圍和系統(tǒng)芯片設計技術給合作伙伴來生產各具特色的芯片。ARM公司已成為移動通信、
4、手持設備、多媒體數(shù)字消費嵌入式解決方案的RISC標準。ARM體系結構版本-1Version 1 (obsolete基本數(shù)據(jù)處理字節(jié),字以及多字load/store軟件中斷26 bit 地址總線Version 2 (obsoleteMultiply & Multiply-accumulate 支持協(xié)處理器支持線程同步26 bit 地址總線ARM體系結構版本-2z V3版本推出32位尋址能力,結構擴展變化為T16位壓縮指令集M增強型乘法器,產生全64位結果(32X3264or32X32+64 64 z V4版本增加了半字load和store指令z V5版本改進了ARM和Thumb之間的交互
5、,結構擴展變化為:E-增強型DSP指令集,包括全部算法操作和16位乘法操作J-支持新的JAVA,提供字節(jié)代碼執(zhí)行的硬件和優(yōu)化軟件加速功能ARM家族的更新 感受ARM的幾個突出優(yōu)點全新設計的RISC結構的32位處理器因為是全新的設計,開始就是32位,沒有歷史遺留問題(比如, x86。所以,更便于對處理器結構進行優(yōu)化價格低廉ARM公司不生產芯片,專心研究處理器內核的解決方案把ARM的核授權給各個IC制造公司,各個公司生產自己的芯片,分工明確,體系統(tǒng)一,導致ARM處理器的價格低廉ARM公司的合作伙伴眾多從IC制造到操作系統(tǒng),可以提供給用戶大量的工具和開發(fā)資料,推廣ARM的應用低功耗ARM指令的特點指
6、令長度固定,所有的ARM指令長度都是32bit 結構簡單,更有利于處理器的優(yōu)化設計會引起指令的密度降低,增加系統(tǒng)的總線的負擔(對于存儲器的需求的增加不予考慮,因為,現(xiàn)在的存儲器可以做的很大,也很便宜。所以,產生了16bit的Thumb指令??梢詮浹a一些不足3寄存器指令操作,所有的指令都可條件執(zhí)行,避免條件跳轉中的流水線的停頓,應用更靈活(參考ARM Soc體系結構THUMB指令集( TTHUMB 指令集: 32位ARM指令集的子集,按16位指令重新編碼代碼尺寸小( up to 40 % compression簡化設計 工作狀態(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存儲器模式大端模式字數(shù)據(jù)的高位字節(jié)存儲在低地址中 字數(shù)據(jù)的低字節(jié)則存放在高地址中小端模式低地址中存放字數(shù)據(jù)的低字節(jié) 高地址中存放字數(shù)據(jù)的高字節(jié)312423161587字地址1110988765443210低地址高地址312423161587字地址89101184567
8、40123低地址高地址ARM上編程值得注意的地方(1ARM是一個32位處理器,通常,如果沒有特殊的要求,C語言中的結構體(struct要求4字節(jié)對齊的。在實際的代碼中(比如,TCP/IP協(xié)議,會有如下兩種問題:要求多個數(shù)據(jù)是緊縮在一個4字節(jié)中有的4字節(jié)的數(shù)據(jù),但是,數(shù)據(jù)在內存中并不是4字節(jié)對齊存儲的字節(jié)對齊問題的解決通過,使用緊縮數(shù)據(jù)相關的關鍵字,可以讓C語言的結構體以緊縮的方式存儲(并不不是每個結構體成員都是4字節(jié)對齊,比如在ARM SDT中,使用_packed關鍵字定義的結構體(struct編譯的時候,就可以生成緊縮的數(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代碼中兩段結構體的定義:緊縮的結構體結構體A是成員4字節(jié)的存儲方式(sizeof(struct A=8,結構體B是成員非4字節(jié)對齊的存儲方式(sizeof(struct B=5。 ARM的問題然而,作為32位處理器,和x86不同的是,ARM不支持非對齊字節(jié)的數(shù)據(jù)傳輸。就是說,在C語言里,一旦使用了32位的指針操作一個非4字節(jié)對齊的數(shù)據(jù),ARM就會陷入一個異常。這個問題將會給一些軟件的移植,帶來很多麻煩。一定
10、要小心的處理這些問題。比如,如果這么訪問:B b;int i=0;b.data=i;/錯誤這里看上去很正常的C代碼,在ARM中將產生一個異常因為結構b中的data成員不是字對齊的。有時類似的錯誤在編譯的時候是無法發(fā)現(xiàn)的,在運行的時候,ARM7不能進行非對齊的字傳輸,所以,就會進入一個ABORT異常。其實是因為對應匯編STR Rd, xxxLDR Rd, xxx指令中的有效地址,必須是4字節(jié)對齊的。非對齊字能否傳輸?在現(xiàn)在常用的ARM版本中,都不支持非對齊字的傳輸,主要包括:ARMv3、ARMv4、ARMv5及相關的系列產品。在ARMv6中,開始支持非對齊字的傳輸。ARM上編程值得注意的地方(2
11、流水線的影響通常是在匯編中才能遇到的問題比如:ARM7中的三級流水線導致,所讀取的PC (程序計數(shù)器指針,總是比當前執(zhí)行的匯編代碼的地址多8ARM7 TDMI的指令流水線取指譯碼執(zhí)行從存儲器取指指令所用的寄存器譯碼從從寄存器組中讀寄存器移位和ALU操作把寄存器寫回到存儲器組每條指令可以分3個階段執(zhí)行ARM 單周期指令3段流水線操作取指譯碼執(zhí)行取指譯碼執(zhí)行取指譯碼執(zhí)行t指令123注:程序計數(shù)器PC指向正在取指的指令而不是正在執(zhí)行的指令簡單的例子mov pc, pc這條指令將使程序跳轉到了當前指令的下下條指令(既跳過一條指令執(zhí)行程序Sub pc, pc,#4執(zhí)行的是下一條指令。Sub pc, pc
12、,#8則是,一條死循環(huán)。中斷中的情況SUBS pc, lr, #4這條指令的作用是ARM7中斷子程序的返回在ARM7進入中斷異常(主要是IRQ或者FIQ時,lr中裝載的在進入中斷前pc指針指向的指令。因為,IRQ(或者FIQ異常發(fā)生在流水線的最后的階段,所以,當時的PC是當前的指令地址+8。也就是lr中的地址,是要返回的地址+8,所以,lr-4,就是中斷發(fā)生時的下一條指令,即中斷返回的位置。這個具體的可以參考ARM7TDMI DataSheet感受ARM現(xiàn)在,結合我的實際工作,談談我使用ARM的一些感受,和一些值得注意的地方以ARM7TDMI和ARM920T內核為例以S3C44B0、S3C45
13、10B和S3C2410X處理器為基礎在UP-NETARM3000等平臺上驗證Bank 的劃分面對不同速度、總線寬度的外設,通常,嵌入式處理器都把外部總線分成不同的Bank空間,對應不同的地址。不同的Bank可以有不同的配置,或者對應的功能也不一樣,支持的外設也不同。比如:S3C44B0的Bank0-5支持,ROM、SRAM等那些線性尋址的存儲器或者外設;Bank6-7,還可以支持SDRAM、DRAM等。而且,每一個Bank都可以配置成8-32bit的總線,大端(big endian或者小端(little endian等嵌入式處理器的啟動過程(1通常系統(tǒng)上電(或者復位以后,程序從地址空間的0x0
14、開始即PC(程序計數(shù)器指針,指向0x0。從這個地址開始讀取指令并運行。通常這個地址對應的是Bank0嵌入式處理器的啟動過程(2因為系統(tǒng)是從bank0上引導的,所以,在Bank0上連接保存有啟動代碼的Flash ROM,這就是我們常說的Boot ROMBoot ROM要實現(xiàn)的主要工作(1硬件系統(tǒng)自檢配置其他Bank或者端口、外設等工作模式處理中系統(tǒng)的中斷在不支持remap的處理器中,中斷必然要經過Boot ROM的空間,這時,Boot ROM需要處理的任務就是把固定的中斷向量映射到一個可編程的中斷處理子程序的地址Boot ROM要實現(xiàn)的主要工作(2引導操作系統(tǒng)系統(tǒng)配置完成以后,Boot ROM需
15、要把操作系統(tǒng)(或者其他程序裝載到SDRAM(就是系統(tǒng)的RAM區(qū),然后,把PC指針指向程序的RAM空間,使操作系統(tǒng)啟動,這就是引導。因此,Boot ROM中的代碼有常稱之為BootloaderBoot ROM要實現(xiàn)的主要工作(3Flash(Boot ROM編程對引導Flash(或者其他的非易失性存儲器編程,通過串口或者以太網(wǎng)口下載編譯成功的操作系統(tǒng)或者應用程序,甚至Boot ROM本身。Note: 要想實現(xiàn)Boot ROM的自編程,必須讓Boot 程序是在RAM中運行Boot ROM的燒錄Boot ROM使用來配置系統(tǒng)啟動的。沒有Boot ROM,系統(tǒng)就不能配置,更不能啟動。Boot ROM可以
16、自編程,但是,第一次系統(tǒ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)境用來編寫、編譯和調試ARM系列的RISC處理器的應用程序??梢蚤_發(fā)C,C+或ARM 匯編程序它的WINDOWS開發(fā)工具有兩個:the ARM Project Manage
17、r(APMThe ARM Debugger for Windows(ADWARM SDT完全適合uCOS-II的編譯。SDT支持ARM公司的RDI調試協(xié)議,配合JTAG可以很容易的實現(xiàn)源碼級的程序調試ARM 調試結構JTAGARM的JTAG調試結構AngelJTAG宿主機調試器宿主機調試器通過固定的協(xié)議控制下位機(協(xié)議轉換器。比如,SDT中通過Angel協(xié)議或者第三方調試器所提供的協(xié)議宿主機調試器只發(fā)送宏觀的命令,比如:程序運行、終止。讀些內存、ARM寄存器等通訊的介質可以是串口、并口、以太網(wǎng)、USB等JTAG與AngelJTAG調試:協(xié)議轉換器解釋上位機傳送過來的命令,通過JTAG控制ARM執(zhí)行Angel調試:協(xié)議轉換器可以直接做為目標板的Firmware的一部分。直接執(zhí)行從宿主機傳送過來的調試命令;并回送相應的數(shù)據(jù)。Angel可以節(jié)省專門的JTAG仿真器,但是,它需要軟件,或者是嵌入式操作系統(tǒng)的支持,做不到完全的實時仿真。而JTAG仿真是通過硬件和控制ARM的EmbeddedICE實現(xiàn)的,可以做到實時仿真。UARMJTAG的調試結構 什么是JTAG?JTAG是Joint Test Action G
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【名師一號】2022屆高三地理一輪復習演練:選修5-自然災害與防治5-5-
- 湖北省黃石市大冶市2024-2025學年七年級上學期期末考試數(shù)學試卷(無答案)
- 2024-2025學年部編版歷史九年級上冊期末復習練習題(含答案)
- 【創(chuàng)新設計】2021屆高考化學(廣東專用)一輪總復習限時訓練:第三章-課時1-鈉及其化合物
- 四年級數(shù)學(小數(shù)加減運算)計算題專項練習與答案
- 《滴眼藥水的護理》課件
- 《皮膚外用類用藥》課件
- 《汽車底盤機械系統(tǒng)檢測與修復》-考試題庫及答案 項目二 行駛系統(tǒng)檢修試題及答案
- 人教版初二八年級下冊歷史《香港及澳門回歸》
- 2024-2025學年七年級數(shù)學上學期期末模擬卷(冀教版)(原卷版)
- 居家養(yǎng)老人員培訓管理制度
- 抗菌藥物的合理應用培訓
- 初三數(shù)學老師家長會發(fā)言稿
- 湖北第二師范學院《操作系統(tǒng)》2023-2024學年期末試卷
- 2021-2022學年河北省唐山市高一上學期期末語文試題
- 舒適化醫(yī)療麻醉
- 南寧二中、柳州高中2025屆高一上數(shù)學期末聯(lián)考試題含解析
- 吃動平衡健康體重 課件 2024-2025學年人教版(2024)初中體育與健康七年級全一冊
- 高效能人士的七個習慣(課件)
- 2024年秋季學期新魯教版(54制)6年級上冊英語課件 Unit6 Section A (3a-3c)(第3課時)
- 福建省泉州市2023-2024學年高一上學期1月教學質量檢測(期末考試)地理試題 附答案
評論
0/150
提交評論