问题标签 [riscv]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
riscv - Initializing stack pointer
I'm currently trying to use the GCC toolchain for RISC-V but i'm running into a few problems.
It looks like the stack pointer doesn't get initialized properly. I know i should initialize it myself, but i can't figure out where. I'm using the default linker script altered with the correct memory addresses and in this script a constant _gp gets set. This constant is used in the default startup code to initialize the gp register.
Unfortunately this doesn't set the sp register. How can i set up the stack pointer without using my own start up code?
riscv - 设置工具链时缺少配置
我正在尝试设置 RISC-V 工具链。我正在遵循 RISC V 网站中指定的说明。步骤是
步骤 1:git 子模块更新 --init --recursive 步骤 2:导出 RISCV=/path/to/install/riscv/toolchain 步骤 3:./build.sh
运行脚本时遇到错误 build.common 错误是 “build.common: line 30: ../configure: No such file or directory”
有人可以尝试解决这个问题吗?
riscv - 如何反汇编这些指令
我正在使用 riscv-spec-v2.0 编写一个小反汇编程序,并对以下说明以及如何正确反汇编它们有一些疑问:
1. FENCE指令在imm中有“pred”和“succ”位域
2. AMO指令在funct7中有“aq”和“rl”位
3.浮点指令在funct3中有一个“rm”位域
所有这些位域似乎都缺少汇编器中的映射。例如,第 50 页只写了“FENCE”,但没有说如何处理中间体。或者第 33 页有一个将 .aq 或 .rl 放在末尾的示例,但如果两者都存在,则不应该做什么。
4. SCALL、SBREAK 与 ECALL、EBREAK 相同,但也有 ERET:所以为什么不放弃 SCALL 和 SBREAK 而只使用 ECALL、EBREAK 和 ERET,否则很难反汇编这些操作码。
scala - 将 uncore 包添加到 Chisel 项目
rocc.scala
Rocket repo中有一个描述接口的文件rocc
,我想构建它的verilog代码并查看代码。我的问题是我不知道如何将其他包导入到我的项目中,例如“uncore. ”或“Util. ”并运行SBT
.
现在用于构建我刚刚使用的新项目build.sbt
,chisel-dependent.sbt
文件位于 chisel-tutorial/problems 文件夹中
谢谢
riscv - Chisel 中的 Queue() 函数有什么作用?
我正在阅读火箭芯片的源代码,在rocc.scala
文件中rocket/src/main/scala/
有一个AccumulatorExample
使用rocc
. 在代码的第一部分,有一个函数Queue()
我不知道它在做什么?
谢谢
riscv - 非 Zynq FPGA 上的火箭芯片
我想将火箭芯片移植到非 Zynq FPGA(altera Stratix V)上,该板不包含用于运行 riscv-fesvr 的 ARM 内核。我该如何启动端口?另外,有没有人试图在这样的板上运行火箭芯片?我可以为此指出一些资源吗?
cpu-registers - RISC-V 调用约定的 ABI 寄存器名称
我对 RISC-V ABI 寄存器名称感到困惑。例如,“RISC-V 指令集手册,卷 I:用户级 ISA,2.0 版”第 85 页中的表 18.2 指定堆栈指针sp
为 register x14
。然而,指令
由 riscv64-unknown-elf-as 编译为 0x00000113 (-m32
没有区别)。二进制:
所以这里sp
似乎是x2
。然后我搜索了一下,找到了RISC-V Linux User's Manual。该文件指出sp
是x30
。
那是什么?是否有不同的 ABI?我可以使用命令行选项将 ABI 设置为riscv64-unknown-elf-*
吗?某处有综合表吗?
simulation - RISCV 测试工具从 VCS 迁移到 Questasim Simulator 的问题
我一直在尝试模拟 RISCV 火箭核心,但不幸的是,我没有 Synopsys VCS 模拟器,因此rocketTestHarness.v
无法按原样使用该文件。RocketTestHarness.v 包含一个 vcs_main.cc 文件,该文件具有使用 DirectC 接口句柄(如vc_handle
和)的外部函数vc_getScalar vc_putScalar vc_put4stVector vc_4stVectorRef
。这些不适用于像 Questasim(我一直在使用的那个)这样的非 VCS 模拟器。有什么方法可以用来将rocketTestHarness.v
文件从 VCS 模拟器迁移到 Questasim 模拟器。或者有没有其他方法可以使用 Questasim 模拟火箭核心。
我看着这个,但我不确定这一切是如何工作的。不使用和模拟就不可能模拟火箭芯片riscv_fesrvr
,因为它可以在自然环境中工作。vcs_main.cc
如果这些函数可以转换为 DPI 调用逻辑,我愿意使用 DPI 调用。
如果有人可以为此提供一些帮助,我将不胜感激。
提前致谢!!
cpu-architecture - MemReq 和 MemResp 如何在 RoccIO 中准确工作 - RISCV
我试图弄清楚当我使用 RoCCIO 时如何在 RISCV 中读取和写入内存。但我无法清楚地了解发生了什么。尤其是我如何处理内存或者我应该如何使用内存tag
。是否有任何资源可以找到如何在 Rocket 核心和我的加速器之间传输数据?
他们在uncore/src/main/scala/consts.scala
路径中提到了不同类型的内存cmd
。但还有什么?
例如,我想将数组的起始地址和计划提取的元素数量传递到加速器中,然后开始提取它们。我应该使用什么信号?
谢谢
riscv - RISC-V RV32I 软浮点库在 __muldf3 中调用 MUL 和 MULHU 指令
我正在使用当前的 riscv-tools为PicoRV32内核构建固件映像。固件需要浮点,所以我使用-msoft-float
. 这是我正在使用的编译器/链接器选项:
在此配置中,__muldf3 由(根据链接器-Map
输出)提供:
但此代码与 RV32I ISA 不兼容:它使用MUL
andMULHU
指令!
如何获得普通 RV32I ISA 的软浮动?我需要编译我自己的 libgcc.a 版本吗?是否有关于如何执行此操作的说明?