首页 / 用AI开发

AG32 入门 Skill

2026年11月4日

在 AG32(AltaRiscV 32-bit RISC-V SoC)上用 PlatformIO + agrv_sdk 做工程的所有经验。

看哪个文档?

我现在要做什么…看这个文件
想用 AI(Mavis/mini-cap)帮我自动化 build / 烧录 / 读 logAI辅助AG32开发指南.md ⭐
第一次建 AG32 工程,不知道 platformio.ini 怎么写新建工程前必看-10个检查点.md
手上有块 AG32 板子,不知道该选 board = agrv2k_xxx 哪个芯片型号对应board和引脚数对照表.md
想自己算 logic bin 应该烧到 flash 哪个地址flash分区和logic默认地址计算.md
烧完程序,COM5 收到的是乱码不是 ASCIIUART乱码时排查清单.md
引脚分配跟默认 board.ve 不一样,要写自己的 VE + ASF,但不写 user_ip.v使用VE配置引脚-非自定义logic.md ⭐
要写自己的 user_ip.v(自定义 Verilog,AHB/APB 外设,SPI 主机等)+ 下载 bitstream自定义logic开发流程与下载方法.md ⭐
Host 通过 mask ROM 协议给 Target 烧 code + logic,UART 链路,无 JTAGAG32串口升级-Host+Target mask ROM协议.md ⭐

核心一句话

AG32 工程的灵魂是 VE 文件。代码里 GPIO_SetOutput(GPIO4, bit1) 能否点亮 PIN_34,取决于 board 模板默认 VE,或者你工程根目录里自己写的 VE 覆盖了 board.ve。
要写 CPLD Verilog 时,灵魂是 gen_vlog 工具 + user_ip_tmpl.v 自动生成的接口模板 —— 加/减顶层 port 永远从改 VE 开始,跑 gen_vlog 收尾。

经验教训(高密度版)

  1. 不要 Wipe Flash — pio run -t wipe 会擦掉 OSC_CAL 校准值,PLL 锁不住 200MHz,SYS_SwitchPLLClock 死等 PLL_RDY,板子卡死
  2. boot ROM 启用了 IWDG (~0.25s 超时),main() 第一行必须 IWDG_Disable()
  3. 烧完 code 板子处于 halt 状态,必须主动 reset + resume(或按 RST 按钮)
  4. 不用 logic 时 platformio.ini 要加 check_logic = 0
  5. SYSCLK 与 SDK 默认 BOARD_PLL_FREQUENCY 必须一致(默认 100MHz,不是 200MHz)
  6. 复用 SPI_AD 跑通的工程做新模板,改 platformio.ini + board.ve + main.c
  7. AG32 flash 只有 256KB 和 1MB 两档;board 模板 4 个,VE 模板 4 个,选错会有 device size mismatch
  8. VE-only 编译 ≠ 自定义 logic — pio run -t buildlogic + pio run -t logic + pio run -t upload 三步是合法流程,不写 user_ip.v,Supra 编译出来 0 logic slices,只有引脚路由
  9. 改 my_board.asf 后必须跑 pio run -t logic_clean — sconsign cache 不跟踪 ASF 修改
  10. 同 VE 文件名 logic_ve 和 ip_name 会冲突 — VE 是声明,ip_name 是 Verilog 顶层,改名避免
  11. 改了 board.ve 加/减顶层 port 后必须 gen_vlog — af --prepare 不会重生成 user_ip_tmpl.v / board.v,只有 gen_vlog -s 才会
  12. supra P&R 路由失败 — 改 seed 试:af -B -F af_run.tcl --seed_rand,或用 pio run -t batch_upload(自动换 6 个 seed)
  13. OpenOCD 烧完融合镜像后 CPU 在 halt — 必须 reset; sleep 100; resume 让 CPU 跑 main(),否则 COM5 看不到任何输出

.

返回用AI开发