arm嵌入式系統基礎教程(周立功第2版). 第一章
思考與練習
1、舉出3個書本中未提到的嵌入式系統的例子。
答:紅綠燈控制,數字空調,機頂盒
2、什麼叫嵌入式系統
嵌入式系統:以應用為中心、以計算機技術為基礎、軟體硬體可裁剪、適應應用系
統對功能、可靠性、成本、體積、功耗嚴格要求的專用計算機系統。
3、什麼叫嵌入式處理器?嵌入式處理器分為哪幾類?
嵌入式處理器是為完成特殊的應用而設計的特殊目的的處理器。
嵌入式微處理器(embedded microprocessor unit, empu)
嵌入式微控制器(microcontroller unit, mcu)
嵌入式dsp 處理器(embedded digital signal processor, edsp)
嵌入式片上系統(system on chip)
4、什麼是嵌入式作業系統?為何要使用嵌入式作業系統?
是一段在嵌入式系統啟動後首先執行的背景程式,首先,嵌入式實時作業系統提高了系統的可靠性。其次,提高了開發效率,縮短了開發周期。再次,嵌入式實時作業系統充分發揮了 32 位 cpu 的多工潛力。
第二章1、嵌入式系統專案開發的生命週期分哪幾個階段?各自的具體任務是什麼?
專案的生命週期一般分為識別需求、提出解決方案、執行專案和結束專案4 個階段。
識別需求階段的主要任務是確認需求,分析投資收益比,研究專案的可行性,分析廠商所應具備的條件。
提出解決方案階段由各廠商向客戶提交標書、介紹解決方案。
執行專案階段細化目標,制定工作計畫,協調人力和其他資源;定期監控進展,
分析專案偏差,採取必要措施以實現目標。
結束專案階段主要包括移交工作成果,幫助客戶實現商務目標;系統交接給維護人員;結清各種款項。
2、為何要進行風險分析?嵌入式專案主要有哪些方面的風險?
在乙個專案中,有許多的因素會影響到專案進行,因此在專案進行的初期,在客戶和開發團隊都還未投入大量資源之前,風險的評估可以用來預估專案進行可能會遭遇的難題。
需求風險;時間風險;資金風險;專案管理風險
3、何謂系統規範?制定系統規範的目的是什麼?
規格制定階段的目的在於將客戶的需求,由模糊的描述,轉換成有意義的量化資料。
4、何謂系統規劃?為何要做系統規劃
系統規劃就是擬定乙個開發程序,使專案在合理的程序範圍中逐漸建構完成。其目地是讓客戶可以進一步地掌握系統開發的程序,並確定檢查點,以讓雙方確定專案是否如預期中的進度完成。
5、為什麼在專案結束前需要進行專案討論?
專案的討論乙個專案進行的反饋機制。通過這乙個程式,專案團隊的經驗才可以被記錄
下來,也就是說,這是乙個撰寫專案歷史的過程。
第三章1、arm7tdmi中的t、d、m、i的含義是什麼?
64 位乘法指令(帶m 字尾的)、支援片上除錯(帶d 字尾的)、高密度 16 位的thumb
指令機擴充套件(帶t 字尾的)和embededice 觀察點硬體(帶i 字尾的)
2、arm7tdmi採用幾級流水線?使用何種儲存器編址方式?
**流水線(取指解碼執行);使用了馮·諾依曼(von neumann )結構,指令和資料共用一條32 位匯流排。
3、arm處理器模式和arm處理器狀態有何區別?
處理器模式指的是處理器在執行程式時在不同時刻所處的不同狀態,處理器狀態指的是處理器當前所執行的指令集。
4、分別列舉arm的處理器模式和狀態。
狀態:arm 狀態 32 位,這種狀態下執行的是字方式的arm 指令
thumb 狀態 16 位,這種狀態下執行半字方式的 thumb 指令
模式:使用者模式、快中斷模式、中斷模式、管理模式、 中止模式、未定義模式和系統模式。
5、pc和lr分別使用哪個暫存器?
pc使用r15暫存器,lr使用r14暫存器
6、r13暫存器的通用功能是什麼?
堆疊第四章
1、基礎知識
(1)arm7tdmi(-s)有幾種定址方式?lor r1,[r0,#0x08]屬於哪種定址方式?
1. 暫存器定址;2. 立即定址;3.
暫存器移位定址;4. 暫存器間接定址;5. 基址定址;6.
多暫存器定址;7. 堆疊定址;8. 塊拷貝定址;9.
相對定址;lor r1,[r0,#0x08]屬於基址定址。
(2)arm指令的條件碼有多少個?預設條件碼是什麼?
16條, 預設條件碼是al。
(3)arm指令中第二個運算元有哪幾種形式?舉例5個8點陣圖立即數。
(1) 立即數;(2) 暫存器;(3) 暫存器及移位常數;
0x3fc(0xff<<2)、0、0xf0000000(0xf0<<24)、200(0xc8)、0xf0000001(0x1f<<28)。
(4)ldr/str指令的偏移形式有哪4種?ldrb和ldrsb有何區別?
(1) 零偏移;(2) 前索引偏移;(3) 程式相對偏移;(4) 後索引偏移。ldrb就是讀出指定位址的資料並存入指定暫存器,ldrsb讀出指定位址的資料,並高24位用符號位擴充套件,再存入指定暫存器。
(5)請指出mov指令與ldr載入指令的區別及用途。
mov 將 8 位圖(pattern)立即數或暫存器(operand2)傳送到目標暫存器(rd),可用於移位運算等操作。讀取指定位址上的儲存器單元內容,執行條件al.
(6)cmp指令的操作是什麼?寫乙個程式,判斷r1的值是否大於0x30,是則將r1減去0x30。
cmp 指令將暫存器rn 的值減去operand2 的值,根據操作的結果更新cpsr 中的相應條件標誌位,以便後面的指令根據相應的條件標誌來判斷是否執行。
cmp r1,0x30
subhi r1,r1,0x30
(7)呼叫子程式是用b還是用bl指令?請寫出返回子程式的指令?
bl 指令用於子程式呼叫。
mov pc, r14
(8)請指出ldr偽指令的用法。指令格式與ldr載入指令的區別是什麼?
ldr 偽指令用於載入 32 位的立即數或乙個位址值到指定暫存器。第二個數為位址表示式。
(9)arm狀態與thumb狀態的切換指令是什麼?請舉例說明。
bx指令,
(10)thumb狀態與arm狀態的暫存器有區別嗎?thumb指令對哪些暫存器的訪問受到一定限制?
thumb狀態下不能更新cpsr 中的alu 狀態標誌。,thumb指令對r8~r15暫存器訪問受限。
(11)thumb指令集的堆疊入棧、出棧指令是哪兩條?
push pop
(12)thumb指令集的bl指令轉換範圍為何能達到±4mb?其指令編碼是怎樣的?
thumb 採用兩條16 位指令組合成22 位半字偏移(符號擴充套件為32 位),使指令轉移範圍為±4mb。
2 有符號和無符號加法
下面給出a 和b 的值,您可先手動計算a+b,並**n、z、v 和 c 標誌位的值。然後修改程式清單4.1 中r0、r1 的值,將這兩個值裝載到這兩個暫存器中(使用ldr 偽指令,
如ldr r0,=0x ffff0000),使其執行兩個暫存器的加法操作。除錯程式,每執行一次加法操作就將標誌位的狀態記錄下來,並將所得結果與您預先計算得出的結果相比較。如果兩個運算元看作是有符號數,如何解釋所得標誌位的狀態?
同樣,如果這兩個運算元看作是無符數,所得標誌位又當如何理解?
0xffff000f 0x7fffffff 67654321 (a)
+ 0x0000fff1 + 0x02345678 + 23110000 (b)
結果3 資料訪問
把下面的 c **轉換成彙編**。陣列 a 和b 分別存放在以 0x4000 和 0x5000 為起始位址的儲存區內,型別為long(即32 位)。把編寫的組合語言進行編譯連線,並進行除錯。
for (i=0; i<8; i++)
第五章1、基礎知識:
(1)lpc2114可使用的外部晶振頻率範圍是多少(使用/不使用pll功能時)?
晶振頻率範圍:1~30 mhz,若使用pll 或isp 功能為:10~25mhz。
(2)描述一下lpc2210的po.14、p1.20、p1.
26、boot1和boot0引腳在晶元復位時分別有什麼作用?並簡單說明lpc2000系列arm7微控制器的復位處理流程。
p0.14 的低電平強制片內引導裝載程式復位後控制器件的操作,即進入isp 狀態。
p1.20 的低電平使 p1.25~p1.16 復位後用作跟蹤埠。
p1.26 的低電平使 p1.31~p1.26 復位後用作乙個除錯埠。
當reset 為低時,boot0 與boot1 一同控制引導和內部操作。引腳的內部上拉確保了引腳未連線時呈現高電平。
外部復位輸入:當該引腳為低電平時,器件復位,i/o口和外圍功能進入預設狀態,處理器從位址0 開始執行程式。復位訊號是具有遲滯作用的ttl 電平。
(3)lpc2000系列arm7微控制器對向量表有何要求(向量表中的保留字)?
向量表所有資料32 位累加和為零(0x00000000~0x0000001c 的8 個字的機器碼累加),才能離線執行使用者程式,這是
lpc2114/2124/2212/2214 的特性。
(4)如何啟動lpc2000系列arm7微控制器的isp功能?相關電路應該如何設計?
(5)lpc2000系列arm7微控制器片內flash是多位寬度的介面?它是通過哪個功能模組來提高flash的訪問速度?
128位, 通過儲存器加速模組(mam)來提高flash的訪問速度
(6)若lpc2210的bank0儲存塊使用32位匯流排,訪問bank0時,位址線a1、a0是否有效?emc模組中的blso~bls4具有什麼功能? 無效,( 如果儲存器組配置成 16 位寬,則不需要 a0;8 位寬的儲存器組需要使用 a0 。
);位元組定位選擇訊號。
(7)lpc2000系列arm7微控制器具有引腳功能復用特性,那麼如何設定某個引腳為指定功能?
通過引腳功能選擇暫存器的設定來設定某個引腳為指定功能
(8)設定引腳為gpio功能時,如何控制某個引腳單獨輸入/輸出?當前要知道某個引腳當前的輸出狀態時,是讀取iopin暫存器還是讀取ioset暫存器?
gpio方向暫存器,iopin。
(9)p0.2和p0.3口是i2c介面,當設定它們為gpio時,是否需要外接上拉電阻才能輸出高電平?
基於ARM的嵌入式系統程式開發要點
異常處理機制的設計 異常或中斷是使用者程式中最基本的一種執行流程或形態,這部分對arm架構下異常處理程式的編寫作乙個全面的介紹。arm一共有7種型別的異常,按優先從高到低排列如下 reset data abort fiqirqprefetch abort swiundefined instructi...
基於ARM的嵌入式工業控制系統設計
嵌入式系統如今已經廣泛的應用到了科學研究,工程設計,軍事技術,各類產業和商業等領域。並且還在不斷的發展和延續,嵌入式系統中又以arm架構的運用最為有發展前景,普及最為廣泛。在嵌入式作業系統領域中則是種類繁多,各有特色,windows ce作業系統由微軟開發,還繼承了windows等系列作業系統的有點...
嵌入式系統軟體教程複習
一 填空題 10分 1.處理器體系結構按指令和資料的儲存位置進行分類,一般劃分為哪兩類 2.處理器的指令系統一般有兩類 cisc和risc 他們的典型代表是?3.cpu與i o裝置之間的交換資訊一般包括 4.cpu對i o埠訪問一般有兩種方式。5.作業系統排程方式一般分為哪兩種?6.嵌入式匯流排按功...