问题标签 [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 - 穗 -g 是如何工作的?
我从 riscv-tools master 分支构建了 riscv 工具链。
当我做
尖峰-h
它告诉我应该跟踪 PC 直方图的 -g 选项
我试过了
穗 -g pk 你好
我没有看到特殊的输出,也没有看到保存跟踪的文件。
所以我的问题是,是否支持 -g 选项?如果是,我们如何使用它?
尖峰选项是否记录在此处以外的其他地方? http://riscv.org/download.html#tab_isa-sim
如果我能够使用 -g 选项运行峰值,我应该期望看到什么样的跟踪输出格式?
microcontroller - 系统指令工作
我正在尝试使用用户级指令实现一个简单的 RISC-V 32 位内核。
在尝试实施 ISA 时,我在清单中找到了一条指令(系统)。任何人都可以解释系统指令的工作原理(管道中会发生什么变化)。
riscv - 生成具有不同缓存大小的 RISCV 火箭芯片
我在更改 Rocket-Chip 的参数时遇到问题。我正在尝试增加 L1 数据和指令缓存的集数。我遵循这个描述:http
://riscv.org/download.html#tab_rocket 以下代码行是我试图在文件中更改的值:Configs.scala
它位于 Rocket Chip Generator 存储库(rocket-chip/src/主要/斯卡拉)
在我进行任何更改之前,我可以运行以下命令而不会出现错误:
如果我更改LD1_SETS => 64
为LD1_SETS => 128
使用上面的命令会出现很多错误。
我是否必须将 Cache-Size 设置在不同的地方?
riscv - Rocket芯片的复位地址是什么?
RV64G 处理器在复位时从哪个地址开始?我应该查看哪个 scala 文件来理解/修改重置向量地址?
我尝试在 Top 类中为 TopIO 添加一个简单的 printf 语句来监控 MemIO 并生成模拟器。就绪时,valid = true,打印的地址 (io.mem.req_cmd.bits.addr) 为 0x8,标签为 (io.mem.req_cmd.bits.tag) = 0x13。我可以在程序 rv64ui-p-add.dump 的地址 0x200 中找到获取的指令(在 128 位宽的 io.mem.resp.bits.data 中)
所以我假设 0x200 是处理器的起始地址。这个对吗?
(a) 如果这是正确的,我想知道,address=0x8 和 tag=0x13 如何转换为 0x200?
(b) 生成的地址 + 标签是 32 位,而我期望它是 64 位(RV64G 架构)。在 Configs.scala MIFAddrBits 设置为 26 位(取决于 PAddrBits (32) 和 CacheBlocOffsetBits(log2Up(64))。为什么这些设置是这样的?
(c) 在详细模式下仿真器输出显示的 PC 地址为 40 位,但寄存器为 64 位。为什么仅显示 PC 地址只有 40 位?仿真器输出的一部分如下所示。
riscv - 在 C++ 模拟器上多次运行基准测试时的不同周期数
使用以下命令运行基准测试(例如 dhrystone)时:
如C++ 模拟器上的http://riscv.org/download.html#tab_rocket所述。我得到以下输出:第一次运行时:
第二次:
为什么周期不同?他们不应该完全一样。我也用其他基准测试过这个,并且偏差更大。如果这是正常的,偏差从何而来?
build-error - 构建 riscv-tools 时出错(gcc newlib 第一个文件:genmddeps)
[更新 20150825:编译 genmddeps.o 时似乎存在编译器 - 汇编器不匹配;使用的编译器是g++
已安装的版本,但使用的汇编器位于配置为Ubuntu 4.9.2-10ubuntu13
的构建目录中,因此从编译器传入的选项会出错。完整的命令在本文末尾的最终代码块中。我(还)不清楚为什么有本地副本以及为什么不够聪明不使用它....]./as
riscv64-unknown-elf
--64
as
g++
也许有一些简单的东西我配置错误,但如果是这样,它就会通过多次尝试而溜走。任何帮助,将不胜感激。
我一直在尝试构建火箭芯片树,并且在构建 riscv 工具时出现问题。似乎正在发生的事情是一个非法选项被传递给 riscv 汇编程序,导致失败:
考虑到使用 riscv 作为二进制而不是系统 x86_64 作为二进制,Configure 似乎并不认为它是交叉编译:
路径似乎设置正确:
(附带说明,下载 gcc-5.2.0 后,我在构建过程中看到一些 shell 测试错误:
不确定这是一种症状还是已知行为。)
该系统是 Ubuntu 15.04,在 Win* 机器上的 VMware 播放器下运行。我在 tcsh 中运行,但同样的事情也发生在 bash 中。通过探索 riscv 更改,似乎所需的选项是 --m64 而不是 --64 但我不确定 --64 在构建/配置文件中来自哪里,因为它没有显示在实际构建中编译器的命令。构建日志中构建指令的完整序列是:
riscv - 使用 root.bin 和 vmlinux 运行 qemu-system-riscv 时出错
我正在关注 riscv.org 工具链构建指南。使用 qemu 运行本地构建的 rootfilesystem(带有busybox)和 Linux Kernel 进行仿真时,遇到以下错误:
使用本地构建的 root.bin 和内核映像运行 Qemu
danny@danny:~/test/riscv/work$ qemu-system-riscv -hda root-local.bin -kernel vmlinux-local -nographic
使用 riscv.org 存储的 root.bin 和内核映像运行 Qemu
danny@danny:~/test/riscv/work$ qemu-system-riscv -hda root.bin -kernel vmlinux -nographic
如果使用从 riscv.org 下载的 root.bin 和 vmlinux 进行 qemu 测试,看起来还可以,但看不到busybox 启动消息并且终端无法停止:
使用各种组合测试了 qemu,结果如下:
我们正在启动一个项目,为世界各地的 Maker 构建和制造 RISCV 硅芯片,并现在测试工具链,以便将 Ubuntu Core 和 Android 移植到 RISCV。知道可能出了什么问题吗?
谢谢。
caching - RISC-V 火箭缓存一致性
对于 RISC-V Rocket 处理器,缓存采用什么样的写入策略(例如回写 + 分配、直写 + 不分配)?L1 缓存如何与 RISC-V 中的 L2 缓存保持一致?
gcc - 如何修改工具链以仅在 RISCV 上支持乘数
我有一个 RTL 来支持 RV32I 的乘法器指令,但我在修改工具链以支持仅乘法器 ISA 时遇到问题。我正在尝试通过删除 div 和 rem 来修改 M 扩展名,但我不确定应该查找哪些文件。
riscv - 在不运行应用程序的情况下模拟 RISC-V 中添加的指令
我正在 RISC-V ISA 中实现新的自定义指令,但我还没有为它们添加编译器支持。我正在寻找一种在 Rocket 芯片基础设施中使用其 C++ 仿真器测试这些指令的方法,方法是提供一小组指令,而无需编译 C/C++ 应用程序并通过仿真器运行它。这可能吗?