基本信息
作者:趙星寒 劉濤出版社:北京航空航天大學出版社ISBN:781077719X
出版日期:2005 年10月
開本:16開
頁碼:395
版次:1-1
內容簡介
本書從51系列單片機的一般知識出發,將arm處理器和51系列單片機進行對比,引導讀者去理解和學習arm處理器的知識。內容分為3部分:第1部分是前4章,從大家所熟悉的51系列單片機的基礎知識開始,介紹arm處理器的基本知識,包括arm和51系列的對比、中斷處理系統、暫存器和存儲器結構等;第2部分是5~9章,詳細比較arm指令和51系列指令之間的差異,進一步闡述arm指令的含義和使用方法,從簡單的51系列編程經驗出發,介紹arm處理器軟體編程方法;第3部分是後3章,介紹arm處理器開發工具的使用。.任何一個學習過51系列單片機的技術人員,藉助本書都會很容易地學會arm處理器的一般知識,了解軟體設計的基本方法,並且能夠使用開發工具進行程式編輯、編譯、連線和調試,成為一個初步懂得arm並可以進行軟體設計的工程師。
本書可供電子信息類大學生、研究生或電子設計工程師閱讀參考。
目錄
第1章 幾個基本概念1.1 從51系列單片機到arm處理器.1
1.2 arm不是單片機2
1.3 51系列單片機和arm處理器的比較3
1.4 以arm為核的單片機4
1.4.1 處理器核心只和外部地址相關4
1.4.2 arm怎樣組成一個單片機6
1.4.3 一點啟示7
第2章 arm處理器基礎
2.1 arm處理器的數據格式8
2.1.1 基礎知識8
2.1.2 arm處理器的存儲器結構9
2.1.3 arm處理器的指令存儲或數據存儲13
2.1.4 地址對準15
2.2 處理器模式15
2.3 arm內部暫存器17
2.3.1 arm狀態時的暫存器17
2.3.2 thumb狀態下的暫存器25
2.4 異常27
第3章 arm7tdmi簡介.3.1 概述29
3.2 結構和框圖30
3.3.3 級流水線結構33
3.4 arm處理器的定址方式35
3.4.1 51系列與arm系列定址方法的比較35
3.4.2 暫存器定址36
3.4.3 立即定址36
3.4.4 暫存器移位定址37
3.4.5 暫存器間接定址39
3.4.6 變址定址40
3.4.7 多暫存器定址42
3.4.8 堆疊定址42
3.4.9 定址方式的套用43
3.4.1 0arm指令定址一覽表44
第4章 異常和中斷
4.1 概述45
4.2 復位異常46
4.3 未定義指令異常47
4.4 軟體中斷異常49
4.5 預取指中止異常49
4.6 數據中止異常50
4.7 中斷請求(irq)異常 51
4.8 快速中斷(fiq)請求異常52
4.9 中斷源和中斷優先權53
4.10 異常中斷的進入和退出54
第5章 arm指令集
5.1 概述56
5.2 指令可選後綴59
5.2.1 s後綴60
5.2.2 後綴60
5.2.3 b後綴61
5.2.4 t後綴61
5.2.5 條件後綴62
5.3 arm數據傳送指令(存儲器訪問指令)64
5.3.1 關於數據傳送64
5.3.2 數據傳送中的幾個問題66
5.3.3 arm數據傳送指令代碼表70
5.3.4 數據傳送指令代碼詳述71
5.4 arm分支指令93
5.4.1 關於程式分支93
5.4.2 arm分支指令詳解94
5.5 arm數據處理指令98
5.5.1 arm數據處理指令的特點98
5.5.2 第2運算元99
5.5.3 arm數據處理指令代碼表101
5.5.4 arm數據處理指令詳述103
5.6 arm指令集中和協處理器有關的指令120
5.7 arm指令集中的軟體中斷指令125
第6章 thumb指令集
6.1 thumb指令的特點129
6.2 thumb指令和arm指令的比較132
6.3 thumb指令集中的數據傳送類指令134
6.4 thumb指令集中的分支指令146
6.5 thumb指令集中的數據處理指令152
6.6 thumb指令集中的軟體中斷指令164
第7章 偽指令
7.1 偽指令概述166
7.2 與arm指令相關的偽指令167
7.3 與thumb指令相關的偽指令177
7.4 通用偽指令180
7.4.1 為變數定義和賦值的偽指令180
7.4.2 定義各類暫存器名稱的偽指令184
7.4.3 數據定義偽指令187
7.4.4 控制程式流向的偽指令196
7.4.5 其他偽指令201
第8章 arm系統設計和程式設計
8.1 關於arm處理器,我們學到了什麼?207
8.2 程式設計的幾個問題209
8.3 arm指令和 thumb指令的兼容性214
8.4 彙編程式規則..221
8.4.1 組成222
8.4.2 書寫格式223
8.4.3 彙編語言中的表達式224
8.5 彙編程式舉例231
第9章 c和c++語言的套用
9.1 彙編語言與c/c++語言的比較237
9.2 c/c++語言的編程規範238
9.2.1 注釋238
9.2.2 命名239
9.2.3 編輯風格239
9.3 如何編寫針對arm的高效c語言程式240
9.3.1 以空間換時間240
9.3.2 使用數學方法解決問題242
9.3.3 使用位操作242
9.3.4 嵌入彙編243
9.4 c、c++語言與彙編語言的混合編程244
9.4.1 在c、c++程式中使用內嵌的彙編指令的語法格式244
9.4.2 在c、c++程式中使用內嵌的彙編指令的注意事項245
9.4.3 內嵌彙編指令的套用舉例247
9.4.4 從彙編程式中訪問c程式變數248
9.4.5 在c++程式中使用c程式頭檔案249
9.4.6 彙編程式、c程式以及c++程式的相互調用舉例250
第10章 程式的編輯和編譯
10.1 程式設計過程254
10.1.1 編輯程式254
10.1.2 編譯程式255
10.1.3 連線和調試程式257
10.2 arm處理器開發工具介紹258
10.2.1 arm處理器仿真系統特點258
10.2.2 ads集成開發環境259
10.2.3 ads開發系統的系統資源261
10.2.4 系統軟體開發的步驟263
10.3 程式的編輯263
10.3.1 源程式是可移植的263
10.3.2 在codewarrior for ads環境下編輯源檔案266
10.3.3 建立工程項目總結271
10.3.4 建立c語言和c++語言源檔案271
10.3.5 檔案的管理272
10.3.6 編輯畫面的設定273
10.3.7 ads編輯功能介紹279
10.3.8 螢幕分割設定282
10.4 程式的編譯283
10.4.1 有兩種方式可以實現程式的編譯283
10.4.2 命令行中的可選項和圖形方式中的可選項286
10.4.3 ads中的可選項290
10.5 彙編器的套用291
10.5.1 arm彙編器armasm中的可選項291
10.5.2 arm彙編器套用298
10.5.3 套用舉例300
10.6 編譯器的套用303
10.6.1 arm編譯器中的可選項303
10.6.2 arm編譯器的套用317
第11章 程式的連線
11.1 幾個與連線有關的概念320
11.2 連線器的套用326
11.3 連線器選項設定334
11.4 連線器套用舉例347
第12章 arm調試工具axd
12.1 調試工具axd361
12.1.1 arm調試工具介紹361
12.1.2 調試工具axd的使用方法363
12.2 在調試過程中使用斷點371
12.2.1 設定斷點371
12.2.2 執行到斷點處374
12.2.3 查找和修改斷點374
12.2.4 斷點管理下拉選單374
12.2.5 觀察斷點375
12.2.6 刪除斷點376
12.3 axd中其他工具介紹376
12.3.1 使用觀測項376
12.3.2 在調試程式時觀察變數381
12.3.3 在調試程式時使用符號表383
12.3.4 使用觀測點384
12.3.5 工具列中的工具387
12.4 數據格式389
12.4.1 設定數據格式389
12.4.2 設定默認的數據顯示格式...393
參考文獻
前言
第1:為什麼非學ARM不可?(1) 單片機技術的套用在更廣泛的範圍內把電子產品帶到我們身邊,把我們每一個人都和“電腦”緊緊相連。仔細觀察我們周圍的生活,無處不包含單片機的蹤影。以8051為代表的單片機滲透到到我們生活的方方面面。但從20世紀80年代到現在,單片機始終在8位機的檔次上徘徊,8位的單片機始終主導著套用的潮流。16位單片機雖然也曾經掀起過波浪,但很快就銷聲匿跡了。可時至今日,我們還能使用8位的單片機做些什麼呢?在20世紀80年代,凡是使用8051系列單片機的產品都是先進技術的體現,現在人們當然不會這樣去審視一個產品。我們再也無法把51系列和一個技術先進的產品相提並論。32位單片機套用的高潮正悄悄到來。只有使用功能強大的32位單片機才能設計出輕巧多變的手機,才能設計出映像逼真的視頻產品,才能設計出非同凡響的工業產品。.
(2) 每個工科院校電子信息類的畢業生都異口同聲地說: 我會51系列單片機。當他說這句話的時候,他和別人是站在同一起跑線上的。可我們完全有可能和別人不站在同一起跑線上。 我們有很多人,畢業近十年了,一直在搞產品研發,但也始終工作在51系列單片機這一檔次上。我們再也不要以熟知51系列而引以為榮,不要以精通51系列而作為一門工作技能。
(3) 誠然,51系列及同檔次的單片機並沒有退出套用市場,在今後很長的時間內都會繼續主導潮流,但在高端產品的套用領域不會再發揮作用。套用51系列的產品將是大眾化的產品,進行51系列設計的工程師也只是大眾化的工程師。你有什麼理由不學ARM呢?
第2:學ARM為什麼要從51系列學起?
(1) 在單片機沒有出現的20世紀80年代以前,學習計算機是從單板機開始的。在單片機出現以後,學習計算機一般都以51系列為基礎。從51系列的基本概念出發,去理解和學習其他更複雜的計算機就要容易得多,因為很多基本概念是相同的。
(2) 本書的目的在於幫助那些經驗並不豐富的初學者,這些人一般只有51系列的經驗而沒有其他單片機經驗,因此,只能以51系列為基礎,去學習ARM處理器的知識。
第3: 學ARM究竟有多難?
ARM處理器的確是一種很複雜的微處理器結構,但從套用的角度來說,只要有51系列的經驗,學習ARM並不是很困難的事。
(1) 學習ARM處理器只學習與套用有關的部分。關於ARM處理器的很多資料,都是直接對ARM說明書的譯文。這些說明書中很大一部分都是關於ARM結構的論述,這些內容是寫給晶片設計工程師看的,學習這些內容對套用人員毫無用處。
(2) 套用ARM應該分為3個階段: 第1階段是學習ARM的基本內容;第2階段是學習以ARM為核的單片機;第3階段才是套用。這與學習51系列單片機不同。學習51系列單片機時,學會了基本內容也就學會了單片機。本書所講述的是ARM的基本內容。
(3) 與51系列的基本內容相近,ARM的基本內容主要包括中斷回響過程、ARM指令集、存儲器結構和彙編語言的程式結構,並沒有比51系列更多的內容。從這幾方面出發去學習ARM處理器,就會發現學習ARM並不是很困難的事。
第4:本書的內容安排:..
本書的前4章是對ARM處理器的一般介紹,內容並不多,把這些內容與51系列對比學習,會很快了解ARM處理器的基本原理。對於這些內容以外的關於ARM的知識,建議初學者暫時不要去研究。
第5章介紹ARM指令集,這一章的內容是彙編語言基礎。第6章介紹Thumb指令集,它是ARM指令集的一個子集。在大多數情況下,因為所有的程式都可以使用ARM指令實現,初學者可以暫不學習Thumb指令集。但學過ARM指令集以後,學習Thumb指令集是一件很容易的事情。
第7章講述偽指令,使用ARM彙編語言必須熟悉偽指令。
第8章講述軟體的設計方法和彙編語言套用規則。第9章講述C和C++語言的套用。
在ARM套用中,學會使用開發工具是十分重要的。後面3章詳細講述開發工具的套用。第10章介紹ARM開發中一種常用的工具ADS,介紹怎樣使用ADS編輯和編譯程式。第11章介紹怎樣使用ADS連線程式。第12章介紹怎樣使用AXD調試程式。
第5:本書的目標
通過學習本書前4章的內容,可以了解ARM處理器的基本概念。通過學習5~9章的內容,可以學會為ARM系統編程的一般方法。通過後3章的學習,可以學會使用ARM 開發工具。