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.

dm8127 的resize 模块挂起

Other Parts Discussed in Thread: TMS320DM6446

我们的case用DM8127的resize模块做了两路的400万像素到500万像素的放大,测试发现resize模块会出现挂起的现象(原因是resize模块没有正常产生中断),根据TI的帖子http://e2e.ti.com/support/dsp/davinci_digital_media_processors/f/716/p/265001/1003969.aspx#1003969

做了如下4个实验以及结果:

1  调用命令./bin/sys_pri.out --L3-bw-reg-set ISS 3 3 100 2000    (主要配置其中L3 主频是200M , ISS主频是560M , isp模块的分频系数(clkDivM= 10; clkDivN  = 20))  测试应用程序不超过半小时发现有挂起的问题。

2 调用命令 ./bin/sys_pri.out --L3-bw-reg-set ISS 3 3 100 2000    (主要配置其中L3 主频是220M , ISS主频是560M , isp模块的分频系数(clkDivM= 12; clkDivN  = 30))  测试应用程序了超过12个小时没有发现问题。

3 调用命令./bin/sys_pri.out --L3-bw-reg-set ISS 3 3 100 2000    (主要配置其中L3 主频是240M , ISS主频是560M , isp模块的分频系数(clkDivM= 10; clkDivN  = 20))  测试应用程序不超过半小时发现有挂起的问题。

4  调用命令./bin/sys_pri.out --L3-bw-reg-set ISS 3 3 800 2000    (主要配置其中L3 主频是240M , ISS主频是560M , isp模块的分频系数(clkDivM= 10; clkDivN  = 20))  测试应用程序超过12个小时没有发现挂起的问题。

我们想知道DM8127的L3主频和 sys_pri.out命令设置带宽的优先级以及ISP的分频系数如何配置能解决resize模块的挂起问题?

  • 补充

    目前的DDR频率533M.

    1.sys_pri.out 中设置的iss带宽究竟要怎么设合适,有没有理论计算方法(例如根据采集和resize的分辨率和帧率),还是纯粹做实验试出来?

    2.这个带宽中的 bandwidth和watermark的确切含义?   是以bandwidth为中心, watermark范围内波动吗? 还是wartermark表示峰值持续时间?

  • 该问题正在线下支持。

    就问题而言,同时输出两路5MP实时我是不建议的。建议只输出一路5MP,另一路需要的时候copy一下。或者控制resizer的输出,在需要数据的时候才输出。

    如果你使用的sys_pri.c已经是v3.8里面的,而调整ISS的L3优先级仍然无法解决RSZ溢出的问题。这时候你就需要修改use case了。

     

  • 能详细说下怎样修改use case吗? 我现在也是遇到了这个问题, 不过我这边是同时输出2路3MP, 1920*1440, 1920*1080, 而且1920*1440也是需要时才送去编码,但长时间运行还是出现挂死的现象(链路能正常运行8个小时左右),我使用了v3.8中的sys_pri.out,调整了iss优先级及调用了

    sys_pri.out --L3-bw-reg-set ISS 3 3 100 2000&

    还是没有效果. 也想请教下这个里面的3, 3, 100, 2000这些参数值的具体含义及怎样配置比较好.

    另外我的isp的分频系数是clkDivM=20, clkDivN=30

    这样设置是不是有问题? 这2个参数要怎样去设置比较好?

  • 你好,

    请不要局限于ISS相关软件的修改。该问题本质是峰值DDR访问过高。要从整个系统角度出发。

    能否尝试DDR的PBBPR.PR_OLD_COUNT配置为0x10~0x60?

    A8上是否有大量DDR访问?能否修改为EDMA搬移?

    是否有多余的数据copy?能否修改为指针传递?

  • 首先谢谢Chris Meng的回复,

    1.DDR的PBBPR.PR_OLD_COUNT配置为0x10~0x60?

    这个是指uboot中的如下配置吧?

    void davinci_errata_workarounds(void)
    {
        /*
         * Workaround for TMS320DM6446 errata 1.3.22:
         *   PSC: PTSTAT Register Does Not Clear After Warm/Maximum Reset
         *   Revision(s) Affected: 1.3 and earlier
         */
        REG(PSC_SILVER_BULLET) = 0;

        /*
         * Set the PR_OLD_COUNT bits in the Bus Burst Priority Register (PBBPR)
         * as suggested in TMS320DM6446 errata 2.1.2:
         *
         * On DM6446 Silicon Revision 2.1 and earlier, under certain conditions
         * low priority modules can occupy the bus and prevent high priority
         * modules like the VPSS from getting the required DDR2 throughput.
         * A hex value of 0x20 should provide a good ARM (cache enabled)
         * performance and still allow good utilization by the VPSS or other
         * modules.
         */
        REG(VBPR) = 0x20;
    }

    2.在A8上帧之间的复制我采用的是EDMA.

    3."是否有多余的数据copy",这个具体是指的什么呢?

    静待回复,谢谢啦

  • 另外补充下:

    能不能解释下

    1. isp的分频系数(clkDivM, clkDivN)这2个参数具体是怎样用的?

    2.sys_pri.out --L3-bw-reg-set ISS 3 3 100 2000& 这条语句后面设置参数的含义?

  • 您好chris

    我用的是ipnc rdk 3.5

    当使用如下命令的时候

    ./bin/sys_pri.out --L3-bw-reg-set ISS 3 3 100 2000&

    提示

    [host] ERROR:Unknown L3 static pressure initiator [ISS]

    是不是3.5里面的不支持上面的设置

    谢谢

  • 替换成3.8版本的已经能够设置

    不过参数的意义还不太明白

  • jensen zhang 说:

    1.DDR的PBBPR.PR_OLD_COUNT配置为0x10~0x60?

    这个是指uboot中的如下配置吧?

    void davinci_errata_workarounds(void)
    {
        /*
         * Workaround for TMS320DM6446 errata 1.3.22:
         *   PSC: PTSTAT Register Does Not Clear After Warm/Maximum Reset
         *   Revision(s) Affected: 1.3 and earlier
         */
        REG(PSC_SILVER_BULLET) = 0;

        /*
         * Set the PR_OLD_COUNT bits in the Bus Burst Priority Register (PBBPR)
         * as suggested in TMS320DM6446 errata 2.1.2:
         *
         * On DM6446 Silicon Revision 2.1 and earlier, under certain conditions
         * low priority modules can occupy the bus and prevent high priority
         * modules like the VPSS from getting the required DDR2 throughput.
         * A hex value of 0x20 should provide a good ARM (cache enabled)
         * performance and still allow good utilization by the VPSS or other
         * modules.
         */
        REG(VBPR) = 0x20;
    }

    这个代码的注释是给DM6446,不是DM8127的啊。在uboot里面DDR初始化的时候默认应该没有配置这个参数,请加上。