幫助中心 | 我的帳號 | 關於我們

RISC-V架構與嵌入式開發快速入門

  • 作者:胡振波
  • 出版社:人民郵電
  • ISBN:9787115494139
  • 出版日期:2019/01/01
  • 裝幀:平裝
  • 頁數:354
人民幣:RMB 79 元      售價:
放入購物車
加入收藏夾

內容大鋼
    胡振波著的《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偽指令列表

  • 商品搜索:
  • | 高級搜索
首頁新手上路客服中心關於我們聯絡我們Top↑
Copyrightc 1999~2008 美商天龍國際圖書股份有限公司 臺灣分公司. All rights reserved.
營業地址:臺北市中正區重慶南路一段103號1F 105號1F-2F
讀者服務部電話:02-2381-2033 02-2381-1863 時間:週一-週五 10:00-17:00
 服務信箱:bookuu@69book.com 客戶、意見信箱:cs@69book.com
ICP證:浙B2-20060032