全部商品分类

您现在的位置: 全部商品分类 > 电子电脑 > 计算机技术 > 硬件及维护

RISC-V架构与嵌入式开发快速入门

  • 定价: ¥79
  • ISBN:9787115494139
  • 开 本:16开 平装
  •  
  • 折扣:
  • 出版社:人民邮电
  • 页数:354页
  • 作者:胡振波
  • 立即节省:
  • 2019-01-01 第1版
  • 2019-01-01 第1次印刷
我要买:
点击放图片

导语

  

内容提要

  

    胡振波著的《RISC-V架构与嵌入式开发快速入门》是一本介绍RISC-V架构嵌入式开发的入门书籍,以通俗的语言系统介绍了嵌入式开发的基础知识和RISC-V架构的内容,力求帮助读者快速掌握RISC-V架构的嵌入式开发技术。
    本书共分为两部分。第一部分为第1~14章,基本涵盖了使用RISC-V架构进行嵌入式开发所需的所有关键知识。第二部分为附录部分,详细介绍了RISC-V指令集架构,辅以作者加入的背景知识解读和注解,以便于读者理解。
    本书适合嵌入式开发的相关从业者和广大的RISC—V爱好者阅读使用,也适合作为大中专院校师生学习RISC-v架构和嵌入式开发的指导用书。

作者简介

    胡振波,上海交通大学电子工程系本科、微电子学院硕士。拥有业界多年ASIC和CPU设计与验证经验,先后在Marvell任职ARM架构CPU设计高级工程师、在Synopsys任职研发经理、在比特大陆任职IC设计总监、在武汉聚芯微电子任职架构师,现致力于推动RISC-V架构在国内的传播和发展。
    作者开发并开源了蜂鸟E200系列超低功耗RISC-V处理器内核。感兴趣的读者可关注作者如下微信公众号(或搜索“硅农亚历山大”),加入开源蜂鸟E200处理器核的交流讨论微信群。并且了解公众号中更多有关Verilog设计、CPU和RISC-V的知识分享。

目录

第1章  进入32位时代,谁能成为下一个
  1.1  磨刀不误砍柴工—CPU基础知识介绍
    1.1.1  ISA—CPU的灵魂
    1.1.2  CISC与RISC
    1.1.3  32位与64位架构
    1.1.4  ISA众生相
    1.1.5  CPU的领域之分
    1.1.6  8位时代的传奇“前辈”—
    1.1.7  IoT的崛起—32位时代的到来
  1.2  无敌是多么寂寞—ARM统治着的世界
    1.2.1  独乐乐与众乐乐—ARM公司的盈利模式
    1.2.2  小个子有大力量—无处不在的Cortex-M系列
    1.2.3  移动王者—Cortex-A系列在手持设备领域的巨大成功
    1.2.4  进击的巨人—ARM进军PC与服务器领域的雄心
    1.2.5  游戏终结者之ARM
  1.3  东边日出西边雨,道是无晴却有晴—RISC-V登场
  1.4  RISC-V和其他开放架构有何不同
    1.4.1  “平民英雄”—OpenRISC
    1.4.2  “豪门显贵”—SPARC
    1.4.3  “名校优生”—RISC-V
  1.5  结语:进入32位时代,谁能成为深嵌入式领域的下一个8051?
第2章  开源蜂鸟E203超低功耗RISC-V Core与SoC
  2.1  乱花渐欲迷人眼
  2.2  与众不同的蜂鸟E203处理器
  2.3  蜂鸟虽小,五脏俱全—蜂鸟E203简介
  2.4  蜂鸟E203性能指标
  2.5  蜂鸟E203配套SoC
第3章  大道至简—RISC-V架构之魂
  3.1  简单就是美—RISC-V架构的设计哲学
    3.1.1  无病一身轻—架构的篇幅
    3.1.2  能屈能伸—模块化的指令集
    3.1.3  浓缩的都是精华—指令的数量
  3.2  RISC-V指令集架构简介
    3.2.1  模块化的指令子集
    3.2.2  可配置的通用寄存器组
    3.2.3  规整的指令编码
    3.2.4  简洁的存储器访问指令
    3.2.5  高效的分支跳转指令
    3.2.6  简洁的子程序调用
    3.2.7  无条件码执行
    3.2.8  无分支延迟槽
    3.2.9  零开销硬件循环
    3.2.10  简洁的运算指令
    3.2.11  优雅的压缩指令子集
    3.2.12  特权模式
    3.2.13  CSR寄存器
    3.2.14  中断和异常
    3.2.15  矢量指令子集
    3.2.16  自定制指令扩展
    3.2.17  总结与比较
