有 1 項符合
RISC-V架構與嵌入式開發快速入門
的圖書
|
|
| RISC-V架構與嵌入式開發快速入門
作者:胡振波
出版社:人民郵電出版社
出版日期:2018-11-01
語言:簡體中文 規格:平裝 / 352頁 / 16k/ 19 x 26 cm / 普通級/ 1-1
|
圖書介紹 - 資料來源:博客來 目前評分: 評分:
圖書名稱:RISC-V架構與嵌入式開發快速入門 內容簡介
本書是一本介紹RISC-V架構嵌入式開發的入門書籍,以通俗的語言系統介紹了嵌入式開發的基礎知識和RISC-V架構的內容,力求説明讀者快速掌握RISC-V架構的嵌入式開發技術。
本書共分為兩部分。第一部分為第1~14章,基本涵蓋了使用RISC-V架構進行嵌入式開發所需的所有關鍵知識。第二部分為附錄部分,詳細介紹了RISC-V指令集架構,輔以作者加入的背景知識解讀和注解,以便於讀者理解。
作者介紹
胡振波,本科畢業于上海交通大學電子工程系,碩士畢業于上海交通大學微電子學院。擁有多年ASIC和CPU設計與驗證經驗,曾在Marvell公司任 ARM架構CPU設計高級工程師,在Synopsys公司任研發經理,在比特大陸公司任IC設計總監,在武漢聚芯微電子公司任架構師,現致力於RISC- V架構在國內的傳播和發展。他開發並開源了蜂鳥E203超低功耗RISC-V處理器內核。
目錄
第 1章 進入32位時代,誰能成為下一個8051 1
1.1 磨刀不誤砍柴工—CPU基礎知識介紹 1
1.1.1 ISA—CPU的靈魂 2
1.1.2 CISC與RISC 3
1.1.3 32位與64位架構 4
1.1.4 ISA眾生相 5
1.1.5 CPU的領域之分 9
1.1.6 8位時代的傳奇“前輩”—8051 10
1.1.7 IoT的崛起—32位時代的到來 11
1.2 無敵是多麼寂寞—ARM統治著的世界 11
1.2.1 獨樂樂與眾樂樂—ARM公司的盈利模式 12
1.2.2 小個子有大力量—無處不在的Cortex-M系列 14
1.2.3 移動王者—Cortex-A系列在手持設備領域的巨大成功 16
1.2.4 進擊的巨人—ARM進軍PC與伺服器領域的雄心 18
1.2.5 遊戲終結者之ARM 19
1.3 東邊日出西邊雨,道是無晴卻有晴—RISC-V登場 19
1.4 RISC-V和其他開放架構有何不同 21
1.4.1 “平民英雄”—OpenRISC 22
1.4.2 “豪門顯貴”—SPARC 22
1.4.3 “名校優生”—RISC-V 23
1.5 結語:進入32位時代,誰能成為深嵌入式領域的下一個8051? 23
第 2章 開源蜂鳥E203超低功耗RISC-V Core與SoC 25
2.1 亂花漸欲迷人眼 25
2.2 與眾不同的蜂鳥E203處理器 25
2.3 蜂鳥雖小,五臟俱全—蜂鳥E203簡介 26
2.4 蜂鳥E203性能指標 27
2.5 蜂鳥E203配套SoC 28
第3章 大道至簡—RISC-V架構之魂 29
3.1 簡單就是美—RISC-V架構的設計哲學 29
3.1.1 無病一身輕—架構的篇幅 30
3.1.2 能屈能伸—模組化的指令集 31
3.1.3 濃縮的都是精華—指令的數量 31
3.2 RISC-V指令集架構簡介 32
3.2.1 模組化的指令子集 32
3.2.2 可配置的通用寄存器組 33
3.2.3 規整的指令編碼 33
3.2.4 簡潔的記憶體訪問指令 34
3.2.5 高效的分支跳轉指令 35
3.2.6 簡潔的副程式調用 36
3.2.7 無條件碼執行 36
3.2.8 無分支延遲槽 37
3.2.9 零開銷硬體迴圈 37
3.2.10 簡潔的運算指令 38
3.2.11 優雅的壓縮指令子集 38
3.2.12 特權模式 39
3.2.13 CSR寄存器 40
3.2.14 中斷和異常 40
3.2.15 向量指令子集 40
3.2.16 自定制指令擴展 40
3.2.17 總結與比較 41
第4章 RISC-V架構的中斷和異常 43
4.1 中斷和異常概述 43
4.1.1 中斷概述 43
4.1.2 異常概述 44
4.1.3 廣義上的異常 44
4.2 RISC-V架構異常處理機制 46
4.2.1 進入異常 47
4.2.2 退出異常 50
4.2.3 異常服務程式 50
4.3 RISC-V架構中斷定義 51
4.3.1 中斷類型 51
4.3.2 中斷遮罩 54
4.3.3 中斷等待 55
4.3.4 中斷優先順序與仲裁 55
4.3.5 中斷嵌套 56
4.3.6 總結比較 57
4.4 RISC-V架構異常相關CSR寄存器 57
4.5 蜂鳥E203的中斷和異常實現 58
第5章 開源蜂鳥E203 MCU SoC總體介紹 59
5.1 Freedom E310 SoC簡介 59
5.2 蜂鳥E203 MCU SoC簡介 60
5.3 蜂鳥E203 MCU SoC框圖 60
5.4 蜂鳥E203 MCU SoC存儲資源 61
5.4.1 片上存儲資源 61
5.4.2 片外Flash存儲資源 61
5.5 蜂鳥E203 MCU SoC外設資源 62
5.6 蜂鳥E203 MCU SoC地址分配 62
5.7 蜂鳥E203 MCU SoC時鐘域劃分 63
5.8 蜂鳥E203 MCU SoC電源域劃分 64
5.9 蜂鳥E203 MCU SoC低功耗模式 64
5.10 蜂鳥E203 MCU SoC的全域復位 65
5.11 蜂鳥E203 MCU SoC的上電流程控制 66
5.12 蜂鳥E203 MCU SoC晶片引腳表 67
5.13 蜂鳥E203 MCU SoC的GPIO引腳分配 68
5.14 蜂鳥E203 MCU SoC的中斷處理 70
5.14.1 蜂鳥E203處理器核的異常和中斷處理 70
5.14.2 蜂鳥E203處理器的中斷介面 71
5.14.3 CLINT模組生成計時器中斷和軟體插斷 72
5.14.4 PLIC管理多個外部中斷 73
第6章 開源蜂鳥E203 MCU SoC外設介紹 77
6.1 蜂鳥E203 MCU SoC外設總述 77
6.2 PLIC 78
6.3 CLINT 78
6.4 LCLKGEN 78
6.4.1 LCLKGEN簡介 78
6.4.2 LCLKGEN寄存器列表 78
6.5 HCLKGEN 79
6.5.1 HCLKGEN簡介 79
6.5.2 HCLKGEN寄存器列表 79
6.6 GPIO 79
6.6.1 GPIO特性 79
6.6.2 GPIO寄存器列表 80
6.6.3 I/O結構和IOF模式 80
6.6.4 SoC各外設複用GPIO引腳 83
6.6.5 GPIO中斷 83
6.6.6 GPIO_VALUE寄存器 84
6.6.7 GPIO_INPUT_EN寄存器 84
6.6.8 GPIO_OUTPUT_EN寄存器 85
6.6.9 GPIO_PORT寄存器 85
6.6.10 GPIO_PUE寄存器 85
6.6.11 GPIO_DS寄存器 85
6.6.12 GPIO_OUTPUT_XOR寄存器 85
6.6.13 GPIO_RISE_IE、GPIO_RISE_IP等寄存器 85
6.7 SPI 86
6.7.1 SPI背景知識簡介 86
6.7.2 SPI特性 88
6.7.3 SPI寄存器列表 89
6.7.4 SPI介面資料線 90
6.7.5 通過SPI_SCKDIV寄存器配置SCK時鐘頻率 90
6.7.6 通過SPI_SCKMODE寄存器配置SCK的極性與相位 90
6.7.7 通過SPI_CSID寄存器配置SPI使能信號 92
6.7.8 通過SPI_CSDEF寄存器配置使能信號的空閒值 92
6.7.9 通過SPI_CSMODE寄存器配置使能信號的行為 92
6.7.10 通過SPI_DELAY0和SPI_DELAY1寄存器配置使能信號的行為 93
6.7.11 通過SPI_FCTRL寄存器使能QSPI0的Flash XiP模式 94
6.7.12 通過SPI_FFMT寄存器控制QSPI0讀取外部Flash 95
6.7.13 通過SPI_FMT寄存器配置傳輸參數 97
6.7.14 通過SPI_TXDATA寄存器發送資料 97
6.7.15 通過SPI_RXDATA寄存器接收資料 98
6.7.16 通過SPI_TXMARK寄存器配置發送中斷閾值 100
6.7.17 通過SPI_RXMARK寄存器配置接收中斷閾值 100
6.7.18 通過SPI_IE和SPI_IP寄存器控制中斷 101
6.8 I2C 102
6.8.1 I2C背景知識簡介 102
6.8.2 I2C特性 103
6.8.3 I2C寄存器列表 103
6.8.4 I2C介面資料線 104
6.8.5 通過I2C_PRERlo和I2C_PRERhi寄存器配置SCL時鐘頻率 104
6.8.6 通過I2C_CTR寄存器配置功能和中斷使能 104
6.8.7 I2C模組產生中斷 105
6.8.8 通過I2C_TXR和I2C_RXR寄存器發送和接收資料 105
6.8.9 通過I2C_CR和I2C_SR寄存器發起命令和查看狀態 106
6.8.10 初始化I2C模組的序列 107
6.8.11 通過I2C模組向外部從設備寫資料的常用序列 107
6.8.12 通過I2C模組從外部從設備讀數據的常用序列 108
6.9 UART 109
6.9.1 UART背景知識簡介 109
6.9.2 UART特性 110
6.9.3 UART寄存器列表 110
6.9.4 UART介面資料線 111
6.9.5 通過UART_TXDATA寄存器發送資料 111
6.9.6 通過UART_RXDATA寄存器接收資料 112
6.9.7 通過UART_TXCTRL寄存器進行發送控制 113
6.9.8 通過UART_RXCTRL寄存器進行接收控制 113
6.9.9 通過UART_IE和UART_IP寄存器控制中斷 114
6.9.10 通過UART_DIV寄存器配置串列傳輸速率 115
6.10 PWM 116
6.10.1 PWM背景知識簡介 116
6.10.2 PWM特性和結構圖 116
6.10.3 PWM寄存器列表 117
6.10.4 通過PWMCFG寄存器進行配置 118
6.10.5 計數器計數值PWMCOUNT寄存器和PWM週期 119
6.10.6 計數器比較值PWMS寄存器 120
6.10.7 PWM介面資料線 121
6.10.8 產生左對齊或者右對齊的脈衝信號 121
6.10.9 產生居中對齊的脈衝信號 122
6.10.10 配置pwmcmpgang結連產生任意形狀的脈衝信號 124
6.10.11 配置pwmdeglitch防止輸出毛刺 124
6.10.12 PWM產生中斷 124
6.11 WDT 125
6.11.1 WDT背景知識簡介 125
6.11.2 WDT特性和結構圖 125
6.11.3 WDT寄存器列表 126
6.11.4 通過WDOGCFG寄存器進行配置 127
6.11.5 計數器計數值WDOGCOUNT寄存器 128
6.11.6 通過WDOGKEY寄存器解鎖 128
6.11.7 通過WDOGFEED寄存器喂狗 129
6.11.8 計數器比較值WDOGS寄存器 129
6.11.9 通過WDOGCMP寄存器配置閾值 130
6.11.10 WDT產生全域復位 130
6.11.11 WDT產生中斷 130
6.12 RTC 131
6.12.1 RTC背景知識簡介 131
6.12.2 RTC特性和結構圖 131
6.12.3 RTC寄存器列表 131
6.12.4 通過RTCCFG寄存器進行配置 132
6.12.5 計數器計數值RTCHI/RTCLO寄存器 133
6.12.6 計數器比較值RTCS寄存器 133
6.12.7 通過RTCCMP寄存器配置閾值 134
6.12.8 RTC產生中斷 134
6.13 PMU 134
6.13.1 PMU背景知識簡介 134
6.13.2 PMU特性和結構圖 135
6.13.3 PMU寄存器列表 136
6.13.4 通過PMUKEY寄存器解鎖 136
6.13.5 通過PMUSLEEP寄存器進入休眠模式 137
6.13.6 通過PMUSLEEPI寄存器配置休眠指令序列 137
6.13.7 通過PMUBACKUP寄存器保存關鍵資訊 139
6.13.8 通過PMUIE寄存器配置喚醒條件 139
6.13.9 通過PMUWAKEUPI寄存器配置喚醒指令序列 140
6.13.10 通過PMUCAUSE寄存器查看喚醒原因 141
第7章 開源蜂鳥E203 MCU開發板與調試器 143
7.1 蜂鳥E203 MCU開發板 143
7.2 蜂鳥E203 JTAG調試器 143
第8章 編譯過程簡介 145
8.1 GCC工具鏈介紹 145
8.1.1 GCC工具鏈概述 145
8.1.2 Binutils 146
8.1.3 C運行庫 147
8.1.4 GCC命令列選項 148
8.2 準備工作 148
8.2.1 Linux安裝 148
8.2.2 準備Hello World程式 148
8.3 編譯過程 149
8.3.1 預處理 149
8.3.2 編譯 150
8.3.3 彙編 150
8.3.4 連結 151
8.3.5 一步到位的編譯 153
8.4 分析ELF檔 153
8.4.1 ELF檔介紹 153
8.4.2 ELF文件的段 154
8.4.3 查看ELF文件 154
8.4.4 反彙編 155
8.5 嵌入式系統編譯的特殊性 156
8.6 本章小結 156
第9章 嵌入式開發特點與RISC-V GCC工具鏈 158
9.1 嵌入式系統開發特點 158
9.1.1 交叉編譯和遠端調試 158
9.1.2 移植newlib或newlib-nano作為C運行庫 159
9.1.3 嵌入式引導程式和中斷異常處理 160
9.1.4 嵌入式系統連結腳本 160
9.1.5 減少代碼體積 161
9.1.6 支援printf函數 161
9.1.7 提供板級支援包 162
9.2 RISC-V GCC工具鏈簡介 162
9.2.1 RISC-V GCC工具鏈種類 162
9.2.2 riscv-none-embed工具鏈下載 163
9.2.3 RISC-V GCC工具鏈的(–march=)和(–mabi=)選項 164
9.2.4 RISC-V GCC工具鏈的(–mcmodel=)選項 168
9.2.5 RISC-V GCC工具鏈的其他選項 169
9.2.6 RISC-V GCC工具鏈的預定義宏 170
9.2.7 RISC-V GCC工具鏈使用實例 170
第 10章 RISC-V組合語言程式設計 171
10.1 組合語言簡介 171
10.2 RISC-V組合語言程式概述 172
10.3 RISC-V彙編指令 173
10.4 RISC-V組合語言程式偽操作 173
10.5 RISC-V組合語言程式示例 177
10.5.1 定義標籤 177
10.5.2 定義宏 178
10.5.3 定義常數 178
10.5.4 立即數賦值 178
10.5.5 標籤地址賦值 179
10.5.6 設置浮點舍入模式 179
10.5.7 完整實例 180
10.6 在C/C++程式中嵌入彙編 181
10.6.1 GCC內聯彙編簡述 181
10.6.2 GCC內聯彙編“輸出操作數”和“輸入運算元”部分 182
10.6.3 GCC內聯彙編“可能影響的寄存器或記憶體”部分 183
10.6.4 GCC內聯彙編參考實例一 184
10.6.5 GCC內聯彙編參考實例二 185
10.6.6 小結 186
10.7 在彙編中調用C/C++函數 186
10.8 本章小結 187
第 11章 基於HBird-E-SDK平臺的軟體發展與運行 188
11.1 HBird-E-SDK平臺簡介 188
11.2 HBird-E-SDK平臺代碼結構 189
11.3 HBird-E-SDK板級支持包解析 190
11.3.1 移植了Newlib樁函數 190
11.3.2 支援了printf函數 192
11.3.3 提供系統連結腳本 193
11.3.4 系統啟動引導程式 198
11.3.5 系統異常和中斷處理 202
11.3.6 減少代碼體積 206
11.4 使用HBird-E-SDK開發和編譯器 208
11.4.1 在HBird-E-SDK環境中安裝工具鏈 208
11.4.2 在HBird-E-SDK環境中開發程式 210
11.4.3 編譯使得程式從Flash直接運行 211
11.4.4 編譯使得程式從ITCM中運行 212
11.4.5 編譯使得程式從Flash上載至ITCM中運行 213
11.5 使用HBird-E-SDK下載程式 213
11.5.1 JTAG調試器與MCU原型開發板的連接 213
11.5.2 設置JTAG調試器在Linux系統中的USB許可權 214
11.5.3 將程式下載至MCU原型開發板 216
11.6 在MCU原型開發板上運行程式 216
11.6.1 程式從Flash直接運行 217
11.6.2 程式從ITCM中運行 217
11.6.3 程式從Flash上載至ITCM中運行 218
11.7 使用GDB遠端偵錯工具 218
11.7.1 調試器工作原理 218
11.7.2 GDB常用操作示例 220
11.7.3 使用GDB調試Hello World示例 221
第 12章 開源蜂鳥E203 MCU的更多示例程式 226
12.1 Dhrystone示例程式 226
12.1.1 Dhrystone示例程式功能簡介 226
12.1.2 Dhrystone示例程式碼結構 229
12.1.3 運行Dhrystone 229
12.2 CoreMark示例程式 231
12.2.1 CoreMark示例程式功能簡介 231
12.2.2 CoreMark示例程式碼結構 232
12.2.3 運行CoreMark 233
12.3 Demo_IASM示例程式 234
12.3.1 Demo_IASM示例程式功能簡介 234
12.3.2 Demo_IASM示例程式碼結構 234
12.3.3 Demo_IASM示例程式源碼解析 235
12.3.4 運行Demo_IASM 235
12.4 Demo_GPIO示例程式 236
12.4.1 Demo_GPIO示例程式功能簡介 236
12.4.2 Demo_GPIO示例程式碼結構 237
12.4.3 Demo_GPIO示例程式源碼分析 237
12.4.4 運行Demo_GPIO 243
12.5 中斷嵌套 244
第 13章 Windows IDE集成開發調試環境 245
13.1 MCU Eclipse IDE簡介與安裝 245
13.1.1 MCU Eclipse IDE簡介 245
13.1.2 RISC-V MCU Eclipse下載 246
13.1.3 RISC-V MCU Eclipse安裝 247
13.2 啟動Eclipse 248
13.3 創建Hello World項目 249
13.4 配置Hello World專案 253
13.4.1 配置工具鏈路徑 253
13.4.2 配置專案的編譯和連結選項 256
13.4.3 配置專案的BSP 262
13.4.4 配置專案的包含路徑和檔 265
13.5 編譯Hello World項目 267
13.6 運行Hello World項目 269
13.6.1 安裝JTAG調試器在Windows系統中的USB驅動 269
13.6.2 通過Eclipse下載程式至MCU開發板 270
13.6.3 在MCU開發板上運行程式 274
13.7 調試Hello World項目 276
13.8 拓展一:基於MCU Eclipse運行調試demo_gpio示例 280
13.9 拓展二:基於MCU Eclipse運行調試dhrystone示例 281
第 14章 開源蜂鳥E203 MCU開發板移植RTOS 283
14.1 RTOS簡述 283
14.2 常用即時操作系統概述 284
14.3 FreeRTOS簡介 285
14.4 蜂鳥E203 MCU移植RTOS 286
附錄A RISC-V架構指令集介紹 287
A.1 RV32GC架構概述 287
A.2 RV32E架構概述 288
A.3 蜂鳥E203支援的指令清單 288
A.4 寄存器組 288
A.4.1 通用寄存器組 289
A.4.2 CSR寄存器 290
A.5 指令PC 290
A.6 定址空間劃分 290
A.7 大端格式或小端格式 290
A.8 工作模式 290
A.9 Hart概念 291
A.10 重定模式 291
A.11 中斷和異常 292
A.12 記憶體位址管理 292
A.13 記憶體模型 292
A.14 指令類型 293
A.14.1 RV32IMAFDC指令清單 293
A.14.2 基本整數指令(RV32I) 293
A.14.3 整數乘法和除法指令(RV32M指令子集) 302
A.14.4 浮點指令(RV32F,RV32D指令子集) 304
A.14.5 記憶體原子操作指令(RV32A指令子集) 315
A.14.6 16位元壓縮指令(RV32C指令子集) 318
A.15 虛擬指令 320
A.16 指令編碼 320
附錄B RISC-V架構CSR寄存器介紹 321
B.1 蜂鳥E203支持的CSR寄存器列表 321
B.2 RISC-V標準CSR 322
B.2.1 misa 322
B.2.2 mvendorid 323
B.2.3 marchid 323
B.2.4 mimpid 323
B.2.5 mhartid 324
B.2.6 fflags 324
B.2.7 frm 324
B.2.8 fcsr 324
B.2.9 mstatus 324
B.2.10 mtvec 326
B.2.11 mepc 326
B.2.12 mcause 327
B.2.13 mtval (mbadaddr) 327
B.2.14 mie 328
B.2.15 mip 328
B.2.16 mscratch 328
B.2.17 mcycle和mcycleh 329
B.2.18 minstret和minstreth 329
B.2.19 mtime、mtimecmp和msip 329
B.3 蜂鳥E203自訂CSR 330mcounterstop 330
附錄C RISC-V架構的PLIC介紹 331
C.1 概述 331
C.2 PLIC中斷目標 332PLIC中斷目標之閾值 333
C.3 PLIC中斷源 333
C.3.1 PLIC中斷源之閘口(Gateway)和IP 334
C.3.2 PLIC中斷源之編號(ID) 334
C.3.3 PLIC中斷源之優先順序(Priority) 334
C.3.4 PLIC中斷源之中斷使能(Enable) 334
C.4 PLIC中斷處理機制 335
C.4.1 PLIC中斷通知機制(Notification) 335
C.4.2 PLIC中斷回應機制(Claim) 335
C.4.3 PLIC中斷完成機制(Completion) 336
C.4.4 PLIC中斷完整流程 336
C.5 PLIC寄存器總結 337
C.6 總結與比較 339
附錄D 記憶體模型背景介紹 340
D.1 為何要有記憶體模型的概念 340
D.2 記憶體模型定義了什麼 341
D.2.1 按序一致性模型 341
D.2.2 鬆散一致性模型 342
D.2.3 釋放一致性模型 342
D.2.4 記憶體模型總結 342
D.3 記憶體模型應用實例 343
D.4 RISC-V架構的記憶體模型 344
附錄E 記憶體原子操作指令背景介紹 345
E.1 什麼是“上鎖”問題 345
E.2 通過原子操作解決“上鎖”問題 346
E.3 通過互斥操作解決“上鎖”問題 346
E.4 RISC-V架構的相關指令 348
附錄F RISC-V指令編碼清單 349
F.1 RV32I指令編碼 349
F.2 RV32M指令編碼 350
F.3 RV32A指令編碼 350
F.4 RV32F指令編碼 350
F.5 RV32D指令編碼 351
F.6 RVC指令編碼 351
附錄G RISC-V虛擬指令列表 353
詳細資料
- ISBN:9787115494139
- 規格:平裝 / 352頁 / 16k / 19 x 26 cm / 普通級 / 1-1
- 出版地:大陸
|
|
|
| 66折: $ 693 | | 作者:麗.塞爾斯 出版社:木馬文化事業有限公司 出版日期:2021-07-21 66折: $ 238 | | 作者:凱蒂.哈德森 出版社:東雨文化 出版日期:2021-06-08 66折: $ 805 | | 作者:松丘光 出版社:小熊出版社 出版日期:2023-09-20 66折: $ 436 | |
|
| 作者:Tji 出版社:台灣角川股份有限公司 出版日期:2024-11-21 $ 700 | | 作者:劍康之 出版社:台灣角川股份有限公司 出版日期:2024-11-21 $ 111 | | 作者:金倫廷 出版社:蘋果屋 出版日期:2018-12-07 $ 337 | | 作者:張忠謀 出版社:遠見天下文化出版股份有限公司 出版日期:2024-11-29 $ 869 | |
|
| 作者:李曉萍.墨刻編輯部 出版社:墨刻出版 出版日期:2024-11-14 $ 336 | | 作者:蔡榮根 出版社:天下文化 出版日期:2024-10-30 $ 355 | | 作者:青山剛昌 出版社:青文出版社股份有限公司 出版日期:2024-11-14 $ 157 | | 作者:劉旭恭 出版社:水滴文化 出版日期:2024-10-31 $ 380 | |
|
|
|
|