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.

dm365 LCD显示右上角有光标闪烁怎么回事?



您好:

       我使用的DM365,在显示开机LOGO时,屏幕的右上角总是有一个闪烁的光标:蓝色的一个小条,白色的在一闪一闪的(其中在系统启动后没有屏幕显示时背景色就是蓝色的);在不显示LOGO,显示QT程序后,关闭QT程序,只有背景色(蓝色)的时候,在 屏幕的右上角仍然有这个闪烁的光标存在,显示QT程序时好像就没有了,这是怎么回事呢?

        怎么去掉这个闪烁的光标呢?请各位大神多多指点,多谢了。

  • 你好,

    你能否配置寄存器RECTCUR.RCACT=0 (off)看看是否有改善?

  • 您好,非常感谢您的回复。

    寄存器RECTCUR读出来值为0x00,问题现象见附件图片

  • 你好,

    你能否读取OSDWIN1MD.OASW,看是否为1,也就是配置为Attribute window。如果是,将该值配置为0,并且disable OSD win1,看看是否有改善?

  • Chris Meng :

             你好,按照你说的,我读取出来OSDWIN1MD(0x01c71c0c)值为0x8000,其中OASW(bit15)为1,将该寄存器设置为0后,仍然有光标在闪烁,没有效果。在实验过程中发现,如果在启动过程中添加上启动LOGO,就会有此问题,去掉开机logo,就不会有这个问题了。不知道是什么原因导致的呢?

  • PS:这里添加的LOGO是我要显示的一个全屏的LOGO,大小是480X800,不是标准的规格,如果使用BSP里面带有的小LOGO的话,也是没有此现象的。换句话说,应该是由于换了一个大的LOGO导致此问题的发生。

  • 你好,

    DM36x的OSD中共5个窗口,1个光标窗口,2个OSD窗口(一个可以配置为属性窗口),2个video窗口。你可以一个个关闭,看是谁的影响。

    对了,当你设定寄存器后,请读回确认,确保没有被别的代码改掉。

    还有uboot logo是如何使能的,你能否也分享一下,谢谢!

  • 您好:

            1、我试着将各个窗口使能进行了设置,其中2个video窗口(VIDWINMD)和光标串口(RECTCUR)寄存器读取值为0,为关闭状态;OSD1不管设置为属性窗口还是OSD窗口,均为关闭状态(值为0x8000,其中bit0为0);OSD0窗口(OSDWIN0MD)值为0x3039,关闭(bit0置0)后,LCD显示白屏;

            2、寄存器设定后,我都进行了回读确认。这个是可以确定修改了没有效果的。

            3、Uboot LOGO还没有添加,正打算添加这一部分,其中遇到如下问题:使用OSD0显示,LCD只能显示纯色,我想在一屏数据中显示不同的颜色,不能正常显示,这是哪里没有配置正确吗?配置见附件。

  • yx wang 说:

            1、我试着将各个窗口使能进行了设置,其中2个video窗口(VIDWINMD)和光标串口(RECTCUR)寄存器读取值为0,为关闭状态;OSD1不管设置为属性窗口还是OSD窗口,均为关闭状态(值为0x8000,其中bit0为0);OSD0窗口(OSDWIN0MD)值为0x3039,关闭(bit0置0)后,LCD显示白屏;

    [Chris] OSD1如果配置为属性窗口,设置OSDWIN1MD的bit0是无法关闭属性窗口的。必须配置OSD1为普通OSD窗口,才能关闭。请问你的ccs测试例子也有光标的问题么?

    yx wang 说:

            3、Uboot LOGO还没有添加,正打算添加这一部分,其中遇到如下问题:使用OSD0显示,LCD只能显示纯色,我想在一屏数据中显示不同的颜色,不能正常显示,这是哪里没有配置正确吗?配置见附件。

    【Chris】请阅读以下DM36x VPBE user guide,里面提到了OSD窗口可以支持Bitmap, RGB565, RGB888+blend, YUV422。你的代码里面的配置是OSD_OSDWIN0MD  = 0x2003;,也就是使用RGB565的格式。你是说无论你内存里面的值是多少,你显示都是一个颜色?是什么颜色?你的CCS里面VENC的配置,和你Linux下可以正常显示屏时候的VENC寄存器配置是否一致?
  • 你好,

    代码里面的OSD0窗口的高位地址配置的是vid0的(OSD_VIDWINADH),而不是osd0的(OSDWINADH)。你使用的是OSD0,应该配置OSDWINADH。

     

  • Chris,您好:

    非常感谢您的耐心回答!!!

            1、针对“OSD1如果配置为属性窗口,设置OSDWIN1MD的bit0是无法关闭属性窗口的。必须配置OSD1为普通OSD窗口,才能关闭。请问你的ccs测试例子也有光标的问题么?”      

               谢谢您的解释,明白了,我按照你第一次说的那样,也就是配置OSD1为普通OSD窗口后关闭,是没有效果的。CCS测试例子还没有正确显示,不过在整屏显示一个颜色的时候(整屏显示不同颜色还没有调试出来)是没有这个闪烁光标显示的。


            2、对于“请阅读以下DM36x VPBE user guide,里面提到了OSD窗口可以支持Bitmap, RGB565, RGB888+blend, YUV422。你的代码里面的配置是OSD_OSDWIN0MD  = 0x2003;,也就是使用RGB565的格式。你是说无论你内存里面的值是多少,你显示都是一个颜色?是什么颜色?你的CCS里面VENC的配置,和你Linux下可以正常显示屏时候的VENC寄存器配置是否一致?

            LCD显示的不是同一个颜色,而是说,可以根据想指向的DDR区域写入不同的值,LCD就可以显示不同的数据(比如,填充数据0xF800则显示红色,填充数据0x07E0可以显示绿色,填充0x1F可以显示蓝色),但是LCD显示时是全屏都是一个颜色,即使我填充不同的数据在同一屏数据中(LCD大小为400X240,400X140填充0xF800,400X100填充0x0x07E0,则不会出现红色和绿色同时显示的场景);我在DM36x VPBE user guide下也没有找到具体这样的解释。

    我最终是想要显示LOGO数据,添加到Uboot下面,使用OSD0显示,再按照附件中的VNEC相关的配置,这样可以实现吗?还是说要使用其他窗口(比如video)才能实现?有没有相关配置或者工程可以参考?我目前参考的是彩条输出工程,但是差别挺大的。


            3、对于“代码里面的OSD0窗口的高位地址配置的是vid0的(OSD_VIDWINADH),而不是osd0的(OSDWINADH)。你使用的是OSD0,应该配置OSDWINADH。”

              这个是没有问题的,只是头文件中名字写的有歧义,实际为

    #define OSD_VIDWINADH      *( volatile Uint32* )( OSD_BASE + 0x34 )

    谢谢,期待您的回复。

  •  补充:“你的CCS里面VENC的配置,和你Linux下可以正常显示屏时候的VENC寄存器配置是否一致?

                 CCS里面VENC的配置基本与Linux下正常显示的时候的VENC的配置一直,去掉了模拟输出部分。

  • 你好,

    能否尝试field mode?

    OSD_OSDWIN0MD  = 0x2001;

  • Chris Meng:

            您好,尝试过使用Field模式,仍然没有效果。刚又确认了下,仍是不行。

  • Chris Meng:

            您好,

            我最终是想要显示LOGO数据,添加到Uboot下面。是可以通过使用OSD0显示来实现吧?还是说要使用其他窗口(比如video)才能实现?

    有没有相关配置或者工程可以参考?我目前参考的是CCS中彩条输出实验,但是差别挺大的。

  • Chris Meng,您好:

            现在CCS工程下面调试LCD显示自定义的数据,实际显示的窗口大小和设置的窗口大小不一致,设置为480X270,但是实际行大小不到480,貌似只有二百多个像素,这样就导致在显示数据时错乱的问题,请问为什么设置的大小和实际输出的大小不匹配呢?

    附件为CCS工程相关配置;

    谢谢~~