目录
《手把手教你RISC-V CPU(上) 处理器设计》
第 **分 CPU与RISC-V综述
第 *章 CPU之三生三世 2
*.* 眼看他起*楼,眼看他宴宾客,眼看他楼塌了—CPU众生相 3
*.*.* ISA—CPU的灵魂 4
*.*.2 CISC架构与RISC架构 5
*.*.3 32位架构与64位架构 6
*.*.4 ISA众生相 6
*.*.5 CPU的*域之分 **
*.2 ISA请扛起这口锅—为什么*产CPU尚未足够成熟 *2
*.2.* MIPS系—龙芯和君正 *2
*.2.2 x86系—北大众志、上海兆芯和天津海光 *3
*.2.3 Power系—中晟宏芯 *4
*.2.4 Alpha系—申威 *4
*.2.5 ARM系—飞腾、海思、展讯 *4
*.2.6 RISC-V系—平头哥、芯来科技 *6
*.2.7 背锅侠ISA *6
*.3 人生已如此艰难,你又何*拆穿—CPU从业者的*奈 *8
*.4 *敌者是多么寂寞—ARM统治着的* *9
*.4.* *乐乐与众乐乐—ARM公司的盈利模式 *9
*.4.2 小个子有大力量—*处*在的Cortex-M系列 22
*.4.3 移动*者—Cortex-A系列在手持设备*域的巨大成功 23
*.4.4 进击的巨人—ARM进军PC与服务器*域的雄心 25
*.4.5 ARM当前发展 26
*.5 东边日出西边雨,道是*晴却有晴—RISC-V登场 26
*.5.* 缘起名校 26
*.5.2 兴于开源 27
*.5.3 本土发展 29
*.6 旧时*谢堂前燕,飞入寻常*姓家—你也可以设计自己的处理器 30
第 2章 大道*简—RISC-V架构之魂 3*
2.* 简单*是美—RISC-V架构的设计理念 32
2.*.* *病*身轻—架构的篇幅 32
2.*.2 能屈能伸—模块化的指令集 34
2.*.3 浓缩的*是*华—指令的数量 34
2.2 RISC-V架构简介 35
2.2.* 模块化的指令集 35
2.2.2 可配置的通用寄存器组 36
2.2.3 规整的指令编码 36
2.2.4 简洁的存储器访问指令 37
2.2.5 *效的分支跳转指令 38
2.2.6 简洁的子程序调用 38
2.2.7 *条件码执行 39
2.2.8 *分支延迟槽 40
2.2.9 零开销硬件循环指令 40
2.2.*0 简洁的运算指令 40
2.2.** *雅的压缩指令子集 4*
2.2.*2 *权模式 42
2.2.*3 CSR 42
2.2.*4 中断和异常 42
2.2.*5 P扩展指令子集 43
2.2.*6 矢量指令子集 43
2.2.*7 自定义指令扩展 43
2.2.*8 比较 43
2.3 RISC-V软件工具链 44
2.4 RISC-V和其他开放架构有何*同 47
2.4.* 平民英雄—OpenRISC 47
2.4.2 豪门显贵—SPARC 48
2.4.3 身出*—MIPS 48
2.4.4 名校*生—RISC-V 49
第3章 乱花渐欲迷人眼—盘点RISC-V商业版本与开源版本 50
3.* 各商业版本与开源版本综述 5*
3.*.* Rocket Core 5*
3.*.2 BOOM Core 53
3.*.3 Freedom E3*0 SoC 54
3.*.4 LowRISC SoC 54
3.*.5 PULPino Core与SoC 54
3.*.6 PicoRV32 Core 55
3.*.7 SCR* Core 56
3.*.8 ORCA Core 56
3.*.9 Andes Core 56
3.*.*0 Microsemi Core 56
3.*.** Codasip Core 57
3.*.*2 Nuclei Core 57
3.*.*3 蜂鸟E203处理器核与SoC 58
3.2 小结 59
第4章 开源RISC-V—蜂鸟E203处理器核与SoC 60
4.* 与众*同的蜂鸟E203处理器 6*
4.2 蜂鸟E203处理器简介—蜂鸟虽小,五脏俱* 62
4.3 蜂鸟E203处理器的性能指标 64
4.4 蜂鸟E203处理器的配套SoC 64
4.5 蜂鸟E203处理器的配置选项 66
第二*分 手把手教你使用Verilog设计CPU
第5章 先见森林,后观树木—蜂鸟E203处理器核设计总览和*层 70
5.* 处理器硬件设计概述 7*
5.*.* 架构和微架构 7*
5.*.2 CPU、处理器、Core和处理器核 7*
5.*.3 处理器设计和验证 7*
5.2 蜂鸟E203处理器核的设计理念 72
5.3 蜂鸟E203处理器核的RTL代码风格 73
5.3.* 使用标准DFF模块例化生成寄存器 73
5.3.2 推荐使用assign语法替代if-else和case语法 75
5.3.3 其他若干注意事项 77
5.4 蜂鸟E203模块层次划分 77
5.5 蜂鸟E203处理器核的源代码 78
5.6 蜂鸟E203处理器核的配置选项 78
5.7 蜂鸟E203处理器核支持的RISC-V指令子集 79
5.8 蜂鸟E203处理器核的流水线结构 79
5.9 蜂鸟E203处理器核的*层接口 79
5.*0 小结 82
第6章 流水线*是流水账—蜂鸟E203处理器核流水线 83
6.* 处理器流水线概述 84
6.*.* 从*的5级流水线说起 84
6.*.2 可否*要流水线—流水线和状态机的关系 86
6.*.3 深处种菱浅种稻,*深*浅种荷花—流水线的深度 86
6.*.4 向上生长—越来越深的流水线 87
6.*.5 向下生长—越来越浅的流水线 88
6.2 处理器流水线中的乱序 88
6.3 处理器流水线中的反压 88
6.4 处理器流水线中的冲突 89
6.4.* 流水线中的资源冲突 89
6.4.2 流水线中的数据冲突 90
6.5 蜂鸟E203处理器的流水线 9*
6.5.* 流水线总体结构 9*
6.5.2 流水线中的冲突 92
6.6 小结 92
第7章 万事开头难— *切从取指令开始 93
7.* 取指概述 94
7.*.* 取指*点 94
7.*.2 如何快速取指 95
7.*.3 如何处理地址*对齐的指令 96
7.*.4 如何处理分支指令 97
7.2 RISC-V架构*点对于取指的简化 *02
7.2.* 规整的指令编码格式 *02
7.2.2 指令长度指示码放于低位 *02
7.2.3 简单的分支跳转指令 *03
7.2.4 没有分支延迟槽指令 *04
7.2.5 提供明确的静态分支预测依据 *05
7.2.6 提供明确的RAS依据 *05
7.3 蜂鸟E203处理器的取指实现 *06
7.3.* IFU总体设计思路 *06
7.3.2 简单译码 *08
7.3.3 简单BPU **0
7.3.4 PC生成 **4
7.3.5 访问ITCM和BIU **6
7.3.6 ITCM *20
7.3.7 BIU *20
7.4 小结 *2*
第8章 *鼓作气,执行力是关键—执行 *22
8.* 执行概述 *23
8.*.* 指令译码 *23
8.*.2 指令执行 *23
8.*.3 流水线的冲突 *24
8.*.4 指令的交付 *24
8.*.5 指令发射、派遣、执行、写回的顺序 *24
8.*.6 分支解析 *26
8.2 RISC-V架构的*点对于执行的简化 *26
8.2.* 规整的指令编码格式 *27
8.2.2 *雅的*6位指令 *27
8.2.3 *简的指令个数 *27
8.2.4 整数指令的操作数个数是*或2 *27
8.3 蜂鸟E203处理器的执行实现 *27
8.3.* 执行指令列表 *28
8.3.2 EXU总体设计思路 *28
8.3.3 译码 *29
8.3.4 整数通用寄存器组 *35
8.3.5 CSR *38
8.3.6 指令发射、派遣 *39
8.3.7 流水线冲突、长指令和OITF *43
8.3.8 ALU *49
8.3.9 交付 *62
8.3.*0 写回 *62
8.3.** 协处理器扩展 *62
8.4 小结 *63
第9章 善始者实繁,克*者盖寡—交付 *64
9.* 处理器中指令的交付、取消、冲刷 *65
9.*.* 指令交付、取消、冲刷 *65
9.*.2 指令交付的常见实现策略 *66
9.2 RISC-V架构*点对于交付的简化 *66
9.3 蜂鸟E203处理器中指令交付的硬件实现 *67
9.3.* 分支预测指令的处理 *68
9.3.2 中断和异常的处理 *7*
9.3.3 多周期执行的指令的交付 *7*
9.4 小结 *72
第 *0章 让子弹飞*会儿—写回 *73
*0.* 处理器的写回 *74
*0.*.* 处理器写回功能简介 *74
*0.*.2 处理器常见写回策略 *74
*0.2 蜂鸟E203处理器的写回硬件实现 *74
*0.2.* 最*写回仲裁 *75
*0.2.2 OITF模块和长指令写回仲裁模块 *76
*0.3 小结 *79
第 **章 哈弗还是比亚迪—存储器 *8*
**.* 存储器概述 *82
**.*.* 谁说处理器*定要有缓存 *82
**.*.2 处理器*定要有存储器 *83
**.*.3 ITCM和DTCM *85
**.2 RISC-V架构*点对于存储器访问指令的简化 *86
**.2.* *支持小端格式 *86
**.2.2 *地址自增/自减模式 *86
**.2.3 **次读多个数据和*次写多个数据的指令 *86
**.3 RISC-V架构的存储器访问指令 *87
**.3.* 存储器读和写指令 *87
**.3.2 fence指令和fence.i指令 *87
**.3.3 A扩展指令集 *87
**.4 蜂鸟E203处理器核的存储器子系统硬件实现 *88
**.4.* 存储器子系统总体设计思路 *88
**.4.2 AGU *88
**.4.3 LSU *93
**.4.4 ITCM和DTCM *95
**.4.5 A扩展指令集的硬件实现 *98
**.4.6 fence与fence.i指令的硬件实现 202
**.4.7 BIU 204
**.4.8 ECC 204
**.5 小结 204
第 *2章 黑盒子的窗口—总线接口单元 205
*2.* 片上总线协议概述 206
*2.*.* AXI 206
*2.*.2 AHB 206
*2.*.3 APB 207
*2.*.4 TileLink 207
*2.*.5 总结比较 207
*2.2 自定义总线协议ICB 208
*2.2.* ICB协议简介 208
*2.2.2 ICB协议信号 209
*2.2.3 ICB协议的时序 209
*2.3 ICB的硬件实现 2*4
*2.3.* *主多从 2*4
*2.3.2 多主*从 2*5
*2.3.3 多主多从 2*6
*2.4 蜂鸟E203处理器核BIU 2*7
*2.4.* BIU简介 2*7
*2.4.2 BIU的微架构 2*8
*2.4.3 BIU的源代码 2*8
*2.5 蜂鸟E203处理器SoC总线 2*9
*2.5.* SoC总线简介 2*9
*2.5.2 SoC总线的微架构 220
*2.5.3 SoC总线的源代码 220
*2.6 小结 22*
第 *3章 *得*说的故事—中断和异常 222
*3.* 中断和异常概述 223
*3.*.* 中断概述 223
*3.*.2 异常概述 224
*3.*.3 广义上的异常 224
*3.2 RISC-V架构异常处理机制 226
*3.2.* 进入异常 226
*3.2.2 退出异常 229
*3.2.3 异常服务程序 230
*3.3 RISC-V架构中断定义 23*
*3.3.* 中断类型 23*
*3.3.2 中断屏蔽 233
*3.3.3 中断等待 233
*3.3.4 中断*先级与仲裁 234
*3.3.5 中断嵌套 235
*3.4 RISC-V架构中与中断和异常相关的CSR 236
*3.5 蜂鸟E203处理器中异常处理的硬件实现 236
*3.5.* 蜂鸟E203处理器的异常和中断实现要点 236
*3.5.2 蜂鸟E203处理器支持的中断和异常类型 237
*3.5.3 蜂鸟E203处理器对mepc寄存器的处理 237
*3.5.4 蜂鸟E203处理器的中断接口 238
*3.5.5 蜂鸟E203处理器CLINT微架构及源代码分析 239
*3.5.6 蜂鸟E203处理器PLIC微架构及源代码分析 242
*3.5.7 蜂鸟E203处理器中交付模块对中断和异常的处理 244
*3.6 小结 248
第 *4章 最*起眼的其实是最难的—调试机制 249
*4.* 调试机制概述 250
*4.*.* 交互调试概述 250
*4.*.2 跟踪调试概述 252
*4.2 RISC-V架构的调试机制 252
*4.2.* 调试器软件的实现 253
*4.2.2 调试模式 253
*4.2.3 调试指令 254
*4.2.4 调试模式下的CSR 254
*4.2.5 调试中断 254
*4.3 蜂鸟E203处理器中的调试机制 254
*4.3.* 蜂鸟E203处理器中的交互式调试 254
*4.3.2 DTM 255
*4.3.3 硬件调试模块 256
*4.3.4 调试中断处理 259
*4.3.5 调试模式下CSR的实现 260
*4.3.6 调试机制指令的实现 26*
*4.4 小结 262
第 *5章 动如脱兔,静若处子—低功耗的诀窍 263
*5.* 处理器低功耗技术概述 264
*5.*.* 软件层面的低功耗 264
*5.*.2 系统层面的低功耗 264
*5.*.3 处理器层面的低功耗 265
*5.*.4 模块和单元层面的低功耗 265
*5.*.5 寄存器层面的低功耗 266
*5.*.6 锁存器层面的低功耗 267
*5.*.7 SRAM层面的低功耗 267
*5.*.8 组合逻辑层面的低功耗 267
*5.*.9 工艺层面的低功耗 268
*5.2 RISC-V架构的低功耗机制 268
*5.3 蜂鸟E203处理器低功耗机制的硬件实现 268
*5.3.* 蜂鸟E203处理器在系统层面的低功耗 268
*5.3.2 蜂鸟E203处理器层面的低功耗 270
*5.3.3 蜂鸟E203处理器在单元层面的低功耗 272
*5.3.4 蜂鸟E203处理器在寄存器层面的低功耗 272
*5.3.5 蜂鸟E203处理器在锁存器层面的低功耗 275
*5.3.6 蜂鸟E203处理器在SRAM层面的低功耗 276
*5.3.7 蜂鸟E203处理器在组合逻辑层面的低功耗 277
*5.3.8 蜂鸟E203处理器在工艺层面的低功耗 278
*5.4 小结 278
第 *6章 工欲善其事,*先利其器—RISC-V可扩展协处理器 279
*6.* *域*定架构 280
*6.2 RISC-V架构的可扩展性 28*
*6.2.* RISC-V架构的预留指令编码空间 28*
*6.2.2 RISC-V架构的预定义指令 282
*6.3 蜂鸟E203处理器的协处理器扩展机制—NICE 282
*6.3.* NICE指令的编码 282
*6.3.2 NICE协处理器的接口信号 283
*6.3.3 NICE协处理器的流水线接口 284
*6.3.4 NICE协处理器的存储器接口 285
*6.3.5 NICE协处理器的接口时序 286
*6.4 蜂鸟E203处理器的协处理器参考示例 290
*6.4.* 示例协处理器的实现需求 290
*6.4.2 示例协处理器的自定义指令 29*
*6.4.3 示例协处理器的硬件实现 292
*6.4.4 示例协处理器的软件驱动 292
*6.4.5 示例协处理器的性能分析 294
第三*分 开发实战
第 *7章 先冒个烟—运行Verilog仿真测试 298
*7.* E203开源项目的代码层次结构 299
*7.2 E203开源项目的测试用例 300
*7.2.* riscv-tests自测试用例 300
*7.2.2 编译ISA自测试用例 30*
*7.3 E203 开源项目的测试平台 304
*7.4 在测试平台中运行测试用例 304
第 *8章 套上壳子上路—更多实践 308
附录A RISC-V架构的指令集 3**
附录B RISC-V架构的CSR 34*
附录C RISC-V架构的PLIC 35*
附录D 存储器模型背景 359
附录E 存储器原子操作指令背景 364
附录F RISC-V指令编码列表 367
附录G RISC-V伪指令列表 374
《手把手教你RISC-V CPU(下) 工程与实践》
第 *章 开源蜂鸟E203 MCU总体介绍 *
*.* 蜂鸟E203 MCU的系统结构和*性 *
*.2 蜂鸟E203 MCU的存储资源 2
*.2.* 片上存储资源 2
*.2.2 片外Flash存储资源 2
*.3 蜂鸟E203 MCU的外设资源 3
*.4 蜂鸟E203 MCU的地址分配 3
*.5 蜂鸟E203 MCU的时钟域划分 4
*.6 蜂鸟E203 MCU的电源域划分 5
*.7 蜂鸟E203 MCU的低功耗模式 5
*.8 蜂鸟E203 MCU的*局复位 6
*.9 蜂鸟E203 MCU的上电流程控制 7
*.*0 蜂鸟E203 MCU的*层引脚 7
*.** 蜂鸟E203 MCU的GPIO复用功能 8
*.*2 蜂鸟E203 MCU的中断处理 9
*.*2.* 蜂鸟E203处理器核的异常和中断处理 9
*.*2.2 蜂鸟E203处理器核的中断接口 **
*.*2.3 CLINT模块生成计时器中断和软件中断 *2
*.*2.4 PLIC管理多个外*中断 *3
第 2章 开源蜂鸟E203 MCU的外设 *7
2.* 蜂鸟E203 MCU的外设概述 *7
2.2 PLIC *7
2.3 CLINT *8
2.4 LCLKGEN *8
2.4.* LCLKGEN简介 *8
2.4.2 LCLKGEN的寄存器 *8
2.5 HCLKGEN *8
2.5.* HCLKGEN简介 *8
2.5.2 HCLKGEN的寄存器 *9
2.6 GPIO *9
2.6.* GPIO的功能 *9
2.6.2 GPIO的寄存器 *9
2.6.3 I/O结构和IOF模式 20
2.6.4 MCU各外设复用GPIO引脚 20
2.6.5 GPIO中断 2*
2.6.6 GPIO_PADDIR寄存器 2*
2.6.7 GPIO_PADIN寄存器 2*
2.6.8 GPIO_PADOUT寄存器 2*
2.6.9 GPIO_INTTEN寄存器 22
2.6.*0 GPIO_INTTYPE0和GPIO_INTTYPE*寄存器 22
2.6.** GPIO_INTSTATUS寄存器 22
2.6.*2 GPIO_IOFCFG寄存器 22
2.7 SPI 22
2.7.* SPI的背景知识 22
2.7.2 SPI的*性 25
2.7.3 SPI的寄存器 25
2.7.4 SPI数据线 26
2.7.5 QSPI0的寄存器配置 26
2.7.6 QSPI*和QSPI2的寄存器配置 38
2.8 I2C 4*
2.8.* I2C的背景知识 4*
2.8.2 I2C的功能 42
2.8.3 I2C的寄存器 43
2.8.4 I2C的接口数据线 43
2.8.5 I2C_PRE寄存器 43
2.8.6 I2C_CTR寄存器 44
2.8.7 I2C_TX寄存器和I2C_RX寄存器 44
2.8.8 I2C_CMD寄存器 45
2.8.9 I2C_STATUS寄存器 45
2.8.*0 I2C的常用操作序列 46
2.9 UART 48
2.9.* UART的背景知识 48
2.9.2 UART的*性和功能 49
2.9.3 UART的寄存器 49
2.9.4 UART的接口数据线 50
2.9.5 UART_DLL寄存器和UART_DLM寄存器 50
2.9.6 UART_RBR寄存器 5*
2.9.7 UART_THR寄存器 5*
2.9.8 UART_FCR寄存器 52
2.9.9 UART_LCR寄存器 52
2.9.*0 UART_LSR寄存器 53
2.9.** UART_IER寄存器 53
2.9.*2 UART_IIR寄存器 54
2.*0 PWM 54
2.*0.* PWM的背景知识 54
2.*0.2 PWM的功能和*性 54
2.*0.3 PWM的寄存器 55
2.*0.4 PWM模块的输出信号 55
2.*0.5 TIMx_CMD(x=0,*,2,3)寄存器 55
2.*0.6 TIMx_CFG(x=0,*,2,3)寄存器 56
2.*0.7 TIMx_TH(x=0,*,2,3)寄存器 57
2.*0.8 TIMx_CH0_TH(x=0,*,2,3)寄存器 57
2.*0.9 TIMx_CH*_TH(x=0,*,2,3)寄存器 58
2.*0.*0 TIMx_CH2_TH(x=0,*,2,3)寄存器 58
2.*0.** TIMx_CH3_TH(x=0,*,2,3)寄存器 59
2.*0.*2 TIMx_CNT(x=0,*,2,3)寄存器 60
2.*0.*3 PWM_ENT_CFG寄存器 60
2.*0.*4 PWM_TIMER_EN寄存器 6*
2.** WDT 62
2.**.* WDT的背景知识 62
2.**.2 WDT的*性、功能和结构 62
2.**.3 WDT的寄存器 63
2.**.4 通过WDOGCFG寄存器对WDT进行配置 63
2.**.5 WDT的计数器计数值寄存器—WDOGCOUNT 64
2.**.6 通过WDOGKEY寄存器解锁 65
2.**.7 通过WDOGFEED寄存器“喂狗” 65
2.**.8 WDT的计数器比较值寄存器—WDOGS 66
2.**.9 通过WDOGCMP寄存器配置阈值 66
2.**.*0 WDT产生*局复位 66
2.**.** WDT产生中断 67
2.*2 RTC 67
2.*2.* RTC的背景知识 67
2.*2.2 RTC的*性、功能和结构 67
2.*2.3 RTC的寄存器 68
2.*2.4 通过RTCCFG寄存器进行配置 68
2.*2.5 RTC的计数器计数值寄存器—RTCHI/RTCLO 69
2.*2.6 RTC的计数器比较值寄存器—RTCS 70
2.*2.7 通过RTCCMP寄存器配置阈值 70
2.*2.8 RTC产生中断 70
2.*3 PMU 70
2.*3.* PMU的背景知识 70
2.*3.2 PMU的*性、功能和结构 7*
2.*3.3 PMU的寄存器 72
2.*3.4 通过PMUKEY寄存器解锁 72
2.*3.5 通过PMUSLEEP寄存器进入休眠模式 73
2.*3.6 通过PMUSLEEPI0~PMUSLEEPI7寄存器配置休眠指令序列 73
2.*3.7 通过PMUBACKUP系列寄存器*存关键信息 75
2.*3.8 通过PMUIE寄存器设置唤醒条件 75
2.*3.9 通过PMUWAKEUPI0~PMUWAKEUPI7寄存器配置唤醒指令序列 76
2.*3.*0 通过PMUCAUSE寄存器查看唤醒原因 77
第3章 开源蜂鸟E203 MCU硬件开发平台 78
3.* Nuclei FPGA开发板 78
3.*.* Nuclei DDR200T开发板简介 79
3.*.2 Nuclei DDR200T开发板的硬件功能模块 80
3.*.3 蜂鸟E203 MCU的功能引脚分配 88
3.2 蜂鸟JTAG调试器 89
3.3 总结 90
第4章 软件编译过程 9*
4.* GCC工具链 9*
4.*.* GCC工具链简介 9*
4.*.2 binutils 92
4.*.3 C运行库 93
4.*.4 GCC命令行选项 94
4.2 准备工作 94
4.2.* 安装Linux 94
4.2.2 准备HelloWorld程序 94
4.3 编译过程 95
4.3.* 预处理 95
4.3.2 编译 96
4.3.3 汇编 96
4.3.4 * 97
4.3.5 *步到位的编译 99
4.4 ELF文件 99
4.4.* ELF文件的种类 99
4.4.2 ELF文件的段 *00
4.4.3 查看ELF文件 *00
4.4.4 反汇编 *0*
4.5 嵌入式系统编译的*殊性 *02
4.6 总结 *03
第5章 嵌入式开发的*点与RISC-V GCC工具链 *04
5.* 嵌入式系统开发的*点 *04
5.*.* 交叉编译和远程调试 *04
5.*.2 移植newlib或newlib-nano作为C运行库 *05
5.*.3 引导程序以及中断和异常处理 *06
5.*.4 嵌入式系统的*脚本 *06
5.*.5 减小代码规模 *06
5.*.6 支持printf()函数 *07
5.*.7 提供板级支持* *07
5.2 RISC-V GNU工具链 *08
5.2.* RISC-V GNU工具链的获取 *08
5.2.2 RISC-V GCC工具链的“-march”和“-mabi”选项 *09
5.2.3 RISC-V GCC工具链的“-mcmodel”选项 **3
5.2.4 RISC-V GCC工具链的预定义的宏 **4
5.2.5 RISC-V GNU工具链的使用实例 **5
第6章 RISC-V汇编语言程序设计 **6
6.* 汇编语言概述 **6
6.2 RISC-V汇编程序概述 **7
6.3 RISC-V汇编伪指令 **8
6.4 RISC-V汇编程序伪操作 **8
6.5 RISC-V汇编程序示例 *22
6.5.* 标签 *22
6.5.2 宏 *22
6.5.3 定义常数及其别名 *22
6.5.4 立*数赋值 *23
6.5.5 标签地址赋值 *23
6.5.6 设置浮点数舍入模式 *24
6.5.7 完整实例 *24
6.6 在C/C++程序中嵌入汇编程序 *25
6.6.* GCC内联汇编简介 *26
6.6.2 GCC内联汇编的“输出操作数”和“输入操作数”*分 *27
6.6.3 GCC内联汇编的“可能影响的寄存器或存储器”*分 *28
6.6.4 GCC内联汇编实例* *28
6.6.5 GCC内联汇编实例2 *29
6.6.6 小结 *30
6.7 在汇编程序中调用C/C++语言中的函数 *30
6.8 总结 *3*
第7章 开源蜂鸟E203 MCU的软件开发平台 *32
7.* HBird SDK概述 *32
7.2 HBird SDK的目录结构 *33
7.3 HBird SDK的底层实现解析 *34
7.3.* 移植了newlib的桩函数 *34
7.3.2 支持了printf()函数 *35
7.3.3 提供系统*脚本 *36
7.3.4 系统启动引导程序 *40
7.3.5 系统中断和异常处理 *45
7.3.6 使用newlib-nano减小代码规模 *49
7.4 HBird SDK的使用 *50
7.4.* HBird SDK的环境配置与工具链安装 *50
7.4.2 HBird SDK的运行 *54
第8章 集成开发环境——Nuclei Studio *58
8.* Nuclei Studio的简介、下载与启动 *58
8.*.* Nuclei Studio简介 *58
8.*.2 Nuclei Studio的下载与启动 *58
8.2 使用Nuclei Studio进行蜂鸟E203MCU的开发 *60
第9章 初试蜂鸟E203 MCU开发 *68
9.* 蜂鸟E203 MCU在Nuclei DDR200T开发板中的实现 *68
9.2 蜂鸟调试器的驱动程序的安装和蜂鸟调试器的设置 *75
9.3 基于HBird SDK运行HelloWorld程序 *77
9.3.* 将程序下载*DDR200T开发板 *77
9.3.2 将程序在DDR200T开发板上运行 *78
9.3.3 将程序在DDR200T开发板上调试 *80
9.4 基于Nuclei Studio运行HelloWorld程序 *83
9.4.* 将程序下载*DDR200T开发板 *83
9.4.2 将程序在DDR200T开发板上运行 *86
9.4.3 将程序在DDR200T开发板上调试 *87
第 *0章 Benchmark实验 *90
*0.* 实验目的 *90
*0.2 实验准备 *90
*0.3 实验原理 *90
*0.3.* Dhrystone简介 *9*
*0.3.2 Dhrystone示例程序 *93
*0.3.3 CoreMark简介 *94
*0.3.4 CoreMark示例程序 *95
*0.4 实验步骤 *96
*0.4.* 在HBird SDK中运行Dhrystone示例程序 *96
*0.4.2 在Nuclei Studio中运行Dhrystone示例程序 *98
*0.4.3 在HBird SDK中运行CoreMark示例程序 200
*0.4.4 在Nuclei Studio中运行CoreMark示例程序 202
第 **章 内联汇编实验 205
**.* 实验目的 205
**.2 实验准备 205
**.3 实验原理 205
**.3.* 在C/C++程序中嵌入汇编程序 205
**.3.2 内联汇编示例程序 206
**.4 实验步骤 206
**.4.* 在HBird SDK中运行内联汇编示例程序 206
**.4.2 在Nuclei Studio中运行内联汇编示例程序 208
第 *2章 GPIO实验 2*3
*2.* 实验目的 2*3
*2.2 实验准备 2*3
*2.3 实验原理 2*3
*2.3.* GPIO简介 2*3
*2.3.2 GPIO示例程序 2*4
*2.4 实验步骤 2*5
*2.4.* 在HBird SDK中运行GPIO示例程序 2*5
*2.4.2 在Nuclei Studio中运行GPIO示例程序 2*6
第 *3章 PWM实验 220
*3.* 实验目的 220
*3.2 实验准备 220
*3.3 实验原理 220
*3.3.* PWM简介 220
*3.3.2 PWM示例程序 22*
*3.4 实验步骤 222
*3.4.* 在HBird SDK中运行PWM示例程序 222
*3.4.2 在Nuclei Studio中运行PWM示例程序 224
第 *4章 SPI实验 227
*4.* 实验目的 227
*4.2 实验准备 227
*4.3 实验原理 227
*4.3.* SPI简介 227
*4.3.2 SPI示例程序 228
*4.4 实验步骤 229
*4.4.* 在HBird SDK中运行SPI示例程序 229
*4.4.2 在Nuclei Studio中运行SPI示例程序 23*
第 *5章 I2C实验 235
*5.* 实验目的 235
*5.2 实验准备 235
*5.3 实验原理 235
*5.3.* I2C简介 235
*5.3.2 I2C示例程序 236
*5.4 实验步骤 237
*5.4.* 在HBird SDK中运行I2C示例程序 237
*5.4.2 在Nuclei Studio中运行I2C示例程序 238
第 *6章 中断相关实验 243
*6.* 实验目的 243
*6.2 实验准备 243
*6.3 实验原理 243
*6.3.* 计时器中断和软件中断 243
*6.3.2 计时器中断和软件中断示例程序 244
*6.3.3 外*中断 244
*6.3.4 外*中断示例程序 245
*6.4 实验步骤 246
*6.4.* 在HBird SDK中运行计时器中断与软件中断示例程序 246
*6.4.2 在Nuclei Studio中运行计时器中断与软件中断示例程序 247
*6.4.3 在HBird SDK中运行外*中断示例程序 249
*6.4.4 在Nuclei Studio中运行外*中断示例程序 25*
第 *7章 FreeRTOS的移植与示例程序运行 253
*7.* RTOS概述 253
*7.*.* RTOS的定义 253
*7.*.2 基于RTOS的开发与裸机开发 254
*7.2 常用的实时操作系统 254
*7.3 FreeRTOS概述 255
*7.4 FreeRTOS在蜂鸟E203 MCU中的移植 257
*7.5 FreeRTOS示例程序的运行 26*
*7.5.* FreeRTOS示例程序 26*
*7.5.2 在HBird SDK中运行FreeRTOS示例程序 26*
*7.5.3 在Nuclei Studio中运行FreeRTOS示例程序 262
第 *8章 获取更多资源 265
*8.* 开源蜂鸟E203 MCU文档资源 265
*8.2 开源蜂鸟E203 MCU嵌入式开发实验 265
*8.3 开源蜂鸟E203处理器教学资源 266
*8.4 开源蜂鸟E203论坛 266
作者介绍
《手把手教你RISC-V CPU(上) 处理器设计》 胡振波,芯来科技*办人兼执行官,中*RISC-V*域的先行者,拥有丰富的处理器内核开发经验,曾长期*职于外企,担任处理器内核研发核心岗位负责人。其打造的*内RISC-V开源项目——蜂鸟E203,对*内RISC-V的普及和推广起到了巨大的推动作用。以胡振波为核心*办的芯来科技目前已经成为中*先行的RISC-V处理器内核IP和解决方案公司,推出的嵌入式CPU核系列产品处于中*RISC-V处理器研发与产业化的前列。 《手把手教你RISC-V CPU(下) 工程与实践》 胡振波,拥有上海交通大学电子工程系学士学位和微电子学硕士学位。*内RISC-V社区活跃的贡献者,具有*过*0处理器研发经验,在Marvell和Synopsys等企业负责过多款*性能和低能耗处理器研发工作。20*8年,*办了RISC-V处理器IP和芯片解决方案公司-----芯来科技。
发货方式
自动:在特色服务中标有自动发货的商品,拍下后,源码类 软件类 商品会在订单详情页显示来自卖家的商品下载链接,点卡类 商品会在订单详情直接显示卡号密码。
手动:未标有自动发货的的商品,付款后,商品卖家会收到平台的手机短信、邮件提醒,卖家会尽快为您发货,如卖家长时间未发货,买家也可通过订单上的QQ或电话主动联系卖家。
退款说明
1、源码类:商品详情(含标题)与实际源码不一致的(例:描述PHP实际为ASP、描述的功能实际缺少、功能不能正常使用等)!有演示站时,与实际源码不一致的(但描述中有"不保证完全一样、可能有少许偏差"类似显著公告的除外);
2、营销推广类:未达到卖家描述标准的;
3、点卡软件类:所售点卡软件无法使用的;
3、发货:手动发货商品,在卖家未发货前就申请了退款的;
4、服务:卖家不提供承诺的售后服务的;(双方提前有商定和描述中有显著声明的除外)
5、其他:如商品或服务有质量方面的硬性常规问题的。未符合详情及卖家承诺的。
注:符合上述任一情况的,均支持退款,但卖家予以积极解决问题则除外。交易中的商品,卖家无法修改描述!
注意事项
1、在付款前,双方在QQ上所商定的内容,也是纠纷评判依据(商定与商品描述冲突时,以商定为准);
2、源码商品,同时有网站演示与商品详情图片演示,且网站演示与商品详情图片演示不一致的,默认按商品详情图片演示作为纠纷评判依据(卖家有特别声明或有额外商定的除外);
3、点卡软件商品,默认按商品详情作为纠纷评判依据(特别声明或有商定除外);
4、营销推广商品,默认按商品详情作为纠纷评判依据(特别声明或有商定除外);
5、在有"正当退款原因和依据"的前提下,写有"一旦售出,概不支持退款"等类似的声明,视为无效声明;
6、虽然交易产生纠纷的几率很小,卖家也肯定会给买家最完善的服务!但请买卖双方尽量保留如聊天记录这样的重要信息,以防产生纠纷时便于送码网快速介入处理。
送码声明
1、送码网作为第三方中介平台,依据双方交易合同(商品描述、交易前商定的内容)来保障交易的安全及买卖双方的权益;
2、非平台线上交易的项目,出现任何后果均与送码网无关;无论卖家以何理由要求线下交易的(如:要求买家支付宝转账付款的,微信转账付款的等),请联系管理举报,本平台将清退卖家处理。
正版 steam 原子之心 Atomic Heart 国区激活码 cd...
steam 英雄连3 国区激活码CDKEY PC游戏正版 Compan...
M,日朋礼送男友老公创意实人用星人际机器蓝牙音箱走心情节生礼...
zippo之宝官方正品打火机古银双面贴章机器人煤油机送男友礼物女...
秋季圆领卫衣套头男友风秋天长袖时尚潮流印花卡通机器派大星上衣...
机器猫情侣衬衫小叮当落肩短袖衬衣男友外套大码潮流套装上衣薄款...
PDPAOLA小机器人情侣手链女男生日礼物520送男友男士款闺蜜Rob...
兼容乐高复仇者联盟4战争机器积木人仔钢铁侠救援机甲玩具WM723...
兼容乐高复联4钢铁侠X0252灭霸MK50 MK1战争机器拼装积木人仔...
XBOX ONE SERIES X|S 中文 战争机器4与光环5守护...