版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1.什么是嵌入式系統(tǒng)?第一種,根據(jù)IEEE(國際電氣和電子工程師協(xié)會)的定義:嵌入式系統(tǒng)是“用于控制、監(jiān)視或者輔助操作機器和設備的裝置”(原文為devicesusedtocontrol,monitor,orassisttheoperationofequipment,machineryorplants)。第二種,嵌入式系統(tǒng)是以應用為中心、以計算機技術為基礎、軟件硬件可裁剪、功能、可靠性、成本、體積、功耗嚴格要求的專用計算機系統(tǒng)。嵌入到對象體系中的專用計算機系統(tǒng)兩種定義之一即可。2.與通用型計算機相比,嵌入式系統(tǒng)有哪些特點?通常是面向特定應用的;空間和各種資源相對不足,必須高效率地設計,量體裁衣、去除冗余;產(chǎn)品升級換代和具體產(chǎn)品同步,具有較長的生命周期;軟件一般都固化在存儲器芯片或單片機本身;不具備自主開發(fā)能力,必須有一套開發(fā)工具和環(huán)境才能進行開發(fā)3.舉例介紹嵌入式微處理器有哪幾類?嵌入式微處理器的基礎是通用計算機中的CPU(1)嵌入式微處理器(EmbeddedMicroprocessorUnit,EMPU)嵌入式處理器目前主要有Aml86/88、386EX、SC-400、PowerPC、68000、MIPS、ARM系列等。嵌入式微控制器(MicrocontrollerUnit,MCU)(又稱單片機,即將整個計算機系統(tǒng)集成到一塊芯片上)嵌入式微控制器目前的品種和數(shù)量最多,比較有代表性的通用系列包括8051、P51XA、MCS-251、MCS-96/196/296、C166/167、MC68HC05/11/12/16、68300等。嵌入式DSP處理器(EmbeddedDigitalSignalProcessor,EDSP)嵌入式DSP處理器比較有代表性的產(chǎn)品是TexasInstruments的TMS320系列和Motorola摩托羅拉的DSP56000系列。嵌入式片上系統(tǒng)(SystemOnChip)4.從硬件系統(tǒng)來看,嵌入式系統(tǒng)由哪幾部分組成?畫出簡圖。嵌入式核心芯片,EMPU——嵌入式微處理器、EMCU——嵌入式微控制器、EDSP——嵌入式數(shù)字信號處理器、ESoC——嵌入式片上系統(tǒng)。用以保存固件的ROM(非揮發(fā)性只讀存儲器)。用以保存程序數(shù)據(jù)的RAM(揮發(fā)性的隨機訪問存儲器)。連接微控制器和開關、按鈕、傳感器、模/數(shù)轉化器、控制器、LED(發(fā)光二極管)、顯示器的I/O端口。5.嵌入式微處理器和嵌入式微控制器分別由哪些部件組成,兩者有何區(qū)別。答:嵌入式微處理器的基礎是通用計算機中的CPU。嵌入式微處理器=運算器+控制器+寄存器組+內(nèi)總線,在應用中必須裝配在專門設計的電路板上,在電路板上必須包括ROM、RAM、總線接口、各種外設等器件。嵌入式微控制器=cpu內(nèi)核+存儲器+I/o接口+輔助電路(時鐘、A/D、D/A等)嵌入式微處理器與嵌入式微控制器的區(qū)別:嵌入式微處理器只含有內(nèi)核,嵌入式微控制器除含有內(nèi)核外,內(nèi)部還包含ROM、RAM存儲器以及各種外設接口、輔助電路等。和嵌入式微處理器相比,嵌入式微控制器的最大特點是單片化,體積大大減小,從而使功耗和成本下降,可靠性提高。6.嵌入式操作系統(tǒng)通常含有幾層,主要實現(xiàn)何功能。嵌入式操作系統(tǒng)通常包括:(1)驅動層:硬件相關的底層驅動軟件和設備驅動接口;如:LCD、觸摸屏的驅動及接口。(2)操作系統(tǒng)層:系統(tǒng)內(nèi)核(基本模塊),擴展模塊(可裁剪)。基本模塊包含內(nèi)存管理、文件管理和進程調(diào)度;擴展模塊包含網(wǎng)絡模塊、圖形驅動、數(shù)據(jù)庫驅動等。(3)應用層:應用程序接口。7.嵌入式系統(tǒng)開發(fā)過程?答:嵌入式系統(tǒng)的開發(fā)主要分為系統(tǒng)總體開發(fā)、嵌入式硬件開發(fā)和嵌入式軟件開發(fā)3大部分。流程如圖所示。系統(tǒng)定義系統(tǒng)定義可行性研究需求分析軟硬件集成系統(tǒng)總體框架軟硬件劃分處理器選定操作系統(tǒng)選定開發(fā)環(huán)境選定系統(tǒng)總體設計硬件概要設計硬件詳細設計硬件制作硬件測試軟件概要設計軟件詳細設計軟件實現(xiàn)軟件測試硬件設計制作軟件設計實現(xiàn)功能性能測試符合要求產(chǎn)品YN嵌入式系統(tǒng)開發(fā)流程圖8.嵌入式系統(tǒng)調(diào)試常用的基本方法?答:常用的三種方法:模擬調(diào)試(Simulator)、全仿真調(diào)試(Emulator)、BDM/JTAG調(diào)試(BDM/JTAGDebugger)。模擬調(diào)試:調(diào)試器和待調(diào)試的嵌入式軟件都在主機上運行,由主機提供一個模擬的目標運行環(huán)境,可以進行語法和邏輯上的調(diào)試。優(yōu)點:簡單方便,不需要目標板,成本低缺點:功能非常有限,無法實時調(diào)試全仿真調(diào)試(Emulator):這種方式用仿真器完全取代目標板上的MCU,仿真器是仿照目標機上的CPU而專門設計的硬件。仿真器與目標板通過仿真頭連接,與主機有串口、并口、網(wǎng)口或USB口等連接方式。優(yōu)點:功能非常強大,軟硬件均可做到完全實時在線調(diào)試缺點:價格昂貴。BDM/JTAG調(diào)試:這種方式有一個硬件調(diào)試體。該硬件調(diào)試體與目標板通過BDM、JTAG等調(diào)試接口相連,與主機通過串口、并口、網(wǎng)口或USB口相連。待調(diào)試軟件通過BDM/JTAG調(diào)試器下載到目標板上運行。優(yōu)點:方便、簡單,軟硬件均可調(diào)試缺點:需要目標板,且目標板工作基本正常(至少MCU工作正常),僅適用于有調(diào)試接口的芯片 9.理解交叉編譯和交叉調(diào)試。答:嵌入式軟件開發(fā)所采用的編譯為交叉編譯。在一種計算機環(huán)境中運行的編譯程序,能編譯出在另外一種環(huán)境下運行的代碼,稱這種編譯器支持交叉編譯。簡單地說,就是在一個平臺上生成另一個平臺上的可執(zhí)行代碼。要進行交叉編譯,需要在主機平臺上安裝對應的交叉編譯器,然后用這個交叉編譯器編譯源代碼,最終生成可在目標平臺上運行的代碼。在嵌入式軟件開發(fā)中,調(diào)試時采用的是在宿主機和目標機之間進行的交叉調(diào)試,調(diào)試器仍然運行在宿主機的通用操作系統(tǒng)之上,但被調(diào)試的進程卻是運行在基于特定硬件平臺的嵌入式操作系統(tǒng)中,調(diào)試器和被調(diào)試進程通過串口或者網(wǎng)絡進行通信,調(diào)試器可以控制、訪問被調(diào)試進程,讀取被調(diào)試進程的當前狀態(tài),并能夠改變被調(diào)試進程的運行狀態(tài)。10.嵌入式系統(tǒng)面臨的挑戰(zhàn)原因:(1)嵌入式系統(tǒng)發(fā)展與計算機技術發(fā)展越行越遠(2)計算機技術逐步以通用化戰(zhàn)勝專用化(3)嵌入式技術逐漸桌面化第二章作業(yè)答案一、馮諾依曼結構結構特點:1、指令和數(shù)據(jù)存儲在相同的內(nèi)存空間,但存儲地址不同。2、處理器利用相同的總線處理內(nèi)存中的指令和數(shù)據(jù),指令和數(shù)據(jù)具有相同的數(shù)據(jù)寬度,指令與數(shù)據(jù)無法同時存取。ARM7嵌入式微處理器亦采用此結構哈佛體系結構結構特點:1、指令存儲和數(shù)據(jù)存儲分開,指令和數(shù)據(jù)分別位于不同的存儲空間。2、指令與數(shù)據(jù)的存取采用不同總線,取指令和存取數(shù)據(jù)可同時進行,微處理器具有較高的執(zhí)行效率數(shù)字信號處理器DSP通常采用哈佛結構,ARM9嵌入式微處理器亦采用此結構。二、命名規(guī)則1、基于ARMArchitecture的版本命名規(guī)則|ARMVn
|variants
|x(variants)
|
Vnn--指令集版本號,n[1:7]。variants--變種。x(variants)--排除x后指定的變種例,ARMv5TxM表示ARM指令集版本為5,支持T變種,不支持M變種。2、基于ARMArchitecture版本的處理器系列命名規(guī)則ARM{x}{y}{z}{T}{D}{M}{I}{E}{J}{F}{-S}·x--處理器系列
·y--存儲管理/保護單元,若為2包括內(nèi)存管理單元(MMU),若為4包括內(nèi)存保護單元(MPU)·z–cache;T—支持thumb指令集D--支持片上調(diào)試(加斷點,單步執(zhí)行)I--支持EmbeddedICE,支持嵌入式跟蹤調(diào)試。開發(fā)環(huán)境可跟蹤調(diào)試目標板。M—支持長乘法運算;E—支持增強dsp運算;F—具備向量浮點單元VFP-S--可綜合版本,無s硬核,工藝固定不可綜合。例:ARM7TDMI:只有內(nèi)核;ARM720T:有內(nèi)核、高速緩存和內(nèi)存管理單元(MMU)組成。ARM740T:由內(nèi)核、高速緩存和內(nèi)存保護單元(MPU)組成ARM7EJ-S:帶有DSP和JazelleTM技術,能夠實現(xiàn)Java加速功能,處理器的可綜合版本;三、工作狀態(tài)ARM狀態(tài):正執(zhí)行ARM指令的處理器在ARM狀態(tài)下工作。在ARM狀態(tài)下,處理器只能執(zhí)行執(zhí)行字對齊的32位ARM指令。Thumb狀態(tài):正執(zhí)行Thumb指令的處理器在Thumb狀態(tài)下工作。在Thumb狀態(tài)下,處理器只能執(zhí)行半字對齊的16位Thumb指令。Thumb-2狀態(tài):正在執(zhí)行Thumb-2指令的處理器在Thumb-2狀態(tài)下工作。在Thumb-2狀態(tài)下,處理器可以執(zhí)行16位或32位混合的Thumb-2指令,無需ARM狀態(tài)和Thumb狀態(tài)之間轉換。四、工作狀態(tài)切換ARM和Thumb兩種工作狀態(tài)由當前程序狀態(tài)寄存器CPSR中的T(Thumb)位決定,并切換工作。當CPSR.T=0時,處于ARM狀態(tài),當CPSR.T=1時,處于Thumb狀態(tài)。進入Thumb狀態(tài):當操作數(shù)寄存器Rm的狀態(tài)為bit[0]=1時,執(zhí)行“BXRm”指令進入Thumb狀態(tài)。如果處理器在Thumb狀態(tài)下進入異常處理時,自動進入ARM狀態(tài),當異常處理返回(IRQ、FIQ、Undef、About、SWI)時,自動返回Thumb狀態(tài)。進入ARM狀態(tài):當操作數(shù)寄存器Rm的狀態(tài)為bit[0]=0時,執(zhí)行“BXRm”指令進入ARM狀態(tài)。在處理器進行異常處理(IRQ、FIQ、Undef、About、SWI)時,如果把PC放入異常模式連接寄存器LR中,從異常向量地址開始執(zhí)行,可以進入ARM狀態(tài)。五、CISC(復雜指令系統(tǒng)計算機)RISC(精簡指令系統(tǒng)計算機)RISC的特點:1.指令集中的大多數(shù)指令只需要執(zhí)行簡單和基本的功能,其執(zhí)行過程是在一個機器周期內(nèi)完成的。2.由于存儲器訪問指令執(zhí)行時間較長,應盡量減少這類指令。采用加載/存儲指令結構。面向運算部件的操作數(shù)都經(jīng)過加載指令和存儲指令,從存儲器取出后預先放在寄存器對內(nèi),以加快執(zhí)行速度。3.芯片邏輯不采用或少采用微碼技術,而采用硬布線邏輯,以減少指令解釋的開銷。4.減少指令數(shù)和尋址方式,使控制部件簡化,加快執(zhí)行速度。5.指令格式固定,指令譯碼簡化6.編譯開銷很大,應盡量優(yōu)化采用的特別技術:1.所有的指令都可根據(jù)前面的執(zhí)行結果決定是否被執(zhí)行,從而提高執(zhí)行效率。2.可用Load/Store指令批量傳輸數(shù)據(jù),以提高數(shù)據(jù)的傳輸效率。3.可在一條數(shù)據(jù)處理指令中同時完成邏輯處理和移位處理。六、流水線(Pipeline)技術:幾個指令可以并行執(zhí)行提高了CPU的運行效率內(nèi)部信息流要求通暢流動ARM的三級流水線:取值(將指令從內(nèi)存中取出來)、譯碼(操作碼和操作數(shù)被譯碼以決定執(zhí)行什么功能)、執(zhí)行(執(zhí)行已譯碼的指令)Tprog:程序執(zhí)行時間Ninst:指令條數(shù)CPI:指令平均時鐘周期數(shù)FCLK:時鐘頻率縮短程序執(zhí)行時間:提高時鐘頻率fclk減少每條指令的平均時鐘周期數(shù)CPI解決流水線相關問題:結構相關:如果某些指令在流水線中重疊執(zhí)行時,產(chǎn)生資源沖突,則稱該流水線存在結構相關。解決:資源重復(Cache分離、ALU中單獨的地址計算加法器)數(shù)據(jù)相關:寫后讀”、“寫后寫”“讀后寫”解決:專用通路、流水線互鎖技術控制相關:當流水線遇到分支指令和其他會改變PC值的指令時,取指取決于指令執(zhí)行條件,可能需重新取指,致使流水線停頓。解決:引入延時分支、盡早計算轉移成功時的目標地址。七、在Cache當中,地址映像是指把主存地址空間映像到cache地址空間。也就是說,把存放在主存中的程序或數(shù)據(jù)按照某種規(guī)則裝入到cache中,并建立主存地址到cache地址之間的對應關系。地址變換是指當程序或數(shù)據(jù)已經(jīng)裝入到cache后,在實際運行過程當中,把主存地址如何變成cache地址。S3C44B0存儲系統(tǒng):存儲系統(tǒng)設計支持數(shù)據(jù)存儲的大/小端選擇;地址空間:支持8個存儲體訪問;對所有存儲體的訪問寬度均可改變(8/16/32位);7個存儲體的起始地址固定,1個存儲體的起始地址可變1.ARM處理器工作模式有幾種?各種工作模式下分別有什么特點?答:ARM微處理器支持用戶、系統(tǒng)、快速中斷、外部中斷、管理、中止、未定義等7種工作模式。各工作模式擁有自己的寄存器組,不同的工作模式間可以相互切換,共有兩種方式。第一種,發(fā)生異常時,處理器自動改變CPSR中M[4:0]的值,進入相應的工作模式;第二種,當處理器處于特權模式時,用指令向CPSR的M[4:0]字段寫入特定的值,以進入相應的工作模式。當處理器處于用戶模式時,不能改變工作模式,除非發(fā)生異常。2.ARM處理器總共有多少個寄存器,這些寄存器按其在用戶編程中的功能是如何劃分的?這些寄存器在使用中各有何特殊之處?答:ARM處理器總共有37個寄存器,各寄存器均為32位。31個通用寄存器,包括程序計數(shù)器PC;6個狀態(tài)寄存器。這些寄存器按其在用戶編程中的功能可劃分為:通用寄存器和狀態(tài)寄存器。根據(jù)ARM處理器不同工作模式,可將全部寄存器分成7組;各工作模式擁有屬于自己的寄存器組,也只能訪問自己的寄存器組。3. 寄存器R13,R14,R15的專用功能各是什么?答:1)寄存器R13用作堆棧指針SP;2)寄存器R14用作子程序鏈接寄存器,也稱為LR,用以保存返回地址;3)R15(PC)用作程序計數(shù)器。4.若寄存器R1=0x01020304,分別按小端模式和大端模式存儲在0x30000字單元中,試分別畫出兩種模式下內(nèi)存存儲內(nèi)容,并標出內(nèi)存地址。0x30x300000x300010x300020x300030x010x020x030x04大端模式0x300000x300010x300020x300030x040x030x020x01小端模式5.試述ARM處理器對異常中斷的響應過程。答:當一個異常出現(xiàn)以后,ARM微處理器執(zhí)行完當前指令后(復位異常除外)會執(zhí)行以下幾步操作:將CPSR復制到相應到相應模式下的SPSR中,設置CPSR:置位I位(禁止IRQ中斷)清零T位(進入ARM狀態(tài))設置MOD位,切換處理器至相應模式將下一條指令的地址存入相應連接寄存器LR(R14_XXX),以便程序在處理異常返回時能從正確的位置重新開始執(zhí)行。強制PC從相關的異常向量地址取一條指令執(zhí)行,從而跳轉到相應的異常處理程序處。6.如何從異常中斷處理程序中返回?需要注意哪些問題?答:異常處理完畢之后,ARM微處理器會執(zhí)行以下幾步操作從異常返回:將SPSR復制回CPSR中,恢復原處理器工作模式。將連接寄存器LR(R14_XXX)的值減去相應的偏移量后送到PC中,跳轉到被中斷的用戶程序。7.ARM存儲器的存儲周期有幾種類型,對應于cache訪問和存儲器訪問是何存儲周期?答:(1)空閑周期I周期內(nèi)部周期,不執(zhí)行存儲器訪問;可廣播下一次訪問的地址以便開始譯碼,與S周期配合實現(xiàn)總線上的突發(fā)傳送。順序周期S周期順序周期:多用于實現(xiàn)總線上的突發(fā)傳送,第一個周期必須是一個內(nèi)部周期。(cache傳送)協(xié)處理器寄存器傳送周期C周期協(xié)處理器寄存器傳遞周期:通過數(shù)據(jù)總線向或從協(xié)處理器傳送數(shù)據(jù);傳送期間,存儲系統(tǒng)不允許驅動數(shù)據(jù)總線。非順序周期N周期非順序周期:最簡單的總線周期,存儲控制器必須啟動存儲器訪問來滿足這個請求;該方式存儲系統(tǒng)常需要長的訪問時間。(存儲器讀寫)cache訪問:I周期、S周期存儲器訪問:N周期8.何謂cache?簡述cache的工作原理。Cache(ARM的高速緩沖存儲器),為了提高存儲器系統(tǒng)的性能而在主存儲器和CPU之間采用工作原理:cache訪問過程:虛擬地址存入地址寄存器;地址變換部件進行地址變換,即根據(jù)主存塊號M檢索cache,若找到則為命中,并將M轉換成cache塊號m存入cache寄存器;以cache寄存器所存地址(塊號m,塊內(nèi)地址n)訪問cache;若未命中,虛擬地址經(jīng)地址轉換部件(頁表)轉換成物理地址訪問主存;未命中時,若為cache的讀操作或寫操作分配cache的寫操作,則將內(nèi)存塊調(diào)入cache;若cache已滿,根據(jù)替換算法替換某cache塊.八、Cache分類:統(tǒng)一cache和獨立的數(shù)據(jù)/程序cache如果一個存儲系統(tǒng)中指令預取時使用的cahce和數(shù)據(jù)讀寫時使用的cache是同一個cache,這時稱系統(tǒng)使用統(tǒng)一的cache。如果一個存儲系統(tǒng)中指令預取時使用的cahce和數(shù)據(jù)讀寫時使用的cache是各自獨立的,這時稱系統(tǒng)使用了獨立的cache。包括指令cache和數(shù)據(jù)cache。寫通cache和寫回cache:當CPU更新cache的內(nèi)容時,將結果寫回到主存中的兩種方法寫回法是指當CPU更新了cache的內(nèi)容時,被寫的數(shù)據(jù)只寫入cache,不寫入主存。僅當需要替換時,才把已經(jīng)修改的cache塊寫回到主存中。采用寫回法進行數(shù)據(jù)更新的cache稱為寫回cache。寫通法是指當CPU在執(zhí)行寫操作時,必須把數(shù)據(jù)同時寫入cache和主存中。采用寫通法進行數(shù)據(jù)更新的cache稱為寫通cache。讀操作分配cache和寫操作分配cache:當進行數(shù)據(jù)寫操作時,可能cache未命中,這時根據(jù)cache執(zhí)行的操作不同,將cache分為兩類,即讀操作分配cache和寫操作分配cache對于讀操作分配cache,當進行數(shù)據(jù)寫操作時,如果cache未命中,則只是簡單地將數(shù)據(jù)寫入主存中,在數(shù)據(jù)讀取時才進行cache內(nèi)容預取。對于寫操作分配cache,當進行數(shù)據(jù)寫操作時,如果cache未命中,cache系統(tǒng)將會進行cache內(nèi)容預取,從主存中將相應地塊讀取到cache中相應的位置,并執(zhí)行寫操作,把數(shù)據(jù)寫入到cache中。對于寫通類型的cache,數(shù)據(jù)將會同時被寫入到主存中;對于寫回類型的cache,數(shù)據(jù)將會在合適的時候寫回到主存中。9.何謂寫通cache和寫回cache,兩者有何區(qū)別?答:(1)寫回法是指CPU在執(zhí)行寫操作時,被寫的數(shù)據(jù)只寫入cache,不寫入主存。僅當需要替換時,才把已經(jīng)修改的cache塊寫回到主存中。采用寫回法進行數(shù)據(jù)更新的cache稱為寫回cache。寫通法是指CPU在執(zhí)行寫操作時,必須把數(shù)據(jù)同時寫入cache和主存。采用寫通法進行數(shù)據(jù)更新的cache稱為寫通cache。10.arm的MMU(存儲管理單元,用于在CPU和物理內(nèi)存之間進行地址轉換)主要實現(xiàn)何功能。答:(1)虛擬存儲空間到物理存儲空間的映射。在ARM中采用了頁式虛擬存儲管理,通過兩級頁表實現(xiàn)虛擬地址到物理地址的映射。(2)存儲器訪問權限的控制。(3)設置虛擬存儲空間的緩沖特性:Cache/writebuffer11.協(xié)處理器cp15主要實現(xiàn)的功能?答:(1)用于處理、控制ARM的特殊性能(2)片上存儲器管理單元(MMU)(3)指令、數(shù)據(jù)緩存(4)寫緩沖器12、簡述MMU使能時存儲訪問過程。答:芯片設置為MMU使能(設置cp15寄存器):(1)若cache使能,根據(jù)arm輸出的虛擬地址在CACHE中搜索;若cache命中,arm處理器與cache交換數(shù)據(jù)。若cache禁止或cache未命中,首先訪問TLB,參見(2)。(2)根據(jù)arm輸出的虛擬地址在TLB中搜索,若找到,將其轉換為物理地址,訪問主存并把該塊數(shù)據(jù)讀取到cache(使能時)中。13、ARM支持的物理頁有幾種類型,其容量為何值?答:ARM支持的存儲塊:(1)段(section):由1MB的存儲器塊構成 (2)大頁(largepage):由64KB的存儲器塊構成 (3)小頁(smallpage):由4KB的存儲器塊構成 (4)微頁(tinypage):由1KB的存儲器塊構成14、簡述基于段的地址變換過程。15、簡述使用粗頁表和4k頁的二級虛實地址轉換過程。補充題:1.理解片內(nèi)Flash的3種編程方法。答:通過內(nèi)置JTAG接口編程、通過在系統(tǒng)編程(ISP)、通過在應用編程(IAP)JTAG也是一種國際標準測試協(xié)議(IEEE1149.1兼容),主要用于芯片內(nèi)部測試?,F(xiàn)在多數(shù)的高級器件都支持JTAG協(xié)議,如DSP、FPGA器件等。標準的JTAG接口是4線:TMS、TCK、TDI、TDO,分別為模式選擇、時鐘、數(shù)據(jù)輸入和數(shù)據(jù)輸出線。JTAG編程方式是在線編程,傳統(tǒng)生產(chǎn)流程中先對芯片進行預編程后再裝到板上,現(xiàn)在先固定器件到電路板上,再用JTAG編程,從而大大加快工程進度。ISP:ISP(In-SystemProgramming)在系統(tǒng)可編程,指電路板上的空白器件可以編程寫入最終用戶代碼,而不需要從電路板上取下器件,已經(jīng)編程的器件也可以用ISP方式擦除或再編程。ISP的工作原理:ISP一般通用做法是內(nèi)部的存儲器可以由上位機(宿主機)的軟件通過串口來進行改寫。對于微處理器來講可以通過SPI或其它的串行接口接收上位機傳來的數(shù)據(jù)并寫入存儲器中。所以即使將芯片焊接在電路板上,只要留出和上位機接口的這個串口,就可以實現(xiàn)芯片內(nèi)部存儲器的改寫,而無須再取下芯片。區(qū)別:JTAG:既可以下載也可以硬件仿真,獨占端口;ISP只能下載,不獨占端口IAP:(inapplicationprogramming)在應用編程,有芯片本身(或通過外圍的芯片)可以通過一系列操作將code寫入。IAP的實現(xiàn)原理:在實現(xiàn)IAP功能時,微處理器內(nèi)部一定要有3塊存儲區(qū),一般一塊被稱為BOOT區(qū),一塊被稱為存儲區(qū),另外一塊作下載區(qū)。微處理器上電運行在BOOT區(qū),如果外部改寫程序的條件滿足,也就是芯片通過串口接收到下載命令,則在引導程序下接受newcode內(nèi)容,下載到下載區(qū),下載完畢并校驗通過后再將下載區(qū)內(nèi)容復制到存儲區(qū),運行復位程序對存儲區(qū)的程序進行改寫操作。如果外部改寫程序的條件不滿足,程序指針跳到存儲區(qū),開始執(zhí)行放在存儲區(qū)的程序,這樣便實現(xiàn)了IAP功能。2.理解LPC2000系列存儲器存儲空間分布。3.S3C44BOX的存儲空間的分布,由哪幾部分組成?答:S3C44B0X的存儲空間分成8組,每組容量為32MB,bank0bank5起始地址固定,容量固定為32MB,bank6起始地址也固定,其容量和bank7的容量可編程改變,可以是2、4、8、16、32MB,并且bank7的起始地址與bank6的結束地址相連接處理器模式用戶模式、快速中斷模式、外部中斷模式、管理模式、中止模式、未定義指令模式、系統(tǒng)模式除用戶模式以外的6種稱為特權模式(非用戶模式),特權模式中,除系統(tǒng)模式以外的5種模式稱為異常模式。各種模式由第五位M【4:0】決定用戶模式:正常的程序執(zhí)行狀態(tài),10000快速中斷模式:用于高速數(shù)據(jù)傳輸或通道處理,10001外部中斷模式:用于通用的中斷處理,10010管理模式:操作系統(tǒng)的保護模式,10011中止模式:用于虛擬存儲及存儲保護,10111未定義指令模式:用于支持硬件協(xié)處理器的軟件仿真,11011系統(tǒng)模式:運行特權級的操作系統(tǒng)任務,11111處理器工作狀態(tài):ARM狀態(tài):處理器執(zhí)行32位的ARM指令集時,工作在此狀態(tài)Thumb狀態(tài):處理器執(zhí)行16位的Thumb指令集時,工作在此狀態(tài)。寄存器組織ARM處理器共有37個寄存器,各寄存器均為32位。31個通用寄存器,包括程序計數(shù)器PC。6個狀態(tài)寄存器。異常中斷是指處理器由于外部或內(nèi)部的原因,停止執(zhí)行任務,轉而處理特定的事件,處理完后返回原程序,繼續(xù)執(zhí)行。異常類型及其優(yōu)先級和工作模式:1復位(管理模式):當發(fā)生復位異常時,處理器立即停止當前程序,進入禁止中斷的管理模式。并從地址0x00000000或0xFFFF0000處開始執(zhí)行。2數(shù)據(jù)訪問中止(中止模式)若處理器數(shù)據(jù)訪問指令的地址不存在,或該地址不允許當前指令訪問時,就會產(chǎn)生數(shù)據(jù)中止異常。SUBSPCR14#83.快速中斷請求FIQ(快速中斷模式)處理器的快速中斷請求引腳有效,而且CPSR中的F位為0時,將產(chǎn)生FIQ異常。4.外部請求中斷IRQ(外部中斷模式):當處理器的外部中斷請求引腳有效,而且CPSR中的1位為0時,就會產(chǎn)生IRQ異常。系統(tǒng)的外設可通過該異常請求中斷服務。SUBSPCR14#45.指令預取中止(中止模式):當處理器預取指令的地址不存在,或該地址不允許當前指令訪問,存儲器就會向處理器發(fā)出中止信號;只有當預取的指令被執(zhí)行時,才會產(chǎn)生指令預取中止異常。SUBSPCR14#46.【未定義指令(未定義指令中止模式)ARM處理器認為當前指令未定義時,便產(chǎn)生了未定義指令中斷。該異常可用于協(xié)處理器軟件仿真。軟件中斷SWI(管理模式):當用戶模式下的程序使用軟件SWI時,處理器便產(chǎn)生軟件中斷,進入管理模式,以調(diào)用特權操作?!縈OVSPCR14指令格式:機器指令編碼格式分為7個部分:條件域,類別,操作碼,S域,目的操作數(shù),第一源操作數(shù),第二源操作數(shù)。移位:LSL邏輯左移:Rx,LSL<op1>op1--為通用寄存器或立即數(shù)(0~31)MOVR0,R1,LSL#5;R1的值左移5位后,存入R0;相當于R1的值×32后,存入R0。LSR邏輯右移:Rx,LSR<op1>MOVR0,R1,LSR#5;相當于R1的值除以32后,存入R0。ASR算術右移:Rx,ASR<op1>MOVR0,R1,ASR#5; R1的值右移5位后,存入R0;最左端用第31位的值來填充。ROR循環(huán)右移:Rx,ROR<op1>MOVR0,R0,ROR#5; R0的值循環(huán)右移5位。RRX帶擴展的循環(huán)右移:Rx,RRXMOVR0,R1,RRX; R1的值擴展的循環(huán)右移,最左端由進位標志位填充,存入R0。7.尋址:立即數(shù)尋址ADDR0,R1,#5; R0=R1+5MOVR0,#0x55; R0=0x55寄存器尋址ADDR0,R1,R2; R0=R1+R2MOVR0,R1; R0=R1寄存器移位尋址ADDR0,R1,R2,RORR3;R0=R1+R2循環(huán)右移R3位MOVR0,R1,LSL#3;R0=R1邏輯左移3位寄存器間接尋址STRR0,[R1]; [R1]=R0LDRR0,[R1]; R0=[R1]基址變址尋址LDRR0,[R1,#5]; R0=[R1+5]LDRR0,[R1,R2]; R0=[R1+R2]相對尋址同基址變址尋址相似,區(qū)別只是將程序計數(shù)器PC作為基址寄存器,指令中的標記作為地址偏移量。例如:BEQprocess1 ……—>process1: ……多寄存器尋址LDMIAR0,{R1-R5};R1=[R0],R2=[R0+4],R3=[R0+8],R4=[R0+12],R5=[R0+16]塊拷貝尋址LDMIAR0,{R1-R5};從以R0的值為起始地址的存儲單元中取出5個字的數(shù)據(jù)STMIAR0,{R1-R5};將取出的數(shù)據(jù)存入以R1的值為起始地址的存儲單元中堆棧尋址STMFDR13!,{R0,R1,R2,R3,R4};將R0-R4中的數(shù)據(jù)壓入堆棧,R13為堆棧指針LTMFDR13!,{R0,R1,R2,R3,R4};將數(shù)據(jù)出棧,恢復R0-R4原先的值指令MOV數(shù)據(jù)傳送指令(Move)MOV{<cond>}{S}<Rd>,<op1>;MOVR0,#5; R0=5MOVR0,R1; R0=R1MOVR0,R1,LSL#5; R0=R1左移5位MVN數(shù)據(jù)取反傳送指令(MoveNegative)MVN{<cond>}{S}<Rd>,<op1>;ADD{<cond>}{S}<Rd>,<Rn>,<op2>;MVNR0,#4;R0=-5MVNR0,#0;R0=-1ADD加法指令(Addition)ADDR0,R1,R2;R0=R1+R2ADDR0,R1,#256;R0=R1+256ADDR0,R2,R3,LSL#1;R0=R2+(R3<<1)ADC帶進位加法指令(AdditionwithCarry)ADC{<cond>}{S}<Rd>,<Rn>,<op2>;Rd=Rn+op2+carry下列例子將加兩個128位的數(shù)。128位結果:寄存器0、1、2、和3;第一個128位數(shù):寄存器4、5、6、和7;第二個128位數(shù):寄存器8、9、10、和11。ADDSR0,R4,R8;加低端的字ADCSR1,R5,R9;加下一個字,帶進位ADCSR2,R6,R10;加第三個字,帶進位ADCSR3,R7,R11;加高端的字,帶進位注意:相加時,不要忘記設置S后綴來更改進位標志。SUB減法指令(Subtraction)SUB{<cond>}{S}<Rd>,<Rn>,<op2>;SUBR0,R1,R2;R0=R1-R2SUBR0,R1,#256;R0=R1-256SUBR0,R2,R3,LSL#1;R0=R2-(R3<<1)SBC帶借位減法指令:(SubtractionwithCarry)SBC{<cond>}{S}<Rd>,<Rn>,<op2>;Rd=Rn-op2-!carry該指令用于實現(xiàn)超過32位的數(shù)的減法。第一個64位操作數(shù)存放在寄存器R2,R3中;第二個64位操作數(shù)存放在寄存器R4,R5中;64位結果存放在R0,R1中。SUBSR0,R2,R4;低32位相減,S表示結果影響條件標志位的值SBCR1,R3,R5; 高32位相減AND邏輯與指令(logicalAND)AND{<cond>}{S}<Rd>,<Rn>,<op2>;ANDR0,R0,#3;R0=保持R0的位0和1,其余位清0。ORR邏輯或指令(logicalOR)ORR{<cond>}{S}<Rd>,<Rn>,<op2>;ORRR0,R0,#3;設置R0中位0和1,其余位不變EOR邏輯異或指令(logicalExclusiveOR)EOR{<cond>}{S}<Rd>,<Rn>,<op2>;EORR0,R0,#3;反轉R0中的位0和1BIC位清除指令(BitClear)BIC{<cond>}{S}<Rd>,<Rn>,<op2>;BICR0,R0,#11;清除R0中的位0和位4。其余位不變BICR0,R0,#5;R0中第0位和第3位清0,其余位不變CMP比較指令(Compare)CMP{<cond>}<Rn>,<op1>;CMPR0,#5;計算R0-5,根據(jù)結果設置條件標志位ADDGTR0,R0,#5;如果R0>5,則執(zhí)行ADDGT指令TST位測試指令(Testbits)TST{<cond>}<Rn>,<op1>;TSTR0,#5;測試R0中第0位和第2位是否同為0B跳轉指令:B{<cond>}<addr>;Bexit; 程序跳轉到標號exit處……exit……BL帶返回的跳轉指令BL{<cond>}<addr>;例如:BLfunc; 調(diào)用子程序func……func……MOVR15,R14;子程序返回Load/Store指令分為三類:單一數(shù)據(jù)傳送指令(LDR和STR等);多數(shù)據(jù)傳送指令(LDM和STM);數(shù)據(jù)交換指令(SWP和SWPB)LDR字數(shù)據(jù)加載指令:LDR{<cond>}<Rd>,<addr>;LDR Rd,[Rn],Rm;將內(nèi)存中地址為Rn的字數(shù)據(jù)裝入寄存器Rd,并將新地址Rn+Rm寫入Rn;LDRRd,[Rn],#index;將內(nèi)存中地址為Rn的字數(shù)據(jù)裝入寄存器Rd,并將新地址Rn+index寫入Rn;LDRRd,[Rn],Rm,LSL#5;將內(nèi)存中地址為Rn的字數(shù)據(jù)裝入寄存器Rd,并將新地址Rn+Rm×32寫入Rn。LDRRd,[Rn,Rm]?。粚?nèi)存中地址為Rn+Rm的字數(shù)據(jù)裝入寄存器Rd,并將新地址Rn+Rm寫入Rn;LDRRd,[Rn,#index]!;將內(nèi)存中地址為Rn+index的字數(shù)據(jù)裝入寄存器Rd,并將新地址Rn+index寫入Rn;LDR Rd,[Rn,Rm,LSL#5]??;將內(nèi)存中地址為Rn+Rm×32的字數(shù)據(jù)裝入寄存器Rd,并將新地址Rn+Rm×32寫入RnLDRRd,[Rn];把內(nèi)存中地址為Rn的字數(shù)據(jù)裝入寄存器Rd中;LDRRd,[Rn,Rm];將內(nèi)存中地址為Rn+Rm的字數(shù)據(jù)裝入寄存器Rd中;LDRRd,[Rn,#index];將內(nèi)存中地址為Rn+index的字數(shù)據(jù)裝入寄存器Rd中;LDRRd,[Rn,Rm,LSL#5];將內(nèi)存中地址為Rn+Rm×32的字數(shù)據(jù)裝入寄存器Rd;也可從基址上減去偏移量:LDRBR0,[R1,#-1];可以存儲或裝載PC,但不可以用裝載或存儲指令來修改CPSR。要裝載一個被存儲的‘狀態(tài)’并正確的恢復它,請使用:LDRR0,[Rbase];MOVSR15,R0;.LDRB字節(jié)數(shù)據(jù)加載指令:LDR{<cond>}B<Rd>,<addr>;LDRBR0,[R1];將內(nèi)存中起始地址為R1的一個字節(jié)數(shù)據(jù)裝入R0中STR字數(shù)據(jù)存儲指令:STR{<cond>}<Rd>,<addr>;例如:STRR0,[R1,#5]??; 把R0中的字數(shù)據(jù)保存到以R1+5為地址的內(nèi)存中,然后R1=R1+5STRB字節(jié)數(shù)據(jù)存儲指令:STR{<cond>}B<Rd>,<addr>;例如:STRBR0,[R1]; 將寄存器R0中的低8位數(shù)據(jù)存入R1表示的內(nèi)存地址中LDM批量數(shù)據(jù)加載指令:LDM{<cond>}{<type>}<Rn>{!},<regs>{^};STM批量數(shù)據(jù)存儲指令:STM{<cond>}{<type>}<Rn>{!},<regs>{^};LDMED=IB先增加后操作FD=IA先操作后增加EA=DB先減少后操作FA=DA先操作后減少STMFA=IB先增加后操作EA=IA先操作后增加FD=DB先減少后操作ED=DA先操作后減少.SWP字數(shù)據(jù)交換指令:SWP{<cond>}<Rd>,<op1>,[<op2>];例如:SWPR0,R1,[R2];將R2所表示的內(nèi)存單元中的字數(shù)據(jù)裝載到R0,然后將R1中的字數(shù)據(jù)保存到R2所表示的內(nèi)存單元中。SWPB字節(jié)數(shù)據(jù)交換指令:SWP{<cond>}B<Rd>,<op1>,[<op2>];例如:SWPBR0,R1,[R2];將R2所表示的內(nèi)存單元中的一個字節(jié)數(shù)據(jù)裝載到R0的低8位,然后將R1中的低8位字節(jié)數(shù)據(jù)保存到R2所表示的內(nèi)存單元中。SWI軟件中斷指令:SWI{條件}24位的立即數(shù);功能:用于產(chǎn)生軟件中斷,以使用戶程序調(diào)用操作系統(tǒng)的系統(tǒng)例程。使用SWI來訪問操作系統(tǒng)例程或第三方生產(chǎn)的模塊。BKPT斷點中斷指令:BKPT16位的立即數(shù);功能:用于產(chǎn)生軟件斷點中斷,以便軟件調(diào)試時使用。16位的立即數(shù)用于保存軟件調(diào)試中額外的斷點信息。一、行掃描法原理①識別鍵盤是否有鍵按下:讓所有行線均為低電平,檢查各列線電平是否為低,如果有列線為低,則說明該列有鍵被按下,否則說明無鍵被按下。rPDATF=0xf0;輸出全0值②若有鍵按下,則識別哪行的鍵被按下:逐行置低電平,并置其余各行為高電平,檢查各列線電平的變化,如果列電平變?yōu)榈碗娖?,則可確定此行此列交叉點處按鍵被按下。行掃描碼0xfe0xfd0xfb0xf7二.設置PCONF寄存器PF口的有3個端口:控制口PCONF,用于設置接口的功能。數(shù)據(jù)口PDATF,用于輸入、輸出數(shù)據(jù)。上拉電阻配置口PUPF,用于使能上拉電阻。設定PF0-3為輸出口,PF4-7為輸入口,在端口工作之前設置1.rPCONF=0000000000001010101BPF4-7為輸入PF0-3為輸出2、設置PDATF寄存器PF0-3作為輸出口輸出掃描碼時,采用語句:rPDATF=Oxf0//PF0-3全寫入0PF4-7作為輸入口讀入列值時,采用語句:Keyval=(rPDATF&0xf0)>>4;3、設置PUPF寄存器設置內(nèi)部上拉電阻的語句為:rPUPF=0x00;//使能PF0-7的內(nèi)部上拉電阻鍵盤掃描子程序代碼如下:返回的是各鍵的鍵值:0–F#include<string.h>#include<stdio.h>charReadKeyVal(void){unsignedchari,j,H_val,L_val;charkeyval=-1;rPCONF=0x55;rPUPF=0xff;上拉電阻禁止rPDATF=0xf0;輸出全0值if((L_val=(rPDATF&0xf0))!=0xf0){ H_val=0xfe;//0xfe,0xfd0xfb0xf7對應于第0、1、2、3行鍵 for(i=0;i<4;i++) { rPDATF=H_val;輸出第1行的掃描碼 for(j=0;j<100;j++);延時 if((L_val=(rPDATF&0xf0))!=0xf0)//輸入列數(shù)據(jù)不全為1 { L_val=((L_val>>4))|0xf0; Keyval=get_val(H_val)×4+get_val(L_val); returnkeyval; } else H_val=(H_val<<1)|0x01; }}returnkeyval;}//get_val子函數(shù)是由行掃描值、讀取的列值分別得到行號、列號。charget_val(unsignedcharval){ unsignedchari,x; x=0; for(i=0;i<4;i++) { if((~val)==1)returnx; val=(val>>1)|0x80; x=x+1; }}LED的工作原理7個字段分別稱為a、b、c、d、e、f、g段,有時還有一個小數(shù)點段DP。通過7個發(fā)光段的不同組合,可以顯示0到9和A到F共16個字母數(shù)字,從而實現(xiàn)十六進制的顯示設置PCONF、PCONG寄存器(在端口工作之前設置為輸出端口)rPCONF=0010010010101010101B=0x12555;rPCONG=0101010101010101B=0x5555;設置PUPF、PUPG寄存器(設置內(nèi)部上拉電阻)rPUPF=0x00;//使能PF0-7的內(nèi)部上拉電阻rPUPG=0x00;//使能PG0-7的內(nèi)部上拉電阻voidDisplayLedl(unsignedchardis_8_num[])//保存待顯示的數(shù)組{unsignedcharled_dis[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0x8C};//0-F小數(shù)位段碼表unsignedchari,j,D_val,B_val;rPCONF=0x12555;//將端口設置為輸出端口rPCONG=0x5555;rPUPF=0x00;//使能PG和PF內(nèi)部上拉電阻B_val=0x80;B_val=0x80;//首先顯示第七位for(i=0;i<8;i++) { D_val=dis_8_num[i];//取出待顯示的字符 rPDATF=led_dis[D_val];//轉換成七段字型碼送
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《礦山機械安全》課件
- 《家樂福模式分析》課件
- 管理顧問工作總結
- 房地產(chǎn)行業(yè)客服經(jīng)驗分享
- 服裝行業(yè)的保安工作總結
- 中央財經(jīng)大學財務管理課件-風險與報酬
- 銀行求職自我介紹(15篇)
- 2023-2024年項目部治理人員安全培訓考試題(原創(chuàng)題)
- 《電子政務》課件
- 2024年公司項目部負責人安全教育培訓試題含答案(模擬題)
- 2025年行政執(zhí)法人員執(zhí)法資格考試必考題庫及答案(共232題)
- 2025年北京探礦工程研究所招聘高校應屆畢業(yè)生歷年管理單位筆試遴選500模擬題附帶答案詳解
- 2025-2030年中國新能源汽車行業(yè)市場分析報告
- 網(wǎng)站建設合同范本8篇
- 宜賓天原5萬噸氯化法鈦白粉環(huán)評報告
- GB/T 44888-2024政務服務大廳智能化建設指南
- 2024年工廠股權轉讓盡職調(diào)查報告3篇
- 2024年行政執(zhí)法考試題庫及答案(題)
- 針灸推拿題庫及參考答案
- 會計專業(yè)工作簡歷表(中級)
- 頂管施工技術全面詳解
評論
0/150
提交評論