內容簡介
本書介紹ARM最新推出的基於微控制器的ARM開發工具MDK的基本知識、詳細使用方法以及一個簡單的套用開發實例。全書共14章,分為3個部分。第1部分為第1~4章,是MDK的基本入門篇,首先介紹MDK的特點、功能和組件,並指導讀者完成MDK的安裝及註冊過程,然後全面介紹IDE環境的基本使用方法,最後給出一個簡單的工程開發實例。第2部分為第5~13章,是高級技術篇,詳細介紹MDK的各重要部分,包括armasm彙編器、armcc編譯器、armlink連結器、armar庫管理器、MDK調試器、Flash編程工具,以及一些MDK工具和第三方工具。第3部分為第14章,是套用實例篇,介紹一個採用MDK開發的例程Blinky。
本書內容豐富,既可作為嵌入式軟體開發入門者的教材,又可作為使用MDK進行嵌入式軟體開發設計的技術人員的參考用書。
前言
realview工具集是ARM公司最新推出的專業嵌入式開發工具,在從概念設計到產品實現的整個嵌入式開發過程中,都能提供強有力的支持。其中每個工具的研發都與ARMIP核的設計緊密結合,使用這些開發工具能夠最大程度地發掘IP核的性能。
RealView工具集中包含兩個集成開發工具:MicrocontrollerDevelopmentKit(MDK)和RealViewDevelopmentSuite(rvds),它們分別為不同的開發目標平台提供不同的最最佳化開發方案。其中,MDK是為滿足基於MCU進行嵌入式軟體開發的需求而推出的,它包含強大的設備調試和仿真支持、眾多的案例模板和固件實例以及存儲最佳化的RTOS庫。MDK適合不同層次的開發者使用,包括專業的應用程式開發工程師和嵌入式軟體開發入門者,並能滿足要求較高的微控制器套用。
本書是一本全面介紹MDK使用方法的書籍,既適合嵌入式開發的入門者,也適合使用MDK進行嵌入式開發的設計者。全書共14章,分為以下3部分。
第1部分包括第1~4章,是MDK的基本入門部分。該部分首先介紹MDK的特點、功能和組件,然後指導讀者完成MDK的安裝及註冊過程,隨後全面介紹IDE環境的基本使用方法,最後給出一個簡單工程開發實例。通過該部分的學習,讀者可以掌握MDK的基本使用方法,了解利用MDK完成嵌入式開發的一般過程。
第2部分包括第5~13章,詳細介紹MDK的各重要組成部分。包括RealView編譯工具集RVCT(RealViewCompilationTools)、MDK的一些工具與第三方工具、MDK調試器以及Flash編程工具。這些內容是使用MDK進行嵌入式高級開發所必須掌握的,其內容非常豐富,讀者通常無法在短時間內全部掌握。因此,這部分內容適合用作開發人員的使用手冊,可以在使用MDK進行開發的過程中隨時查閱。
第3部分包括第14章,介紹一個採用MDK開發的例程Blinky。在對該例程開發過程的介紹中,作者將MDK中一些有特色的工具及方法融入其中。通過閱讀並復現這一例程的開發過程,可以幫助讀者掌握使用MDK進行實際嵌入式軟體開發的基本過程和一些常規調試手段。
作者在本書的寫作過程中得到了許多支持和幫助。首先,本書得到深圳市英蓓特信息技術有限公司的支持。作為ARM公司的主要合作夥伴,他們在第一時間為作者提供了最新的MDK中國版測試版軟體以及仿真器ulink2和開發板,並在技術上給予了大量的無私幫助,在此對英蓓特公司的劉熾、廖武、梁華驥等資深工程師表示感謝。其次,感謝武漢理工大學計算機科學與技術學院的碩士研究生田雲芳、張仲達、徐良平、熊剛和劉晶,他們完成了繁雜的資料收集、翻譯和整理工作,並幫助完成例程的編寫及測試工作,本書是他們汗水的結晶。最後,感謝北京航空航天大學出版社的馬廣雲老師,她在本書的內容安排、命名以及出版等方面給予作者很多建議和幫助。另外,本書使用和借鑑了ARM公司網站的內容和MDK軟體的幫助文檔,這些已經得到了ARM公司的授權。
目錄
基礎入門篇
第1章RealViewMDK概述
1.1RealViewMDK簡介2
1.2μVision3的主要特徵2
1.3μVisionIDE簡介3
1.4RealView編譯工具集4
1.5RealViewC/C++編譯器5
1.6RealView宏彙編器5
1.7RTLARM6
1.8μVision3調試器6
1.9軟體開發流程7
第2章μVision3的安裝與配置
2.1μVision3安裝的最小系統要求8
2.2μVision3的安裝8
2.3μVision3的安裝目錄結構9
2.4μVision3的註冊與幫助10
2.4.1μVision3的註冊10
2.4.2μVision3的幫助13
第3章μVisionIDE
3.1選單欄、工具列和快捷鍵15
3.1.1概述15
3.1.2File選單15
3.1.3Edit選單16
3.1.4View選單17
3.1.5Project選單18
3.1.6Debug選單19
3.1.7Flash選單19
3.1.8Peripherals選單20
3.1.9Tool選單20
3.1.10SVCS選單20
3.1.11Window選單20
3.1.12Help選單21
3.1.13Status欄21
3.2工程工作區22
3.2.1Files頁22
3.2.2Regs頁23
3.2.3Books頁23
3.2.4Functions頁24
3.2.5Templates頁24
3.3工作區24
3.3.1編譯模式下的工作區24
3.3.2調試模式下的工作區25
3.4輸出視窗26
3.5記憶體視窗27
3.6觀測視窗27
3.7外設對話框29
第4章簡單工程示例
4.1選擇工具集30
4.2創建工程並選擇處理器31
4.3配置處理器啟動代碼32
4.4硬體選項配置33
4.5創建源檔案及檔案組34
4.6編譯連結工程36
4.7調試程式36
4.8建立HEX檔案38
4.9技巧38
4.9.1編譯前後啟用外部工具39
4.9.2為列表和目標檔案指定單獨的資料夾39
4.9.3使用μVision3設備資料庫中沒有的CPU40
4.9.4創建一個庫檔案41
4.9.5檔案和檔案組屬性41
4.9.6檔案擴展名42
4.9.7從μVision1中引入工程檔案43
4.9.8版本和序列號信息43
4.9.9選擇始終包含的庫模組43
4.9.10使用定製的編譯器44
4.9.11編譯器和彙編器的不同設定45
高級技術篇
第5章RealView宏彙編器armasm
5.1彙編程式的基本格式與結構48
5.1.1彙編源語句行格式48
5.1.2彙編語言程式的基本結構49
5.1.3子程式50
5.1.4宏51
5.2彙編源程式53
5.2.1環境設定53
5.2.2命令與提示53
5.2.3彙編輸出檔案54
5.3彙編命令57
5.4符號、運算符與表達式65
5.4.1符號65
5.4.2運算符68
5.4.3表達式71
第6章RealView編譯器armcc
6.1編譯源程式73
6.1.1環境設定73
6.1.2命令與提示74
6.1.3檔案命名約定和搜尋約定75
6.1.4編譯輸出檔案76
6.2編譯命令79
6.3armcc編譯器特性107
6.3.1關鍵字107
6.3.2__declspec屬性118
6.3.3函式、類型、變數的屬性120
6.3.4pragmas127
6.3.5intrinsics128
6.3.6預定義宏133
6.4內聯彙編與內嵌彙編136
6.4.1內聯彙編136
6.4.2內嵌彙編142
6.4.3內聯彙編與內嵌彙編的區別148
6.5高級編程148
6.5.1預編譯頭檔案149
6.5.2代碼最佳化151
6.5.3內聯155
6.5.4函式156
6.5.5程式複雜度度量159
6.5.6使用浮點運算160
6.6半主機方式161
6.6.1半主機方式的機制161
6.6.2半主機操作162
第7章RealView連結器armlink
7.1連結器armlink的使用163
7.1.1環境設定163
7.1.2armlink命令行及輸入/輸出164
7.2連結命令165
7.2.1獲取幫助和信息類命令選項165
7.2.2工程模板類命令選項165
7.2.3控制輸入檔案類選項166
7.2.4控制連結器行為類選項166
7.2.5設定輸出檔案類選項167
7.2.6設定記憶體映射類選項167
7.2.7控制調試信息類選項170
7.2.8控制映像內容類選項170
7.2.9控制膠合代碼類選項174
7.2.10指定位元組地址模式類選項175
7.2.11控制映像相關信息類選項175
7.2.12控制連結器診斷信息類選項178
7.2.13使用via檔案選項179
7.2.14雜項179
7.3連結器的基本功能180
7.3.1指定映像結構180
7.3.2節布局182
7.3.3最佳化和修正184
7.3.4使用命令行選項創建簡單映像192
7.3.5使用命令行選項來處理C++異常194
7.3.6連結器生成映像的信息195
7.4映像符號的定義與訪問196
7.4.1ARM/Thumb同義詞196
7.4.2連結器定義的符號197
7.4.3訪問其他映像中的符號198
7.4.4隱藏和重命名全局符號200
7.4.5用$Super$$和$Sub$$重載符號定義203
7.5分散載入描述檔案203
7.5.1分散載入機制203
7.5.2分散載入描述檔案的語法207
第8章RealView庫及庫管理器
8.1RealView庫218
8.1.1環境設定218
8.1.2ARMC、C++庫219
8.1.3ThumbC庫219
8.1.4浮點支持庫219
8.2C微庫220
8.2.1與默認C庫的差異220
8.2.2使用微庫建立應用程式221
8.3庫管理器armar221
8.3.1庫的搜尋與掃描222
8.3.2庫管理器armar222
第9章RLRTX實時庫管理
9.1RTX核簡介227
9.1.1功能概述227
9.1.2進程通信227
9.1.3技術規範228
9.1.4RTX核的使用229
9.1.5RTX核應用程式實例229
9.2RTX的工作原理232
9.2.1時間片中斷232
9.2.2系統時鐘任務232
9.2.3任務管理233
9.2.4空閒任務234
9.2.5系統資源234
9.2.6多任務協作235
9.2.7輪轉多任務236
9.2.8多任務的搶占237
9.2.9棧的管理238
9.2.10用戶定時器239
9.2.11中斷函式240
9.3RTX配置241
9.3.1任務242
9.3.2棧的容量243
9.3.3棧的檢查243
9.3.4硬體定時器243
9.3.5輪轉多任務244
9.3.6空閒任務244
9.3.7用戶定時器245
9.3.8高級配置245
9.3.9實時庫RTLARM的使用248
9.4RTX使用及例程248
9.4.1頭檔案的引入248
9.4.2進程的定義248
9.4.3運行進程的多個實例249
9.4.4外部變數的引用249
9.4.5信箱的使用250
9.4.6軟體中斷(SWI)函式252
9.4.7調試254
9.4.8RTX的使用例程——交通燈的控制254
9.4.9RTX核使用注意事項258
第10章映像檔案轉換器fromELF
10.1fromELF命令260
10.2使用μVision3IDE生成HEX檔案264
第11章μVision3工具
11.1配置嚮導266
11.1.1配置選單267
11.1.2配置嚮導示例267
11.2文本搜尋269
11.3源檔案瀏覽器270
11.4鍵碼序列272
11.5定製用戶選單273
11.6語法檢查工具PCLint274
11.7添加新處理器276
11.8版本控制278
11.9DTC接口280
第12章程式調試
12.1調試器的使用283
12.2調試視窗及對話框283
12.2.1斷點對話框284
12.2.2代碼統計對話框286
12.2.3暫存器頁287
12.2.4反彙編視窗287
12.2.5記憶體視窗及記憶體映射對話框288
12.2.6執行剖析器289
12.2.7性能分析儀290
12.2.8串列視窗291
12.2.9觀測視窗291
12.2.10工具箱292
12.2.11輸出視窗命令對話框292
12.2.12符號視窗293
12.3邏輯分析儀294
12.3.1邏輯分析儀的配置295
12.3.2被記錄信號的詳細配置297
12.3.3限制298
12.4調試命令及表達式298
12.4.1調試命令分類298
12.4.2調試命令詳解300
12.4.3表達式326
12.5調試函式336
12.5.1函式的建立及調用337
12.5.2預定義調試函式338
12.5.3用戶函式347
12.5.4信號函式348
12.5.5調試函式與C之間的差異351
12.5.6μVision3與dScope之間的差異351
12.6仿真模板352
12.6.1數位訊號輸入352
12.6.2模擬信號輸入仿真354
12.6.3仿真UART通信360
12.6.4仿真CAN匯流排362
12.6.5仿真I2C匯流排367
12.6.6仿真SPI接口371
12.7技巧374
12.7.1CPU配置及片上外設查看374
12.7.2仿真I/O口375
12.7.3仿真中斷及時鐘輸入376
12.7.4仿真外部I/O設備376
12.7.5用PC的COM口仿真目標串口377
12.7.6檢查非法記憶體訪問377
12.7.7從檔案中輸入命令377
12.7.8預置I/O口或存儲器的內容378
12.7.9寫調試輸出到檔案378
12.7.10使用快捷鍵378
第13章Flash編程器
13.1Flash選單配置379
13.2配置初始化檔案381
13.2.1匯流排配置381
13.2.2載入附加程式382
13.3HEX檔案下載382
套用實例篇
第14章基於STR912的開發例程Blinky
14.1EmbestSTR912開發板384
14.1.1EmbestSTR912硬體配置384
14.1.2接口與跳線簡介385
14.2創建應用程式Blinky386
14.2.1建立新的工程Blinky386
14.2.2添加相關的源程式393
14.2.3編譯與連結403
14.3調試應用程式Blinky403
14.3.1片上外圍設備狀態查看404
14.3.2仿真外部輸入信號405
14.3.3仿真UART通信407
14.3.4邏輯分析儀查看輸入/輸出信號時序407
14.3.5連線目標板調試程式408
14.4建立HEX檔案並下載409
14.4.1建立HEX檔案409
14.4.2下載HEX檔案到目標板409
附錄RealViewMDK常見問題解決辦法集錦411
參考文獻419