万本电子书0元读

万本电子书0元读

顶部广告

SiFive 经典RISC-V FE310微控制器原理与实践电子书

售       价:¥

48人正在读 | 1人评论 6.2

作       者:陈宏铭

出  版  社:电子工业出版社

出版时间:2020-12-01

字       数:20.6万

所属分类: 科技 > 计算机/网络 > 计算机理论与教程

温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印

为你推荐

  • 读书简介
  • 目录
  • 累计评论(0条)
  • 读书简介
  • 目录
  • 累计评论(0条)
本书以让读者快速掌握FE310嵌入式微控制器为目的,由浅入深地带领读者进入RISC-Ⅴ的世界。本书共分为7章,系统地介绍了SiFive E系列32位RISC-Ⅴ微控制器的体系结构、SiFive E31内核、片内存储系统、系统控制模块、外围设备接口的特点与性能;还介绍了SiFive Freedom Studio集成开发环境,Freedom E-SDK驱动库开发及SiFive Learn Inventor开发系统,开发系统连接外部红外与超声波模块的拓展应用开发实例,有初步C语言基础的读者可轻松上手;还利用后两章辅以大量的例程,讲解了FreeRTOS与RT-Thread等实时多任务操作系统的原理与应用。本书以常见的UART接口驱动结构进行分析、移植及代码解说,对于想要初步学习RTOS系统原理的人来说是一个不错的选择。附录C给出了自制竞赛用智能车实例,达到软件开发结合硬件系统设计的效果。 本书内容丰富实用、层次清晰、叙述详尽,书中穿插的实例程序全部使用C语言编写,且在Freedom Studio集成开发环境上编译通过,方便读者教学与自学,非常适合RISC-Ⅴ嵌入式微控制器的初学者;还可以作为高等院校计算机科学与技术、电子信息工程、通信工程、自动控制、电气自动化、嵌入式、物联网等相关专业本科生或研究生,进行RISC-Ⅴ微控制器系统与RTOS教学的嵌入式相关课程辅助教材;本书着重培养学生实践应用能力,因此还可以作为全国大学生电子设计竞赛RISC-Ⅴ子赛题的培训教材,尤其适合参加智能车竞赛的同学参考;同时,还可以作为具有一定C语言知识和硬件基础的嵌入式系统开发工程师和研究人员进行RISC-Ⅴ微控制器系统开发与应用的参考书。
目录展开

前折页

内容简介

推荐语(按反馈时间排序)

序一

序二

前言

第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 一般信息

参考文献

累计评论(0条) 0个书友正在讨论这本书 发表评论

发表评论

发表评论,分享你的想法吧!

买过这本书的人还买过

读了这本书的人还在读

回顶部