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.

DM8168 运行高分辨率采集压缩死机

Other Parts Discussed in Thread: SYSBIOS

自己做的板子,使用DM8168芯片,软件平台是DVR-RDK3.0.

DDR3,2G,531MHz

采集芯片为sii9233A,双通道.

在采集双路1920x1200@60Hz情况下,开始运行demo后数分钟,采集程序崩溃.

提示信息如下:


897170:!!!SLAVE CORE [VPSS-M3] DOWN!!!
SystemLink_copySlaveCoreExceptionContext:146
mmap of [0xbe9e0000:36864]
mmap virt addresss:0x40169000
munmap of [0x40169000:36864]
SystemLink_copySlaveCoreExceptionContext:153
 [m3vpss ]  I2C: Arbitration lost !!!
 [m3vpss ] !!!XDC RUNTIME ASSERT FAILED
 [m3vpss ] xdc.runtime.Error @ ti.sysbios.gates.GateMutex: line 97:
 [m3vpss ] assertion failure: A_badContext: bad calling context. See GateMutex API doc for details.

同样程序在另一块成品板子上,DDR3-667MHz,同样分辨率,可以稳定运行3小时以上.

求问TI大神,问题出在哪里.

  • 你好,

    请问有问题的板子每次都是同样的错误么?你有多运行几次么?

    两块板子的硬件是否相同?如果不同,有什么不同?

    AVS是否有使用?DDR SW leveling是否有做?

  • DDR的时序寄存器是需要和频率相应做调整的。

    另,你的板子跑667MHz会好一些吗? 会不会有可能是DDR频率不够导致带宽不足。

    看上去你都只测了一块板子,建议多几块板子测一下

  • 加上之前的,基本上就这两个错误:

    这次是刚运行十几秒就崩溃了.

    85173:!!!SLAVE CORE [VPSS-M3] DOWN!!!
    SystemLink_copySlaveCoreExceptionContext:146
    mmap of [0xbe9e0000:36864]
    mmap virt addresss:0x400d4000
    munmap of [0x400d4000:36864]
    SystemLink_copySlaveCoreExceptionContext:153
     [m3vpss ]  97928: Assertion @ Line: 1052 in links_m3vpss/capture/captureLink_drv.c: status == FVID2_SOK : failed !!

    DD3芯片是800MHz的,在这个频率下跑不起来,无法启动.

    后改为667MHz,但是在高一点的分辨率情况下,运行上十几分钟就会死机.这个是整个ARM核死机,没有时间给出错误消息.

    最后降频改为531MHz,单通1920x1200分辨率60fps可以比较好的运行.

    DDR3的配置是用的EVM demo 配置,在Uboot中进行选择,并没有另外配参数.

    与成品板子最大区别在于,

    成品板是一整块大板卡,自己做的是电源-采集分开的,VTT和VREF是通过接插件给到DDR的,走线比较长.

    DDR型号也不一致,但额定工作频率更高.

    AVS 功能还未使能,不知道有什么参考资料可以了解下.

  • 你好,

    以下几点对系统稳定性都很重要。

    1.先确认DDR布线符合数据手册的要求,不然很难保证DDR能稳定运行。

    2. DDR SW leveling必须做,请参考:http://processors.wiki.ti.com/index.php/DM816x_C6A816x_AM389x_DDR3_Init

    3. AVS必须使用,请参考:

    http://processors.wiki.ti.com/index.php/TI81XX_PSP_AVS_FAQ

    http://processors.wiki.ti.com/index.php?title=TI81XX_PSP_PM_AVS_Driver_User_Guide&redirect=no

  • 1.DDR3 是经过SI仿真,可以跑667MHz

    2.这个文件我看过了,

    #define CONFIG_TI816X_DDR3_SW_LEVELING

    这个宏定义也是有的

    3.AVS补偿这一部分和EVM不一样,用的是DAC进行补偿,型号是LTC2631,I2C接口

    在内核编译选项中选中了

    SmartReflex class2 support for ti816x

    和TPS40040 电源管理选项

    重新编译内核,加载运行后,dmesg 信息中并没见电压调节方面的信息

  • Tuo Qian1 说:

    1.DDR3 是经过SI仿真,可以跑667MHz

    【Chris】仿真成功不能保证DDR能正常运行(请参考文档:Understanding TI’s PCB Routing Rule-Based DDR Timing Specification http://www.ti.com/lit/an/spraav0a/spraav0a.pdf),我们的要求是完全按照数据手册上DDR布线的规范来做。

    Tuo Qian1 说:

    2.这个文件我看过了,

    #define CONFIG_TI816X_DDR3_SW_LEVELING

    这个宏定义也是有的

    【Chris】请问我之前提供链接里面的流程你都做过了吗?这不是代码里面有定义就可以解决的,参数要测试出来后修改现有代码的。

    Tuo Qian1 说:

    3.AVS补偿这一部分和EVM不一样,用的是DAC进行补偿,型号是LTC2631,I2C接口

    在内核编译选项中选中了

    SmartReflex class2 support for ti816x

    和TPS40040 电源管理选项

    重新编译内核,加载运行后,dmesg 信息中并没见电压调节方面的信息

    【Chris】如果你使用的不是TI支持的AVS的PMU,你需要修改驱动来实现。

  • TI是否有DM8168外接16bit线宽的DDR3的参考设计。

    谢谢!

  • hi,Chirs

    在进行DDR3 init时,RatioSeed.xls中的CLK DQS的 trace length计算时,CLK信号是4个DDR3颗粒菊花链串接,并在远端通过端接电阻到VTT上,

    CLK信号的走线长度计算,在byte0的CLK长度计算时是否要包含到VTT端接电阻那端走线长度。

    谢谢!

  • 你好,

    请参考DM8168数据手册Figure 9-13. 32-Bit, One-Bank DDR3 Interface Schematic Using Two 16-Bit DDR3 Devices。

  • Kevin Zhao 说:

    hi,Chirs

    在进行DDR3 init时,RatioSeed.xls中的CLK DQS的 trace length计算时,CLK信号是4个DDR3颗粒菊花链串接,并在远端通过端接电阻到VTT上,

    CLK信号的走线长度计算,在byte0的CLK长度计算时是否要包含到VTT端接电阻那端走线长度。

    谢谢!

    你好,

    时钟是接在DDR1.5v上的,不是在VTT上的啊。我认为后面电阻/电容到电源的走线的长度不需要计算,数据手册里面也对后面的长度没有要求。

    Eason,

    线长问题,你的意见如何?

  • 谢谢Eason!

    DDR3的时钟匹配端接是接在1.5V上,我写错了,那我就直接按你讲的来计算信号时钟信号的长度,来做DDR3 init。

    Kevin

  • 谢谢!

    下一版用16bit线宽的DDR3来设计,参考设计上推荐的8bit的DDR3芯片现在不好采购。

  • 谢谢。

    目前正在确认DM8168的一些设计问题。

    我想问demo都是用的8bit的颗粒设计的,新设计的采用16bit的颗粒,这对软件来说修改多吗?

  • 你好,

    需要根据新使用ddr调整DDR时序参数,和做SW leveling。