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.

困扰已久的基于am335x平台的QT应用崩溃问题



项目平台
     硬件平台是在BBB方案的基础上设计的,删除了hdmi,lcd驱动改用lvds接口,使用引脚LCD_DATA[15:0]及相关辅助引脚,进入差分驱动芯片DS90C365AMT,LVDS接口单6输出。其他基本没有改动什么。PDK版本:03.02.00.05,内核版本4.4.32 uboot和kernel的移植均在里面完成,原本是采用PDK内置的toolchain ,无奈在文件系统编译时候,TI给的编译器buildroot不支持,为了整体统一编译器,内核移植和文件系统使用linaro官网下载了PDK相同版本的toolchain-5.3,
lcd驱动部分,在omap2plus_defconfig配置的基础上的 参考Linux Core LCD Controller User Guide的说明,配置好了内核中LCDC DRM Display Drive的相关选项.dts配置完全copy am335x-evm.dts(尽管使用的不是800*480屏幕,为了排查屏幕参数配置不当的因素)。
另外:

实验现象
       应用基于QT5.6.3 ,使用linuxfb,编译时与内核使用的交叉工具链一致 gcc5.3,做一个简单的QT应用程序就会崩溃,要么segementation fault,要么内核直接挂掉,时间在几分钟到一两个小时不等。我的分析排查如下:
       1:使用valgrind排查内存泄露,基本ok,程序很简单。就算换个空的widget工程模板,添加几个控件显示,简单的刷屏,无一行手写代码。程序仍然崩溃。但是运行的时间会长一些。我想应该跟应用代码关联不大了。
      2:DDR不稳定也有可能,目前CPU已降频到600M DDR303M,ddr tuning, soft leveling也都参照论坛上steven liu 的帖子做过了。使用memtester stressapptest两种ddr 测试程序,跑一晚上也ok。
      3:显示驱动framebuffer是参照am335x-evm.dts来做的,LCDC DRM Display Drive也做好了,网上有个和我类似现象的帖子bbs.csdn.net/.../390830998 以为有救了,结果无论我怎么配置dts 中的 blue-and-red-wiring 均无改善。QT源码中关于RGB调序的我就没做,现在暂时不管颜色显示是否正常,先稳定运行再说。但是LCD 驱动配置的可能性还是比较大。
     4:文件系统,qt库完全copy PDK,内核用PDK中的工具链编译,再来,依然不行,QT库换版本,换GCC也无效。

    折腾了好久了,此前在论坛发过一个相关内容帖子,当时以为是应用程序刷新过快堵塞了。实际上当时只是短暂的正常,并没有完全解决问题。
    没啥思路了,希望TI的工程师给点建议,非常感谢。

  • 我觉得需要定位一下问题的根源
    硬件方面,测试一下信号,看看是否有过冲或者驱动不足等,对比一下相关芯片的文档排查一下信号是不是满足要求。
    软件方面,可以先不用QT,直接对FB操作,看看能不能正常。
    如果最终定位就是QT的原因,建议在QT里面加打印,调试一下,或者寻求QT官方的支持。或者先升级到最新的QT试试。
  • 非常感谢 @Denny Yang 的回复!!
    一、你指的硬件信号是DDR与cpu的连接?还是lcd信号输出?如果是335x的输出的lcd信号,从逻辑上说我觉得应该没啥关联,如果是DDR,6层PCB,DDR信号不知如何测试可否有建议。
    二、FB的测试我百度了不少都是一些例程,划个方框之类的。如果要测试可能得自己弄个刷屏程序。或者有没有好的建议。
  • 你这个板子有测试一下不依赖QT的刷屏程序吗?

    跑一段时间看看是否正常

  • 用BBB也跑个和你相同的程序看看是否正常,先排查板子本身的问题,再看QT编译的问题