芯片是DM8168,RDK用的是04.00.00.03,运行解码程序,程序是根据demo改写的,板子跑了大概半小时后,就没图像输出,出现了一下调试信息:
[m3vpss ] Unhandled Exception:
[m3vpss ] Exception occurred in ThreadType_Task
[m3vpss ] handle: 0x3de968f8.
[m3vpss ] stack base: 0x3de2d180.
[m3vpss ] stack size: 0x8000.
[m3vpss ] R0 = 0x00000012 R8 = 0x00000001
[m3vpss ] R1 = 0x3de96908 R9 = 0x00000000
[m3vpss ] R2 = 0x3de92e80 R10 = 0x00000000
[m3vpss ] R3 = 0x9cd3c888 R11 = 0x00000000
[m3vpss ] R4 = 0xb37a4400 R12 = 0x9ca14f30
[m3vpss ] R5 = 0x00430a40 SP(R13) = 0x3de35020
[m3vpss ] R6 = 0x00000f00 LR(R14) = 0x9c9e99cb
[m3vpss ] R7 = 0x00000f00 PC(R15) = 0x00000000
[m3vpss ] PSR = 0x20000000
[m3vpss ] ICSR = 0x0440f803
[m3vpss ] MMFSR = 0x00
[m3vpss ] BFSR = 0x00
[m3vpss ] UFSR = 0x0002
[m3vpss ] HFSR = 0x40000000
[m3vpss ] DFSR = 0x00000000
[m3vpss ] MMAR = 0xe000ed34
[m3vpss ] BFAR = 0xe000ed38
[m3vpss ] AFSR = 0x00000000
[m3vpss ] Terminating Execution…
A8还在运行,但是两个M3核好像就崩溃了,请问这是什么原因导致的呢?
Chris Meng:
Huang Ben,
请问问题能频繁复现么?如果能挂上仿真器,看看是否每次挂起的地方都一样?
可能的原因有很多。
1. 代码本身的问题。
2. 可能是DDR不稳定的问题。请问你是否有根据你使用的DDR调整过DDR时序,做过SW leveling?
user4546956:
回复 Chris Meng:
1.这个问题每次都会出现,都是半小时左右就出现了
2.没有引出jtag口,所以没办法挂上仿真器
3.没有做过SW leveling,只是根据DDR型号调整了一下时序,用的是镁光的内存,还有之前开发板用的是2G的内存,现在调试的板子用的是1G,不知道这个有没有影响呢?尝试过调低DDR频率和M3核的频率,问题没有得到解决
4.A8核是从来没有崩溃过的,一直都是M3核出现崩溃。如果板子散热不好会导致这个问题吗?
5.能麻烦你帮我定位一下这些调试信息在代码的哪个位置吗?
6.如果把M3核的调试信息关掉会有帮助吗,M3核的调试信息是在代码的哪里关掉呢?
7.我想每次挂起的地方是不一样的,有的时候上述调试信息没有出现,M3核就挂了,有的时候出现的调试信息如下:
[m3vpss ] Unhandled Exception: [m3vpss ] Exception occurred in ThreadType_SWI [m3vpss ] handle: 0x9b682078. [m3vpss ] stack base: 0x3c481880. [m3vpss ] stack size: 0x4000. [m3vpss ] R0 = 0x0007013c R8 = 0x00000001 [m3vpss ] R1 = 0x00000000 R9 = 0x00070113 [m3vpss ] R2 = 0x3c44c9cc R10 = 0x9b50dc9c [m3vpss ] R3 = 0x00000001 R11 = 0x9b50df48 [m3vpss ] R4 = 0x3c464a44 R12 = 0x9b5451d9 [m3vpss ] R5 = 0x9b681e70 SP(R13) = 0x3c485780 [m3vpss ] R6 = 0x9b681e70 LR(R14) = 0x9b545247 [m3vpss ] R7 = 0x9b50dc88 PC(R15) = 0x9b5417e2 [m3vpss ] PSR = 0x61000000 [m3vpss ] ICSR = 0x00400803 [m3vpss ] MMFSR = 0x00 [m3vpss ] BFSR = 0x00 [m3vpss ] UFSR = 0x0001 [m3vpss ] HFSR = 0x40000000 [m3vpss ] DFSR = 0x00000000 [m3vpss ] MMAR = 0xe000ed34 [m3vpss ] BFAR = 0xe000ed38 [m3vpss ] AFSR = 0x00000000 [m3vpss ] Terminating Execution…
8.如果挂的时候有调试信息出现,输出的画面会停留;没有调试信息出现的时候,输出会变成黑屏
Chris Meng:
回复 user4546956:
Ben,
你的DDR布线和EVM不可能完全一样吧。DDR SW leveling必须要做。请联系你们的硬件工程师焊上仿真器接口。
user4546956:
回复 Chris Meng:
1.做不做DDR SW leveling对板子的稳定性有很大的影响吗?
2.但是A8核是没有出现过挂掉的情况的,有没有可能是别的问题的可能性大一些呢,还是说依然是没有做DDR SW leveling导致了这个问题发生的可能性比较大呢?
Chris Meng:
回复 user4546956:
Ben Huang1.做不做DDR SW leveling对板子的稳定性有很大的影响吗?
是的。如果你的DDR布线严格按照TI数据手册上做,并且按照你使用的DDR调整过DDR时序参数,正确做过DDR SW leveling,TI可以保证硬件上DDR的稳定性。
Ben Huang2.但是A8核是没有出现过挂掉的情况的,有没有可能是别的问题的可能性大一些呢,还是说依然是没有做DDR SW leveling导致了这个问题发生的可能性比较大呢?
我这里有客户是因为DDR布线的问题导致M3挂起,但Linux一直都是正常的。当然我不能保证你的问题一定是DDR的问题,但是DDR SW Leveling是必须做的。
对了,请和你们的硬件确认DDR布线严格按照TI数据手册上做。
user4546956:
回复 Chris Meng:
好的,那我先去做DDR SW leveling,做DDR SW leveling是需要一个仿真器,和CCS软件是吧。能否指导一下该如何做DDR SW leveling
Chris Meng:
回复 user4546956:
Ben,
建议你多大到我们的置顶精华贴看看:
http://processors.wiki.ti.com/index.php/DM816x_Resource_Guide(English中文)
http://processors.wiki.ti.com/index.php/DM816x_C6A816x_AM389x_DDR3_Init