需要将 qemu-system-riscv64 升级到 9.0.2,并使用支持 AIA 的内核版本(如 6.10)。并使用配置好的支持 AIA 启动的镜像 [^3]。 使用如下命令编译使用 AIA 的 RISC-V 版本的 Rust-Shyper: ARCH=riscv64 IRQ=aia AIA_GUESTS=3 make 并使用如下命令运行: ARCH=riscv64 IRQ=aia AIA_GUESTS=3 make run I...
接下来把准备好的svd文件(CH32V103xx.svd)放到自动生成的ch32v103pac文件夹中,在ch32v103pac文件夹中通过svd2rust工具处理svd文件, 执行命令:svd2rust --target=riscv -i .\CH32V103xx.svd 命令中--target=riscv指明目标是riscv(CH32V103xx就是riscv的),如果不指明,似乎默认就会认为是cortex-m的。
接下来把准备好的svd文件(CH32V103xx.svd)放到自动生成的ch32v103pac文件夹中,在ch32v103pac文件夹中通过svd2rust工具处理svd文件, 执行命令:svd2rust --target=riscv -i .\CH32V103xx.svd 命令中--target=riscv指明目标是riscv(CH32V103xx就是riscv的),如果不指明,似乎默认就会认为是cortex-m的。
可以看到 Rust 层级非常明显,从底层的riscvCPU 支持,到riscv-rt最小运行环境,接下来有通用的嵌入式抽象embedded-hal,到 MCU 的 HAL 支持gd32vf103xx-hal,最顶层是开发板 bsp 的支持longan-nano。这里我使用了 riscv-rust 维护的 Longan Nano 的 bsp。 最后当然就是main.rs调用 GPIO 库: #![no_std] #!
.incbin "../user/target/riscv64gc-unknown-none-elf/release/01power_5" app_1_end: 接下来就可以加载这个app, 这是一个二进制的代码, elf文件格式的。 pub fn get_app_data(app_id: usize) -> &'static [u8] { extern "C" { fn _num_app(); ...
Rust on RISC-V 在risc-v 的开发板上用 rust 开发其实也差不多,这里顺便以 GD32F103 的 Longan Naon 开发板为例,介绍一下 rust 依赖的组成。 大致是这样的组成: rust 处理器依赖riscv rust 运行环境riscv-rt 嵌入式 HAL 依赖embedded-hal MCU 的 HAL 实现gd32vf103xx-hal ...
risc-v--sv39(rust版本) 这是一种面向对象的思想。 非常好!!! satp 虚拟地址 虽然虚拟地址是 64 位的,但在 Sv39 模式下,只使用前 39 位。最高的 25 位用于符号扩展,以确保地址的正确性。具体来说: 如果位 38 是 0,则虚拟地址的高位(位 63 到 39)应全部为 0。
下载tgz 类型的文件,解压,然后将 /path/to/gnu-mcu-eclipse/riscv-none-gcc/x.y.z-xxx/bin 添加到 PATH 路径。 gdb-multiarch 目前似乎不支持 RISC-V。 安装其它所需工具 cargo install cargo-binutils rustup component add llvm-tools-preview
2024年10月,经过长达6个月的门禁方案研究和核心代码开发,历经90个commit和107490行代码改动,RustVMM核心库正式实现了对RISC-V架构的完整支持。这一重大技术突破标志着RustVMM不仅填补了RISC-V虚拟化生态的空白,也为开发者提供了高效、安全、可靠的虚拟化解决方案,同时开启了RISC-V在多场景应用中的新篇章。
gptman: 允许管理GUID分区表的库 #guid #cli 支持Linux平台,允许您将分区从一个磁盘复制到另一个磁盘等等。 gptman 「系列文章」使用wasmer和Rust构建插件系统 Part 4 #wasmer Wasmer是一个可以嵌入到Rust应用中的wasm解释器。 Read More Hawk:基于Rust和AWS Services的图像识别应用 ...