2014年7月23日,终于把困扰我两个月的问题解决了,甚是嗨皮,所以做下记录,以供后人参考之用。
问题描述:我用的片子是TMS320C6713,通过EMIF总线连接的FLASH,此FLASH分为两部分,一部分是Bootlooder和应用代码,另一部分是实时采集的数据。由于需求,我需要将数据扩大四倍,但是我还是继续向原来FLASH的地址上存储,当采集很多数据的时候,导致数据将覆盖Flash之外的地址。(当时知道有可能内存溢出了,由于一些原因,我暂时没有理会,就被上位机组拿去测试上位机去了)有一次采集很大数据后,程序死掉,重新加电后,程序没有运行,我使用仿真器去连接板子,连接不上。
当时分析可能野指针修改了一些重要的东西。经过高人指点后,在Datasheet上发现一些重要资料:
于是我就修改硬件(具体操作如下图),将EMIF Boot模式修改为Emulation boot,然后仿真器居然可以连上了,这样我就可以擦除FLASH的全部东西了,在把Emulation boot模式改回EMIF BOOT模式,片子及神奇的复活了。
分析原因:野指针修改了FLASH里面的代码部分,当片子由FLASH加载代码的时候,校验不对或者其他理由,导致片子在加载状态不能退出,一直处于加载代码状态,就不可能起相应Jtag的接口了,当然程序也不能正常运行。
以上均属于个人猜测,若有不对的地方,请指出改正。
时间: 2024-12-10 18:13:23