这四天全部都在debug flash 1bit 切换到4bit :
原理:step1:把写好的C程序编译为HEX文件,我用的是GCC编译器
step2:用readmemh把HEX文件store到flash的仿真模型
step3:active tcm 功能(设定了TCM的搬移起始地址(Flash的)和搬移的SIZE,打开搬移的enable 信号)
step4:tcm搬移Flash指定地址的内容,CM3从TCM中取有地址映射的指令。(此过程对软件同事来说完全透明,他们一旦完成step3,后面无法检测CM3取指令来至于TCM还是flash,但我可以通过观测I/DBUS和TCM/FLASH接口的信号判断)
step5:PC从TCM跳到FLASH,执行未搬移到TCM的code。如果TCM设置的SIZE过大,可能PC永远跳不出来了,一直留在TCM中。
NOTE:TCM中code主要用来配置flash的切换(1bit切到4bit)。
验证现象:1.ASIC跑仿真波形正确
2.FPGA跑仿真波形正确
3.软件配置正确
4.加载到flash的code正确
最后发现测试电路的问题:Flash管脚焊接有瑕疵,读取flash的code时用ARM调式工具抓取波形时管脚上有不干净的毛刺,造成读取指令时错误。
经验:在debug问题时,整个数据通路的任何环节都不要放过,包括一根导线。要逐个确认正确,忽略的就是问题所在之处。
时间: 2024-11-10 13:29:17