❶ arm嵌入式系統基礎教程第二版課後答案
剛開始接觸嵌入式,只覺得鋪天蓋地的資料讓我眼花繚亂,自從接觸到這本書,感覺終於摸到路了。
這本書寫的很好,對於一個還沒入門的人來說。 原因如下:
首先,作者把最最基本的東西告訴你;其次,作者善於把復雜的東西用簡單、直觀的方式表現出來;再次,書中的內容是作者多年的實踐經驗得來,而不是把別的資料搬過來;最後,作者以實踐為主要學習手段。
還有,作者的開發板也太貴了……
我會自己寫完書中的例題答案,歡迎批評和建議,只求和大家共同進步,誠惶誠恐,再拜再拜……
第1章 嵌入式系統概述
(1)舉出3個本書中未提到的嵌入式系統的例子。
答:鍵盤、滑鼠、掃描儀。
(2)什麼叫嵌入式系統?
答:嵌入到對象體系中的專用計算機應用系統。
(3)什麼叫嵌入式處理器?嵌入式處理器分為哪幾類?
答:嵌入式處理器是為完成特殊的應用而設計的特殊目的的處理器。分為3類:1.注重尺寸、能耗和價格;2.關注性能;3.關注全部4個需求——性能、尺寸、能耗和價格。
(4)什麼是嵌入式操作系統?為何要使用嵌入式操作系統?
答:嵌入式操作系統是操作系統的一種類型,是在傳統操作系統的基礎上加入符合嵌入式系統要求的元素發展而來的。原因:1.提高了系統的可靠性;2.提高了開發效率,縮短了開發周期。3.充分發揮了32位CPU的多任務潛力。
第2章 ARM7體系結構
1.基礎知識
(1)ARM7TDMI中的T、D、M、I的含義是什麼?
答:T:高密度16位Thumb指令集擴展;D:支持片上調試;M:64位乘法指令;I:Embedded ICE硬體模擬功能模塊。
(2)ARM7TDMI採用幾級流水線?使用何種存儲器編址方式?
答:3級;馮·諾依曼結構。
(3)ARM處理器模式和ARM處理器狀態有何區別?
答:ARM處理器模式體現在不同寄存器的使用上;ARM處理器狀態體現在不同指令的使用上。
(4)分別列舉ARM的處理器模式和狀態?
答:ARM的處理器模式:用戶模式、系統模式、管理模式、中止模式、未定義模式、中斷模式、快速模式;ARM的處理器狀態:ARM狀態、Thumb狀態。
(5)PC和LR分別使用哪個寄存器?
答:PC:R15;LR:R14。
(6)R13寄存器的通用功能是什麼?
答:堆棧指針SP。
(7)CPSR寄存器中哪些位用來定義處理器狀態?
答:位31~28:N、Z、C、V,條件代碼標志位;27~8:保留位;7~0:I、F、T、M4~0,控制標志位。
(8)描述一下如何禁止IRQ和FIQ的中斷。
答:當控制位I置位時,IRQ中斷被禁止,否則允許IRQ中斷使能;當控制位F置位時,FIQ中斷被禁止,否則允許FIQ中斷使能。
2.存儲器格式
答:無論是大端格式還是小端格式,R2的值與R1一致;地址0x4000單元的位元組:大端:0x12、小端:0x78。
3.處理器異常
請描述一下ARM7TDMI產生異常的條件是什麼?各種異常會使處理器進入哪種模式?進入異常時內核有何操作?各種異常的返回指令又是什麼?
答:
【異常】 【模式】 【返回指令】
復位 管理 無
未定義指令 未定義 MOVS PC,R14
軟體中斷 管理 MOVS PC,R14
預取指中止 中止 SUBS PC,R14,#4
數據中止 中止 SUBS PC,R14,#8
IRQ 中斷 SUBS PC,R14,#4
FIQ 快速中斷 SUBS PC,R14,#4
進入異常時,內核自動做:PC→LR、CPSR→相應異常模式下的SPSR、設置CPSR為相應的異常模式、相應異常處理程序的中斷入口向量地址→PC。
第3章 ARM7TDMI(-S)指令系統
1.基礎知識
(1)ARM7TDMI(-S)有幾種定址方式?「LDR R1,[R0,#0x08]」屬於哪種定址方式?
答:有8種定址方式:1.寄存器定址 2.立即定址 3.寄存器移位定址 4.寄存器間接定址 5.基址定址 6.多寄存器定址 7.堆棧定址 8.相對定址;「LDR R1,[R0,#0x08]」屬於基址定址。
(2)ARM指令的條件碼有多少個?默認條件碼是什麼?
答:16個;AL。
(3)ARM指令中的第2個操作數有哪幾種形式?列舉5個8點陣圖立即數。
答:1.常數表達式(8點陣圖) 2.寄存器方式 3.寄存器移位方式;0x3FC、0、0xF0000000、200、0xF0000001。
(4)LDR/STR指令的偏移形式有哪4種?LDRB指令和LDRSB指令有何區別?
答:1.零偏移 2.前索引偏移 3.程序相對偏移 4.後索引偏移;LDRB:載入無符號位元組數據,LDRSB載入有符號位元組數據
(5)請指出MOV指令與LDR載入指令的區別及用途?
答:MOV指令的源操作數是常數或(帶偏移量的)寄存器,用於寄存器之間的數據傳送;LDR指令的源操作數是地址,用於存儲器到寄存器的數據傳送。
(6)CMP指令是如何執行的?寫一程序,判斷R1的值是否大於0x30,是則將R1減去0x30。
答:CMP指令將Rn-operand2,根據結果更新CPSR中的相應條件標志位。
CMP R1,0x30
SUBHI R1,0x30
(7)調用子程序是用B指令還是用BL指令?請寫出返回子程序的指令。
答:用BL;MOV PC,R14。
(8)請指出LDR偽指令的用法。指令格式與LDR載入指令的區別是什麼?
答:用法:LDR{cond} Rd,=立即數/標號+立即數;LDR偽指令的源操作數是代表一個常數,LDR載入指令的源操作數代表一個地址。
(9)ARM狀態與Thumb狀態的切換指令是什麼?請舉例說明。
答:BX;
;從ARM狀態切換到Thumb狀態
CODE32
LDR R0,=Lable+1
BX R0
CODE16
Lable MOV R1,#12
;從Thumb狀態切換到ARM狀態
CODE16
LDR R0,=Lable
BX R0
CODE32
Lable MOV R1,#10
(10)Thumb狀態與ARM狀態的寄存器有區別嗎?Thumb指令對哪些寄存器的訪問受到一定限制?
答:有區別;R8~R15。
(11)Thumb指令集的堆棧入棧、出棧指令是哪兩條?
答:PUSH、POP。
(12)Thumb指令集的BL指令轉移范圍為何能達到±4MB?其指令編碼是怎樣的?
答:BL指令事實上是兩條指令,其編碼為:11110{地址偏移高11位}、11111{地址偏移低11位},地址編碼22位,再左移一位(半字對齊),23位地址定址8MB,即±4MB。
2.有符號和無符號加法
答:
(1)
0xFFFF000F (A)
+0x0000FFF1 (B)
——————
(0x00000000)
NZCV=0110
如果兩個操作數是有符號數,A是負數,B是正數,和是0,沒有溢出,所以V=0。
如果兩個操作數是無符號數,和是0,有進位,所以C=1。
(2)
0x7FFFFFFF (A)
+0x02345678 (B)
——————
(0x82345677)
NZCV=1001
如果兩個操作數是有符號數,A是正數,B是正數,和是負數,有溢出,所以V=1。
如果兩個操作數是無符號數,沒有進位,所以C=0。
(3)
67654321 (A)
+ 23110000 (B)
——————
(0x0568F421)
NZCV=0000
如果兩個操作數是有符號數,A是正數,B是正數,和是正數,沒有溢出,所以V=0。
如果兩個操作數是無符號數,沒有進位,所以C=0。
❷ 嵌入式系統入門需要看哪方面的書,謝謝了!
嵌入式系統軟體工程方法實用技術及應用,免費下載
鏈接:https://pan..com/s/10No3IypKyLg01bV4T9b22w
《嵌入式系統軟體工程:基礎知識、方法和應用》系統地闡述嵌入式系統軟體工程所涉及的過程、方法、內容,以及在典型工業領域中的應用。全書內容分為兩大部分:第一部分介紹嵌入式系統軟體工程方法論,主要包括嵌入式軟體的開發過程(需求工程、軟體和系統體系結構、編程和測試等內容),開發和測試中所採用的標准,與安全性相關的軟體系統的准入,以及嵌入式軟體所涉及的法律問題:第二部分介紹嵌入式系統軟體在汽車領域、軌道交通領域、航天領域、醫療器械、工業自動化、通信系統中的應用,在每個應用領域重點介紹具體應用領域的一些特定需求、技術和限制條件,以及它們對於嵌入式系統軟體開發過程的影響。
❸ ARM體系結構與編程的參考文獻
1. KaiHwang著.王鼎興,沈美明等譯《高等計算機系統結構並行性可擴展性可編程性》北京:清華大學出版社1995
2. 鄭緯民,湯志忠編著.《計算機系統結構》北京:清華大學出版社1998
3. NucleusPLUSReferencemanual.AcceleratedTechnology
4. L7200-05SDB-HWusersmanual.LinkUpSystemsCorporation2000
5. L7210DataBookRev1_2.LinkUpSystemsCorporation2000
6. DDI0100E_ARM_ARM.ARMLimited2000
7. DUI0068B_ADS1_2_Assembler.ARMLimited2001
8. DUI0151A_ADS1_2_LinkUt.ARMLimited2001
9. DUI0067D_ADS1_2_CompLib.ARMLimited2001
10. DUI0065D_ADS1_2_CodeWarrior.ARMLimited2001
11. DUI0058D_ADS1_2_DebugTarg.ARMLimited2001
12. DDI0192A_720T_R3.ARMLimited2000
13. DAI0048A_scatterload.ARMLimited1998
14. AdamCaly.n.Motorola,Inc.
15. DennisEdwards.ExecutingOutofROM.2002EmbeddedSystemsConference,SanFrancisco
❹ ARM體系結構與編程的作品目錄
第1章 ARM概述及其基本編程模型
1. 1 ARM技術的應用領域及其特點
1. 2 ARM體系結構的版本及命名方法
1. 2. 1 ARM體系結構的版本
1. 2. 2 ARM體系的變種
1. 2. 3 ARM/Thumb體系版本的命名格式
l. 3 ARM處理器系列
1. 3. 1 ARM7系列
1. 3. 2 ARM9系列
1. 3. 3 ARM9E系列
1. 3. 4 ARM1OE系列
1. 3. 5 SecurCore系列
l. 4 ARM處理器模式
1. 5 ARM寄存器介紹
1. 5. l 通用寄存器
1. 5. 3 程序狀態寄存器
1. 6 ARM體系的異常中斷
1. 6. 1 ARM中異常中斷種類
1. 6. 2 ARM處理器對異常中斷的響應過程
1. 6. 3 從異常中斷處理程序中返回
1. 7 ARM體系中存儲系統
1. 7. 1 ARM體系中的存儲空間
1. 7. 2 ARM存儲器格式
1. 7. 3 非對齊的存儲訪問操作
1. 7. 4 指令預取和自修改代碼
第2章 ARM指令分類及其定址方式
2. 1 ARM指令集概要介紹
2. 1. 1 ARM指令的分類
2. 1. 2 ARM指令的一般編碼格式
2. 1. 3 ARM指令的條件碼域
2. 2 ARM指令定址方式
2. 2. l 數據處理指令的操作數的定址方式
2. 2. 2 字及無符號位元組的Load/Store指令的定址方式
2. 2. 3 雜類Load/Store指令的定址方式
2. 2. 4 批量Load/Store指令的定址方式
2. 2. 5 協處理器Load/Store指令的定址方式
第3章 ARM指令集介紹
3. 1 ARM指令集
3. 1. l 跳轉指令
3. l. 2 數據處理指令
3. 1. 3 乘法指令
3. 1. 4 雜類的算術指令
3. 1. 5 狀態寄存器訪問指令
3. l. 6 Load/Store內存訪問指令
3. 1. 7 批量Load/Store內存訪問指令
3. 1. 8 信號量操作指令
3. 1. 9 異常中斷產生指令
3. 1. 10 ARM協處理器指令
3. 2 一些基本的ARM指令功能段
3. 2. l 算術邏輯運算指令的應用
3. 2. 2 跳轉指令的應用
3. 2. 3 Loacl/Store指令的應用
3. 2. 4 批量Load/Store指令的應用
3. 2. 5 信號量指令的應用
3. 2. 6 與系統相關的一些指令代碼段
3. 3 Thumb指令介紹
第4章 ARM匯編語言程序設計
4. 1 偽操作
4. 1. l 符號定義偽操作
4. 1. 2 數據定義偽操作
4. 1. 3 匯編控制偽操作
4. 1. 4 棧中數據幀描述偽操作
4. 1. 5 信息報告偽操作
4. 1. 6 其他的偽操作
4. 2 ARM匯編語言偽指令
4. 3 ARM匯編語言語句格式
4. 3. 1 ARM匯編語言中的符號
4. 3. 2 ARM匯編語言中的表達式
4. 4 ARM匯編語言程序格式.
4. 4. l 匯編語言程序格式
4. 4. 2 匯編語言子程序調用
4. 5 ARM匯編編譯器的使用
4. 6 匯編程序設計舉例
4. 6. 1 ARM中偽操作使用實例
4. 6. 2 ARM中匯編程序實例
第5章 ARM存儲系統
5. 1 ARM存儲系統概述
5. 2 ARM中用於存儲管理的系統控制協處理器CP15
5. 2. 1 訪問CP15寄存器的指令
5. 2. 2 CP15中的寄存器
5. 3 存儲器管理單元MMU
5. 3. l 存儲器管理單元MMU概述
5. 3. 2 禁止/使能MMU
5. 3. 3 MMU中地址變換過程
5. 3. 4 MMU中存儲訪問許可權控制
5. 3. 5 MMU中的域
5. 3. 6 關於快表的操作
5. 3. 7 ARM中的存儲訪問失效
5. 4 高速緩沖存儲器和寫緩沖區
5. 4. 1 基本概念
5. 4. 2 cache的工作原理和地址映像方法
5. 4. 3 cache的分類
5. 4. 4 cache的替換演算法
5. 4. 5 緩沖技術的使用注意事項
5. 4. 6 存儲系統的一致性問題
5. 4. 7 cache內容鎖定
5. 4. 8 與cache和寫緩沖區相關的編程介面
5. 5 快速上下文切換技術
5. 5. l 快速上下文切換技術原理
5. 5. 2 快速上下文切換技術編程介面
5. 6 與存儲系統相關的程序設計指南
5. 6. l 地址空間
5. 6. 2 存儲器格式
5. 6. 3 非對齊的存儲訪問操作
5. 6. 4 指令預取和自修改代碼
5. 6. 5 IMB
5. 6. 6 存儲器映射的I/O空間
5. 7 AIOA存儲系統的實例
5. 7. 1 L7205的存儲系統概述
5. 7. 2 L7205中的SDRAM
5. 7. 3 L7205中的 MMU
第6章 ATPCS介紹
6. 1 ATPCS概述
6. 2 基本ATPCS
6. 2. l 寄存器的使用規則
6. 2. 2 數據棧使用規則
6. 2. 3 參數傳遞規則
6. 3 幾種特定的ATPCS
6. 3. l 支持數據棧限制檢查的ATPCS
6. 3. 2 支持只讀段位置無關(ROPI)的ATPCS
6. 3. 3 支持可讀寫段位置無關(RWPI)的ATPCS
6. 3. 4 支持ARM程序和Thumb程序混合使用的ATPCS
6. 3. 5 處理浮點運算的ATPCS
第7章 ARM程序和Thumb程序混合使用
7. 1 概述
7. 2 在匯編語言程序中通過用戶代碼支持interwork
7. 2. l 可以實現程序狀態切換的指令
7. 2. 2 與程序狀態切換相關的偽操作
7. 2. 3 進行狀態切換的匯編程序實例
7. 3 在C/C++程序中實現interwork
7. 4 在匯編語言程序中通過連接器支持interwork
7. 4. l 利用veneers實現匯編程序間的程序狀態切換
7. 4. 2 利用veneers實現匯編程序與C/C++程序間的程序狀態切換
第8章 CC++以及匯編語言的混合編程
8. l 內嵌匯編器的使用
8. 1. l 內嵌的匯編指令用法
8. 1. 2 內嵌的匯編器和armasm的區別
8. l. 3 在CC++程序中使用內嵌的匯編指令
8. 1. 4 內嵌匯編指令的應用舉例
8. 2 從匯編程序中訪問C程序變數
8. 3 匯編程序.C程序以及C++程序的相互調用
8. 3. l 在C++程序中使用C程序頭文件
8. 3. 2 匯編程序.C程序以及C++程序的相互調用舉例
第9章 異常中斷處理
9. 1 ARM中異常中斷處理概述
9. 1. 1 ARM體系中異常中斷種類
9. 1. 2 異常中斷向量表及異常中斷優先順序
9. 1. 3 異常中斷使用的寄存器
9. 2 進入和退出異常中斷的過程
9. 2. 1 ARM處理器對異常中斷的響應過程
9. 2. 2 從異常中斷處理程序中返回
9. 3 在應用程序中安裝異常中斷處理程序
9. 3. 1 在系統復位時安裝異常中斷處理程序
9. 3. 2 在C程序中安裝異常中斷處理程序
9. 4 SWI異常中斷處理程序
9. 4. 1 SWI異常中斷處理程序的實現
9. 4. 2 SWI異常中斷調用
9. 5 FIQ和IRQ異常中斷處理程序
9. 5. 1 IRQ/FIQ異常中斷處理程序
9. 5. 2 IRQ異常中斷處理程序舉例
9. 6 復位異常中斷處理程序
9. 7 未定義指令異常中斷
9. 8 指令預取中止異常中斷處理程序
9. 9 數據訪問中止異常中斷處理程序
第10章 ARM C/0++編譯器
10. 1 ARM C/C++編譯器概述
10. 1. 1 ARM C/C++編譯器及語言庫介紹
10. l. 2 ARM編譯器中與搜索路徑相關的一些基本概念
10. 2 ARM編譯器命令行格式
10. 2. l 過程調用標准
10. 2. 2 設置源程序語言類型
10. 2. 3 指定搜索路徑
10. 2. 4 設置預處理選項
10. 2. 5 設置輸出文件類型
10. 2. 6 指定目標處理器和ARM體系版本
10. 2. 7 生成調試信息
10. 2. 8 代碼生成的控制
10. 2. 9 控制警告信息的產生
10. 2. 10 編譯時進行的一些額外的檢查
10. 2. 11 控制錯誤信息
10. 3 ARM編譯器中的pragmas
10. 4 ARM編譯器特定的關鍵詞
10. 4. 1 用於聲明函數的關鍵詞
10. 4. 2 用於聲明交量的關鍵詞
10. 4. 3 用於限定數據類型的關鍵詞
10. 5 ARM編譯器支持的基本數據類型
10. 6 ARM編譯器中預定義宏
10. 7 ARM中C/C++庫
10. 7. 1 ARM中C/C++運行時庫概述
10. 7. 2 建立一個包含C/C++運行時庫的C/C++應用程序
10. 7. 3 建立不包含C運行時庫的應用程序
10. 7. 4 裁減C/C++運行時庫以適應特定的目標運行環境
第11章 ARM連接器
11. 1 ARM映像文件
11. 1. 1 ARM映像文件的組成
11. 1. 2 ARM映像文件的入口點
11. 1. 3 輸入段的排序規則
11. 2 ARM連接器介紹
11. 3 ARM連接器生成的符號
11. 3. 1 連接器生成的與域相關的符號
11. 3. 2 連接器生成的與輸出段相關的符號
11. 3. 3 連接器生成的與輸入段相關的符號
11. 4 連接器的優化功能
11. 5 運行時庫的使用
11. 5. 1 C/C++運行時庫與目標文件
11. 5. 2 查找需要的C/C++運行時庫
11. 5. 3 選擇合適種類的C/C++運行時庫
11. 5. 4 掃描C/C++運行時庫
11. 6 從一個映像文件中使用另一個映像文件中的符號
11. 6. 1 symdefs文件
11. 6. 2 建立symdefs文件
11. 6. 3 symdefs文件的使用
11. 7 隱藏或者重命名全局符號
11. 7. l steering文件的格式
11. 7. 2 steering文件中的命令
11. 8 ARM連接器命令行選項
11. 9 使用scatter文件定義映像文件的地址映射
11. 9. l scatter文件概述
11. 9. 2 satter文件中各部分介紹
11. 9. 3 scatter文件使用舉例
第12章 嵌入式應用程序示例
12. l 嵌入式應用程序設計的基本知識
12. 1. 1 嵌入式應用系統中的存儲映射
12. 1. 2 系統初始化
12. 2 使用semihosting的 C語言程序示例
12. 2. 1 源程序分析
12. 2. 2 生成映像文件
12. 3 一個嵌入式應用系統示例
12. 3. l 源程序分析
12. 3. 2 生成映像文件
12. 3. 3 本例中地址映射模式
12. 4 進行ROM/RAM地址重映射的嵌入式應用系統
12. 4. l 地址映射模式
12. 4. 2 源程序分析
12. 4. 3 生成映像文件
12. 5 一個嵌入式操作系統示例
第13章 使用CodeWarrior
13. 1 CodeWarrior for ADS概述
13. 2 簡單工程項目的使用
13. 2. 1 工程項目窗口
13. 2. 2 簡單工程項目的使用
13. 3 配置生成目標
13. 3. 1 Debug Settings對話框介紹
13. 3. 2 設置牛成目標的基本選項
13. 3. 3 匯編器選項設置
13. 3. 4 編譯器的選項設置
13. 3. 5 連接器的選項設置
13. 3. 6 fromELF工具的選項設置
13. 4 復雜工程項目的使用
13. 4. l 建立一個新的生成目標
13. 4. 2 將一個生成目標更名
13. 4. 3 建立生成目標之間的依賴關系
13. 4. 4 子工程項目的使用
13. 5 工程項目模板
13. 5. 1 ADS中工程項目模板的使用
13. 5. 2 建立用戶工程項目模板
13. 6 編譯和連接工程項目
13. 6. 1 編譯文件
13. 6. 2 生成工程項目
第14章 ARM體系中的調試方法
14. 1 ARM體系中調試系統概述
14. 2 基於Angel的調試系統
14. 2. l 基於Angel的調試系統的概述
14. 2. 2 使用Angel開發應用程序
14. 2. 3 Angel執行的操作
14. 2. 4 將Angel移植到特定的目標系統
14. 3 基於JTAG的調試系統
14. 3. l 基於JTAG的調試系統的特點
14. 3. 2 基於JTAG的調試系統結構
14. 3. 3 目標系統中的調試功能擴展部件
14. 3. 4 基於JTAG的調試過程
14. 4 ADW使用介紹
14. 4. 1 ADW概述
14. 4. 2 ADW中的窗口
14. 4. 3 ADW使用介紹
❺ ARM體系結構與編程和ARM嵌入式系統結構與編程哪個好
個人認為,ARM其實也是嵌入式系統實現的一種方式,你想說的是,加不加入操作系統吧。不加操作系統,就是裸機跑程序,在一些場合也足以應付;但加入操作系統後,嵌入式系統的功能將更強大,它的實時性、可靠性都有很大的提高。
❻ 《ARM體系結構與編程第二版》pdf下載在線閱讀全文,求百度網盤雲資源
《ARM體系結構與編程第二版》網路網盤pdf最新全集下載:
鏈接:https://pan..com/s/1yYDq8g7FV6eBT-m-8-tRGg