This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320C5502存在大量上电后不能自举成功的现象,希望能够帮忙解决!



       以下为问题现象,在第一批试制的时候,我们生产二十多块板子并没有该问题,但是在大批量生产后,同样的板子和芯片型号,发现大部分板子存在上电不能正常启动问题,进行热复位后正常启动,并且存在个别板子会出现热复位也不成功的现象。

       根据这段时间对问题的查找和分析,应该是硬件设计的缺陷。在自举不成功的情况下,根据测量发现上电后EMIF总线的时钟ECLKOUT1引脚有1/4分频后的时钟输出,以此判断DSP芯片本身已经正常工作。并且可以测量到访问FLASH芯片的片选CE1和读控制信号OE均存在,但是从片选CE1的信号上看,有效电平时间过短,感觉像是FLASH芯片没有正常的响应,以此判断DSP芯片的内部固化ROM已经正常运行,引导模式也正确。

       由于硬件设计是参考合众达的评估板,所以对比两者设计的区别,将问题板的FLASH芯片更换至评估板,评估板上电启动和热复位均正常。之后还对比和排除了电源上电顺序(先内核再I/O)、上电复位时间(300ms),外部时钟和GPIO口的硬件配置模式这几个可能造成问题的原因。

       请帮忙分析下问题可能的原因,或者给出还需要确认的地方?

  • 你好,

    检查一下RESET信号是否足够长? 应该从CLKIN和CVDD, DVDD稳定后开始算.

    另外, 查一下供电电压纹波是否在手册电气特性范围内?

  • 你好,

              已经确认过DSP芯片的硬件复位信号是在时钟电源稳定后的300ms之后才变为高,应该是能够满足DSP的要求的。但是这里的确有些疑惑,就是如果我人为延长上电复位信号低电平的时间到3s左右,则DSP能够正常启动。

              所设计的板子去耦电容端的电源纹波:内核电压和I/O口电压纹波均在20~30mV左右,合众达评估板上的内核电压和I/O电压纹波均在60mV~70mV,其却能够正常启动,所以我觉得问题应该并不是这个原因导致的。

  • 电压纹波是否在手册范围内要以你的CVDD, DVDD的电压是多少来计算.  

    另外, NMI, ARDY, HOLD等管脚不用的话, 有没有拉高? 你这批有问题的芯片和第一批试制的芯片是一起购买的吗?

  • 你好,

              该款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总线操作出错的。

  • 如果是1.26v, 3.3v, 那么20~30mv的纹波没问题, 纹波范围你可以参考数据手册第130页的电气特性表.
    http://www.ti.com/lit/ds/symlink/tms320vc5502.pdf


    可以做个交叉实验, 把不好的板子上的DSP换到之前试制的板子上, 看是芯片的问题还是板子的问题?

  • 你好!

             早上按照你说的做了一个实验,将有问题的板子和之前试制板子的DSP进行对换,之前试制的板子DSP还是能够正常运行,有问题的板子还是上电无法启动,之前也尝试过将有问题上的板子更换一片新的DSP芯片,也是一样无法启动的,所以说明应该不是DSP芯片的问题。

            并且前后两批的板子应该是一样的,最明显的区别是更换另一批次的FLASH芯片后则DSP启动正常,但是在评估板上已经验证过该FLASH芯片是正常可用的。所以问题应该与芯片、板子均没有关系,我觉得还是硬件设计上存在某些缺陷,导致某些情况下存在不稳定。

  • TI员工:

          你好!

            这个问题查的时间有点久了,最近公司需要我给出一个解决方案,压力比较大,所以希望能够帮忙想想办法再分析一下!

            我现在有个思路,请帮忙看看不知道是否可行,由于GPIO4是在引导过程中用于监控引导状态的引脚,现在我测量过GPIO4引脚在上电引导过程中低电平的时间为80us,时间很短,所以我的想法是,如果GPIO4变低,则说明DSP已经通过运行固化的ROM中的汇编代码,访问FLASH芯片了,再根据上电时DSP内部的工作时钟为20MHz,计算出80us总共执行了多少个指令周期,然后分析通过CCS软件和仿真器连上后出现的汇编代码,根据计算出的指令周期大致的分析出问题出在哪部分。 不知道这个思路是否合理?

  • 你可以直接用仿真器跟, 接上仿真器, 板子上电后, 打开CCS, 可以看到指针只在0xff8000, 不要load程序, 可以load symbols便于跟踪, 然后单步或者设置硬件断点就可以跟踪bootloader运行过程,可以参考下面的wiki网站.
    http://processors.wiki.ti.com/index.php/Debugging_Boot_Issues

  • 你好!

            这篇文章我看了,但是它解决的问题是“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代码,每次连接运行后都是能够正常启动的。

  • 你好!

            之后我尝试了,先不插仿真器,上电后,等待板子不能正常启动,再插上仿真器,用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.

  • 不建议仿真器热插拔, 这样可能会损坏仿真器

    有没有可能时PCB板本身质量问题呢? 你这两批板是一起做的吗?

  • 你好!

           PCB板本身是没有问题的,这两批板虽然不是同时间做的,但是同一个PCB厂家做的,没有更改过PCB的Gerber文件。并且之前也做过实验了,将好的板子的FLASH芯片更换,则之前好的板子上存在相同的上电不能正常启动问题。根据之前的判断,应该还是设计的问题,与芯片和板子什么的都没关系。

           现在问题应该就是在一次引导过程中,但是这个引导失败只在上电过程中出现,不知道再怎么去具体定位到问题。以上出现的仿真器报告的错误,我觉得应该是上电正常启动和不正常启动目前看来最明显的区别,分析Memory中地址0x000000BE为什么会没有准备好出错,应该是一个比较重要的突破口。

          我在网友的帖子中看到有好多个也是C5502中0x000000BE地址出现错误,问题现象类似,但是都没有给出问题的具体原因,现在同一款芯片存在这样的问题,还是希望你们能够具体的再分析分析CCS连接出错的原因!

  • 你好!

           今天发现另外一个问题,不知道是否相关,现象是:不管是能正常启动的板子还是不能正常启动的板子,先硬件连接上仿真器,上电后板子都是不能启动的,然后打开CCS,Alt+C进行连接,运行芯片自带的固化ROM,都是能够运行的,我尝试过有上百次,现象都是一样的,连上仿真器后在运行就没有出现不能启动的现象,所以我之前一直说通过这个办法是不能仿真有问题板的引导过程的。

            但现在这个不管是好的还是坏的板,先连上仿真器,上电后板子都不能启动现象应该是不正常的,我在评估板上试过同样操作是可以启动的。我也确认过,这种情况下仿真器给的复位引脚和外部硬件复位脚都是高电平,并没有对DSP进行复位,而在ECLOCK引脚为低,没有时钟输出。有一点与评估板是有区别的,评估板上的JTAG口是+5V(JTAG的5脚)供电的,而自己的板子上是+3.3V供电的。不清楚这是什么原因造成的。

  • Zhentao,

    根据现象我个人觉得应该是信号完整性存在问题,导致数据读取存在错误。请帮忙用高一点带宽的示波器测量一下与NOR flash之间信号的完整性。最好把测试的图片贴上来。

    有点麻烦的是从你的原理图看,信号线上没有串行匹配电阻,不好做弥补。尽量想办法看能不能通过割线,在中间加上串行匹配电阻,看是否能改善来验证想法。

  • Tony Tang:你好,

           上周一直在出差,所以没办法继续进行问题解决。附件是我对C5000 DSP启动问题做的一些截图,之前我始终说一连接仿真器就能够正常运行,所以不能采用仿真器来定位BOOT过程,这个是我弄错了,原因是在连接仿真器时没有将gel文件去除,导致连接过程中对DSP进行了重新初始化。在我附件中也有未正常启动时连接仿真器停留的地址,并且在未正常启动连上仿真器后,运行时出现如下错误:

           Can't Run Target CPU: Error 0x00000020/-1138 Error during: Execution, Processor aborted debug context.   Sequence ID: 13 Error Code: -1138 Error Class: 0x00000020

           对于你提出的信号完整性可能存在的问题,我会再想办法进行串电阻验证。请再帮忙分析下问题原因,谢谢!

    DSP启动问题截图.doc
  • Zhentao,

    提到的写控制信号是哪个管脚?在启动过程中应该只是读信号,没有写动作。

  • Tony Tang :

               这个是EMIF总线的写控制信号,的确在启动过程中对FLASH芯片只有读信号,但是由于FLASH与SDRAM芯片是共用该写控制信号的,所以在正常启动过程中看到的写控制信号是写SDRAM产生的。

  • 是直接从NOR flash启动到SDRAM吗?SDRAM的参数配置是在哪做的?是在boot table里加的参数吗?

    从图看,有写SDRAM的过程,如果配置了参数,也应该生效了,那连上仿真器后不加gel能读写SDRAM正确吗?

  •             可能是我对图片没表达清楚,在DSP未正常启动时是没有写SDRAM的过程的,根据对DSP正常启动过程的测量结果得知,应该是在完成一次引导后才会写SDRAM,而未正常启动时固话ROM运行后的一次引导是失败的。SDRAM的参数配置我需要明天再确认下。

  • 你是做了个二级启动吗?

  •         是的,我这个完整的启动过程应该是这样的,首先DSP上电完成复位初始化和固化ROM运行,然后是从FLASH中的B扇区读取引导程序,属于一次引导过程,再是将读取出来的引导程序运行,开始从M2扇区读取主程序,此属于二次引导过程。现在问题应该就出在固化ROM运行后,对FLASH读取数据进行一次引导出错。

  • Tony Tang :

                 你好!我通过不加gel文件时,进行仿真器连接对比了DSP正常启动和未正常启动ST3_55寄存器的值,发现正常启动时值为0x1002,为正常启动时值为0x1082,而该寄存器的第7bit为CBERR用于监DSP的内部总线,为1时表示内部总线出错。

     

  • JTAG我使用的都是3.3V供电   

  • Tony Tang :

             你好!

             附件是我用示波器对DSP上电启动时从FLASH读取数据过程的截图和连接仿真器看到的CPU Memory-Mapped Registers值,请帮忙分析下,谢谢! 

    DSP信号完整性截图和Momery Map值.doc
  • Tony Tang :

                   附件是我将示波器时间轴放大后测量的信号截图。

    DSP信号完整性测量截图.doc
  • 仿真器的电压是由仿真要求定的,信号也要为相应的电平,以前是5V的,现在都基本是1.8V,3.3V的了,而且自适应。

  • zhentao zou 说:

    Tony Tang :

                   附件是我将示波器时间轴放大后测量的信号截图。

    从波形来看,信号质量没有问题。

    我们反过来思考,什么情况下NOR flash不会送出数据,所且是所有数据线都没有数据,我觉得只能是没有收到控制信号,那是不是NOR flash哪里有什么问题,比如说焊接,或者说芯片在焊接前受潮了,焊接时芯片本身已受到某种损坏。

    因为NOR flash的读操作非常简单,只要收到地址,控制信号,就会送出数据,而且是异步接口,没严格的时序要求等,从波形看,这些信号已送出来了,所以我觉得只能是NOR flash芯片或焊接有问题。

  • Tony Tang :

                     你的分析很有道理,NOR flash芯片的接口本身比较简单,从测量上看DSP应该给的控制信号都给了,flash芯片就是没有吐出数据,这很奇怪。

                    但我下午也仔细确认过焊接是没有问题的,之前有试过将异常启动的板子flash更换为另一批次的flash芯片则是能够正常启动的,但将这个异常的flash芯片焊接到你们的评估板上又是没有问题的,并且从后期生产的20多块板都存在这样的问题,所以这两个现象让我觉得flash芯片本身或焊接问题的可能性不大。

               今天我只是测量了地址线0,可以再对比下异常启动时flash芯片管脚收到的其它地址线是不是和正常启动的

  • Tony Tang及Shine Zhang : 

            DSP启动异常的问题原因找到了,原因是在最初一版同事的flash芯片原理图封装画错了,最高位引脚漏画了,标的是NC,这个引脚是一直悬空着的,该引脚状态不稳定。可能是不同批次flash芯片出产时引脚默认状态存在一些区别,这也就解释了为何第一批科研试制和生产使用掉的将近100片芯片一直没有问题,而第二批使用的flash芯片一直存在上电异常启动问题。并且在对芯片加热一下或长时间运行后,重新上电启动又能够正常启动的令人难以解释的现象。

          还有为什么将这个flash芯片更换到评估板上又是能够正常启动的原因是,合众达给我们的评估板焊接的flash芯片和其设计的原理图是不对应,原理图中使用的flash是AMD的8M大小的flash芯片,最高位地址线在评估板上是连了的,所以在评估板上一直是上电启动正常的,从原理上一直对比不出区别。

         最后非常感谢你们和你们TI的团队耐心细致的帮助我分析和解决问题。也感谢这个问题,通过这个过程我接触和学习了很多之前不了解的很多东西,对自己也算是一种考验。

  • 恭喜终于找到问题所在, 谢谢经验分享!