第4章  RISC-V架构的中断和异常
  4.1  中断和异常概述
    4.1.1  中断概述
    4.1.2  异常概述
    4.1.3  广义上的异常
  4.2  RISC-V架构异常处理机制
    4.2.1  进入异常
    4.2.2  退出异常
    4.2.3  异常服务程序
  4.3  RISC-V架构中断定义
    4.3.1  中断类型
    4.3.2  中断屏蔽
    4.3.3  中断等待
    4.3.4  中断优先级与仲裁
    4.3.5  中断嵌套
    4.3.6  总结比较
  4.4  RISC-V架构异常相关CSR寄存器
  4.5  蜂鸟E203的中断和异常实现
第5章  开源蜂鸟E203 MCU SoC总体介绍
  5.1  Freedom E310 SoC简介
  5.2  蜂鸟E203 MCU SoC简介
  5.3  蜂鸟E203 MCU SoC框图
  5.4  蜂鸟E203 MCU SoC存储资源
    5.4.1  片上存储资源
    5.4.2  片外Flash存储资源
  5.5  蜂鸟E203 MCU SoC外设资源
  5.6  蜂鸟E203 MCU SoC地址分配
  5.7  蜂鸟E203 MCU SoC时钟域划分
  5.8  蜂鸟E203 MCU SoC电源域划分
  5.9  蜂鸟E203 MCU SoC低功耗模式
  5.10  蜂鸟E203 MCU SoC的全局复位
  5.11  蜂鸟E203 MCU SoC的上电流程控制
  5.12  蜂鸟E203 MCU SoC芯片引脚表
  5.13  蜂鸟E203 MCU SoC的GPIO引脚分配
  5.14  蜂鸟E203 MCU SoC的中断处理
    5.14.1  蜂鸟E203处理器核的异常和中断处理
    5.14.2  蜂鸟E203处理器的中断接口
    5.14.3  CLINT模块生成计时器中断和软件中断
    5.14.4  PLIC管理多个外部中断
