RISC V (RV32+RV64) 架构 整体介绍

文章目录

    • riscv 市场
        • 芯片介绍
        • 软件介绍
        • 开发板介绍
        • PC介绍
    • riscv 架构
        • 编程模型(指令集/寄存器/ABI/SBI)
          • 运行状态
          • 指令集
          • 寄存器
          • riscv32和riscv64两者的区别
          • 非特权级别(u-mode)下不建议访问的指令与寄存器
          • ABI
          • 扩展指令集
        • 异常模型
        • 内存模型
          • MMU
          • 内存一致性
            • 缓存一致性
            • 原子性
            • memory order
          • cache
        • debug架构
          • External Debug
          • Self-hosted Debug
          • Trace
        • BOOT模型
        • 虚拟化模型
        • 安全模型
    • 开发工具
        • gcc toolchain & gdb
        • qemu
        • 常见开发环境
    • 软件开发
        • riscv SBI 编程
        • 裸机(baremetal)开发
        • RTOS
          • rt-thread
          • freertos
        • linux
          • riscv-linux 镜像
          • riscv-linux boot 符号
          • debug
          • boot
          • boot时的内存管理
          • 架构相关代码
          • 通用知识:如何新增一个架构
    • 附录 : RISCV 参考资料 online docs
        • TOOLS
        • CODES
        • risc v

riscv 市场

芯片介绍

  • 市场上的riscv芯片

软件介绍

  • riscv上的软件列表

开发板介绍

  • riscv 开发板 哪吒 boot&硬件解读

PC介绍

  • 市面上的单板riscv计算机
  • HiFive Unmatched 总览

riscv 架构

  • riscv 架构的思考

编程模型(指令集/寄存器/ABI/SBI)

运行状态
没有这个概念
指令集
  • riscv 指令集 与 编译链中的riscv指令集
  • ARMv7/ARMv8/RV32/RV64指令集及寄存器对比
寄存器
  • riscv 寄存器 与 编译链中的riscv寄存器
  • riscv 的CSR
riscv32和riscv64两者的区别
非特权级别(u-mode)下不建议访问的指令与寄存器
// 指令
sret/wfi/sfence.wma
// 寄存器
s-mode 的 csr
m-mode 的 csr
ABI
  • risc-v与SBI与ABI及riscv常见的ABI及其体现
  • 基于fp的栈回溯
  • 基于gp的relaxation
  • [基于tp的]
  • [riscv 没有pop/push指令,那他是怎么使用sp的]
  • [zero寄存器为riscv带来了什么]
  • [t0/t1/t2 有什么用]
扩展指令集
  • 扩展指令集

异常模型

  • riscv的异常与中断及实例
  • [工作模式]及实例
M-mode S-mode U-mode debug-mode

内存模型

MMU
  • RISC V的MMU
内存一致性
  • A Primer on Memory Consistency and Cache Coherence
  • 内存一致性: A.缓存一致性 B.原子性 C.memory order
缓存一致性
  • 缓存一致性问题分类及arm解决方案
  • rv的cache
原子性
  • 原子操作amoswap
memory order
  • 乱序和屏障1 : 总览 及 编译器内存屏障

  • 乱序和屏障2 : UP单核需要处理的CPU乱序问题

  • RVWMO 内存一致性模型TODO

cache
  • 高速缓存与一致性专栏索引

  • cache 概念详解

  • riscv 的cache 实现

debug架构

External Debug
jtag
Self-hosted Debug
ebreak 指令
Trace

BOOT模型

  • 官方 bootflow 介绍1
  • 官方 bootflow 介绍2

虚拟化模型

安全模型

开发工具

gcc toolchain & gdb

  • 编译器0 : 在线编译器

  • 编译器1 : Crosstool-NG… … 编译出 riscv64-unknown-elf-gcc

  • 编译器2 : riscv-gnu-toolchain 编译出 riscv64-unknown-linux-gnu-gcc

  • 编译器3 : sifive … … … … …发布的 riscv64-unknown-elf-gcc

  • 编译器4 : ubuntu … … … … .发布的 riscv64-linux-gnu-gcc , come from package gcc-riscv64-linux-gnu

  • 编译器5 : andes … … … … …发布的riscv64-linux-gcc

win : riscv64-linux-gcc/riscv64-elf-gcc/riscv32-linux-gcc/riscv32-elf-gcc
linux : riscv64-linux-gcc

  • diff in riscv64-unknown-elf-gcc & riscv64-unknown-linux-gnu-gcc
  • riscv 编译链 转换 C code 到汇编

qemu

  • qemu 6.1.0 编译出 qemu-system-riscv32
  • ubuntu20.04 安装 qemu-system-misc

  • qemu 6.1.0 运行参数

  • qemu 6.1.0 中的仿真板 RISC-V VirtIO board

  • 如何在qemu上添加一个platform 专栏

  • qemu riscv 开发板介绍

