主编推荐语
本书详细介绍RISC-V处理器、SiFive E31内核、微控制器、开发板以及软件开发环境与应用案例。
内容简介
首先介绍RISC—V的历史和机遇及SiFive公司,接着介绍RISC—V处理器指令集体系结构。本书有一块配套的开发板用于第四届全国大学生集成电路创新创业大赛的RISC—V挑战杯赛题1,称为SiFive Learn Inventor开发板,本书对里面的处理器内核SiFive E31给与详细说明。基于SiFive E31内核所做的芯片称为SiFive E310—G003微控制器,是本书的核心,我们也会介绍微控制器、存储器与启动过程以及外设。基于微控制器所做的开发板称为SiFive Learn Inventor,我们会介绍开发版跟与调试器。在硬件介绍完之后,我们会介绍软件集成开发环境SiFive Freedom Studio的安装。基于SiFive Freedom e—SDK的软件开发会介绍三个程序Hello World、Dhrystone、CoreMark等程序。还会让读者在SiFive Learn Inventor开发板上点LED灯。基础的裸机软件说明后,会移植FreeRTOS实时多任务操作系统,并且说明原理与应用。还会给出基于SiFive Learn Inventor开发板的避障小车开发案例让学生清楚系统级的设计方法。最后给与SiFive Learn Inventor开发板使用常见问题与解答,让读者可以实操开发板没有后顾之忧。
目录
- 封面
- 前折页
- 版权信息
- 内容简介
- 推荐语(按反馈时间排序)
- 序一
- 序二
- 前言
- 第1章 RISC-Ⅴ的历史和机遇
- 1.1 RISC-Ⅴ发明团队与历史
- 1.1.1 商业公司的指令集架构
- 1.1.2 RISC-Ⅴ指令集架构与其他指令集架构的不同点
- 1.1.3 RISC-Ⅴ发展史及其标志性事件
- 1.2 RISC-Ⅴ基金会成长的历史
- 1.2.1 RISC-Ⅴ基金会的成员介绍
- 1.2.2 RISC-Ⅴ基金会推动20个重点领域的技术
- 1.2.3 RISC-Ⅴ基金会标准制定过程及工作群组机制
- 1.2.4 RISC-Ⅴ国际协会的诞生
- 1.3 RISC-Ⅴ的生态系统
- 1.3.1 RISC-Ⅴ的开发板和生态系统
- 1.3.2 部分RISC-Ⅴ社区生态的支持厂商
- 1.3.3 芯片设计界的RISC-Ⅴ产品进展
- 1.4 SiFive研发团队技术沿革
- 1.4.1 Rocket Chip SoC生成器
- 1.4.2 使用Chisel语言编写Rocket Chip SoC生成器
- 1.4.3 Rocket标量处理器
- 1.4.4 SiFive强力推动RISC-Ⅴ生态发展
- 第2章 RISC-Ⅴ指令集架构介绍
- 2.1 引言
- 2.2 RISC-Ⅴ指令集架构特性
- 2.2.1 简洁性
- 2.2.2 模块化
- 2.3 指令长度编码和指令格式
- 2.3.1 指令长度编码
- 2.3.2 指令格式
- 2.4 寄存器列表
- 2.4.1 通用寄存器
- 2.4.2 控制与状态寄存器
- 2.4.3 程序计数器
- 2.5 地址空间与寻址模式
- 2.5.1 地址空间
- 2.5.2 小端格式
- 2.5.3 寻址模式
- 2.6 内存模型
- 2.7 特权模式
- 2.8 中断和异常
- 2.8.1 中断和异常概述
- 2.8.2 RISC-Ⅴ机器模式下的中断架构
- 2.8.3 机器模式下中断和异常的处理过程
- 2.9 调试规范
- 2.10 RISC-Ⅴ未来的扩展子集
- 2.10.1 B标准扩展:位操作
- 2.10.2 H特权架构扩展:支持管理程序(Hypervisor)
- 2.10.3 J标准扩展:动态翻译语言
- 2.10.4 L标准扩展:十进制浮点
- 2.10.5 N标准扩展:用户态中断
- 2.10.6 P标准扩展:封装的单指令多数据(Packed-SIMD)指令
- 2.10.7 Q标准扩展:四精度浮点
- 2.10.8 V标准扩展:基本矢量扩展
- 2.11 RISC-Ⅴ指令列表
- 2.11.1 I指令子集
- 2.11.2 M指令子集
- 2.11.3 A指令子集
- 2.11.4 F指令子集
- 2.11.5 D指令子集
- 2.11.6 C指令子集
- 第3章 SiFive FE310-G003微控制器
- 3.1 FE310-G003微控制器概述
- 3.1.1 E31 RISC-Ⅴ内核
- 3.1.2 中断
- 3.1.3 片内存储系统
- 3.1.4 始终上电(AON)模块
- 3.1.5 通用输入与输出
- 3.1.6 通用异步接收器/发送器
- 3.1.7 硬件串行外设接口
- 3.1.8 脉冲宽度调制
- 3.1.9 I2C
- 3.1.10 调试支持
- 3.2 E31内核介绍
- 3.2.1 E31内核概述
- 3.2.2 中断架构
- 3.2.3 内核本地中断器(CLINT)
- 3.2.4 调试支持
- 3.3 E31 FE310-G003内存映射
- 3.4 启动程序
- 3.4.1 复位向量
- 3.4.2 BootLoader
- 3.5 时钟生成
- 3.5.1 时钟生成概述
- 3.5.2 PRCI地址空间的使用
- 3.5.3 可校准可编程72MHz振荡器(HFROSC)
- 3.5.4 外接16MHz晶体振荡器(HFXOSC)
- 3.5.5 内置高频PLL(HFPLL)
- 3.5.6 PLL输出分频器
- 3.5.7 内置可编程低频环形振荡器(LFROSC)
- 3.5.8 备用低频时钟(LFALTCLK)
- 3.5.9 时钟总结
- 3.6 电源模式
- 3.6.1 运行模式
- 3.6.2 等待模式
- 3.6.3 睡眠模式
- 3.7 平台级中断控制器(PLIC)
- 3.7.1 内存映射
- 3.7.2 中断源
- 3.7.3 中断优先级
- 3.7.4 中断未决位
- 3.7.5 中断使能
- 3.7.6 优先级阈值
- 3.7.7 中断声明流程
- 3.7.8 中断完成
- 3.8 一次性可编程存储器(OTP)外设
- 3.8.1 内存映射
- 3.8.2 可编程I/O锁定寄存器(otp_lock)
- 3.8.3 可编程I/O序列
- 3.8.4 读序列控制寄存器(otp_rsctrl)
- 3.8.5 OTP编程警告
- 3.8.6 OTP编程过程
- 3.9 始终上电(AON)电源域
- 3.9.1 AON电源
- 3.9.2 AON时钟
- 3.9.3 AON复位单元
- 3.9.4 上电复位电路
- 3.9.5 外部复位电路
- 3.9.6 复位原因
- 3.9.7 看门狗定时器(WDT)
- 3.9.8 实时时钟(RTC)
- 3.9.9 备份寄存器
- 3.9.10 电源管理单元(PMU)
- 3.9.11 AON内存映射
- 3.10 看门狗定时器(WDT)
- 3.10.1 看门狗计数器(wdogcount)
- 3.10.2 看门狗时钟选择
- 3.10.3 看门狗配置寄存器(wdogcfg)
- 3.10.4 看门狗比较器0(wdogcmp0)
- 3.10.5 看门狗键值寄存器(wdogkey)
- 3.10.6 喂狗寄存器(wdogfeed)
- 3.10.7 看门狗配置
- 3.10.8 看门狗复位
- 3.10.9 看门狗中断(wdogip0)
- 3.11 电源管理单元(PMU)
- 3.11.1 PMU概述
- 3.11.2 内存映射
- 3.11.3 PMU键值寄存器(pmukey)
- 3.11.4 PMU编程
- 3.11.5 初始化睡眠序列寄存器(pmusleep)
- 3.11.6 唤醒信号调理
- 3.11.7 PMU中断使能寄存器(pmuie)和唤醒原因寄存器(pmucause)
- 3.12 实时时钟(RTC)
- 3.12.1 RTC计数器(rtccounthi/rtccountlo)
- 3.12.2 RTC配置寄存器(rtccfg)
- 3.12.3 RTC比较器(rtccmp)
- 3.13 通用输入输出控制器(GPIO)
- 3.13.1 FE310-G003微控制器中的GPIO实例
- 3.13.2 内存映射
- 3.13.3 输入/输出值
- 3.13.4 中断
- 3.13.5 内部上拉
- 3.13.6 驱动强度
- 3.13.7 输出反转
- 3.13.8 硬件I/O功能(IOF)
- 3.14 通用异步收发机(UART)
- 3.14.1 UART概述
- 3.14.2 FE310-G003微控制器中的UART实例
- 3.14.3 内存映射
- 3.14.4 发送数据寄存器(txdata)
- 3.14.5 接收数据寄存器(rxdata)
- 3.14.6 发送控制寄存器(txctrl)
- 3.14.7 接收控制寄存器(rxctrl)
- 3.14.8 中断寄存器(ip和ie)
- 3.14.9 波特率除数寄存器(div)
- 3.15 串行外围接口(SPI)
- 3.15.1 SPI概述
- 3.15.2 FE310-G003微控制器中的SPI实例
- 3.15.3 SPI内存映射
- 3.15.4 串行时钟除数寄存器(sckdiv)
- 3.15.5 串行时钟模式寄存器(sckmode)
- 3.15.6 芯片选择ID寄存器(csid)
- 3.15.7 芯片选择默认寄存器(csdef)
- 3.15.8 芯片选择模式寄存器(csmode)
- 3.15.9 延迟控制寄存器(delay0和delay1)
- 3.15.10 帧格式寄存器(fmt)
- 3.15.11 发送数据寄存器(txdata)
- 3.15.12 接收数据寄存器(rxdata)
- 3.15.13 发送水印寄存器(txmark)
- 3.15.14 接收水印寄存器(rxmark)
- 3.15.15 SPI中断寄存器(ie和ip)
- 3.15.16 SPI闪存接口控制寄存器(fctrl)
- 3.15.17 SPI闪存指令格式寄存器(ffmt)
- 3.16 脉宽调制器(PWM)
- 3.16.1 PWM概述
- 3.16.2 FE310-G003微控制器中的PWM实例
- 3.16.3 PWM内存映射
- 3.16.4 PWM计数器(pwmcount)
- 3.16.5 PWM配置寄存器(pwmcfg)
- 3.16.6 刻度化PWM计数器(pwms)
- 3.16.7 PWM比较器(pwmcmp0~pwmcmp3)
- 3.16.8 去毛刺和黏性电路
- 3.16.9 产生左向或右向的PWM波形
- 3.16.10 产生中心对齐(相位校正)PWM波形
- 3.16.11 使用组合生成任意的PWM波形
- 3.16.12 生成单次波形
- 3.16.13 PWM中断
- 3.17 集成电路(I2C)主设备接口
- 3.18 调试接口
- 3.18.1 JTAG TAPC状态机
- 3.18.2 复位JTAG逻辑
- 3.18.3 JTAG计时器
- 3.18.4 JTAG标准说明
- 3.18.5 JTAG调试命令
- 第4章 使用Freedom E-SDK进行软件开发
- 4.1 SiFive Freedom Studio集成开发环境安装与介绍
- 4.1.1 Freedom Studio简介与安装
- 4.1.2 启动Freedom Studio
- 4.1.3 创建sifive-welcome项目
- 4.1.4 配置sifive-welcome项目
- 4.1.5 编译sifive-welcome项目
- 4.1.6 运行sifive-welcome项目
- 4.1.7 调试程序
- 4.2 Hello World实例
- 4.2.1 新建Freedom工程
- 4.2.2 编译生成可执行文件
- 4.2.3 连接SiFive Learn Inventor开发系统
- 4.2.4 修改J-LINK配置
- 4.2.5 程序下载及调试
- 4.2.6 使用Freedom Studio在线调试程序
- 4.3 Dhrystone基准程序介绍
- 4.3.1 Dhrystone基准程序功能介绍
- 4.3.2 Dhrystone基准程序代码结构
- 4.3.3 Dhrystone基准程序存在的问题
- 4.3.4 在SiFive Learn Inventor开发系统上运行Dhrystone基准程序
- 4.4 CoreMark基准程序介绍
- 4.4.1 CoreMark基准程序功能介绍
- 4.4.2 CoreMark基准程序代码结构
- 4.4.3 在SiFive Learn Inventor开发系统上运行CoreMark基准程序
- 4.4.4 CoreMark与Dhrystone两种基准程序的比较
- 第5章 FreeRTOS实时多任务操作系统原理与应用
- 5.1 嵌入式操作系统
- 5.1.1 为什么使用操作系统
- 5.1.2 RTOS
- 5.2 FreeRTOS——小型实时操作系统内核
- 5.2.1 为什么选择FreeRTOS
- 5.2.2 FreeRTOS内核基础知识介绍
- 5.2.3 关于FreeRTOS的软件授权
- 5.3 FreeRTOS的RISC-Ⅴ平台移植
- 5.3.1 FreeRTOS的移植
- 5.3.2 FreeRTOS内核源码结构
- 5.3.3 FreeRTOSConfig.h内核配置头文件
- 5.3.4 portmacro.h宏定义文件
- 5.3.5 port.c文件
- 5.3.6 portASM.s汇编实现文件
- 5.4 FreeRTOS的UART驱动结构分析、移植及应用
- 5.4.1 UART简介
- 5.4.2 UART驱动结构分析
- 5.4.3 FreeRTOS下的UART发送与接收
- 5.4.4 基于FreeRTOS的UART其他功能
- 5.4.5 FreeRTOS下的UART移植与应用
- 第6章 RT-Thread实时操作系统原理与应用
- 6.1 RT-Thread Nano介绍
- 6.1.1 RT-Thread简介
- 6.1.2 RT-Thread Nano软件结构
- 6.1.3 RT-Thread Nano特性
- 6.2 RT-Thread内核移植原理
- 6.2.1 RT-Thread目录结构
- 6.2.2 RT-Thread CPU架构移植
- 6.2.3 RT-Thread板级支持移植
- 6.3 移植RT-Thread到FE310微控制器
- 6.3.1 构建rtthread-metal包
- 6.3.2 构建板级支持文件
- 6.3.3 裁剪RT-Thread
- 6.4 使用Freedom Studio开发RT-Thread
- 6.4.1 rtthread-metal包
- 6.4.2 example-rtthread例程
- 6.4.3 在Freedom Studio中导入example-rtthread
- 6.5 移植FinSH组件
- 6.5.1 添加串口控制台
- 6.5.2 移植FinSH组件
- 6.5.3 修改LD连接文件
- 6.6 RT-Tread的UART驱动结构分析、移植及应用
- 6.6.1 RT-Tread外设驱动
- 6.6.2 UART驱动结构分析
- 6.6.3 UART的移植与应用
- 第7章 SiFive Learn Inventor开发系统应用开发实例
- 7.1 SiFive Learn Inventor开发系统组成
- 7.1.1 SPI闪存
- 7.1.2 I/O扩展连接器
- 7.1.3 无线连接
- 7.1.4 连接USB接口
- 7.2 在SiFive Learn Inventor开发系统点亮LED灯
- 7.2.1 构件化的设计思想
- 7.2.2 点亮LED灯
- 7.3 在SiFive Learn Inventor开发系统使用按键
- 7.3.1 中断的基本概念
- 7.3.2 中断服务程序设计
- 7.3.3 让按键控制LED灯
- 7.4 红外循迹小车
- 7.4.1 红外传感器
- 7.4.2 其他参考实例
- 7.4.3 应用实例
- 7.4.4 PID控制算法介绍
- 7.5 超声波避障小车
- 7.5.1 超声波测距原理
- 7.5.2 温度对测距的影响
- 7.5.3 超声波传感器介绍及使用
- 7.5.4 软件程序设计
- 附录A Amazon FreeRTOS认证
- A.1 搭建测试项目
- A.1.1 下载测试代码
- A.1.2 测试项目设置
- A.1.3 移植功能库准备
- A.2 串口输出
- A.2.1 准备内容
- A.2.2 操作步骤
- A.3 FreeRTOS内核移植
- A.3.1 准备内容
- A.3.2 操作步骤
- A.4 蓝牙低功耗功能
- A.4.1 准备内容
- A.4.2 操作步骤
- 附录B Amazon FreeRTOS移植
- B.1 系统要求
- B.1.1 硬件要求
- B.1.2 网络连接要求
- B.2 下载Amazon FreeRTOS进行移植
- B.2.1 下载Amazon FreeRTOS
- B.2.2 从GitHub克隆Amazon FreeRTOS仓库
- B.3 设置用于移植的Amazon FreeRTOS源代码
- B.3.1 配置已下载的Amazon FreeRTOS数据资料
- B.3.2 设置用于测试的Amazon FreeRTOS源代码
- B.4 移植Amazon FreeRTOS库
- B.4.1 执行宏configPRINT_STRING()
- B.4.2 配置FreeRTOS内核端口
- B.4.3 移植WiFi库
- B.4.4 移植安全套接字库
- B.4.5 移植PKCS#11库
- B.4.6 移植TLS库
- B.4.7 配置用于测试的MQTT库
- B.4.8 配置用于测试的HTTPS客户端库
- B.4.9 移植OTA库
- B.4.10 移植蓝牙低功耗库
- 附录C 自制竞赛用智能车
- C.1 机械结构设计
- C.1.1 底盘设计
- C.1.2 驱动设计
- C.1.3 电源布局
- C.1.4 SiFive Learn Inventor开发系统立式插槽布局
- C.2 电子电路设计
- C.2.1 电源稳压电路
- C.2.2 电动机驱动电路
- C.2.3 感光电路
- C.2.4 外围接口电路
- C.3 控制程序设计
- C.3.1 驱动程序设计
- C.3.2 控制算法设计
- 附录D SiFive Learn Inventor开发系统常见问题解答
- D.1 在Ubuntu上的例程
- D.2 SEGGER J-Link OB调试器未接入
- D.2.1 SEGGER J-Link OB调试器配置
- D.2.2 控制台配置
- D.3 恢复SiFive Learn Inventor开发系统出厂设置
- D.4 无法刻录程序
- D.5 恢复开发系统出厂设置后仍无法刻录程序
- D.6 调试参考信息
- D.7 一般信息
- 参考文献
- 封底
出版方
电子工业出版社
电子工业出版社成立于1982年10月,是国务院独资、工信部直属的中央级科技与教育出版社,是专业的信息技术知识集成和服务提供商。经过三十多年的建设与发展,已成为一家以科技和教育出版、期刊、网络、行业支撑服务、数字出版、软件研发、软科学研究、职业培训和教育为核心业务的现代知识服务集团。出版物内容涵盖了电子信息技术的各个分支及工业技术、经济管理、科普与少儿、社科人文等领域,综合出版能力位居全国出版行业前列。