第6章  开源蜂鸟E203 MCU SoC外设介绍
  6.1  蜂鸟E203 MCU SoC外设总述
  6.2  PLIC
  6.3  CLINT
  6.4  LCLKGEN
    6.4.1  LCLKGEN简介
    6.4.2  LCLKGEN寄存器列表
  6.5  HCLKGEN
    6.5.1  HCLKGEN简介
    6.5.2  HCLKGEN寄存器列表
  6.6  GPIO
    6.6.1  GPIO特性
    6.6.2  GPIO寄存器列表
    6.6.3  I O结构和IOF模式
    6.6.4  SoC各外设复用GPIO引脚
    6.6.5  GPIO中断
    6.6.6  GPIO_VALUE寄存器
    6.6.7  GPIO_INPUT_EN寄存器
    6.6.8  GPIO_OUTPUT_EN寄存器
    6.6.9  GPIO_PORT寄存器
    6.6.10  GPIO_PUE寄存器
    6.6.11  GPIO_DS寄存器
    6.6.12  GPIO_OUTPUT_XOR寄存器
    6.6.13  GPIO_RISE_IE、GPIO_RISE_IP等寄存器
  6.7  SPI
    6.7.1  SPI背景知识简介
    6.7.2  SPI特性
    6.7.3  SPI寄存器列表
    6.7.4  SPI接口数据线
    6.7.5  通过SPI_SCKDIV寄存器配置SCK时钟频率
    6.7.6  通过SPI_SCKMODE寄存器配置SCK的极性与相位
    6.7.7  通过SPI_CSID寄存器配置SPI使能信号
    6.7.8  通过SPI_CSDEF寄存器配置使能信号的空闲值
    6.7.9  通过SPI_CSMODE寄存器配置使能信号的行为
    6.7.10  通过SPI_DELAY0和SPI_DELAY1寄存器配置使能信号的行为
    6.7.11  通过SPI_FCTRL寄存器使能QSPI0的Flash XiP模式
    6.7.12  通过SPI_FFMT寄存器控制QSPI0读取外部Flash
    6.7.13  通过SPI_FMT寄存器配置传输参数
    6.7.14  通过SPI_TXDATA寄存器发送数据
    6.7.15  通过SPI_RXDATA寄存器接收数据
    6.7.16  通过SPI_TXMARK寄存器配置发送中断阈值
    6.7.17  通过SPI_RXMARK寄存器配置接收中断阈值
    6.7.18  通过SPI_IE和SPI_IP寄存器控制中断
  6.8  I2C
    6.8.1  I2C背景知识简介
    6.8.2  I2C特性
    6.8.3  I2C寄存器列表
    6.8.4  I2C接口数据线
    6.8.5  通过I2C_PRERlo和I2C_PRERhi寄存器配置SCL时钟频率
    6.8.6  通过I2C_CTR寄存器配置功能和中断使能
    6.8.7  I2C模块产生中断
    6.8.8  通过I2C_TXR和I2C_RXR寄存器发送和接收数据
    6.8.9  通过I2C_CR和I2C_SR寄存器发起命令和查看状态
    6.8.10  初始化I2C模块的序列
    6.8.11  通过I2C模块向外部从设备写数据的常用序列
    6.8.12  通过I2C模块从外部从设备读数据的常用序列
  6.9  UART
    6.9.1  UART背景知识简介
    6.9.2  UART特性
    6.9.3  UART寄存器列表
    6.9.4  UART接口数据线
    6.9.5  通过UART_TXDATA寄存器发送数据
    6.9.6  通过UART_RXDATA寄存器接收数据
    6.9.7  通过UART_TXCTRL寄存器进行发送控制
    6.9.8  通过UART_RXCTRL寄存器进行接收控制
    6.9.9  通过UART_IE和UART_IP寄存器控制中断
    6.9.10  通过UART_DIV寄存器配置波特率
  6.10  PWM
    6.10.1  PWM背景知识简介
    6.10.2  PWM特性和结构图
    6.10.3  PWM寄存器列表
    6.10.4  通过PWMCFG寄存器进行配置
    6.10.5  计数器计数值PWMCOUNT寄存器和PWM周期
    6.10.6  计数器比较值PWMS寄存器
    6.10.7  PWM接口数据线
    6.10.8  产生左对齐或者右对齐的脉冲信号
    6.10.9  产生居中对齐的脉冲信号
    6.10.10  配置pwmcmpgang结连产生任意形状的脉冲信号
    6.10.11  配置pwmdeglitch防止输出毛刺
    6.10.12  PWM产生中断
  6.11  WDT
    6.11.1  WDT背景知识简介
    6.11.2  WDT特性和结构图
    6.11.3  WDT寄存器列表
    6.11.4  通过WDOGCFG寄存器进行配置
    6.11.5  计数器计数值WDOGCOUNT寄存器
    6.11.6  通过WDOGKEY寄存器解锁
    6.11.7  通过WDOGFEED寄存器喂狗
    6.11.8  计数器比较值WDOGS寄存器
    6.11.9  通过WDOGCMP寄存器配置阈值
    6.11.10  WDT产生全局复位
    6.11.11  WDT产生中断
  6.12  RTC
    6.12.1  RTC背景知识简介
    6.12.2  RTC特性和结构图
    6.12.3  RTC寄存器列表
    6.12.4  通过RTCCFG寄存器进行配置
    6.12.5  计数器计数值RTCHI RTCLO寄存器
    6.12.6  计数器比较值RTCS寄存器
    6.12.7  通过RTCCMP寄存器配置阈值
    6.12.8  RTC产生中断
  6.13  PMU
    6.13.1  PMU背景知识简介
    6.13.2  PMU特性和结构图
    6.13.3  PMU寄存器列表
    6.13.4  通过PMUKEY寄存器解锁
    6.13.5  通过PMUSLEEP寄存器进入休眠模式
    6.13.6  通过PMUSLEEPI寄存器配置休眠指令序列
    6.13.7  通过PMUBACKUP寄存器保存关键信息
    6.13.8  通过PMUIE寄存器配置唤醒条件
    6.13.9  通过PMUWAKEUPI寄存器配置唤醒指令序列
    6.13.10  通过PMUCAUSE寄存器查看唤醒原因
第7章  开源蜂鸟E203 MCU开发板与调试器
  7.1  蜂鸟E203 MCU开发板
  7.2  蜂鸟E203 JTAG调试器
第8章  编译过程简介
  8.1  GCC工具链介绍
    8.1.1  GCC工具链概述
    8.1.2  Binutils
    8.1.3  C运行库
    8.1.4  GCC命令行选项
  8.2  准备工作
    8.2.1  Linux安装
    8.2.2  准备Hello World程序
  8.3  编译过程
    8.3.1  预处理
    8.3.2  编译
    8.3.3  汇编
    8.3.4  链接
    8.3.5  一步到位的编译
  8.4  分析ELF文件
    8.4.1  ELF文件介绍
    8.4.2  ELF文件的段
    8.4.3  查看ELF文件
    8.4.4  反汇编
  8.5  嵌入式系统编译的特殊性
  8.6  本章小结
