以下为问题现象,在第一批试制的时候,我们生产二十多块板子并没有该问题,但是在大批量生产后,同样的板子和芯片型号,发现大部分板子存在上电不能正常启动问题,进行热复位后正常启动,并且存在个别板子会出现热复位也不成功的现象。
根据这段时间对问题的查找和分析,应该是硬件设计的缺陷。在自举不成功的情况下,根据测量发现上电后EMIF总线的时钟ECLKOUT1引脚有1/4分频后的时钟输出,以此判断DSP芯片本身已经正常工作。并且可以测量到访问FLASH芯片的片选CE1和读控制信号OE均存在,但是从片选CE1的信号上看,有效电平时间过短,感觉像是FLASH芯片没有正常的响应,以此判断DSP芯片的内部固化ROM已经正常运行,引导模式也正确。
由于硬件设计是参考合众达的评估板,所以对比两者设计的区别,将问题板的FLASH芯片更换至评估板,评估板上电启动和热复位均正常。之后还对比和排除了电源上电顺序(先内核再I/O)、上电复位时间(300ms),外部时钟和GPIO口的硬件配置模式这几个可能造成问题的原因。
请帮忙分析下问题可能的原因,或者给出还需要确认的地方?
Shine:
你好,
检查一下RESET信号是否足够长? 应该从CLKIN和CVDD, DVDD稳定后开始算.
另外, 查一下供电电压纹波是否在手册电气特性范围内?
zhentao zou:
回复 Shine:
你好,
已经确认过DSP芯片的硬件复位信号是在时钟电源稳定后的300ms之后才变为高,应该是能够满足DSP的要求的。但是这里的确有些疑惑,就是如果我人为延长上电复位信号低电平的时间到3s左右,则DSP能够正常启动。
所设计的板子去耦电容端的电源纹波:内核电压和I/O口电压纹波均在20~30mV左右,合众达评估板上的内核电压和I/O电压纹波均在60mV~70mV,其却能够正常启动,所以我觉得问题应该并不是这个原因导致的。
Shine:
回复 zhentao zou:
电压纹波是否在手册范围内要以你的CVDD, DVDD的电压是多少来计算. 另外, NMI, ARDY, HOLD等管脚不用的话, 有没有拉高? 你这批有问题的芯片和第一批试制的芯片是一起购买的吗?
zhentao zou:
回复 Shine:
你好,
该款5502DSP芯片的内核电压CVDD为1.26V,I/O电压DVDD为3.3V,我在你们给的芯片手册上并没有找到对电源纹波的描述,所以不清楚20~30mV的纹波是否能够满足要求?
在设计中ARDY和HOLD引脚都是已经通过上拉电阻拉高的,NMI引脚是悬空未处理的,刚才做过试验,将该引脚拉高,情况还是一样的。DSP芯片是一起购买的,FLASH芯片倒是存在两个批次,并且两个批次区别很明显,如果将有问题板的FLASH芯片更换为上一批次的FLASH,则上电启动正常。一开始也怀疑过是FLASH芯片批次的问题,但是之后将有问题的FLASH芯片更换至合众达提供的评估板,则启动正常,而且所使用的FLASH芯片是SST39VF400A,其只存在地址线、数据线、读写控制和片选引脚,没有其它控制脚,所以之后也排除了FLASH芯片的问题。
还存在一个难以解释的现象,如果将FLASH芯片进行加热,或者DSP长时间工作后,此时重新上电则DSP启动正常,感觉像是在启动过程中某些I/O口的不定态,导致EMIF总线操作出错的。
Shine:
回复 zhentao zou:
如果是1.26v, 3.3v, 那么20~30mv的纹波没问题, 纹波范围你可以参考数据手册第130页的电气特性表.http://www.ti.com/lit/ds/symlink/tms320vc5502.pdf可以做个交叉实验, 把不好的板子上的DSP换到之前试制的板子上, 看是芯片的问题还是板子的问题?
zhentao zou:
回复 Shine:
你好!
早上按照你说的做了一个实验,将有问题的板子和之前试制板子的DSP进行对换,之前试制的板子DSP还是能够正常运行,有问题的板子还是上电无法启动,之前也尝试过将有问题上的板子更换一片新的DSP芯片,也是一样无法启动的,所以说明应该不是DSP芯片的问题。
并且前后两批的板子应该是一样的,最明显的区别是更换另一批次的FLASH芯片后则DSP启动正常,但是在评估板上已经验证过该FLASH芯片是正常可用的。所以问题应该与芯片、板子均没有关系,我觉得还是硬件设计上存在某些缺陷,导致某些情况下存在不稳定。
zhentao zou:
回复 zhentao zou:
TI员工:
你好!
这个问题查的时间有点久了,最近公司需要我给出一个解决方案,压力比较大,所以希望能够帮忙想想办法再分析一下!
我现在有个思路,请帮忙看看不知道是否可行,由于GPIO4是在引导过程中用于监控引导状态的引脚,现在我测量过GPIO4引脚在上电引导过程中低电平的时间为80us,时间很短,所以我的想法是,如果GPIO4变低,则说明DSP已经通过运行固化的ROM中的汇编代码,访问FLASH芯片了,再根据上电时DSP内部的工作时钟为20MHz,计算出80us总共执行了多少个指令周期,然后分析通过CCS软件和仿真器连上后出现的汇编代码,根据计算出的指令周期大致的分析出问题出在哪部分。 不知道这个思路是否合理?
Shine:
回复 zhentao zou:
你可以直接用仿真器跟, 接上仿真器, 板子上电后, 打开CCS, 可以看到指针只在0xff8000, 不要load程序, 可以load symbols便于跟踪, 然后单步或者设置硬件断点就可以跟踪bootloader运行过程,可以参考下面的wiki网站.http://processors.wiki.ti.com/index.php/Debugging_Boot_Issues
zhentao zou:
回复 Shine:
你好!
这篇文章我看了,但是它解决的问题是“Often times everything will work great when running code from the emulator, but when you get to that last crucial step of having the device boot and run by itself things mysteriously fail. “ 说的是仿真器连着运行正常,在所有自举时都存在问题的情况可以通过这个方法定位,但这个与我问题的现象是不一样的。我的问题现象是上电不能自举成功,但是热复位后可以正常启动。
我刚才按照这篇文章的方法试过了,跟我想的一样,连接仿真器后,load symbols加载我的引导程序,单步执行都是正常的,启动也是正常的。之前我也试过硬件连上仿真器后,上电,打开CCS软件,然后Alt+C连接上,再是F5全速运行固化ROM的汇编指令,这样板子都是能够正常启动的。
原因就是我之前也说了,当上电DSP不正常启动后,进行热复位操作或者延长上电复位操作低电平的时间(大概在3s以上),DSP都是能够正常启动的。由于上电后我用仿真器进行操作需要一定的时间(大概是s级别的),已经大于DSP上电复位的3s,所以通过仿真器并不能够跟踪出上电过程中的boot代码,每次连接运行后都是能够正常启动的。
zhentao zou:
回复 zhentao zou:
你好!
之后我尝试了,先不插仿真器,上电后,等待板子不能正常启动,再插上仿真器,用Alt+C命令进行连接,出现如下错误。而如果用上电后能够正常启动的板子,上电启动后,插上仿真器,用Alt+C命令进行连接,则能连接成功。确认过 0x000000BE 在cmd文件中属于MMR代码段,我们是无法操作的。请帮忙分析下这个是否就是导致启动不成功的原因。
Error connecting to the target:
Error 0x80000242/-1143
Fatal Error during: Memory, Initialization, OCS,
The memory at 0x000000BE continually indicated it was 'not ready'
All memory operations currently in progress were aborted in order
to regain control of the processor.
This is considered a catastrophic event, but the debugger should
still be able to access memory and CPU registers.
System state has been altered. It is strongly advised
that the processor should be reset before resuming execution,
Sequence ID: 0
Error Code: -1143
Error Class: 0x80000242
I/O Port = 240
Board Name: C5502 SEEDXDS510USB Emulator
Cpu Name: TMS320C5500_0
Abort: Close Code Composer Studio.
Retry: Try to connect to the target again.
Cancel: Remain disconnected from the target
Diagnostic: Run diagnostic utility.