硬件毛刺

这四天全部都在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问题时,整个数据通路的任何环节都不要放过,包括一根导线。要逐个确认正确,忽略的就是问题所在之处。

posted @ 2014-10-16 17:24  CHIPER  阅读(253)  评论(0编辑  收藏  举报