Skip to content

fix(esp32c3): 按真 ISA(riscv32imc)构建并进门禁——imac 产物含 12 条 A 扩展指令 - #18

Merged
gqf2008 merged 1 commit into
masterfrom
fix/esp32c3-real-isa
Sep 19, 2026
Merged

gqf2008 merged 1 commit into
masterfrom
fix/esp32c3-real-isa

Conversation

@gqf2008

@gqf2008 gqf2008 commented Sep 19, 2026 •

Copy link
Copy Markdown
Owner

问题(无需硬件即可定性):ESP32-C3 真身是 RV32IMC(无 A 扩展),而仓库与门禁一直按
riscv32imac 构建。实测同一示例的两种产物:

目标 A 扩展指令(amo/lr/sc) 说明
riscv32imac 12 条(8 amo + 2 lr.w + 2 sc.w) 来自 Arc/信号量的原子读改写——真芯片执行到就是非法指令
riscv32imc 0 条 原子走 src/arch/riscv/critical.rs 的 critical-section 垫片

即:该口此前的"构建级验证"掩盖了一个错误的 ISA 选择——产物根本不可能在真芯片上跑。

改法

  1. ci/gate.sh:新增 esp32c3 按 riscv32imc(真 ISA)的构建步骤,与 ch572 同一条无 A 路径。
  2. README.md 的 ESP32C3 条目:注明真身 ISA、imac 产物 12 条 A 指令的事实、改用真 ISA 后 0 条。
  3. CLAUDE.md 芯片清单同样标注。

顺带核实(回应 issue #14 的 ISA 存疑,官方 MRS 工程设置)

  • CH583 .cproject:isa.atomic = true → 有 A 扩展,riscv32imac 正确(已合并的 ch583 口无误)。
  • CH572 .cproject:isa.atomic = false → 无 A 扩展,riscv32imc 正确(与已合并的 ch572 口一致)。

验证

  • bash ci/gate.sh 全绿(含新增 esp32c3/imc 步骤):host 159 / ISR 向量 / 启动头 ×3 / 乒乓 A×200 B×200 / kernel_tests 24-24 ×3 / smp 9-9。
  • 宿主默认 features 82 passed;14 口 cargo build --lib 全绿。
  • 指令数统计用 llvm-objdump -d 逐条数出(非转述)。

Refs #14(回应其中的 ISA 存疑:CH583 有 A、CH572 无 A、esp32c3 真身无 A;本 PR 只修 esp32c3 的构建目标,不关闭该 issue)

问题(**无需硬件即可定性**):ESP32-C3 真身是 **RV32IMC**(无 A 扩展),而仓库与门禁一直按
`riscv32imac` 构建。实测同一示例的两种产物:

| 目标 | A 扩展指令(amo/lr/sc) | 说明 |
|---|---|---|
| `riscv32imac` | **12 条**(8 amo + 2 `lr.w` + 2 `sc.w`) | 来自 Arc/信号量的原子读改写——真芯片执行到就是**非法指令** |
| `riscv32imc` | **0 条** | 原子走 `src/arch/riscv/critical.rs` 的 critical-section 垫片 |

即:该口此前的"构建级验证"掩盖了一个错误的 ISA 选择——产物根本不可能在真芯片上跑。

## 改法

1. `ci/gate.sh`:新增 esp32c3 按 `riscv32imc`(真 ISA)的构建步骤,与 ch572 同一条无 A 路径。
2. `README.md` 的 ESP32C3 条目:注明真身 ISA、imac 产物 12 条 A 指令的事实、改用真 ISA 后 0 条。
3. `CLAUDE.md` 芯片清单同样标注。

## 顺带核实(回应 issue #14 的 ISA 存疑,官方 MRS 工程设置)

- CH583 `.cproject`:`isa.atomic = true` → **有 A 扩展,`riscv32imac` 正确**(已合并的 ch583 口无误)。
- CH572 `.cproject`:`isa.atomic = false` → **无 A 扩展,`riscv32imc` 正确**(与已合并的 ch572 口一致)。

## 验证

- `bash ci/gate.sh` 全绿(含新增 esp32c3/imc 步骤):host 159 / ISR 向量 / 启动头 ×3 / 乒乓 A×200 B×200 / kernel_tests 24-24 ×3 / smp 9-9。
- 宿主默认 features 82 passed;14 口 `cargo build --lib` 全绿。
- 指令数统计用 `llvm-objdump -d` 逐条数出(非转述)。
@gqf2008
gqf2008 merged commit b55de9a into master Sep 19, 2026
2 checks passed
@gqf2008
gqf2008 deleted the fix/esp32c3-real-isa branch September 19, 2026 08:15
@gqf2008

gqf2008 commented Sep 19, 2026

Copy link
Copy Markdown
Owner Author

合并记录(2026-09-19)

  • 独立审查(全新会话)结论:通过、无阻塞项。它自己用 llvm-objdump 复算了两种产物的 A 扩展指令数(imac 12 / imc 0)、复跑 bash ci/gate.sh 全绿、核对 CI(gate pass 1m42s、r52 pass,无 skipped)与门禁预检(已含 riscv32imc,冷环境不撞 E0463)。
  • 其非阻塞项已处理:PR 正文补 Refs #14;审查过程留下的未跟踪日志 debug/gate_pr18_verify.log(11MB)已删除。
  • 合并方式:gh pr merge --admin --rebase,分支已删。合并后在 master 复验:bash ci/gate.sh 全绿(host 159 / ISR 向量 / 启动头 ×3 / 乒乓 A×200 B×200 / kernel_tests 24-24 ×3 / smp 9-9)。
  • 未做(可选增强,留给后批):把「12 vs 0」做成产物级 checker(当前由 imc 构建步骤保证属性本身);给 .cargo/config.toml 的 riscv32imc 段补 runner 与上板刷写说明。

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