第9章  嵌入式开发特点与RISC-V GCC工具链
  9.1  嵌入式系统开发特点
    9.1.1  交叉编译和远程调试
    9.1.2  移植newlib或newlib-nano作为C运行库
    9.1.3  嵌入式引导程序和中断异常处理
    9.1.4  嵌入式系统链接脚本
    9.1.5  减少代码体积
    9.1.6  支持printf函数
    9.1.7  提供板级支持包
  9.2  RISC-V GCC工具链简介
    9.2.1  RISC-V GCC工具链种类
    9.2.2  riscv-none-embed工具链下载
    9.2.3  RISC-V GCC工具链的(?Cmarch=)和(?Cmabi=)选项
    9.2.4  RISC-V GCC工具链的(?Cmcmodel=)选项
    9.2.5  RISC-V GCC工具链的其他选项
    9.2.6  RISC-V GCC工具链的预定义宏
    9.2.7  RISC-V GCC工具链使用实例
第10章  RISC-V汇编语言程序设计
  10.1  汇编语言简介
  10.2  RISC-V汇编程序概述
  10.3  RISC-V汇编指令
  10.4  RISC-V汇编程序伪操作
  10.5  RISC-V汇编程序示例
    10.5.1  定义标签
    10.5.2  定义宏
    10.5.3  定义常数
    10.5.4  立即数赋值
    10.5.5  标签地址赋值
    10.5.6  设置浮点舍入模式
    10.5.7  完整实例
  10.6  在C C 程序中嵌入汇编
    10.6.1  GCC内联汇编简述
    10.6.2  GCC内联汇编“输出操作数”和“输入操作数”部分
    10.6.3  GCC内联汇编“可能影响的寄存器或存储器”部分
    10.6.4  GCC内联汇编参考实例一
    10.6.5  GCC内联汇编参考实例二
    10.6.6  小结
  10.7  在汇编中调用C C 函数
  10.8  本章小结
第11章  基于HBird-E-SDK平台的软件开发与运行
  11.1  HBird-E-SDK平台简介
  11.2  HBird-E-SDK平台代码结构
  11.3  HBird-E-SDK板级支持包解析
    11.3.1  移植了Newlib桩函数
    11.3.2  支持了printf函数
    11.3.3  提供系统链接脚本
    11.3.4  系统启动引导程序
    11.3.5  系统异常和中断处理
    11.3.6  减少代码体积
  11.4  使用HBird-E-SDK开发和编译程序
    11.4.1  在HBird-E-SDK环境中安装工具链
    11.4.2  在HBird-E-SDK环境中开发程序
    11.4.3  编译使得程序从Flash直接运行
    11.4.4  编译使得程序从ITCM中运行
    11.4.5  编译使得程序从Flash上载至ITCM中运行
  11.5  使用HBird-E-SDK下载程序
    11.5.1  JTAG调试器与MCU原型开发板的连接
    11.5.2  设置JTAG调试器在Linux系统中的USB权限
    11.5.3  将程序下载至MCU原型开发板
  11.6  在MCU原型开发板上运行程序
    11.6.1  程序从Flash直接运行
    11.6.2  程序从ITCM中运行
    11.6.3  程序从Flash上载至ITCM中运行
  11.7  使用GDB远程调试程序
    11.7.1  调试器工作原理
    11.7.2  GDB常用操作示例
    11.7.3  使用GDB调试Hello World示例
第12章  开源蜂鸟E203 MCU的更多示例程序
  12.1  Dhrystone示例程序
    12.1.1  Dhrystone示例程序功能简介
    12.1.2  Dhrystone示例程序代码结构
    12.1.3  运行Dhrystone
  12.2  CoreMark示例程序
    12.2.1  CoreMark示例程序功能简介
    12.2.2  CoreMark示例程序代码结构
    12.2.3  运行CoreMark
  12.3  Demo_IASM示例程序
    12.3.1  Demo_IASM示例程序功能简介
    12.3.2  Demo_IASM示例程序代码结构
    12.3.3  Demo_IASM示例程序源码解析
    12.3.4  运行Demo_IASM
  12.4  Demo_GPIO示例程序
    12.4.1  Demo_GPIO示例程序功能简介
    12.4.2  Demo_GPIO示例程序代码结构
    12.4.3  Demo_GPIO示例程序源码分析
    12.4.4  运行Demo_GPIO
  12.5  中断嵌套