常见开发环境

芯来科技 的 Nuclei SDK

软件开发

riscv SBI 编程

  • RISC-V64 opensbi启动过程
  • opensbi下的riscv64裸机系列编程1(串口输出)
  • opensbi下的riscv64裸机编程2(中断与异常)

裸机(baremetal)开发

  • PLIC & CLINT

  • RV64 V扩展编程

  • riscv代码调试遇到过的问题及坑

  • ARMv7/ARMv8/RV32/RV64裸机编程中的区别

  • 兼容ARMv7/ARMv8/RV32/RV64的一个裸机qemu工程

  • 别人的工程

TODO : opensbi 在什么时候才会用到
	MSU 三模式肯定会用到
	MU 	两模式会不会用到?
	M 	一模式会不会用到?

RTOS

rt-thread
  • 基于rv64 的 rt-thread(官方)

  • 基于rv64 的 rt-thread(非官方)及 我的virt64

  • 基于rv32 的 rt-thread(非官方)及 我的virt32

  • rt-thread cpu 移植

freertos
  • FreeRTOS的简单认识与各模块的符号

  • 基于RV32 的 FreeRTOS(官方)体验教程

  • FreeRTOS 在 RV64 qemu-virt 板 上的移植

  • FreeRTOS 在RISCV上的port


  • FreeRTOS 中 RISC-V-Qemu-virt_GCC 的 启动流程
  • FreeRTOS 中 RISC-V-Qemu-virt_GCC 的 运行流程
  • FreeRTOS 中 RISC-V-Qemu-virt_GCC 的 运行流程 的栈分析
  • FreeRTOS 中 RISC-V-Qemu-virt_GCC 的 运行流程 的Mode分析
  • FreeRTOS 中 RISC-V-Qemu-virt_GCC 的 运行流程 的异常分析
  • FreeRTOS 中 RISC-V-Qemu-virt_GCC 的 锁机制 分析
  • FreeRTOS 中 RISC-V-Qemu-virt_GCC 的调度时机

linux

riscv-linux 镜像
riscv-linux boot 符号
  • arm32-linux boot 符号总览
  • rv32-linux boot 符号总览
  • rv64-linux boot 符号总览
debug
  • gdb调试qemu virt板 rv64 linux 各个过程
  • gdb调试qemu virt板 rv32 linux 各个过程
boot
  • riscv linux 从加载到start_kernel简版
  • riscv linux 参考启动流程
boot时的内存管理
  • RISC 架构 linux boot 临时页表 对比 ARM32 ARM64 RV32 RV64
架构相关代码
通用知识:如何新增一个架构
  • 将 Linux 移植到新的处理器架构,第 1 部分:基础前言
  • 将 Linux 移植到新的处理器架构,第 2 部分:早期代码

附录 : RISCV 参考资料 online docs

TOOLS

  • gdb online doc & document
  • gcc online doc
  • qemuonline doc
  • manpage

CODES

  • codes online
  • LFS
  • BLFS
  • linuxonline doc
  • freertos
  • rt-thread
  • threadx

risc v

  • riscv官网 & riscv-specifications &
  • riscv教程
相关官网网址
https://github.com/riscv-non-isa
https://github.com/riscv
http://crva.ict.ac.cn/

核心
RISC-V-Reader-Chinese-v2p1.pdf 				: 中文手册
riscv-spec-20191213.pdf 					: 非特权指令集
riscv-privileged-20190608.pdf 				: 特权指令集
Design of the RISC-V Instruction Set Architecture EECS-2016-1.pdf 
riscv-abi.pdf
riscv-sbi.pdf

debug&trace
riscv-debug-release.pdf  riscv-debug-stable.pdf : debug
riscv-trace-spec.pdf : trace
5001-Nexus_11497-DAC10.pdf : trace
debugger_riscv.pdf 	: Lauterbach debug 相关手册

启动
The Standardized Boot flow for RISC-V Platforms.pdf : 启动流程
Summit_bootflow.pdf
ELCE_2019_final_upload.pptx
FOSDEM_2020_Atish.pdf
Linux_plumbers_bootflow.pdf
The_role_of_open_source_firmware_in_RISC-V.pdf


虚拟化
A First Look at RISC-V Virtualization from an Embedded Systems Perspective.pdf 

简单介绍 : 入门用
RISC-V and Open Hardware BoF
Xvisor: Embedded Hypervisor for RISC-V
risc-v-getting-started-guide.pdf

//其他个人资料,辅助理解
https://zhuanlan.zhihu.com/p/102484084
虚拟化: https://github.com/FengWuCB/RVirt
虚拟化: https://github.com/kvm-riscv
指令集 : https://www.cnblogs.com/mikewolf2002/category/1329315.html
debug : https://ithelp.ithome.com.tw/m/articles/10197439

你可能感兴趣的:(riscv,riscv)