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连接的LR430 LCD显示器对应的设备文件节点是哪个,有没有例程?谢谢

  • LCD应该是对应的 /dev/fb吧。

    一般/dev/fb0是OSD0层,是默认的LCD输出设备。

  • 谢谢!但是是否要在uboot里修改传递给内核的参数呢,因为我现在对/dev/fb0操作,只能在小电视(模拟LCD)上输出。

  • 谢谢!但是是否要在uboot里修改传递给内核的参数呢,因为我现在对/dev/fb0操作,只能在小电视(模拟LCD)上输出。

  • 启动参数要设置 davinci_enc_mngr.ch0_output=LCD

  • 为什么我的dm365只能在模拟LCD上输出,无法在数字LCD上输出?我已经设置了davinci_enc_mngr.ch0_output=LCD。

  • 如果设置了davinci_enc_mngr.ch0_output=LCD,驱动里要把avnetlcd的驱动编译进来

  • 谢谢,如果我已经把驱动编译进内核了呢,那该如何?

  • 在boot参数中加上earlyprint initdebug debug_level=8通常会打印出来相应的设备信息

    framebuffer是逻辑驱动,物理驱动是enc部分,具体还是看执行逻辑

  • Tuff Li您好:

            我现在正在做DM365的数字LCD显示。在这个贴子里我看到了您大致的意思是把avnetlcd驱动编译进内核,然后再uboot驱动参数里加上或修改davinci_enc_mngr.ch0_output=LCD,此时数字LCD控制器就应该有可用信号输出了,至于LCD的型号不同可能需要修改对应驱动或者配置的参数。

            我现在有以下几点疑问,还请你不吝赐教!

    1. 以上我描述的正确与否?
    2. 在DM365+LSP+dvsdk+ipnc系统中都需要做哪几部分工作?比如,lsp(内核)中lcd 控制器对应的驱动在哪里?用不用frambuffer驱动?用不用v4l2等等;
    3. 如果用了frambuffer驱动我在系统运行的时候在dev目录下没有见到fb0之类的设备,是不是没有把对应驱动模块编译进内核?就像您说的avnetlcd驱动,但是这个驱动模块我在ti-davinci目录下没有找到这个驱动模块,还请您明示!
    4. ipnc2.6中貌似没有对数字液晶屏支持的代码。如果您对ipnc2.6有所了解,还请您明示!如果没有我可以想办法去加。

           以上是我问题的描述,请您不吝赐教!定万分感谢!

    谢谢!

  • 您好!

            你提到有没有LCD显示的例程,或者是设备节点之类的问题。请问您现在问题解决了吗?我现在正在做这部分工作同样遇到这样的问题,如果您已解决还请您不吝赐教!万分感谢!

    谢谢!

  • 除了前面提到的u-boot参数设置,还应该注意这两个参数以及分辨率:

    dAttrs.videoStd = Display_Std_V4L2;
    dAttrs.videoOutput = Display_Output_LCD;

    内核里面稍微配置一下lcd的参数即可,一般是改下分辨率就可以

  • 您好!

            谢谢您的悉心答复!您提到的dAttrs.videoStd = Display_Std_V4L2; dAttrs.videoOutput = Display_Output_LCD;这两个参数的设置在什么地方?还有您提到的驱动里面需要改LCD的分辨率之类的,我在驱动里边找到了好几个关于lcd驱动的代码,但是不能去顶是哪一个文件?您能给明示一下吗?谢谢!

    谢谢!

  • 这两个参数是encode和decode里面lcd显示时用到的

    驱动可以修改kernel\drivers\media\video\davinci\logicpd_encoder.c

    static struct logicpd_encoder_config logicpd_encoder_configuration = {
    .no_of_outputs = LOGICPD_ENCODER_MAX_NO_OUTPUTS,
    .output[0] = {
    .output_name = VID_ENC_OUTPUT_LCD,
    .no_of_standard = LOGICPD_ENCODER_GRAPHICS_NUM_STD,
    .standards[0] = {
    .name = VID_ENC_STD_640x480,
    .std = 1,
    .if_type = VID_ENC_IF_PRGB,
    .interlaced = 0,
    .xres = 800, //640,
    .yres = 480,
    .fps = {30, 1}, //{60, 1},
    .left_margin = 85,
    .right_margin = 70,
    .upper_margin = 32,
    .lower_margin = 11,
    .hsync_len = 9,
    .vsync_len = 9,
    .flags = 0}, /* hsync -ve, vsync -ve */

    ....

  • 您好:

            让数字LCD液晶屏显示可能就需要这几个操作,我也找到了相关操作位置。但是我一直想弄通整个通路,比如模拟屏显示的时候应用程序davinci_display.c在初始化的时候打开了"dev/video2"设备,然后通过VPBE的encoder输出模拟视频。在数字LCD显示流程中应用层好像没有找到open设备文件“dev/fb/0”。

            如果可以的话还请您简单叙述以下从应用层到驱动层整个大致流程。比如我理解的是驱动层会把uboot参数读入,然后进行配置,上层应用程序把准备好的数据放入指定buffer(encoder输入buffer)之后,encoder会把数据进行对应操作,而不需要fb/0之类的操作。如果方便请你大致列举一下各个流程对应的源文件。

    非常感谢!!!

  • 您好:

             这段时间一直在看IPNC系统中对LCD液晶屏的显示,自己觉得对ipnc2.6中display流程有了更深一步的了解。

             我现在能想到的有三种情况让数字LCD显示视频,不知道那种是最简单的或者可行的,请您指教。

             1. 直接对dev/fb/0设备文件进行操作

          如果我直接打开dev/fb/0设备文件操作该设备(其实是fbmem.c实现的framebuffer设备驱动),是不是就对数字液晶屏进行了操作(这种方法跳过了V4l2)?这些操作需要输入的视频格式是什么样的?可以是avserver最终给display的YUV422格式的吗?输出默认是不是PRGB565格式的?

         如果是这种方法的话我只需要想办法直接把avserver中display线程的YUV422格式的视频数据一帧一帧写入framebuffer中就行了。

             2. 对现有系统代码进行修改

              这时需要对avserver已经实现了的模拟LCD流程进行修改,这时会用到V4l2设备驱动(videodev.c文件实现)。比如把layer由原来的VID0改为OSD0等。

     如果是这样的话我需要在应用层设置一些VPBE中encoder的寄存器吗?比如输入格式为YUV422,输出格式为RGB565等等,或者其他的一系列操作?

    3. 最简单的方法

    就像以前咱们讨论的只需要把avnetlcd等模块编译进内核、把uboot参数做简单那的修改、程序部分只需要修改一下分辨率?

             如果是这样的话是不是avserver中display线程把现有的YUV422格式的视频数据进行现有的操作,入队V4L2中就行了?以下的工作就由已实现对应的模块做格式转换,由LCD控制器产生时序等等?

    如果您现在工作挺忙,您明示以下这三种方法的哪一种就行。

    真诚的感谢您作出解答,谢谢!

    此致

            敬礼!

  • 您好,按照上面讲的,我将encode demo进行了修改,现在LCD上面有东西输出,但是发现画面色彩不正常,感觉像是实际正常视频上面叠加了一层彩色的影子,影子框架的颜色是绿色或者紫色。不知道是什么问题导致的,RGB线序应该没错,因为开机启动过程中画面颜色都是很正常的,不知道您LCD配置有木有成功,希望能解答!

     此致

        敬礼

  • 有输出,但有看起来有一层绿色的膜,一般是分辨率设置不对,输出的图像分辨率不能超过LCD的分辨率,而且横向应为32的整数倍