本書以實際的嵌入系統產品應用與開發為主線,力求透徹講解開發中所涉及的龐大而復雜的相關知識。內容包括:ARC嵌入式系統概述;ARC EM處理器介紹;ARC EM編程模型;中斷及異常處理等。
嵌入式系統(Embedded System)是一種“完全嵌入受控器件內部,為特定應用而設計的專用計算機系統”,根據英國電氣工程師協會(U. K. Institution of Electrical Engineer)的定義,嵌入式系統為控制、監視或輔助設備、機器,或用于工廠運作的設備。而國內普遍認同的嵌入式系統的定義為:以應用為中心,以計算機技術為基礎,軟硬件可裁剪,適應應用系統對功能、可靠性、成本、體積、功耗等嚴格要求的專用計算機系統。與個人計算機這樣的通用計算機系統不同,嵌入式系統通常執行的是帶有特定要求的預先定義的任務。
本書以實際的嵌入式系統產品應用與開發為主線,力求透徹講解開發中所涉及的龐大而復雜的相關知識。
本書第1~5章為基礎篇,介紹了ARC 嵌入式系統的基礎知識和開發過程中需要的一些理論知識,具體包括ARC嵌入式系統概述、ARC EM處理器介紹、ARC EM編程模型、中斷及異常處理、匯編語言程序設計等內容。第6~9章為實踐篇,介紹了如何建立嵌入式開發環境、搭建嵌入式硬件開發平臺等,具體包括ARC EM處理器的開發及調試環境、MQX實時操作系統、ARC EM Starter Kit FPGA開發板以及嵌入式系統應用開發實例等內容。第10~11章介紹了ARC EM處理器特有的可配置及可擴展APEX屬性,以及如何在處理器設計中利用這種可配置及可擴展性實現優化設計。
本書不僅詳細講解基礎理論知識,還提供了大量的開發案例供讀者參考,學習性和實用性強,既可供從事嵌入式系統設計、開發的廣大科技人員閱讀,也可以作為大專院校電子科學與技術、集成電路與集成系統、微電子科學與工程、物聯網工程、電子信息、自動控制專業及其他相關專業的教材或參考書。
本書是華中科技大學-Synopsys ARC處理器聯合培訓中心的力作,系統介紹應用Synopsys ARC處理器進行嵌入式系統開發與編程。為了使廣大學生和研發工程師盡快掌握ARC EM處理器的使用,更好地推廣Synopsys ARC 處理器技術與產品,在Synopsys全球總部、Synopsys武漢公司、Synopsys ARC研發團隊、華中科技大學光學與電子信息學院微電子工程系、武漢微電子學院及機械工業出版社華章公司的支持下,我們編著了此書,目的是為廣大讀者提供一本較為完整、系統的ARC EM嵌入式系統開發與編程參考書。本書主要以ARC EM原版數據手冊的內容為基礎,增加了ARC EM處理器特有的可配置及可擴展APEX屬性等內容。為了方便學習和實踐,我們還開發了較為完整的配套實驗案例,以及一個嵌入式系統應用實例—溫度自動監測模塊。
本書由華中科技大學武漢國際微電子學院及華中科技大學光學與電子信息學院雷鑑銘老師負責組織并完成全書的編著工作,華中科技大學鄭朝霞副教授、鄒雪城教授對本書進行了審校。參與本書編寫和整理、軟硬件設計和案例開發驗證等工作的有Synopsys公司的吳丹、程松波、程文、涂申俊、饒金理、沈金陽、陳鵬、胡振波、彭劍英以及華中科技大學武漢微電子學院的彭自強、向燈、黃之、許晟、安志浩、顧云帆、高文、鐘媛、高弘揚、鄭賢、符章等。在本書完成過程中,還得到了Synopsys武漢公司王喆及機械工業出版社華章公司的大力支持,在此向他們表示衷心的感謝。特別感謝文華學院外國語學院英語系肖艷梅老師的審校工作。
由于時間倉促和水平有限,同時在成書過程中Synopsys公司的官方資料還在不斷更新,所以本書有些內容不盡完善,錯誤之處也在所難免,懇請讀者批評指正,以便我們及時修正。
序
前言
第1章 ARC嵌入式系統概述1
1.1 嵌入式系統簡介1
1.2 ARC處理器簡介2
1.3 ARC EM處理器系列4
1.4 ARC EM處理器開發環境9
1.4.1 ARChitect9
1.4.2 MetaWare開發套件9
1.4.3 embARC軟件平臺10
1.4.4 操作系統支持10
1.4.5 ARC EM Starter Kit開發板10
1.5 小結11
第2章 ARC EM處理器介紹12
2.1 ARC EM處理器特點12
2.2 可配置性及可擴展性14
2.2.1 可配置性14
2.2.2 用戶可擴展性15
2.3 ARC EM處理器結構16
2.3.1 接口信號16
2.3.2 內核結構18
2.3.3 存儲系統20
2.3.4 存儲保護機制24
2.3.5 調試25
2.4 小結27
第3章 ARC EM編程模型28
3.1 概述28
3.2 尋址空間劃分30
3.3 數據類型30
3.3.1 32位數據31
3.3.2 16位數據31
3.3.3 8位數據32
3.3.4 1位數據32
3.4 尋址方式32
3.5 寄存器組32
3.5.1 核心寄存器組33
3.5.2 輔助寄存器組38
3.6 工作模式46
3.7 指令類型46
3.7.1 算術邏輯運算指令46
3.7.2 數據傳輸指令47
3.7.3 控制流指令47
3.7.4 特殊指令47
3.7.5 擴展指令集48
3.8 指令格式48
3.8.1 32位指令格式48
3.8.2 16位指令格式48
3.8.3 指令存儲方式49
3.8.4 條件執行50
3.9 指令集應用實例51
3.9.1 數據傳輸指令52
3.9.2 算術運算指令52
3.9.3 比較指令54
3.9.4 邏輯運算指令54
3.9.5 跳轉指令54
3.9.6 加載/存儲指令55
3.9.7 其他指令56
3.10 小結57
第4章 中斷及異常處理58
4.1 概述58
4.2 工作模式和權限58
4.3 中斷60
4.3.1 中斷單元特性61
4.3.2 配置中斷單元61
4.3.3 中斷單元編程62
4.3.4 中斷處理66
4.4 異常69
4.4.1 異常精確性69
4.4.2 異常向量及異常原因寄存器70
4.4.3 異常類型與優先級72
4.4.4 異常檢測74
4.4.5 異常進入75
4.4.6 異常退出75
4.4.7 異常與延遲槽指令75
4.5 中斷或異常服務程序返回指令RTIE75
4.6 小結77
第5章 匯編語言程序設計78
5.1 ARC匯編語言78
5.2 ARC匯編語言偽指令78
5.2.1 匯編語言偽指令簡介78
5.2.2 匯編語言偽指令79
5.3 ARC匯編語言語句格式82
5.3.1 匯編語言格式與例子82
5.3.2 匯編語言的字符集與標識符85
5.3.3 匯編語言符號86
5.3.4 匯編語言標號88
5.3.5 匯編語言的常量90
5.3.6 表達式91
5.3.7 宏92
5.4 ARC匯編語言程序設計93
5.4.1 匯編語言編程步驟93
5.4.2 程序設計類型94
5.5 ARC匯編語言程序實例97
5.6 ARC匯編語言與C/C++的混合編程98
5.6.1 ARC C/C++ 調用匯編程序98
5.6.2 ARC匯編調用C/C++101
5.6.3 ARC C/C++和匯編交叉調用實例101
5.7 小結103
第6章 ARC EM處理器的開發及調試環境104
6.1 MetaWare開發套件104
6.1.1 MetaWare mcc編譯器和ccac編譯器105
6.1.2 MetaWare ELF匯編器106
6.1.3 MetaWare ELF鏈接器106
6.1.4 MetaWare 運行時庫107
6.1.5 MetaWare調試器110
6.1.6 MetaWare仿真器110
6.1.7 MetaWare IDE111
6.2 MetaWare IDE開發指南112
6.2.1 創建與管理工程112
6.2.2 配置工程116
6.2.3 編譯工程118
6.2.4 調試工程118
6.3 使用MetaWare調試器進行性能分析122
6.4 MetaWare命令行模式126
6.4.1 MetaWare C/C++編譯命令126
6.4.2 MetaWare調試器調試命令127
6.5 ARC GNU介紹128
6.6 小結128
第7章MQX實時操作系統129
7.1 實時操作系統介紹129
7.2MQX內核組件130
7.3MQX任務管理132
7.3.1任務調度133
7.3.2任務同步與通信135
7.4 MQX存儲管理139
7.4.1 可變大小存儲塊管理139
7.4.2 固定大小存儲塊管理140
7.4.3 高速緩存控制142
7.5 中斷處理142
7.5.1 中斷處理初始化143
7.5.2 裝載應用程序定義的ISR143
7.5.3 針對ISR的限制144
7.5.4 修改默認ISR146
7.5.5 異常處理146
7.5.6 ISR異常處理146
7.5.7 任務異常處理147
7.5.8 ISR裝載實例147
7.6 MQX配置148
7.6.1 配置選項149
7.6.2 MQX創建任務實例150
7.7 小結153
第8章ARC EM Starter Kit FPGA開發板154
8.1 概述154
8.2 ARC EM FPGA系統設計155
8.2.1 FPGA系統概述155
8.2.2 EM內核配置156
8.2.3 外圍設備控制160
8.2.4 FPGA系統時鐘164
8.2.5 FPGA系統中斷分配164
8.3 開發板的使用165
8.3.1 開發板上接口介紹165
8.3.2 Pmod的使用166
8.3.3 操作模式173
8.3.4軟件包介紹175
8.4 實例178
8.5 小結181
第9章開發實例:溫度監測與顯示182
9.1 系統簡介182
9.2 系統硬件設計183
9.2.1 EM 內核設置183
9.2.2 Pmod外設介紹184
9.2.3 Pmod與開發板的硬件連接185
9.3 系統軟件實現186
9.3.1 軟件設計186
9.3.2 代碼實現187
9.3.3 系統代碼詳解191
9.4 調試與運行194
9.4.1 選擇FPGA映像194
9.4.2 編譯和運行代碼195
9.4.3 運行結果195
9.5 小結197
第10章ARC EM 可配置性198
10.1 可配置性優點198
10.2 基準模板199
10.3 配置模塊201
10.3.1 添加/刪除模塊201
10.3.2 配置模塊屬性203
10.3.3 與固定配置處理器比較203
10.4 可選模塊205
10.4.1 可選模塊簡介205
10.4.2 Cache實例206
10.5 軟硬件一致性208
10.5.1 什么是軟硬件一致性208
10.5.2 乘法器使用實例209
10.6 小結211
第11章APEX擴展212
11.1 APEX 綜述212
11.2 為何添加APEX擴展214
11.3 識別定制指令214
11.4 創建APEX擴展216
11.4.1APEX擴展命名216
11.4.2 配置擴展內容217
11.4.3 編輯選項219
11.4.4 編寫邏輯222
11.4.5 編寫測試代碼224
11.5 驗證APEX擴展226
11.6 使用APEX擴展228
11.7 小結230
附錄A常用輔助寄存器快速參考231
附錄BARC指令速查表258
附錄C術語及縮略語262
參考文獻264