Skip to content

aarch64-virt-rt 0.1.0 —— 第二块板 - #242

Merged
Sunrisepeak merged 1 commit into
mainfrom
feat/aarch64-virt-rt
Aug 21, 2026
Merged

aarch64-virt-rt 0.1.0 —— 第二块板#242
Sunrisepeak merged 1 commit into
mainfrom
feat/aarch64-virt-rt

Conversation

@Sunrisepeak

Copy link
Copy Markdown
Member

板级包模型此前只被一块板验证过,而一个只被一块板验证的模型,分不清它是对的还是它恰好合那块板 —— 与 openarch 在两台 RISC 机器上的处境同形。

riscv-virt-rt 固定了三件事:ISA、有 C 库、模拟器板。同 ISA 的第二块板只变第三件,证据最弱。所以这一块变两件:不同 ISA + 零 libc 层。

⭐ 结论

两个构建程序自己的缓存记录实测(d <tag> 行是引擎记下的「发出过什么」,不是读源码):

riscv-virt-rt      ldflag runner
aarch64-virt-rt    ldflag runner

同样两条指令。 C 库体现为 ldflag不同:

riscv-virt-rt      -lcrt0-semihost  -lc  -lsemihost
                   -lclang_rt.builtins-riscv64  -T …/picolibcpp.ld
aarch64-virt-rt    -T …/virt.ld

「板级包」与「C 库提供者」是可分离的角色,而板级包的接口是完整的。

⚠️ 这个测试本可以失败,而失败会是更有价值的结果。CI 把它写成硬断言。

deps 只写模拟器

这块板引用不到任何 C 库符号,没有东西要装。xim:picolibc-aarch64 存在,要它的工程自己声明 —— 那是工程的选择,写在这里就成了板子替工程决定。

模拟器仍然要写:别的东西也不装它,而一个能解析却跑不起来的板子,正是 mcpp run 报「no runner is configured」的那种失败。

CN 端已回探核验,与 GLOBAL 逐字节一致。

板级包模型此前只被一块板验证过。这一块变两件事:不同 ISA + 零 libc 层。

⭐ 由两个构建程序自己的缓存记录实测,两块板发出的指令集合相同:

    riscv-virt-rt      ldflag runner
    aarch64-virt-rt    ldflag runner

C 库体现为 ldflag 的值不同,而不是多一条指令 ⇒ 板级包与 C 库提供者是可分离
的角色,而板级包的接口是完整的。

deps 只写模拟器:这块板引用不到任何 C 库符号,没有东西要装。
xim:picolibc-aarch64 存在,要它的工程自己声明 —— 那是工程的选择。

CN 端已回探核验,与 GLOBAL 逐字节一致。
@Sunrisepeak
Sunrisepeak merged commit 8e62120 into main Aug 21, 2026
8 checks passed
@Sunrisepeak
Sunrisepeak deleted the feat/aarch64-virt-rt branch August 21, 2026 03:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant