riscv
__pop_
这个作者很懒,什么都没留下…
展开
-
RISC V (RV32+RV64) 架构 整体介绍
riscv RTOS基于rv32 的 freertos基于rv64 的 rt-thread(非官方)基于rv64 的 rt-thread(官方)[基于rv32 的 rt-thead(非官方)](-TODO原创 2021-09-02 15:53:53 · 8770 阅读 · 0 评论 -
riscv gp 寄存器 与 relaxation 技术
【代码】riscv gp 寄存器 与 relaxation 技术。原创 2023-06-16 12:34:30 · 782 阅读 · 0 评论 -
FreeRTOS 中 RISC-V-Qemu-virt_GCC 的调度时机
freertos riscv原创 2022-07-04 21:19:46 · 238 阅读 · 0 评论 -
FreeRTOS 中 RISC-V-Qemu-virt_GCC 的 锁机制 分析
freertos riscv 锁机制原创 2022-07-02 17:49:48 · 372 阅读 · 0 评论 -
RISCV 的 cache
cache riscv原创 2022-06-21 11:14:23 · 2409 阅读 · 0 评论 -
riscv-gnu-toolchain 编译出 riscv64-unknown-linux-gnu-gcc
参考https://zhuanlan.zhihu.com/p/258394849$ mkdir ~/work/riscv64-linux -p$ sudo mkdir /opt/riscv64$ cd ~/work/riscv64-linux$ git clone https://gitee.com/mirrors/riscv-gnu-toolchain$ cd riscv-gnu-toolchain$ git rm qemu$ git submodule update --init --r原创 2022-05-18 11:37:55 · 3464 阅读 · 0 评论 -
riscv代码调试遇到过的问题及坑
gdb 篇Could not fetch register "scause"; remote failure reply 'E14'原因该版本的gdb中不支持该 csr1.更新到一个高版本的gdb试试Cannot find bounds of current function原因abi的问题2.在gdb命令行中输入 set architecture riscv:rv32 试试链接篇target emulation `elf32-littleriscv' does not m原创 2022-04-15 16:25:13 · 7402 阅读 · 3 评论 -
各种 编译链 转换 C code 到汇编
riscvarm原创 2021-12-20 15:00:06 · 415 阅读 · 2 评论 -
内存一致性模型
内存一致性概念本文会使用「看见」这个词。当一个处理器(PA)对共享变量(V)的本地副本进行了修改,而另一个处理器(PB)用于保存相应变量的缓存行因此而失效或被更新,则本文称 PB 看见了 PA 对变量 V 的修改我们来看看一致性模型的定义。一致性模型,也就是一个用来规定新值"什么时候"传播到某一指定处理器的策略。这个定义看起来有点像缓存一致性协议缓存一致性协议也即一个用来将修改过的缓存副本"如何"传播给别的缓存。俩兄弟看着挺像的,但前者确定的是何时,而后者确定的是如何程序顺序 也就原创 2021-12-11 15:47:54 · 1746 阅读 · 7 评论 -
riscv 开发板 HiFive Unmatched 总览
板子在这里买 https://www.crowdsupply.com/sifive/hifive-unmatched资料在这里下 https://www.sifive.com/boards/hifive-unmatched1_soc_datasheet_fu740-c000-manual-v1p3.pdf*2_板级软件总体介绍_hifive-unmatched-sw-reference-manual-v1p0.pdf*3_产品硬件简介_HiFive4_产品硬件介绍_hifive-unmatche原创 2021-12-07 09:49:49 · 1783 阅读 · 0 评论 -
riscv 的 CSR
每一个hart有一套寄存器(4096csr?+gpr+fpr)csr由riscv定义标准部分和厂家实现定义csr 分类1.标准和实现 riscv privileged P6 2.2 CSR Listing2.按功能 异常相关寄存器 mtvec mcause mtval mepc mstatus mie mip 非寄存器//而是 memorymap mtime mtimecmp msip PLIC...原创 2021-11-23 13:49:19 · 985 阅读 · 0 评论 -
riscv的异常与中断
广义异常分类riscv 的异常(广义的异常)包括 // 与 arm 类似 , 参考 https://blog.csdn.net/u011011827/article/details/117431707 狭义的异常 // 异常总是同步的,精确的 取指令访问到非法的地址空间 读写数据访问地址属性出错 取指令地址非对齐 非法指令错误 执行调试断点指令(ebreak) // ebreak 除了可能会导致 进入 异常, 还可能进入 debug mode (二选一) 狭义的中断 // 中断总是原创 2021-11-23 13:21:47 · 3159 阅读 · 0 评论 -
riscv linux 参考启动流程
本篇博客涉及到了 riscv 从0开始 到 linux 启动成功的流程,涉及到以下标准 The Standardized Boot flow for RISC-V Platforms : http://crva.ict.ac.cn/crvs2020/index/slides/3-8.pdf本博客从以下角度分析启动历程 1. risc-v 的运行模式 2. 芯片启动配置 3. 非易失性存储器的镜像布局 4. risc-v 的启动流程 5. 易失性存储原创 2021-11-19 10:25:56 · 2898 阅读 · 0 评论 -
riscv 常见的ABI
RISC-V 编译器支持多个 ABI,具体取决于 F 和 D 扩展是否存在。RV32 的 ABI 分别名为 ilp32,ilp32f 和 ilp32d。ilp32 表示 C 语言的整型(int),长整型(long)和指针(pointer)都是 32 位,可选后缀表示如何传递浮点参数。在 lip32 中,浮点参数在整数寄存器中传递;在 ilp32f 中,单精度浮点参数在浮点寄存器中传递;在 ilp32d 中,双精度浮点参数也在浮点寄存器中传递。自然,如果想在浮点寄存中传递浮点参数,需要相应的浮点 .原创 2021-11-19 10:06:37 · 2675 阅读 · 0 评论 -
riscv 架构的思考
按道理,pc指到哪里,就应该执行哪里(前提是该位置支持XIP) 该位置在 system memory map 该位置最好还有二进制指令 pc的设置,可以由reset jtag 异常 跳转指令 和顺序加4 来改变riscv汇编语法类似 arm,第一个是目标数,第二个是源操作数(S type 指令相反)指令分类1.按功能2.按存储格式3.按是否是伪指令jtag不可以索引pc,索引dpc,并更新dpc。dpc的值应该就是pc的值每一个hart有一套寄存器(4096csr?+gpr原创 2021-11-19 10:01:54 · 558 阅读 · 0 评论 -
编译链中的riscv指令集与寄存器
编译链https://blog.csdn.net/u011011827/article/details/120086961$ which riscv64-unknown-elf-gcc/home/suweishuai/x-tools/riscv64-unknown-elf/bin/riscv64-unknown-elf-gcccodefreertos编译选项.c-D__riscv_float_abi_soft -DportasmHANDLE_INTERRUPT=handle_tr.原创 2021-11-17 12:23:33 · 1187 阅读 · 0 评论 -
riscv 指令集与寄存器
指令集RV32指令集 和 RV64指令集 并不是单独的 一类指令集的集合,而很多类指令集的集合RV32指令集 : RV32IMAFDC(即RV32GC)RV64指令集 : RV64IMAFDC(即RV64GC)RV64 指令集 和 RV32 指令集 都是 编码 为 32bit(除了RV32C(压缩)指令集编码为16bit) 寄存器分类1. CSR(4096个,包括你见到的除了x1类和f1类之外的所有寄存器,类似mstatus,用RVzicsr指令集访问)2. 通用寄存器(32个)3.原创 2021-11-17 10:01:30 · 7072 阅读 · 0 评论 -
FreeRTOS 中 RISC-V-Qemu-virt_GCC 的 运行流程 的异常分析
在 RISC-V-Reader-Chinese-v2p1.pdf 中RISC-V 中实现精确例外:保证异常之前的所有指令都完整地执行了,而后续的指令都没有开始执行(或等同于没有执行)所有 RISC-V 系统的共同问题是如何处理异常和屏蔽中断,这是下一节的主题。RISC-V 将 异常分为两类。 一类是同步异常 这类异常在指令执行期间产生,如访问了无效的存储器地址或执行了具有无效操作码的指令时 另一类是中断 它是与指令流异步的外部事件,比如鼠标的单击两种异常都会导致 1. 设置 m原创 2021-09-22 19:24:55 · 1110 阅读 · 0 评论 -
FreeRTOS 中 RISC-V-Qemu-virt_GCC 的 运行流程 的Mode分析
大家都知道, riscv 有三种Mode ,分别是 M-mode S-mode U-mode , boot 时 为 M-modefreertos 全程 为 M-mode当前Mode没有发现 哪个寄存器 可以 show 当前 ModeRISC-V Machine Mode 和 User Mode 相互切换RISC-V特权指令和CSRMode 切换Machine Mode -> User Mode /* Switch Machine sub-mode to Use原创 2021-09-18 14:36:18 · 717 阅读 · 0 评论 -
qemu 中的仿真板 RISC-V VirtIO board
我之前根据 这篇文章 编译了 qemu,下面针对要用的virt RISC-V VirtIO board进行分析// 之前编译的 是 qemu-system-riscv32 和 qemu-system-riscv64 , 这是两个架构, 架构中 分为有 1块板子// 分别是 // qemu-system-riscv32 的 "virt RISC-V VirtIO board"// qemu-system-riscv64 的 "virt原创 2021-09-18 13:08:34 · 1192 阅读 · 0 评论 -
FreeRTOS 中 RISC-V-Qemu-virt_GCC 的 运行流程 的栈分析
细节分析 1. mode 切换2.sp 切换boot 时的栈 : _stack_top : 0x80091f0c la sp, _stack_top // 0x80091f0cstart.S 中的 "la sp, _stack_top" 第一个任务的栈 : 任务"Tmr Svc" 的 pxCurrentTCB 的 sp 成员 减去120 : 0x80082d38 // 1. 恢复 第一任务(下一任务) 的栈 load_x sp, pxCurrentTCB load原创 2021-09-17 14:56:10 · 667 阅读 · 0 评论 -
FreeRTOS 中 RISC-V-Qemu-virt_GCC 的 运行流程
该文章 中讲述了 FreeRTOS RISC-V-Qemu-virt_GCC 的 启动流程,本篇文章讲述一下 运行了流程我将 RISC-V-Qemu-virt_GCC 做了一些改动FreeRTOS/Demo/RISC-V-Qemu-virt_GCC/main_blinky.c 改为如下static void prvQueueSendTask( void *pvParameters ){ for( ;; ) { vSendStri原创 2021-09-16 19:51:45 · 838 阅读 · 0 评论 -
FreeRTOS 中 RISC-V-Qemu-virt_GCC 的 启动流程
以 FreeRTOSv202107.00 为例编译, 生成log ,看 编译 了 20个文件, 然后linkRISC-V-Qemu-virt_GCC 的相关文件boot 调试平台搭建1. make DEBUG=12. qemu-system-riscv32 -nographic -machine virt -net none \ -chardev stdio,id=con,mux=on -serial chardev:con \ -mon cha原创 2021-09-14 15:16:08 · 601 阅读 · 0 评论 -
riscv cpu 移植 rt-thread 需要考虑的内容
rt-rhread 移植 rv32 和 rv64 bsp 的 代码bsp/riscv32-virt/ // 和 rv32和rv64 没关系libcpu/risc-v/common // 兼容 rv32 和 rv64 // cpu 通用libcpu/risc-v/virt32 // virt32 cpu 独有libcpu/risc-v/virt64 // virt64 cpu 独有libcpu/risc-v/k210 // k210 64 cpu 独有libcpu/risc-v/原创 2021-09-11 17:42:17 · 551 阅读 · 0 评论 -
Crosstool-NG 编译 riscv64-unknown-elf-gcc
How to build toolchainenv setup主机环境: ubuntu-20.04.3-desktop-amd64.iso安装包 : sudo apt-get install net-tools openssh-server git vim make gcc gawk bison flex texinfo automake libtool-bin cvs libncurses5-dev ninja-build libglib2.0-dev libpixman-1-dev help原创 2021-09-03 17:44:03 · 1590 阅读 · 0 评论 -
基于 qemu 的 riscv32架构的 非官方rt-thread 体验 教程
主机环境: ubuntu-20.04.3-desktop-amd64.iso安装包 : sudo apt-get install net-tools openssh-server git vim make gcc gawk bison flex texinfo automake libtool-bin cvs libncurses5-dev ninja-build libglib2.0-dev libpixman-1-dev help2man编译器 : sifive 提供的 riscv6原创 2021-09-02 18:56:56 · 589 阅读 · 0 评论 -
qemu-system-riscv64 源码编译 及 运行参数
编译qemu// 配置qemu-6.1.0$./configure --target-list=riscv32-softmmu,riscv64-softmmu --prefix=/home/pop/work/qemu/qemu-out 2>&1 | tee log_configure.txt// 编译make 2>&1 | tee log_build.txt// 安装make install 2>&1 | tee log_install.txt原创 2021-09-02 16:45:42 · 2928 阅读 · 0 评论 -
基于 qemu 的 riscv64架构的 官方rt-thread 体验 教程
主机环境: ubuntu-20.04.3-desktop-amd64.iso安装包 : sudo apt-get install net-tools openssh-server git vim make gcc gawk bison flex texinfo automake libtool-bin cvs libncurses5-dev ninja-build libglib2.0-dev libpixman-1-dev help2man编译器 : sifive 提供的 riscv6原创 2021-09-02 15:48:13 · 760 阅读 · 0 评论 -
基于 qemu 的 riscv64架构的 非官方rt-thread 体验 教程
主机环境: ubuntu-20.04.3-desktop-amd64.iso安装包 : sudo apt-get install net-tools openssh-server git vim make gcc gawk bison flex texinfo automake libtool-bin cvs libncurses5-dev ninja-build libglib2.0-dev libpixman-1-dev help2man编译器 : sifive 提供的 riscv64-u原创 2021-09-02 15:24:15 · 427 阅读 · 0 评论 -
risc-v与SBI与ABI
基于qemu-riscv从0开始构建嵌入式linux系统ch5-1. 什么是多级BootLoader与opensbi(上)uboot启动流程_RISCV64 opensbi启动过程原创 2021-08-24 11:37:08 · 3758 阅读 · 0 评论 -
基于 qemu 的 riscv32架构的 freertos 体验 教程
我在 freertos 最新版本中看到了 FreeRTOSv202107.00\FreeRTOS\Demo\RISC-V-Qemu-virt_GCC准备搭环境体验一下 ,因为我后续要做类似的工作---搭环境是比较麻烦的一件事,我准备在 ubuntu-16.04.7 iso 做出的虚拟机上 做这件事但是, 找了一些 源, 都找不到 qemu-system-riscv32 . 去官网下载 qemu-6.1.0 并编译 ,要求我装 python3.6 ,我去 源中找 python3.6 , 找不到.原创 2021-09-01 15:17:12 · 3349 阅读 · 4 评论