嵌入式系統(tǒng)原理作業(yè)
計(jì)算機(jī)科學(xué)學(xué)院 于山山 主講
(紅色字體為新修改、添加的,僅供參考)
1. 考察智能手機(jī)的多功能化,展望智能手機(jī)的未來(lái)幾年發(fā)展前景如何?主要思考點(diǎn)包括:
l 關(guān)鍵應(yīng)用功能
l MP3,MP4,實(shí)名制,門禁識(shí)別,IPTV,
l 手機(jī)游戲,手機(jī)遙控、視頻電話、定位服務(wù)
l 互動(dòng)式語(yǔ)音應(yīng)答IVR
l 手機(jī)的開發(fā)平臺(tái)
l Symbian,Windows Mobile, Palm OS, Linux OS
1.
2. EDA在嵌入式硬件設(shè)計(jì)中的地位和重要性如何?
P16 EDA是一種先進(jìn)的電子系統(tǒng)設(shè)計(jì)方法,它以計(jì)算機(jī)為主要工具,在EDA軟件平臺(tái)上,對(duì)使用硬件描述語(yǔ)言為描述手段完成的數(shù)字系統(tǒng)設(shè)計(jì)文件,自動(dòng)的完成邏輯編譯、邏輯綜合、結(jié)構(gòu)綜合,以及邏輯優(yōu)化和仿真測(cè)試,最終實(shí)現(xiàn)既定的電子系統(tǒng)功能。
2.
3. 自頂向下ASIC設(shè)計(jì)方法的基本流程?P17 9個(gè)
概念設(shè)計(jì) 系統(tǒng)架構(gòu)設(shè)計(jì)與軟硬件劃分 行為級(jí)描述 構(gòu)建模塊與接口 功能仿真 邏輯綜合與優(yōu)化 布局布線設(shè)計(jì) 時(shí)序仿真 適配與驗(yàn)證 硬件測(cè)試
4. 簡(jiǎn)述FPGA器件的結(jié)構(gòu)。P20
組成:可配置邏輯塊、延時(shí)鎖定環(huán)、塊RAM
5. CPLD和FPGA的內(nèi)部結(jié)構(gòu)有什么主要區(qū)別?
FPGA有RAM塊、延時(shí)鎖定環(huán),CPLD沒(méi)有
以乘積項(xiàng)結(jié)構(gòu)方式構(gòu)成邏輯行為的器件稱為CPLD
以查表法結(jié)構(gòu)方式構(gòu)成邏輯行為的器件稱為FPGA
6. 有哪些主流的CPLD和FPGA開發(fā)工具?P22 四個(gè)
1) MAX+PLUS II Quartus II Synplify Pro Foundation 、ISP Synario等
7. ASIC開發(fā)和CPLD/FPGA開發(fā)有什么區(qū)別?P20
a.ASIC先進(jìn)行布局布線后適配,而FPGA相反。b.ASIC先進(jìn)行概念設(shè)計(jì)與軟硬件劃分,而FPGA是先設(shè)計(jì)輸入c.FPGA沒(méi)有行為級(jí)描述及架構(gòu)模塊與接口。
8. IP核有哪幾種主要形態(tài)?它們的優(yōu)選原則是什么?P37
1) 軟核 硬核 固核
優(yōu)選原則:
從可被重用頻度、可向其他工藝移植的可能性以及重用靈活性等方面考慮,優(yōu)選次序?yàn)椋荷喜哌x軟核,中策選固核,下策選硬核。從保證滿足要求的性能和規(guī)范、有較短的上市時(shí)間、自己付出勞動(dòng)盡量的少又并不只在乎高價(jià)的角度考慮,則優(yōu)選次序相反:硬核為上策,固核為中策,軟核為下策。
9. 有哪幾種主要的IP核互聯(lián)拓?fù)浣Y(jié)構(gòu)?P38 三個(gè)
a) IP核單共享總線方式 點(diǎn)對(duì)點(diǎn)連接方式 多層次/多總線互連方式
10. 欲降低CMOS芯片的功耗應(yīng)從哪幾個(gè)主要方面考慮?P43 五個(gè)
1) 降低工作電壓 降低時(shí)鐘頻率 減少邏輯門的電容負(fù)載 減少邏輯門的翻轉(zhuǎn)次數(shù) 降低靜態(tài)電流損耗
11. 在嵌入式軟件開發(fā)過(guò)程中,哪幾點(diǎn)對(duì)于降低功耗有較大影響?P43 九個(gè)
1) 低功耗編譯優(yōu)化技術(shù) 盡量減少CPU的運(yùn)算量 用“中斷”代替“輪詢”
2) 硬件軟件化 采用快速算法 通信編程時(shí)采用高波特率配置
3) 降低采樣速率 合理的延時(shí)子程序設(shè)計(jì) 睡眠方式
12. 哈佛結(jié)構(gòu)的計(jì)算機(jī)有什么優(yōu)缺點(diǎn)?P49
優(yōu)點(diǎn):數(shù)據(jù)Cache和指令Cache區(qū)分開來(lái),消除了數(shù)據(jù)引用與指令引用之間的沖突,使得取指令與取數(shù)據(jù)操作能同時(shí)進(jìn)行;而且允許獨(dú)立的選擇和優(yōu)化各個(gè)Cache的大小、行大小和相聯(lián)度。
缺點(diǎn):一是如果程序通過(guò)寫指令來(lái)修改程序自身的代碼,則這些新指令將被寫入到數(shù)據(jù)Cache。在程序能夠執(zhí)行這些指令前,兩個(gè)Cache都必須被刷新,并且修改了的指令必須被寫入存儲(chǔ)器以便Cache能從中取得指令。另一個(gè)不足是不允許大幅度的調(diào)節(jié)指令Cache和數(shù)據(jù)Cache的容量分配比例。
13. 主存控制器的作用是什么?P57
主存控制器可以決定處理器所使用的存儲(chǔ)區(qū)個(gè)數(shù),各個(gè)存儲(chǔ)區(qū)起始地址,各個(gè)存儲(chǔ)區(qū)的尋址空間大小和存儲(chǔ)區(qū)的數(shù)據(jù)線寬度;確定字節(jié)序;確定所有Bank的可編程訪問(wèn)周期,以及動(dòng)態(tài)存儲(chǔ)器的自動(dòng)刷新等。
14. 請(qǐng)說(shuō)明按照地址邊界對(duì)準(zhǔn)的方式進(jìn)行存儲(chǔ)器訪問(wèn)有什么優(yōu)點(diǎn)。P54
按照地址對(duì)準(zhǔn)方式訪問(wèn)內(nèi)存可以提高傳輸速率,加快訪問(wèn)速度,最重要的是簡(jiǎn)化了編譯器設(shè)計(jì),優(yōu)化了程序代碼。
15. 看門狗定時(shí)器的作用是什么?P52
用來(lái)引導(dǎo)嵌入式微處理器脫離死鎖工作狀態(tài)
16. 基于ARM核的XScale處理器有什么特點(diǎn)?P60 六個(gè)
1) 超流水線 高主頻 存儲(chǔ)體系 分支預(yù)測(cè)
2) 省去不常用的邏輯功能 指令集體系結(jié)構(gòu)
17. 地址重映射是怎么一回事?P55
計(jì)算機(jī)的物理存儲(chǔ)單元與分配給它的地址之間具有一一對(duì)應(yīng)的映射關(guān)系,而且是固定不變的,如果計(jì)算機(jī)在運(yùn)行過(guò)程中改不了這種映射關(guān)系,則稱為地址重映射。
18. 有哪幾種主要的嵌入式PowerPC處理器?P63
1) IBM公司的PowerPC405GP
2) Motorola公司的PowerPC MPC823e
3) Motorola公司的PowerPC MPC7457和MPC7447
4) Motorola公司的PowerPC 8260(QUICC II)
5) MPC860 PowerQUICC
19. PC和嵌入式系統(tǒng)的調(diào)試技術(shù)有什么主要不同之處?P64
對(duì)于通用計(jì)算機(jī)而言,在大多數(shù)情況下,運(yùn)行調(diào)試工具的宿主計(jì)算機(jī)與被調(diào)試程序運(yùn)行的目標(biāo)計(jì)算機(jī)是同一臺(tái)計(jì)算機(jī)。調(diào)試工具軟件的機(jī)器指令和被調(diào)試程序的機(jī)器指令屬于一種體系結(jié)構(gòu),可以在一臺(tái)計(jì)算機(jī)上調(diào)試。
由于嵌入式計(jì)算機(jī)的運(yùn)算能力、存儲(chǔ)能力和顯示能力相對(duì)較弱、數(shù)據(jù)吞吐量較小,作為目標(biāo)計(jì)算機(jī)在它上面很難直接進(jìn)行軟件硬件調(diào)試。因此,一般的嵌入式調(diào)試方法只能將調(diào)試工具安裝在PC機(jī)(宿主機(jī))上運(yùn)行,通過(guò)數(shù)據(jù)通信的方法向目標(biāo)機(jī)發(fā)出指令,控制目標(biāo)機(jī)的運(yùn)行,并且從目標(biāo)機(jī)上獲得運(yùn)行參數(shù),還能夠進(jìn)行單步跟蹤,臨時(shí)修改變量數(shù)值,并進(jìn)行各種調(diào)試。宿主機(jī)和目標(biāo)機(jī)通常具有不同的計(jì)算機(jī)體系結(jié)構(gòu),需要通信轉(zhuǎn)換器對(duì)調(diào)試信息進(jìn)行轉(zhuǎn)換。
20. 什么是背景調(diào)試?(P67)
背景調(diào)試模式是一種片上調(diào)試技術(shù),對(duì)基于motorola公司專用片上調(diào)試器的調(diào)試方法的稱呼。在BDM調(diào)試方式下,處理機(jī)被停機(jī),各種調(diào)試命令可以被發(fā)送到處理器中訪問(wèn)內(nèi)存和寄存器。因此,滿足BDM調(diào)試的微處理器內(nèi)部已經(jīng)包含了用于調(diào)試的微碼,調(diào)試時(shí)仿真器軟件和目標(biāo)板上cpu的調(diào)試微碼通信,目標(biāo)板上大的cpu無(wú)需取出。
21. 基于Angel的調(diào)試方案是怎么一回事?(68)
Angel是ARM公司的調(diào)試監(jiān)控程序,適用于各種ARM硬件平臺(tái),也稱為調(diào)試代理,由多個(gè)程序部件組成,與傳統(tǒng)調(diào)試監(jiān)控程序相類似駐留在目標(biāo)機(jī)上。Angel接收主機(jī)上發(fā)送過(guò)來(lái)的調(diào)試命令,執(zhí)行指定的調(diào)試操作,并將調(diào)試結(jié)果反饋回主機(jī)。適用于各種ARM硬件平臺(tái)。
22. 試描述ETM與JTAG的異同點(diǎn)。
基于JTAG的仿真器debug方法是利用芯片內(nèi)部的EmbeddedICE模塊來(lái)控制內(nèi)核,達(dá)到單步/斷點(diǎn)等調(diào)試目的,這種方法的特點(diǎn)是需要把目標(biāo)CPU停住后才能觀察現(xiàn)場(chǎng)情況。在真正的實(shí)時(shí)系統(tǒng)中,停止CPU運(yùn)行往往導(dǎo)致現(xiàn)場(chǎng)失真,ETM就能夠在CPU運(yùn)行過(guò)程中把現(xiàn)場(chǎng)信息捕捉壓縮進(jìn)行輸出,然后在PC端就可以對(duì)這些數(shù)據(jù)進(jìn)行解壓分析;用戶還可以對(duì)ETM設(shè)置很多過(guò)濾及觸發(fā)條件,對(duì)一些隨即出現(xiàn)的異常進(jìn)行捕捉(還能得到異常前后一段時(shí)間內(nèi)的系統(tǒng)信息)。本質(zhì)上ETM相當(dāng)于一個(gè)嵌入芯片內(nèi)部的邏輯分析儀。
23. 能夠完全取代目標(biāo)板的MCU仿真器是什么樣的仿真器。
ICE仿真器目前最為有效的調(diào)試嵌入式系統(tǒng)的手段,目標(biāo)板和ICE之間使用多芯扁平電纜連接。而ICE在使用時(shí)一般還需要與主機(jī)(一般是PC)連接。通過(guò)ICE的實(shí)際執(zhí)行,開發(fā)者可以排除人們難以發(fā)現(xiàn)的隱藏在設(shè)計(jì)方案中的邏輯錯(cuò)誤。ICE的另外一個(gè)主要功能是在應(yīng)用系統(tǒng)中仿真微控制器的實(shí)際執(zhí)行優(yōu)點(diǎn)是功能強(qiáng)大,軟硬件均可以做到完全實(shí)時(shí)在線調(diào)試;缺點(diǎn)是價(jià)格昂貴。
24. ARM處理器的工作模式有幾種?設(shè)置這些模式是必要的嗎?每一種模式分別有哪幾個(gè)獨(dú)有特點(diǎn)?(91)
ARM微處理器支持7種運(yùn)行模式,分別為:
用戶模式(usr):ARM處理器正常的程序執(zhí)行狀態(tài)。
普通中斷模式(fiq):用于高速數(shù)據(jù)傳輸或通道處理。
外部中斷模式(irq):用于通用的中斷處理。
管理模式(svc):操作系統(tǒng)使用的保護(hù)模式。
終止模式(abt)(Abort):當(dāng)數(shù)據(jù)或指令預(yù)取終止時(shí)進(jìn)入該模式,可用于虛擬存儲(chǔ)及存儲(chǔ)保護(hù)。
系統(tǒng)模式(sys):運(yùn)行具有特權(quán)的操作系統(tǒng)任務(wù)。
未定義(und):當(dāng)未定義的指令執(zhí)行時(shí)進(jìn)入該模式,可用于支持硬件協(xié)處理器的軟件仿真。
是必要的。
25. 能否簡(jiǎn)單地概述一下ARM處理器的寄存器組織?(92)
ARM微處理器共有37個(gè)32位寄存器,其中31個(gè)為通用寄存器,6個(gè)為狀態(tài)寄存器。但是這些寄存器不能被同時(shí)訪問(wèn),具體哪些寄存器是可編程訪問(wèn)的,取決微處理器的工作狀態(tài)及具體的運(yùn)行模式。但在任何時(shí)候,通用寄存器R14~R0.程序計(jì)數(shù)器PC.一個(gè)或兩個(gè)狀態(tài)寄存器都是可訪問(wèn)的。
26. 如何使得ARM處理器在ARM狀態(tài)和Thumb狀態(tài)之間進(jìn)行切換?
進(jìn)入Thumb狀態(tài):當(dāng)操作數(shù)寄存器的狀態(tài)位(位0)為1時(shí),可以采用執(zhí)行BX指令的方法,使微處理器從ARM狀態(tài)切換到Thumb狀態(tài)。此外,當(dāng)處理器處于Thumb狀態(tài)時(shí)發(fā)生異常(如IRQ、FIQ、Undef、Abort、SWI等),則異常處理返回時(shí),自動(dòng)切換到Thumb狀態(tài)。
進(jìn)入ARM狀態(tài):當(dāng)操作數(shù)寄存器的狀態(tài)位為0時(shí),執(zhí)行BX指令時(shí)可以使微處理器從Thumb狀態(tài)切換到ARM狀態(tài)。此外,在處理器進(jìn)行異常處理時(shí),把PC指針?lè)湃氘惓DJ芥溄蛹拇嫫髦校漠惓O蛄康刂烽_始執(zhí)行程序,也可以使處理器切換到ARM狀態(tài)。
27. CPSR和SPSR的使用特點(diǎn)分別是什么?(81)
所有處理器模式都可以訪問(wèn)當(dāng)前程序狀態(tài)寄存器CPSR。每種異常模式都有一個(gè)程序狀態(tài)保存寄存器SPSR。當(dāng)異常出現(xiàn)時(shí)SPSR用于保存CPSR的狀態(tài)。
體系結(jié)構(gòu)版本V3 體系結(jié)構(gòu)版本這個(gè)體系結(jié)構(gòu)版本將尋址范圍擴(kuò)展到了32位. 當(dāng)前程序狀態(tài)信息由過(guò)去存于R15中移到一個(gè)新的當(dāng)前程序狀態(tài)寄存器CPSR中.增加了程序狀態(tài) 保存寄存器SPSR,以便當(dāng)異常出現(xiàn)時(shí)保留CPSR的 內(nèi)容.增加了2個(gè)指令(MRS和MSR),以訪 問(wèn)新的CPSR和SPSR寄存器;增加了兩種處理器模式,使操作系統(tǒng)代碼可以方便地使用數(shù)據(jù)訪問(wèn)中止異常,指令預(yù)取中止異常和未定義中止異常。
28.按照ATPCS規(guī)則,IP、SP、LR和PC分別是哪些通用寄存器?它們中的每一個(gè)寄存器用途都是嚴(yán)格定義的嗎?
寄存器R12用作子程序間中間結(jié)果寄存器,記作IP. 子程序之間的連接代碼段中常常用此寄存器. 寄存器R13用作堆棧指針,記作SP.在子程序中寄存 器R13不能用作其他用途.寄存器SP在進(jìn)人子程序時(shí) 的值和退出子程序時(shí)的值必須相等. 寄存器R14稱為連接寄存器,記作LR.它用于保存子 程序的返回地址.如果在子程序中保存了返回地址, 寄存器R14則可以用作其他用途. 寄存器R15是程序計(jì)數(shù)器,記作PC.它不能用作其它用途。
29.ARM處理器的寄存器都是程序員可訪問(wèn)的嗎?
不一定,主要由處理器狀態(tài)和模式?jīng)Q定。這要看ARM處理器的開發(fā)人員是怎么編輯他的權(quán)限了,一般的程序員是只有使用權(quán)限的。
30.什么是ARM處理器的影子寄存器?(92)
它們是為處理器不同工作模 式配備的專用物理寄存器.在異常模式下,它 們將代替用戶或者系統(tǒng)模式下使用的部分寄存 器. 在管理,中止,未定義和普通中斷模式下,影子寄存器的數(shù)量均為2個(gè).而快速中斷為7個(gè).
31.ARM的存儲(chǔ)器保護(hù)單元起什么作用?
PU提供了一個(gè)相當(dāng)簡(jiǎn)單的代替MMU的方法來(lái)管理存儲(chǔ)器。對(duì)于不需要MMU的嵌入式系統(tǒng)而言,PU簡(jiǎn)化了硬件和軟件,主要表現(xiàn)在不使用轉(zhuǎn)換表,從而使硬件不必遍歷轉(zhuǎn)換表和軟件表與維護(hù)轉(zhuǎn)換表。
32.ARM的CP15協(xié)處理器起什么作用?(P97)
完成Cache配置,寫緩存配置之類的存儲(chǔ)系統(tǒng)管理工作。
33.ARM的邏輯Cache和物理Cache是怎么一回事?
答:Cache放在處理器內(nèi)核與MMU之間,稱為邏輯cache,也稱虛擬Cache;放在MMU與物理寄存器之間稱為物理Cache。Cache放在MMU之前還是之后決定了Cache尋址范圍和編程結(jié)構(gòu)。
邏輯Cache在虛擬地址空間存儲(chǔ)數(shù)據(jù),處理機(jī)可以直接通過(guò)邏輯Cache訪問(wèn)數(shù)據(jù),而無(wú)需通過(guò)MMU。物理Cache使用物理地址存儲(chǔ)數(shù)據(jù),當(dāng)處理器訪問(wèn)存儲(chǔ)器時(shí),MMU必須先把虛擬地址轉(zhuǎn)換成物理地址,Cache存儲(chǔ)器才可以向內(nèi)核提供數(shù)據(jù)。
34.ARM處理器中的寫緩存起什么作用?
答:寫緩存區(qū)改善了Cache的功能,主要用途是:當(dāng)CPU輸出數(shù)據(jù)時(shí),若總線恰好被占用而無(wú)法輸出,那么CPU可以把輸入數(shù)據(jù)寫入到寫緩存區(qū)。當(dāng)總線上沒(méi)有比寫緩存區(qū)優(yōu)先級(jí)別更高的掌控者時(shí),寫緩存區(qū)可以通過(guò)總線將數(shù)據(jù)寫入內(nèi)存。
35.異常處理結(jié)束后,CPU是如何返回到主程序斷點(diǎn)的?
答:從異常中斷處理程序返回時(shí),需要執(zhí)行一下四個(gè)基本操作:
①所有修改過(guò)的用戶寄存器必須從處理程序的保護(hù)棧中恢復(fù)(出棧)。
②恢復(fù)被中斷程序在被中斷時(shí)刻的CPSR寄存器(當(dāng)時(shí)的執(zhí)行現(xiàn)場(chǎng)),實(shí)質(zhì)上就是將SPSR_mode寄存器內(nèi)容恢復(fù)到CPSR。
③返回到發(fā)生異常中斷的指令位置(該指令沒(méi)有執(zhí)行完畢)或異常中斷的下一條指令處執(zhí)行。為了做到這一點(diǎn),需要將LR_mode寄存器的內(nèi)容經(jīng)過(guò)某種減法計(jì)算后復(fù)制到程序計(jì)數(shù)器PC中。
④清除CPSR中的中斷禁止標(biāo)志位(I標(biāo)志和T標(biāo)志)。
36.ARM異常中斷的返回有哪幾種情況?對(duì)應(yīng)的中斷服務(wù)子程序分別要做哪些處理?
答:SWI和未定義指令異常中斷處理程序返回;
處理:當(dāng)程序計(jì)數(shù)器的值(CP-4)放入LR_SVC或LR_UND寄存器中。中斷結(jié)束后再將LR的值給PC。
IRQ、FIQ和ABT(指令預(yù)?。┊惓V袛嗵幚沓绦虻姆祷?;
處理:將程序計(jì)數(shù)器的值(PC-4)放入LR_IRQ或者LR_FIQ寄存器,中斷后將(LR-4)放入PC中。
ABT(數(shù)據(jù)訪問(wèn)中止)異常中斷處理程序的返回
處理:將程序計(jì)數(shù)器的值(PC-4)放入LR_ABT寄存器中,中斷后將(LR-8)給PC。
37.目前AMBA片上總線有哪幾個(gè)版本,它們的主要特點(diǎn)是什么?
答:AHB(高性能片上總線):用于連接高性能的系統(tǒng)模塊。支持突發(fā)數(shù)據(jù)傳輸方式以及單個(gè)數(shù)據(jù)傳送方式,所有時(shí)序都以單一時(shí)鐘的前沿為基準(zhǔn)。
ASB:用于連接高性能系統(tǒng)模塊,支持突發(fā)數(shù)據(jù)傳輸方式。
APB:為低性能的外圍部件提供較為簡(jiǎn)單的借口,優(yōu)點(diǎn)是最小功耗和易于使用。
AHB是ASB的升級(jí)版本,能夠支持更高性能的綜合及時(shí)序驗(yàn)證。
38.ARM7TDMI核指令流水線是幾級(jí)流水線?
三級(jí)流水線
39.ARM7TDMI的版本變量有四個(gè),分別代表什么含義?
T:Thumb指令集。Thumb指令長(zhǎng)度為16位。
D:含JTAG調(diào)試器,支持片上系統(tǒng)。
M:提供用于進(jìn)行長(zhǎng)乘法操作的ARM指令,產(chǎn)生全64位結(jié)果。
I:內(nèi)嵌式在線測(cè)試宏單元硬件部件,提供斷點(diǎn)和調(diào)試點(diǎn)支持。
40.列出ARM指令集與x86指令集不同點(diǎn)
項(xiàng)目 | ARM處理器指令集 | X86處理器指令集 |
指令格式 | 定長(zhǎng),4字節(jié) | 不定長(zhǎng),1字節(jié)~15字節(jié) |
程序讀寫指令計(jì)數(shù)器 | 可以 | 不可以 |
狀態(tài)標(biāo)志位更新 | 由指令的附加位決定 | 指令隱含決定 |
按照邊界對(duì)齊取指令 | 必須在4字節(jié)邊界取指 | 可在任意字節(jié)處取消 |
操作數(shù)尋址方式 | 3地址 | 2地址 |
狀態(tài)位個(gè)數(shù) | 4 | 6 |
高密度指令 | 有 | 無(wú) |
條件判斷執(zhí)行 | 幾乎每一條指令 | 專用條件判斷指令 |
棧數(shù)據(jù)傳送指令 | 沒(méi)有,用LDM/STM實(shí)現(xiàn) | 有專用指令PUSH/POP |
DSP處理的乘加指令 | 有 | 無(wú) |
仿存體系結(jié)構(gòu) | Load/Store指令 | 算術(shù)邏輯指令也能訪問(wèn)內(nèi)存 |
41.就ARM處理器而言,相對(duì)尋址時(shí)的基準(zhǔn)地址是什么?
程序計(jì)數(shù)器PC當(dāng)作基址寄存器(指令中的地址碼字段作為位移量) p123
42.數(shù)據(jù)塊傳送指令與堆棧指令有何不同?
數(shù)據(jù)塊傳送:
I =向地址增大方向處理數(shù)據(jù)傳送(Increment)
D =向地址減小方向處理數(shù)據(jù)傳送(Decrement)
A =先傳送數(shù)據(jù)后改變地址(after)
B =先改變地址后傳送數(shù)據(jù)(before)
堆棧操作:
F =滿棧頂指針(full)
E =空棧頂指針(empty)
A =堆棧向高地址方向增長(zhǎng)(ascending stack)
D =堆棧向低地址方向增長(zhǎng)(decending stack)
43.請(qǐng)說(shuō)明ARM指令第2個(gè)操作數(shù)是如何定義的? P119
第2操作數(shù)有兩種形式:立即數(shù)型 格式:#<32位立即數(shù)>
寄存器型 格式:Rm , {<shift>}
44.如何區(qū)別前索引偏移和后索引偏移?
前索引尋址方式:基址帶偏移作為傳送地址。
后索引尋址方式:基址不帶偏移傳送地址,且傳送后自動(dòng)更新基址寄存器。
45.使用兩種類型的第2操作數(shù),分別編寫3條ARM指令,并且說(shuō)明這些指令中的第2操作數(shù)的形成方法。
MOV R4,#0x
ADD R0,R0,R0 LSL #2 ;將R0邏輯左移2*2位,并加上R0得:5*R0賦給R0
ADD R5,R3,R1,LSL R4 ;將R1邏輯左移2的R4次冪,并加上R3賦給R5
P119
46.如何辨別LDR指令是ARM機(jī)器指令,還是偽指令。請(qǐng)你各舉出3條數(shù)據(jù)傳送LDR指令的例子和3條LDR偽指令的例子。 P131
LDR若為ARM是將內(nèi)存數(shù)據(jù)存到寄存器中。而偽指令是用于大范圍地址讀取。形式為:LDR register,=expr
RAM指令:LDR R1,0x12345678 取0x12345678地址對(duì)應(yīng)的值給LDR
偽指令:LDR R1,=0x72345241 把0x72345241給LDR
47.題3,LDR和STR指令有前變址、后變址和回寫前變址三種變址模式,請(qǐng)你舉例說(shuō)明之。 P129
LDR R2,[R1,#4] ;前變址
LDR R2,[R1,#4]! ;回寫前變址
LDR R0,[R1],#4 ;后變址
48.什么是ATPCS和AAPCS?
ATPCS規(guī)定了一些子程序間調(diào)用的基本規(guī)則。這些規(guī)則包括子程序調(diào)用過(guò)程中寄存器的使用規(guī)則、數(shù)據(jù)棧的使用規(guī)則以及參數(shù)的傳遞規(guī)則。有了這些規(guī)則之后,單獨(dú)編譯的C語(yǔ)言程序就可以和匯編程序相互調(diào)用。
AAPCS和ATPCS之間的差別很小。AAPCS的主要改進(jìn)之處是將ATPCS的二進(jìn)制代碼的不兼容性縮小到最低限度。
49.子程序或者過(guò)程調(diào)用時(shí),如果參數(shù)超過(guò)4個(gè),如何編程實(shí)現(xiàn)正確地參數(shù)傳遞?ARM內(nèi)嵌匯編的指令用法有哪些注意點(diǎn)?
在傳遞參數(shù)時(shí),將所有參數(shù)看作是存放在連續(xù)的內(nèi)存字單元的字?jǐn)?shù)據(jù)。然后,依次將各字?jǐn)?shù)據(jù)傳遞到寄存器R0,R1,R2和R3中。如果參數(shù)多余4個(gè),則將剩余的字?jǐn)?shù)據(jù)傳遞到堆棧中。入棧的順序與參數(shù)傳遞順序相反,即最后一個(gè)字?jǐn)?shù)據(jù)先入棧。
內(nèi)嵌指令的用法,太多…p164
50.在ADS環(huán)境中如何實(shí)現(xiàn)以下的子程序調(diào)用?
l C語(yǔ)言程序調(diào)用 C++子程序(p168例子)
C語(yǔ)言程序調(diào)用C++程序時(shí),在C程序中使用關(guān)鍵詞extern聲明要調(diào)用的C++函數(shù),在C++程序中使用關(guān)鍵詞extern“c”聲明被調(diào)用的C++函數(shù)。
l C/C++程序調(diào)用ARM匯編子程序要點(diǎn)(p165)
設(shè)計(jì)匯編語(yǔ)言要遵循ATPCS,以保證程序調(diào)用時(shí)參數(shù)能正確傳遞。在匯編程序中使用EXPORT指示符聲明本程序可以被別的程序調(diào)用。在C語(yǔ)言程序中使用extern關(guān)鍵詞聲明該匯編程序可以被調(diào)用,C++語(yǔ)言程序使用extern
“C”來(lái)聲明該匯編程序可以被調(diào)用。
51. 嵌入式開發(fā)平臺(tái)與ARM開發(fā)工具有什么聯(lián)系? P180
開發(fā)ARM應(yīng)用程序時(shí),全部工作(包括編輯、編輯、匯編、連接等)都可在主機(jī)上完成,但調(diào)試工作則需要其他的模塊或工具的配合。但調(diào)試部分大部分還得依賴目標(biāo)機(jī)。目前常用的調(diào)試方法和工具有指令集模擬器、駐留監(jiān)控軟件、JTAG仿真器和在線仿真器等。這些調(diào)試工具大都通過(guò)與目標(biāo)開發(fā)板進(jìn)行相互數(shù)據(jù)通信達(dá)到傳遞調(diào)試命令和信息的作用。二者是彼此相互依賴的。
52. 試描述ELF文件的內(nèi)部結(jié)構(gòu)
P181 ARM連接器把ELF文件當(dāng)做由節(jié)頭部表描述的一組邏輯節(jié),而系統(tǒng)加載器則把ELF文件當(dāng)做由程序頭部表描述的一組代碼段。一個(gè)代碼段通常由幾個(gè)節(jié)組成。
53. 什么是映像文件
映像文件是計(jì)算機(jī)上的一個(gè)可執(zhí)行文件,在執(zhí)行之前被加載到計(jì)算機(jī)的儲(chǔ)存器中。通常,一個(gè)鏡像文件中包含多個(gè)線程。
54. 什么是實(shí)時(shí)系統(tǒng)?
對(duì)外來(lái)事件能在限定的響應(yīng)時(shí)間內(nèi)做出預(yù)定質(zhì)量處理的計(jì)算機(jī)系統(tǒng)。
聯(lián)系客服