Vibe Code Warning – A personal casestudy
4 months ago
- #SWD
- #Debugging
- #RISC-V
- 使用树莓派Pico2的GPIO实现RP2350 RISC-V内核调试的有状态SWD协议
- 80%代码采用'氛围编码'完成,其余由Claude AI生成,作者对此过程心情复杂
- 项目需配合示波器与文档完成SBA/读写操作的原型开发
- 代码库从约1000行扩展到4000行,导致系统心智模型难以维护
- 作者对AI生成代码表示沮丧,指出其缺乏逻辑依据且代码可信度存疑
- 该库为RP2350的RISC-V调试模块提供三层SWD协议通信抽象
- 详解RISC-V硬件线程状态(运行/暂停/恢复)及调试模块的控制机制
- 阐述通过抽象命令访问硬件线程寄存器及调试模式下执行指令的程序缓冲区
- 系统总线访问(SBA)实现非侵入式内存操作,但存在一致性风险
- SWD协议细节:请求/应答/数据阶段及PIO精确时序控制
- 休眠状态与激活序列确保SWD连接不受初始状态影响
- 调试访问端口(DAP)实现方案,含DP/AP寄存器访问与上电序列
- RP2350专用初始化序列及RISC-V调试模块寄存器映射
- 通过DMCONTROL寄存器控制硬件线程的暂停/恢复/复位操作
- 单步执行与软件指令追踪功能支持
- 双RISC-V硬件线程的独立控制与状态跟踪
- 全面的错误报告与状态跟踪机制优化SWD事务
- 应用场景示例:暂停线程/读取寄存器/执行代码等
- 当前局限:缺少硬件断点/多目标SWD支持/闪存编程例程
- 作者反思AI辅助编程的双刃剑效应:效率提升伴随代码所有权与理解度的丧失