第13章  Windows IDE集成开发调试环境
  13.1  MCU Eclipse IDE简介与安装
    13.1.1  MCU Eclipse IDE简介
    13.1.2  RISC-V MCU Eclipse下载
    13.1.3  RISC-V MCU Eclipse安装
  13.2  启动Eclipse
  13.3  创建Hello World项目
  13.4  配置Hello World项目
    13.4.1  配置工具链路径
    13.4.2  配置项目的编译和链接选项
    13.4.3  配置项目的BSP
    13.4.4  配置项目的包含路径和文件
  13.5  编译Hello World项目
  13.6  运行Hello World项目
    13.6.1  安装JTAG调试器在Windows系统中的USB驱动
    13.6.2  通过Eclipse下载程序至MCU开发板
    13.6.3  在MCU开发板上运行程序
  13.7  调试Hello World项目
  13.8  拓展一:基于MCU Eclipse运行调试demo_gpio示例
  13.9  拓展二:基于MCU Eclipse运行调试dhrystone示例
第14章  开源蜂鸟E203 MCU开发板移植RTOS
  14.1  RTOS简述
  14.2  常用实时操作系统概述
  14.3  FreeRTOS简介
  14.4  蜂鸟E203 MCU移植RTOS
附录A RISC-V架构指令集介绍
  A.1  RV32GC架构概述
  A.2  RV32E架构概述
  A.3  蜂鸟E203支持的指令列表
  A.4  寄存器组
    A.4.1  通用寄存器组
    A.4.2  CSR寄存器
  A.5  指令PC
  A.6  寻址空间划分
  A.7  大端格式或小端格式
  A.8  工作模式
  A.9  Hart概念
  A.10  复位状态
  A.11  中断和异常
  A.12  存储器地址管理
  A.13  存储器模型
  A.14  指令类型
    A.14.1  RV32IMAFDC指令列表
    A.14.2  基本整数指令(RV32I)
    A.14.3  整数乘法和除法指令(RV32M指令子集)
    A.14.4  浮点指令(RV32F,RV32D指令子集)
    A.14.5  存储器原子操作指令(RV32A指令子集)
    A.14.6  16位压缩指令(RV32C指令子集)
  A.15  伪指令
  A.16  指令编码
附录B RISC-V架构CSR寄存器介绍
  B.1  蜂鸟E203支持的CSR寄存器列表
  B.2  RISC-V标准CSR
    B.2.1  misa
    B.2.2  mvendorid
    B.2.3  marchid
    B.2.4  mimpid
    B.2.5  mhartid
    B.2.6  fflags
    B.2.7  frm
    B.2.8  fcsr
    B.2.9  mstatus
    B.2.10  mtvec
    B.2.11  mepc
    B.2.12  mcause
    B.2.13  mtval (mbadaddr)
    B.2.14  mie
    B.2.15  mip
    B.2.16  mscratch
    B.2.17  mcycle和mcycleh
    B.2.18  minstret和minstreth
    B.2.19  mtime、mtimecmp和msip
  B.3  蜂鸟E203自定义CSR330mcounterstop
附录C RISC-V架构的PLIC介绍
  C.1  概述
  C.2  PLIC中断目标332PLIC中断目标之阈值
  C.3  PLIC中断源
    C.3.1  PLIC中断源之闸口(Gateway)和IP
    C.3.2  PLIC中断源之编号(ID)
    C.3.3  PLIC中断源之优先级(Priority)
    C.3.4  PLIC中断源之中断使能(Enable)
  C.4  PLIC中断处理机制
    C.4.1  PLIC中断通知机制(Notification)
    C.4.2  PLIC中断响应机制(Claim)
    C.4.3  PLIC中断完成机制(Completion)
    C.4.4  PLIC中断完整流程
  C.5  PLIC寄存器总结
  C.6  总结与比较
附录D 存储器模型背景介绍
  D.1  为何要有存储器模型的概念
  D.2  存储器模型定义了什么
    D.2.1  按序一致性模型
    D.2.2  松散一致性模型
    D.2.3  释放一致性模型
    D.2.4  存储器模型总结
  D.3  存储器模型应用实例
  D.4  RISC-V架构的存储器模型
附录E 存储器原子操作指令背景介绍
  E.1  什么是“上锁”问题
  E.2  通过原子操作解决“上锁”问题
  E.3  通过互斥操作解决“上锁”问题
  E.4  RISC-V架构的相关指令
附录F RISC-V指令编码列表
  F.1  RV32I指令编码
  F.2  RV32M指令编码
  F.3  RV32A指令编码
  F.4  RV32F指令编码
  F.5  RV32D指令编码
  F.6  RVC指令编码
附录G RISC-V伪指令列表