內容介紹 | |
開本:128開 紙張:膠版紙 包裝:平裝-膠訂 是否套裝:否 國際標準書號ISBN:9787115569493 作者:胡振波 出版社:人民郵電出版社 出版時間:2021年09月 
" 編輯推薦 1.《手把手教你設計CPU——RISC-V處理器篇》延續篇,配套新蜂鳥E203開源項目,加入更多新內容。
2.書中含有大量動手實踐示例程序,從嵌入式開發與工程實踐的角度,對如何使用E203 MCU進行詳細介紹。
3.知識體繫完整,分為上下兩冊,涵蓋RISC-V處理器軟硬件開發的全流程。
4.中國工程院院士倪光南、芯原股份董事長戴偉民為本書作序推薦。
內容簡介 本書通過開源蜂鳥E203處理器繫統地介紹了RISC-V處理器的嵌入式軟件開發方法。全書共3個部分18章,不但給出嵌入式軟件開發的全流程,而且介紹了蜂鳥E203處理器的具體使用方法,通過提供大量的實戰項目,幫助讀者做到理論與實踐相結合。
本書主要面向嵌入式軟件開發工程師,以及對RISC-V感興趣的初學者和技術愛好者。
作者簡介 胡振波,擁有上海交通大學電子工程繫學士學位和微電子學碩士學位。國內RISC-V社區活躍的貢獻者,具有超過10處理器研發經驗,在Marvell和Synopsys等企業負責過多款高性能和低能耗處理器研發工作。2018年,創辦了RISC-V處理器IP和芯片解決方案公司-----芯來科技。 目錄 第 1章開源蜂鳥E203 MCU總體介紹1
1.1蜂鳥E203 MCU的繫統結構和特性1
1.2蜂鳥E203 MCU的存儲資源2
1.2.1片上存儲資源2
1.2.2片外Flash存儲資源2
1.3蜂鳥E203 MCU的外設資源3
1.4蜂鳥E203 MCU的地址分配3
第 1章開源蜂鳥E203 MCU總體介紹1
1.1蜂鳥E203 MCU的繫統結構和特性1
1.2蜂鳥E203 MCU的存儲資源2
1.2.1片上存儲資源2
1.2.2片外Flash存儲資源2
1.3蜂鳥E203 MCU的外設資源3
1.4蜂鳥E203 MCU的地址分配3
1.5蜂鳥E203 MCU的時鐘域劃分4
1.6蜂鳥E203 MCU的電源域劃分5
1.7蜂鳥E203 MCU的低功耗模式5
1.8蜂鳥E203 MCU的全局復位6
1.9蜂鳥E203 MCU的上電流程控制7
1.10蜂鳥E203 MCU的頂層引腳7
1.11蜂鳥E203 MCU的GPIO復用功能8
1.12蜂鳥E203 MCU的中斷處理9
1.12.1蜂鳥E203處理器核的異常和中斷處理9
1.12.2蜂鳥E203處理器核的中斷接口11
1.12.3CLINT模塊生成計時器中斷和軟件中斷12
1.12.4PLIC管理多個外部中斷13
第 2章開源蜂鳥E203 MCU的外設17
2.1蜂鳥E203 MCU的外設概述17
2.2PLIC17
2.3CLINT18
2.4LCLKGEN18
2.4.1LCLKGEN簡介18
2.4.2LCLKGEN的寄存器18
2.5HCLKGEN18
2.5.1HCLKGEN簡介18
2.5.2HCLKGEN的寄存器19
2.6GPIO19
2.6.1GPIO的功能19
2.6.2GPIO的寄存器19
2.6.3I/O結構和IOF模式20
2.6.4MCU各外設復用GPIO引腳20
2.6.5GPIO中斷21
2.6.6GPIO_PADDIR寄存器21
2.6.7GPIO_PADIN寄存器21
2.6.8GPIO_PADOUT寄存器21
2.6.9GPIO_INTTEN寄存器22
2.6.10GPIO_INTTYPE0和GPIO_INTTYPE1寄存器22
2.6.11GPIO_INTSTATUS寄存器22
2.6.12GPIO_IOFCFG寄存器22
2.7SPI22
2.7.1SPI的背景知識22
2.7.2SPI的特性25
2.7.3SPI的寄存器25
2.7.4SPI數據線26
2.7.5QSPI0的寄存器配置26
2.7.6QSPI1和QSPI2的寄存器配置38
2.8I2C41
2.8.1I2C的背景知識41
2.8.2I2C的功能42
2.8.3I2C的寄存器43
2.8.4I2C的接口數據線43
2.8.5I2C_PRE寄存器43
2.8.6I2C_CTR寄存器44
2.8.7I2C_TX寄存器和I2C_RX寄存器44
2.8.8I2C_CMD寄存器45
2.8.9I2C_STATUS寄存器45
2.8.10I2C的常用操作序列46
2.9UART48
2.9.1UART的背景知識48
2.9.2UART的特性和功能49
2.9.3UART的寄存器49
2.9.4UART的接口數據線50
2.9.5UART_DLL寄存器和UART_DLM寄存器50
2.9.6UART_RBR寄存器51
2.9.7UART_THR寄存器51
2.9.8UART_FCR寄存器52
2.9.9UART_LCR寄存器52
2.9.10UART_LSR寄存器53
2.9.11UART_IER寄存器53
2.9.12UART_IIR寄存器54
2.10PWM54
2.10.1PWM的背景知識54
2.10.2PWM的功能和特性54
2.10.3PWM的寄存器55
2.10.4PWM模塊的輸出信號55
2.10.5TIMx_CMD(x=0,1,2,3)寄存器55
2.10.6TIMx_CFG(x=0,1,2,3)寄存器56
2.10.7TIMx_TH(x=0,1,2,3)寄存器57
2.10.8TIMx_CH0_TH(x=0,1,2,3)寄存器57
2.10.9TIMx_CH1_TH(x=0,1,2,3)寄存器58
2.10.10TIMx_CH2_TH(x=0,1,2,3)寄存器58
2.10.11TIMx_CH3_TH(x=0,1,2,3)寄存器59
2.10.12TIMx_CNT(x=0,1,2,3)寄存器60
2.10.13PWM_ENT_CFG寄存器60
2.10.14PWM_TIMER_EN寄存器61
2.11WDT62
2.11.1WDT的背景知識62
2.11.2WDT的特性、功能和結構62
2.11.3WDT的寄存器63
2.11.4通過WDOGCFG寄存器對WDT進行配置63
2.11.5WDT的計數器計數值寄存器—WDOGCOUNT64
2.11.6通過WDOGKEY寄存器解鎖65
2.11.7通過WDOGFEED寄存器“喂狗”65
2.11.8WDT的計數器比較值寄存器—WDOGS66
2.11.9通過WDOGCMP寄存器配置閾值66
2.11.10WDT產生全局復位66
2.11.11WDT產生中斷67
2.12RTC67
2.12.1RTC的背景知識67
2.12.2RTC的特性、功能和結構67
2.12.3RTC的寄存器68
2.12.4通過RTCCFG寄存器進行配置68
2.12.5RTC的計數器計數值寄存器—RTCHI/RTCLO69
2.12.6RTC的計數器比較值寄存器—RTCS70
2.12.7通過RTCCMP寄存器配置閾值70
2.12.8RTC產生中斷70
2.13PMU70
2.13.1PMU的背景知識70
2.13.2PMU的特性、功能和結構71
2.13.3PMU的寄存器72
2.13.4通過PMUKEY寄存器解鎖72
2.13.5通過PMUSLEEP寄存器進入休眠模式73
2.13.6通過PMUSLEEPI0~PMUSLEEPI7寄存器配置休眠指令序列73
2.13.7通過PMUBACKUP繫列寄存器保存關鍵信息75
2.13.8通過PMUIE寄存器設置喚醒條件75
2.13.9通過PMUWAKEUPI0~PMUWAKEUPI7寄存器配置喚醒指令序列76
2.13.10通過PMUCAUSE寄存器查看喚醒原因77
第3章開源蜂鳥E203 MCU硬件開發平臺78
3.1Nuclei FPGA開發板78
3.1.1Nuclei DDR200T開發板簡介79
3.1.2Nuclei DDR200T開發板的硬件功能模塊80
3.1.3蜂鳥E203 MCU的功能引腳分配88
3.2蜂鳥JTAG調試器89
3.3總結90
第4章軟件編譯過程91
4.1GCC工具鏈91
4.1.1GCC工具鏈簡介91
4.1.2binutils92
4.1.3C運行庫93
4.1.4GCC命令行選項94
4.2準備工作94
4.2.1安裝Linux94
4.2.2準備HelloWorld程序94
4.3編譯過程95
4.3.1預處理95
4.3.2編譯96
4.3.3彙編96
4.3.4鏈接97
4.3.5一步到位的編譯99
4.4ELF文件99
4.4.1ELF文件的種類99
4.4.2ELF文件的段100
4.4.3查看ELF文件100
4.4.4反彙編101
4.5嵌入式繫統編譯的特殊性102
4.6總結103
第5章嵌入式開發的特點與RISC-V GCC工具鏈104
5.1嵌入式繫統開發的特點104
5.1.1交叉編譯和遠程調試104
5.1.2移植newlib或newlib-nano作為C運行庫105
5.1.3引導程序以及中斷和異常處理106
5.1.4嵌入式繫統的鏈接腳本106
5.1.5減小代碼規模106
5.1.6支持printf()函數107
5.1.7提供板級支持包107
5.2RISC-V GNU工具鏈108
5.2.1RISC-V GNU工具鏈的獲取108
5.2.2RISC-V GCC工具鏈的“-march”和“-mabi”選項109
5.2.3RISC-V GCC工具鏈的“-mcmodel”選項113
5.2.4RISC-V GCC工具鏈的預定義的宏114
5.2.5RISC-V GNU工具鏈的使用實例115
第6章RISC-V彙編語言程序設計116
6.1彙編語言概述116
6.2RISC-V彙編程序概述117
6.3RISC-V彙編偽指令118
6.4RISC-V彙編程序偽操作118
6.5RISC-V彙編程序示例122
6.5.1標簽122
6.5.2宏122
6.5.3定義常數及其別名122
6.5.4立即數賦值123
6.5.5標簽地址賦值123
6.5.6設置浮點數舍入模式124
6.5.7完整實例124
6.6在C/C 程序中嵌入彙編程序125
6.6.1GCC內聯彙編簡介126
6.6.2GCC內聯彙編的“輸出操作數”和“輸入操作數”部分127
6.6.3GCC內聯彙編的“可能影響的寄存器或存儲器”部分128
6.6.4GCC內聯彙編實例1128
6.6.5GCC內聯彙編實例2129
6.6.6小結130
6.7在彙編程序中調用C/C 語言中的函數130
6.8總結131
第7章開源蜂鳥E203 MCU的軟件開發平臺132
7.1HBird SDK概述132
7.2HBird SDK的目錄結構133
7.3HBird SDK的底層實現解析134
7.3.1移植了newlib的樁函數134
7.3.2支持了printf()函數135
7.3.3提供繫統鏈接腳本136
7.3.4繫統啟動引導程序140
7.3.5繫統中斷和異常處理145
7.3.6使用newlib-nano減小代碼規模149
7.4HBird SDK的使用150
7.4.1HBird SDK的環境配置與工具鏈安裝150
7.4.2HBird SDK的運行154
第8章集成開發環境——Nuclei Studio158
8.1Nuclei Studio的簡介、下載與啟動158
8.1.1Nuclei Studio簡介158
8.1.2Nuclei Studio的下載與啟動158
8.2使用Nuclei Studio進行蜂鳥E203MCU的開發160
第9章初試蜂鳥E203 MCU開發168
9.1蜂鳥E203 MCU在Nuclei DDR200T開發板中的實現168
9.2蜂鳥調試器的驅動程序的安裝和蜂鳥調試器的設置175
9.3基於HBird SDK運行HelloWorld程序177
9.3.1將程序下載至DDR200T開發板177
9.3.2將程序在DDR200T開發板上運行178
9.3.3將程序在DDR200T開發板上調試180
9.4基於Nuclei Studio運行HelloWorld程序183
9.4.1將程序下載至DDR200T開發板183
9.4.2將程序在DDR200T開發板上運行186
9.4.3將程序在DDR200T開發板上調試187
第 10章Benchmark實驗190
10.1實驗目的190
10.2實驗準備190
10.3實驗原理190
10.3.1Dhrystone簡介191
10.3.2Dhrystone示例程序193
10.3.3CoreMark簡介194
10.3.4CoreMark示例程序195
10.4實驗步驟196
10.4.1在HBird SDK中運行Dhrystone示例程序196
10.4.2在Nuclei Studio中運行Dhrystone示例程序198
10.4.3在HBird SDK中運行CoreMark示例程序200
10.4.4在Nuclei Studio中運行CoreMark示例程序202
第 11章內聯彙編實驗205
11.1實驗目的205
11.2實驗準備205
11.3實驗原理205
11.3.1在C/C 程序中嵌入彙編程序205
11.3.2內聯彙編示例程序206
11.4實驗步驟206
11.4.1在HBird SDK中運行內聯彙編示例程序206
11.4.2在Nuclei Studio中運行內聯彙編示例程序208
第 12章GPIO實驗213
12.1實驗目的213
12.2實驗準備213
12.3實驗原理213
12.3.1GPIO簡介213
12.3.2GPIO示例程序214
12.4實驗步驟215
12.4.1在HBird SDK中運行GPIO示例程序215
12.4.2在Nuclei Studio中運行GPIO示例程序216
第 13章PWM實驗220
13.1實驗目的220
13.2實驗準備220
13.3實驗原理220
13.3.1PWM簡介220
13.3.2PWM示例程序221
13.4實驗步驟222
13.4.1在HBird SDK中運行PWM示例程序222
13.4.2在Nuclei Studio中運行PWM示例程序224
第 14章SPI實驗227
14.1實驗目的227
14.2實驗準備227
14.3實驗原理227
14.3.1SPI簡介227
14.3.2SPI示例程序228
14.4實驗步驟229
14.4.1在HBird SDK中運行SPI示例程序229
14.4.2在Nuclei Studio中運行SPI示例程序231
第 15章I2C實驗235
15.1實驗目的235
15.2實驗準備235
15.3實驗原理235
15.3.1I2C簡介235
15.3.2I2C示例程序236
15.4實驗步驟237
15.4.1在HBird SDK中運行I2C示例程序237
15.4.2在Nuclei Studio中運行I2C示例程序238
第 16章中斷相關實驗243
16.1實驗目的243
16.2實驗準備243
16.3實驗原理243
16.3.1計時器中斷和軟件中斷243
16.3.2計時器中斷和軟件中斷示例程序244
16.3.3外部中斷244
16.3.4外部中斷示例程序245
16.4實驗步驟246
16.4.1在HBird SDK中運行計時器中斷與軟件中斷示例程序246
16.4.2在Nuclei Studio中運行計時器中斷與軟件中斷示例程序247
16.4.3在HBird SDK中運行外部中斷示例程序249
16.4.4在Nuclei Studio中運行外部中斷示例程序251
第 17章FreeRTOS的移植與示例程序運行253
17.1RTOS概述253
17.1.1RTOS的定義253
17.1.2基於RTOS的開發與裸機開發254
17.2常用的實時操作繫統254
17.3FreeRTOS概述255
17.4FreeRTOS在蜂鳥E203 MCU中的移植257
17.5FreeRTOS示例程序的運行261
17.5.1FreeRTOS示例程序261
17.5.2在HBird SDK中運行FreeRTOS示例程序261
17.5.3在Nuclei Studio中運行FreeRTOS示例程序262
第 18章獲取更多資源265
18.1開源蜂鳥E203 MCU文檔資源265
18.2開源蜂鳥E203 MCU嵌入式開發實驗265
18.3開源蜂鳥E203處理器教學資源266
18.4開源蜂鳥E203論壇266
| | |