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 starter kit的速度问题请教

Other Parts Discussed in Thread: AM3359

本人用该板子,改写starterware的程序点亮了一个1920*1200点阵的TFT屏,发现刷屏的速度比较慢,

是数据写入buffer的速度太慢,不是dotclk慢,不知道是否有办法加快刷屏的速度?比如怎样重新设置am3359的主频?

怎样设置DDR3的频率?或者其他办法等等,谢谢

  • DDR3的频率设置可以看这里,最高可以到303MHz, http://processors.wiki.ti.com/index.php/AM335x_EMIF_Configuration_tips.

    你刷这么大的屏估计要把CPU都占完了,是有点吃力的

  • 经过研究,发现现在的设置已经是主频720Mhz,DDR3是303Mhz的了,但是还是比较慢,刷一屏数据大概要2.4秒,

    而我用三星6410点同样的屏,刷一屏数据大概是1秒,按道3359的速度不可能比6410慢的,另外,一点我觉得比较奇怪的是,

    如果使用CacheEnable(CACHE_ALL);,屏幕就一直在闪,好像刷屏速度很快的样子,但是显示是错乱的,所以我,目前只能设置成

     CacheEnable(CACHE_ICACHE);才显示正常,不知道为什么会这样?

    代码大概如下这样:

    U16 *GLCDBF=(U16*)(0x80000000+1024*1024*10);
    U16 LUTOffset = 16;

    RasterDMAFBConfig(LCDC_INSTANCE,
                      (unsigned int)GLCDBF,
                      (unsigned int)GLCDBF + SCREEN_W*SCREEN_H*2 +32 - 2,
                      0);

    RasterDMAFBConfig(LCDC_INSTANCE,
                      (unsigned int)GLCDBF,
                      (unsigned int)GLCDBF + SCREEN_W*SCREEN_H*2 +32 - 2,
                      1);

     /* Enable End of frame0/frame1 interrupt */

    RasterIntEnable(LCDC_INSTANCE, RASTER_END_OF_FRAME0_INT |
                                         RASTER_END_OF_FRAME1_INT);


        /* Enable raster */
        RasterEnable(LCDC_INSTANCE);


     pTemp=GLCDBF+LUTOffset;

        for(i=0;i<SCREEN_H/4;i++)
        {
         for(j=0;j<SCREEN_W;j++)
         {
          //*pTemp = COLOR_WHITE;
          *pTemp = 0xFFFF;
           pTemp++;
         }
        }

        for(i=0;i<SCREEN_H/4;i++)
        {
         for(j=0;j<SCREEN_W;j++)
         {
          //*pTemp = COLOR_BLUE;
          *pTemp = 0xF800;
           pTemp++;
         }
        }
        for(i=0;i<SCREEN_H/4;i++)
        {
         for(j=0;j<SCREEN_W;j++)
         {
          //*pTemp = COLOR_GREEN;
          *pTemp = 0x07E0;
           pTemp++;
         }
        }
        for(i=0;i<SCREEN_H/4;i++)
        {
         for(j=0;j<SCREEN_W;j++)
         {
          //*pTemp = COLOR_RED;
          *pTemp = 0x001F;
           pTemp++;
         }
        }

  • 需要找到一个合理的cache 策略,我在内部确认,看下版是否有改进,年底左右会出下一版。

  • CACHE_ALL 再配合CacheDataCleanBuff这个函数使用可以使得显示正常了,但是刷屏的过程中会出现很多色块一样的东西,不知道为什么?是否有CACHE方面的更详细的资料介绍?另外,

    RasterDMAFBConfig(LCDC_INSTANCE,
                      (unsigned int)GLCDBF,
                      (unsigned int)GLCDBF + SCREEN_W*SCREEN_H*2 +32 - 2,
                      0);

    这个函数当中不知道为什么 SCREEN_W*SCREEN_H*2 +32 - 2这一句需要减2,而不是直接写SCREEN_W*SCREEN_H*2 +32?

  • CacheDataCleanBuff 就是用来flush cache的, Cache的资料在google下找找吧,这个是个公共的东西,来自ARM,我们这边没有什么特别的资料

  • 今天再研究了一下,使用双buffer就完美解决了,刷屏速度很好,这个IC很给力,但是DMAConfig里面那个为什么要减2就一直搞不懂。

  • 谢谢分享,请问现在刷屏可以到多少?

  • 我的理解-2,是因为最后两位是保留的,-3也一样

  • 大概可能一秒钟3帧左右吧

  • 谢谢分享,不过感觉还是慢了点,请问你的应用程序占的CPU高么

  • 慢是因为我还是加了延时,如何不停刷屏会快一点,在debug模式下,好像在RUN菜单下面吧,有一个clock子菜单,把它enble,则可以计算断点与断点之间的时间,刷一屏的时间大概是60000000,但不知道这个时间的单位是什么,可否知道?

  • 您看看这个http://processors.wiki.ti.com/index.php/Profile_clock_in_CCS