精华内容
下载资源
问答
  • 嵌入式ARM开发板,迅为IMX6开发板QT下LVDS和HDMI双屏异显
  • RK3399的HDMI双屏异显的有关问题

    千次阅读 2020-03-31 23:08:08
    RK3399的HDMI双屏异显的有关问题: https://notes.z-dd.net/2020/03/31/RK3399%E7%9A%84HDMI%E5%8F%8C%E5%B1%8F%E5%BC%82%E6%98%BE%E7%9A%84%E6%9C%89%E5%85%B3%E9%97%AE%E9%A2%98/
    展开全文
  • 迅为iMX6 开发板 android 系统下 LVDS 和 HDMI 双屏异显的使用过程。 注意,iTOP-iMX6 开发板的 android 系统想要实现对 LVDS 和 HDMI 双屏异显功能的支持,需要使用 20180403 及其之后版本的源码和镜像。使用...

    迅为iMX6 开发板 android 系统下 LVDS 和 HDMI 双屏异显的使用过程。

    注意,iTOP-iMX6 开发板的 android 系统想要实现对 LVDS 和 HDMI 双屏异显功能的支持,需要使用 20180403 及其之后版本的源码和镜像。
    使用“Mfgtools-Rel-1.1.0_180403_MX6Q_UPDATER”版本的烧写工具,把系统烧写进开发板。系统启动之后,把“.mp4”格式的视频文件放到“/sdcard”目录下,如下图所示。 

     

     

    然后打开系统自带的“HdmiDualVideo”应用程序。如下图。 

     

     

     

     

    lvds 屏幕上显示如下图所示。 

     

     

     

    点击“SmallScreen”选项,选为“blank”。 

     

    如下图。 

     

    然后点击“Start the video”按钮,hdmi 屏幕开始播放视频。 

     

     

     

    具体效果如上图所示。
    如果有多个“.mp4”文件,可以在“HdmiDualVideo”应用中进行选择,如下图所示。 

     

     

     

    介绍完毕。 

    转载于:https://www.cnblogs.com/topeet/p/9952913.html

    展开全文
  • 效果:LVDS+HDMI 都是1080P的分辨率的屏,两者显示的内容完全一样,内容同步更新,无延迟。 实现过程中没有使用Wayland、X11、X-window等插件支持。单纯的底层驱动实现。 显示,一直都是一个很通用的功能,需要人...

    效果:LVDS+HDMI 都是1080P的分辨率的屏,两者显示的内容完全一样,内容同步更新,无延迟。

    实现过程中没有使用Wayland、X11、X-window等插件支持。单纯的底层驱动实现。

    显示,一直都是一个很通用的功能,需要人机交互的产品,基本都有个屏。

    IMX6D 有3种屏幕显示接口: HDMI、LVDS、LCD。这三种接口基本满足了大部分产品显示接口的需求。

    在使用IMX6的过程中,只是简单的使用一种接口,或者同时独立的使用多种接口,这些都是比较简单的,在NXP官网提供的BSP里面就已经实现了,但是在面对产品的更高需求时,官网提供的BSP就显得有点乏力了。因此这里我们来介绍一下目前官网还没有公开支持的双屏同显功能。

    注:IMX6D在硬件上有两路LVDS通道。

    在实现双屏同显的过程中,我们需要了解以下相关信息:

    IPU、DI、dual-mode、split-mode

    我简单说一下我对上面几个关键词的理解,以及它们之间的关系:

    IPU:Image Processing Unit,图像处理单元。

    DI:Display Interface,显示接口。

    dual-mode:LVDS接口的一种模式,双通道模式,两路LVDS输出相同的图像。(这里可以通过接2个单路LVDS屏实现LVDS的双屏同显)

    split-mode:LVDS接口的一种模式,分离模式,将LVDS图像输出分离为奇偶,奇路通道显示奇数据位图像,偶路通道显示偶数据位图像。

    那么上面4着的联系是什么呢?

    一个IPU有两个DI,一个DI对应一种显示接口。

    那么我们这里双屏同显怎么实现呢?就是让LVDS和HDMI共用同一个IPU的同一个DI。这样就能保证LVDS和HDMI显示是相同的了。

    介绍一下软硬件信息:

    内核:Linux 3.14.52

    硬件:1、IMX6D      2、双LVDS屏 -1920*1080      3、HDMI接口1920*1080显示器

    注:实现过程中,我们使用IPU1的DI0这个接口

    在编码实现前,你需要先确认以下信息:

    1、你的LVDS驱动当前已经调试OK,可以正常驱动1080P的屏。

    2、你的HDMI驱动当前已经调试OK,可以正常驱动1080P的屏。

    如果上述两个步骤没有完成,那么你根据我的步骤完成了下面的移植,你的屏幕还是可能不会正常显示。

    编码实现:

    第一步、修改设备树相关信息:主要是修改LVDS和HDMI对应的IPU和DI配置。

    修改 arch/arm/boot/dts/imx6q-sabresd.dts 文件里面的 ldb 节点信息。

    //这是原始配置
    &ldb {
    	lvds-channel@0 {
    		crtc = "ipu2-di0";
    	};
    
    	lvds-channel@1 {
    		crtc = "ipu2-di1";
    	};
    };
    
    //这是修改后的配置
    &ldb {
    	lvds-channel@0 {
    		crtc = "ipu1-di0";
    	};
    /*
    	lvds-channel@1 {
    		crtc = "ipu2-di1";
    	};
    */
    };
    //注:LVDS这里的IPU编号是从1开始。HDMI使用的IPU编号是从0开始。因为这个原因,我之前弄了半天都没有弄出来。

    修改 arch/arm/boot/dts/imx6qdl-sabresd.dtsi 文件里面的 ldb 节点信息:

    //这是原始配置
    
    &ldb {
    	status = "okay";
    
    	lvds-channel@0 {
    		fsl,data-mapping = "spwg";
    		fsl,data-width = <18>;
    		status = "okay";
    
    		display-timings {
    			native-mode = <&timing0>;
    			timing0: hsd100pxn1 {
    				clock-frequency = <65000000>;
    				hactive = <1024>;
    				vactive = <768>;
    				hback-porch = <220>;
    				hfront-porch = <40>;
    				vback-porch = <21>;
    				vfront-porch = <7>;
    				hsync-len = <60>;
    				vsync-len = <10>;
    			};
    		};
    	};
    
    	lvds-channel@1 {
    		fsl,data-mapping = "spwg";
    		fsl,data-width = <18>;
    		primary;
    		status = "okay";
    
    		display-timings {
    			native-mode = <&timing1>;
    			timing1: hsd100pxn1 {
    				clock-frequency = <65000000>;
    				hactive = <1024>;
    				vactive = <768>;
    				hback-porch = <220>;
    				hfront-porch = <40>;
    				vback-porch = <21>;
    				vfront-porch = <7>;
    				hsync-len = <60>;
    				vsync-len = <10>;
    			};
    		};
    	};
    };
    
    //这是修改后的配置
    &ldb {
    	status = "okay";
    	split-mode;
    	lvds-channel@0 {
    		fsl,data-mapping = "spwg";
    		fsl,data-width = <24>;
    		crtc = "ipu1-di0";		
    		status = "okay";
    		primary;
    
    		display-timings {
    			native-mode = <&timing0>;
    			timing0: hsd100pxn1 {
    				clock-frequency = <141000000>; 
    				hactive = <1920>;
    				vactive = <1080>;
    				hback-porch = <180>;
    				hfront-porch = <108>;
    				vback-porch = <38>;
    				vfront-porch = <10>;
    				hsync-len = <48>;
    				vsync-len = <10>;
    			};
    		};
    	};
    };
    
    //注:这里涉及到LVDS参数的配置,我这里设置的参数,到各位的产品里面不一定适用,因为适用的屏不一样,因此屏相关的参数还需要各位自己去调试。

     HDMI对应的信息配置如下:

    &hdmi_core {
    	ipu_id = <0>;
    	disp_id = <0>;
    	status = "okay";
    };
    //注:HDMI的IPU从0开始计数,这样就可以和LVDS对应

    到这里,我们设备树里面的配置信息就配置好了,接下来就是修改对应的驱动代码,让驱动代码支持了。

    修改  drivers/video/mxc/mxc_ipuv3_fb.c 文件里面 mxcfb_probe函数,主要是将该函数里面的如下代码进行注释:

    //原始代码
    static int mxcfb_probe(struct platform_device *pdev)
    {
    //……前面无关紧要的代码
    
    	ret = mxcfb_dispdrv_init(pdev, fbi);
    	if (ret < 0)
    		goto init_dispdrv_failed;
    
    	ret = ipu_test_set_usage(mxcfbi->ipu_id, mxcfbi->ipu_di);
    	if (ret < 0) {
    		dev_err(&pdev->dev, "ipu%d-di%d already in use\n",
    				mxcfbi->ipu_id, mxcfbi->ipu_di);
    		goto ipu_in_busy;
    	}
    
    	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
    	if (res && res->start && res->end) {
    		fbi->fix.smem_len = res->end - res->start + 1;
    		fbi->fix.smem_start = res->start;
    		fbi->screen_base = ioremap(fbi->fix.smem_start, fbi->fix.smem_len);
    		/* Do not clear the fb content drawn in bootloader. */
    		if (!mxcfbi->late_init)
    			memset(fbi->screen_base, 0, fbi->fix.smem_len);
    	}
    ……//后面无关紧要的代码
    }
    
    //修改后的代码
    static int mxcfb_probe(struct platform_device *pdev)
    {
    //……前面无关紧要的代码
    
    	ret = mxcfb_dispdrv_init(pdev, fbi);
    	if (ret < 0)
    		goto init_dispdrv_failed;
    //注释下面的代码是因为下面的代码回检测我们的IPU对应的DI是否已经被使用,如果被使用,那么该DI就不会再让我们使用了。这里我们注释掉这个检测,让LVDS和HDMI使用同一个DI
    /*
    	ret = ipu_test_set_usage(mxcfbi->ipu_id, mxcfbi->ipu_di);
    	if (ret < 0) {
    		dev_err(&pdev->dev, "ipu%d-di%d already in use\n",
    				mxcfbi->ipu_id, mxcfbi->ipu_di);
    		goto ipu_in_busy;
    	}
    */
    	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
    	if (res && res->start && res->end) {
    		fbi->fix.smem_len = res->end - res->start + 1;
    		fbi->fix.smem_start = res->start;
    		fbi->screen_base = ioremap(fbi->fix.smem_start, fbi->fix.smem_len);
    		/* Do not clear the fb content drawn in bootloader. */
    		if (!mxcfbi->late_init)
    			memset(fbi->screen_base, 0, fbi->fix.smem_len);
    	}
    ……//后面无关紧要的代码
    }

    好了,到这里我们的双屏同显基本就完成了。

    现在你运行你的程序,你就可以看见HDMI和LVDS显示同样的内容了。

    展开全文
  • 全志R18+全志R40验证OK!选择[APP] --> [Activity] --> [Presentation]
  • 全志A20平台实现VGA和HDMI双屏同显

    千次阅读 2016-10-25 11:26:25
    6)设置中切换HDMI android/device/softwinner/common/packages/TvdSettings/src/com/android/settings/DisplaySettings.java switchDispMode函数 - if (displayManager.getDisplayOutputType(0) != item....

    http://blog.csdn.net/wlwl0071986/article/details/50052759

    1)sys_config.fex中配置如下:
    配置VGA 1024x768输出
    disp_init_enable = 1
    disp_mode = 0

    screen0_output_type = 4
    screen0_output_mode = 4

    screen1_output_type = 1
    screen1_output_mode = 4

    2)请把sys_config.fex中的fb0_scaler_mode_enable = 1改为fb0_scaler_mode_enable = 0;

    3)android/system/core/init/init.c console_init_action 函数注释掉这一行 //init_initdisplay();

    4)android\frameworks\base\services\java\com\android\server \system\SystemServer.java
    中对热插拔检测和输出模式的控制全部屏蔽掉

    5)android\frameworks\base\packages\SystemUI\src\com\android\systemui\statusbar\policy\DisplayController.java
    中控制显示输出的策略模式由mDispHotPolicy = new HomletHotPlug()改成mDispHotPolicy = new StatusBarPadHotPlug()

    6)设置中切换HDMI
    android/device/softwinner/common/packages/TvdSettings/src/com/android/settings/DisplaySettings.java
    switchDispMode函数
    - if (displayManager.getDisplayOutputType(0) != item.mOutputType
    - || displayManager.getDisplayOutputFormat(0) != item.mFormat) {
    + if (displayManager.getDisplayOutputType(1) != item.mOutputType
    + || displayManager.getDisplayOutputFormat(1) != item.mFormat) {
    // displayManager.setDisplayOutputType(0, item.mOutputType,
    // item.mFormat);
    - displayManager.setDisplayParameter(0, item.mOutputType,
    + displayManager.setDisplayParameter(1, item.mOutputType,
    item.mFormat);
    + //displayManager
    + // .setDisplayMode(DisplayManagerAw.DISPLAY_MODE_SINGLE_FB_GPU);
    displayManager
    - .setDisplayMode(DisplayManagerAw.DISPLAY_MODE_SINGLE_FB_GPU);
    + .setDisplayMode(DisplayManagerAw.DISPLAY_MODE_DUALSAME);
    // 设置音频输出模式

    设置中的切边
    — a/packages/TvdSettings/src/com/android/settings/DisplayTrimmingPreference.java
    +++ b/packages/TvdSettings/src/com/android/settings/DisplayTrimmingPreference.java
    @@ -112,7 +112,7 @@ public class DisplayTrimmingPreference extends SeekBarDialogPreference implement
    return ret;
    }
    private void setDisplayPercent(int value) {
    - mDisplayManagerAw.setDisplayAreaPercent(0,value);
    + mDisplayManagerAw.setDisplayAreaPercent(1,value);^M
    }

    设置中的饱和度
    — a/packages/TvdSettings/src/com/android/settings/SaturationPreference.java
    +++ b/packages/TvdSettings/src/com/android/settings/SaturationPreference.java
    @@ -85,7 +85,7 @@ public class SaturationPreference extends SeekBarDialogPreference implements
    Settings.System.COLOR_SATURATION, value);
    }
    private void setSaturation(int saturation) {
    - mDisplayManagerAw.setDisplaySaturation(0,saturation);
    + mDisplayManagerAw.setDisplaySaturation(1,saturation);^M
    }

    设置中的亮度
    — a/packages/TvdSettings/src/com/android/settings/TVBrightnessPreference.java
    +++ b/packages/TvdSettings/src/com/android/settings/TVBrightnessPreference.java
    @@ -152,7 +152,7 @@ public class TVBrightnessPreference extends SeekBarDialogPreference implements

         DisplayManagerAw dm = (DisplayManagerAw) getContext().getSystemService(Context.DISPLAY_SERVICE_AW);
         if (dm != null) {
    

    - dm.setDisplayBright(0,brightness);
    + dm.setDisplayBright(1,brightness);
    }
    }

    设置中的对比度
    — a/packages/TvdSettings/src/com/android/settings/ContrastPreference.java
    +++ b/packages/TvdSettings/src/com/android/settings/ContrastPreference.java
    @@ -90,7 +90,7 @@ public class ContrastPreference extends SeekBarDialogPreference implements
    Settings.System.COLOR_CONTRAST,value);
    }
    private void setContrast(int Contrasrt) {
    - mDisplayManagerAw.setDisplayContrast(0,Contrasrt);
    + mDisplayManagerAw.setDisplayContrast(1,Contrasrt);^M
    }

    展开全文
  • 使用HDMI转DVI线组双屏

    千次阅读 2019-05-09 10:01:08
    1 简介 在楼主工作过程中,由于单位属于涉密单位,因此内外网是无法直接通过互联网互通的,在携带个人笔记本进入单位办公时,由于个人PC是几年前的笔记本,因此...要组成这样的双屏系统,需要具有如下三个设备 HD...
  • 文档为使用HDMI转DVI线投影笔记本电脑到显示器上的操作步骤。
  • 此补丁为RK3288双屏异显时,HDMI作主屏时使用。该补丁本人亲自验证过,可实用。
  • 首先将迅为-IMX6开发板分别连接9.7寸屏和HDMI显示器 然后使用MfgTool工具烧写QT系统 然后拨码开关设置成从emmc启动 在uboot命令行下设置开发板为9.7寸屏显示(这样也会同时设置HDMI) 设置完,保存配置,如下图: ...
  • 全志V40 HDMI + LVDS实现双屏异显

    千次阅读 2018-01-24 16:20:32
    screenx_output_mode (used for hdmi output, 0:480i 1:576i 2:480p 3:576p 4:720p50) ; (5:720p60 6:1080i50 7:1080i60 8:1080p24 9:1080p50 10:1080p60) ;fbx format (4:RGB655 5:RGB565 6:RGB556 7:ARGB1555 ...
  • 本资源解决了讯为itop6818开发板在ubuntu系统上设置双屏异显的问题。资源包含替换文件和替换方法、内核配置方法等。可以实现触摸屏和HDMI双屏异显以及不影响触摸控制。
  • 买一个VGA转USB接口(或其他类型接口)。我买的是这一家USB转VGA ABS外壳(配光盘...如果HDMI没有信号,也显示无法投影,这是因为下图中的Inter® UHD Graphics被禁了,这是由于与USB外置显卡驱动不兼容造成的。彻底...
  • 各位大神,求赐教: 小弟在做android4.4.2双屏异显的功能 ,... HDMI 双屏同显是没问题的; 请问下,现该怎么在display中添加一双屏异显功能比较恰当,接着又该如何在hwc中创建它显示部分的功能,非常谢谢!!
  • 之前有调试好主屏edp+副屏hdmi双屏显示的,现在需要把hdmi当主屏显示,没有副屏。修改后系统能开机,但是无法显示。 异常Log: 01-01 08:02:41.026 E/hwc-drm-resources( 223): failed to find primary display ...
  • LVDS+HDMI导致的USB触摸异常或双屏同显导致触摸异常的解决办法: 1.dumpsys input 查看此usb tp的信息,如下: 5: ILITEK ILITEK-TP Classes: 0x80000014 Path: /dev/input/event4 Enabled: true Descriptor:...
  • 这个KTV安卓方案,早在去年就已经完成了。...1路hdmi、1路cvbs、1路vga 2路rs232串口、一路line in、一路line out、6路usb接口、1路网口、1路wifi。 功能强大,支持双屏异显。非常适合专业KTV使用。
  • ubuntu双屏

    2019-04-02 18:49:27
    xrandr --output DVI-D-0 --right-of HDMI-0 --auto 开机之后要加win+p
  • 基于瑞芯微 RK3399高性能处理器,搭载Android 7.1系统,超强...集成HDMI、MIPI、LVDS、eDP显示接口,最大支持4K 60Hz; 强大的硬件解码能力,支持VP9、H.265、H.264 4K硬解码; 支持双屏异显和同显;  丰富的...
  • manjaro双屏显示

    千次阅读 2019-07-09 20:55:47
    笔记本独显是GTX960M,外接屏幕采取独显输出,笔记本只有一个HDMI接口,笔记本本身集显显示。 一、安装双显卡管理程序bumblebee 有的manjaro版本可能已经预装好的,没有的话自己安装一下: sudo pacman -S virtualgl...
  • 最近在做一个Android双屏异显的项目,要实现一台Android设备通过HDMI连接两个显示器,然后在一个App中同时显示两个不同的画面。 标题实际上Android并不存在真正的像Windows一样的双屏异显,Android的双屏异显实际上...
  • iTOP-4418/6818开发板平台安卓系统下支持双屏异显,双屏同显,客户可按照不同用途,分别播放适合屏幕显示方式的内容 ,如HDMI屏幕和LCD屏幕显示不同内容, 一个屏幕播放广告,另一个屏幕运行Android系统 。...

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 162
精华内容 64
关键字:

hdmi双屏