《SiFive經典RISC-V FE310微控制器原理與實踐》是2020年電子工業出版社出版書籍,作者是陳宏銘。
基本介紹
- 中文名:SiFive經典RISC-V FE310微控制器原理與實踐
- 作者:陳宏銘
- 出版社:電子工業出版社
- 出版時間:2020年12月
- 頁數:336 頁
- 定價:128 元
- 開本:16 開
- ISBN:9787121402036
內容簡介,圖書目錄,
本書以讓讀者快速掌握FE310嵌入式微控制器為目的,由淺入深地帶領讀者進入RISC-Ⅴ的世界。本書共分為7章,系統地介紹了SiFive E系列32位RISC-Ⅴ微控制器的體系結構、SiFive E31核心、片記憶體儲系統、系統控制模組、外圍設備接口的特點與性能;還介紹了SiFive Freedom Studio集成開發環境,Freedom E-SDK驅動庫開發及SiFive Learn Inventor開發系統,開發系統連線外部紅外與超音波模組的拓展套用開發實例,有初步C語言基礎的讀者可輕鬆上手;還利用最後兩章輔以大量的例程,講解了FreeRTOS與RT-Thread等實時多任務作業系統的原理與套用。
第1章 RISC-Ⅴ的歷史和機遇 001
1.1 RISC-Ⅴ發明團隊與歷史 001
1.1.1 商業公司的指令集架構 004
1.1.2 RISC-Ⅴ指令集架構與其他指令集架構的不同點 006
1.1.3 RISC-Ⅴ發展史及其標誌性事件 007
1.2 RISC-Ⅴ基金會成長的歷史 008
1.2.1 RISC-Ⅴ基金會的成員介紹 009
1.2.2 RISC-Ⅴ基金會推動20個重點領域的技術 011
1.2.3 RISC-Ⅴ基金會標準制定過程及工作群組機制 012
1.2.4 RISC-Ⅴ國際協會的誕生 013
1.3 RISC-Ⅴ的生態系統 013
1.3.1 RISC-Ⅴ的開發板和生態系統 014
1.3.2 部分RISC-Ⅴ社區生態的支持廠商 018
1.3.3 晶片設計界的RISC-Ⅴ產品進展 021
1.4 SiFive研發團隊技術沿革 023
1.4.1 Rocket Chip SoC生成器 024
1.4.2 使用Chisel語言編寫Rocket Chip SoC生成器 025
1.4.3 Rocket標量處理器 026
1.4.4 SiFive強力推動RISC-Ⅴ生態發展 028
第2章 RISC-Ⅴ指令集架構介紹 031
2.1 引言 031
2.2 RISC-Ⅴ指令集架構特性 031
2.2.1 簡潔性 032
2.2.2 模組化 032
2.3 指令長度編碼和指令格式 034
2.3.1 指令長度編碼 034
2.3.2 指令格式 035
2.4 暫存器列表 036
2.4.1 通用暫存器 036
2.4.2 控制與狀態暫存器 037
2.4.3 程式計數器 038
2.5 地址空間與定址模式 038
2.5.1 地址空間 038
2.5.2 小端格式 039
2.5.3 定址模式 039
2.6 記憶體模型 039
2.7 特權模式 040
2.8 中斷和異常 041
2.8.1 中斷和異常概述 041
2.8.2 RISC-Ⅴ機器模式下的中斷架構 041
2.8.3 機器模式下中斷和異常的處理過程 042
2.9 調試規範 043
2.10 RISC-Ⅴ未來的擴展子集 044
2.10.1 B標準擴展:位操作 044
2.10.2 H特權架構擴展:支持管理程式(Hypervisor) 044
2.10.3 J標準擴展:動態翻譯語言 044
2.10.4 L標準擴展:十進制浮點 045
2.10.5 N標準擴展:用戶態中斷 045
2.10.6 P標準擴展:封裝的單指令多數據(Packed-SIMD)指令 045
2.10.7 Q標準擴展:四精度浮點 045
2.10.8 V標準擴展:基本矢量擴展 045
2.11 RISC-Ⅴ指令列表 045
2.11.1 I指令子集 046
2.11.2 M指令子集 051
2.11.3 A指令子集 052
2.11.4 F指令子集 054
2.11.5 D指令子集 055
2.11.6 C指令子集 056
第3章 SiFive FE310-G003微控制器 059
3.1 FE310-G003微控制器概述 060
3.1.1 E31 RISC-Ⅴ核心 061
3.1.2 中斷 061
3.1.3 片記憶體儲系統 061
3.1.4 始終上電(AON)模組 062
3.1.5 通用輸入與輸出 062
3.1.6 通用異步接收器/傳送器 062
3.1.7 硬體串列外設接口 062
3.1.8 脈衝寬度調製 062
3.1.9 I2C 062
3.1.10 調試支持 063
3.2 E31核心介紹 063
3.2.1 E31核心概述 063
3.2.2 中斷架構 068
3.2.3 核心本地中斷器(CLINT) 073
3.2.4 調試支持 074
3.3 E31 FE310-G003記憶體映射 079
3.4 啟動程式 081
3.4.1 復位向量 081
3.4.2 BootLoader 082
3.5 時鐘生成 083
3.5.1 時鐘生成概述 083
3.5.2 PRCI地址空間的使用 084
3.5.3 可校準可程式72MHz振盪器(HFROSC) 085
3.5.4 外接16MHz晶體振盪器(HFXOSC) 086
3.5.5 內置高頻PLL(HFPLL) 086
3.5.6 PLL輸出分頻器 088
3.5.7 內置可程式低頻環形振盪器(LFROSC) 089
3.5.8 備用低頻時鐘(LFALTCLK) 089
3.5.9 時鐘總結 090
3.6 電源模式 090
3.6.1 運行模式 090
3.6.2 等待模式 090
3.6.3 睡眠模式 091
3.7 平台級中斷控制器(PLIC) 091
3.7.1 記憶體映射 091
3.7.2 中斷源 092
3.7.3 中斷優先權 093
3.7.4 中斷未決位 093
3.7.5 中斷使能 094
3.7.6 優先權閾值 095
3.7.7 中斷聲明流程 095
3.7.8 中斷完成 096
3.8 一次性可程式存儲器(OTP)外設 096
3.8.1 記憶體映射 096
3.8.2 可程式I/O鎖定暫存器(otp_lock) 097
3.8.3 可程式I/O序列 097
3.8.4 讀序列控制暫存器(otp_rsctrl) 097
3.8.5 OTP編程警告 098
3.8.6 OTP編程過程 098
3.9 始終上電(AON)電源域 099
3.9.1 AON電源 100
3.9.2 AON時鐘 100
3.9.3 AON復位單元 100
3.9.4 上電復位電路 100
3.9.5 外部復位電路 100
3.9.6 復位原因 101
3.9.7 看門狗定時器(WDT) 101
3.9.8 實時時鐘(RTC) 101
3.9.9 備份暫存器 101
3.9.10 電源管理單元(PMU) 101
3.9.11 AON記憶體映射 101
3.10 看門狗定時器(WDT) 103
3.10.1 看門狗計數器(wdogcount) 104
3.10.2 看門狗時鐘選擇 104
3.10.3 看門狗配置暫存器(wdogcfg) 104
3.10.4 看門狗比較器0(wdogcmp0) 105
3.10.5 看門狗鍵值暫存器(wdogkey) 105
3.10.6 餵狗暫存器(wdogfeed) 105
3.10.7 看門狗配置 106
3.10.8 看門狗復位 106
3.10.9 看門狗中斷(wdogip0) 106
3.11 電源管理單元(PMU) 106
3.11.1 PMU概述 106
3.11.2 記憶體映射 107
3.11.3 PMU鍵值暫存器(pmukey) 108
3.11.4 PMU編程 108
3.11.5 初始化睡眠序列暫存器(pmusleep) 109
3.11.6 喚醒信號調理 109
3.11.7 PMU中斷使能暫存器(pmuie)和喚醒原因暫存器(pmucause) 110
3.12 實時時鐘(RTC) 111
3.12.1 RTC計數器(rtccounthi/rtccountlo) 111
3.12.2 RTC配置暫存器(rtccfg) 112
3.12.3 RTC比較器(rtccmp) 112
3.13 通用輸入輸出控制器(GPIO) 112
3.13.1 FE310-G003微控制器中的GPIO實例 114
3.13.2 記憶體映射 114
3.13.3 輸入/輸出值 114
3.13.4 中斷 115
3.13.5 內部上拉 115
3.13.6 驅動強度 115
3.13.7 輸出反轉 115
3.13.8 硬體I/O功能(IOF) 115
3.14 通用異步收發機(UART) 116
3.14.1 UART概述 117
3.14.2 FE310-G003微控制器中的UART實例 117
3.14.3 記憶體映射 117
3.14.4 傳送數據暫存器(txdata) 118
3.14.5 接收數據暫存器(rxdata) 118
3.14.6 傳送控制暫存器(txctrl) 118
3.14.7 接收控制暫存器(rxctrl) 119
3.14.8 中斷暫存器(ip和ie) 120
3.14.9 波特率除數暫存器(div) 120
3.15 串列外圍接口(SPI) 121
3.15.1 SPI概述 122
3.15.2 FE310-G003微控制器中的SPI實例 122
3.15.3 SPI記憶體映射 123
3.15.4 串列時鐘除數暫存器(sckdiv) 124
3.15.5 串列時鐘模式暫存器(sckmode) 124
3.15.6 晶片選擇ID暫存器(csid) 125
3.15.7 晶片選擇默認暫存器(csdef) 125
3.15.8 晶片選擇模式暫存器(csmode) 125
3.15.9 延遲控制暫存器(delay0和delay1) 126
3.15.10 幀格式暫存器(fmt) 127
3.15.11 傳送數據暫存器(txdata) 128
3.15.12 接收數據暫存器(rxdata) 128
3.15.13 傳送水印暫存器(txmark) 129
3.15.14 接收水印暫存器(rxmark) 129
3.15.15 SPI中斷暫存器(ie和ip) 129
3.15.16 SPI快閃記憶體接口控制暫存器(fctrl) 130
3.15.17 SPI快閃記憶體指令格式暫存器(ffmt) 131
3.16 脈寬調製器(PWM) 131
3.16.1 PWM概述 131
3.16.2 FE310-G003微控制器中的PWM實例 132
3.16.3 PWM記憶體映射 132
3.16.4 PWM計數器(pwmcount) 133
3.16.5 PWM配置暫存器(pwmcfg) 133
3.16.6 刻度化PWM計數器(pwms) 135
3.16.7 PWM比較器(pwmcmp0~pwmcmp3) 135
3.16.8 去毛刺和黏性電路 136
3.16.9 產生左向或右向的PWM波形 137
3.16.10 產生中心對齊(相位校正)PWM波形 137
3.16.11 使用組合生成任意的PWM波形 138
3.16.12 生成單次波形 138
3.16.13 PWM中斷 139
3.17 積體電路(I2C)主設備接口 139
3.18 調試接口 139
3.18.1 JTAG TAPC狀態機 139
3.18.2 復位JTAG邏輯 139
3.18.3 JTAG計時器 140
3.18.4 JTAG標準說明 140
3.18.5 JTAG調試命令 140
第4章 使用Freedom E-SDK進行軟體開發 141
4.1 SiFive Freedom Studio集成開發環境安裝與介紹 141
4.1.1 Freedom Studio簡介與安裝 141
4.1.2 啟動Freedom Studio 144
4.1.3 創建sifive-welcome項目 145
4.1.4 配置sifive-welcome項目 146
4.1.5 編譯sifive-welcome項目 148
4.1.6 運行sifive-welcome項目 149
4.1.7 調試程式 154