全志科技公司A83T Qt 支持双屏显示

目前A83T支持单屏显示,首屏为LCD或者首屏为hdmi,都使用无论使用SCREEN0还是SCREEN1都是使用FB0作为framebuffer,在android下可以实现LCD和HDMI同样屏幕显示,而我们需要LCD和HDMI分别显示。
FrameBuffer采用的是linux下的framebuffer分层驱动,fbmem.c作为通用层,然后驱动层实现对fb操作的可选部分,包括一系列的fb_ops。A83T硬件上有一个DE,然后通过TCON0和TCON1实现对显示的输出,其中TCON0控制LCD,实现对lvds,dsi,rgb接口的LCD控制,TCON1实现对HDMI的控制,整体的硬件框架如图。
全志科技公司A83T Qt 支持双屏显示
全志科技公司A83T Qt 支持双屏显示
从框架上来看是可以实现双屏异显的,目前系统无法实现可能还和以前一样硬件上为了和android配合接下来抽丝剥茧把驱动撸一遍,应该就能找到原因。
驱动层上共注册了两个设备,一个是disp,另一个是hdmi,通过disp的probe对全盘进行初始化,通过hdmi的probe进行hdmi的底层初始化。
[ 0.750562] [dev_disp]disp_module_init
[ 0.750989] [dev_disp]disp probe function
[ 0.751092] [dev_disp]start disp_init
[ 0.751297] [dev_disp]display mode is 0
[ 0.751398] [dev_disp]disp_mode is 0,base=0xf1000000, size=0x400000, irq=0
[ 0.751665] [dev_disp]disp_mode is 1,base=0xf1c0c000, size=0x3fc, irq=118
[ 0.751767] [dev_disp]disp_mode is 2,base=0xf1c0d000, size=0x3fc, irq=119
[ 0.751947] [dev_disp]disp_mode is 3,base=0x0, size=0x0, irq=0
[ 0.752048] [dev_disp]disp_mode is 4,base=0xf1c26000, size=0x2fc, irq=0
[ 0.752227] [dev_disp]disp_mode is 5,base=0x0, size=0x0, irq=0
[ 0.752325] [dev_disp]disp_mode is 6,base=0x0, size=0x0, irq=0
[ 0.752503] [dev_disp]disp_mode is 7,base=0x0, size=0x0, irq=0
[ 0.752692] [dev_disp]boot para type is 1,mode is 0
[ 0.752791] [disp_display]start bsp_disp_init
[ 0.753406] [disp_display]start init hdmi
[ 0.753592] [disp_hdmi]hdmi is used,start disp_init_hdmi
[ 0.753692] [disp_hdmi]disp number is 0
[ 0.753868] [disp_hdmi]disp number is 1
[ 0.753965] [disp_hdmi]disp 1 is output by hdmi
[ 0.754064] [disp_hdmi]mode is 4,irq number is 119
[ 0.754243] [disp_hdmi]start check hdmi is supported and register
[ 0.754429] [disp_hdmi]start hdmi init call clk init
[ 0.754605] [disp_hdmi]start hdmi clk init
[ 0.754710] [disp_hdmi]init hdmi and register
[ 0.754954] [dev_disp]total screens is 2
[ 0.792619] [dev_disp]start work
[ 0.792728] [dev_disp]bsp disp sync with hw
[ 0.793464] [dev_disp]output type is not hdmi or hdmi is registed
[ 1.256339] [dev_hdmi]start hdmi module init
[ 1.261716] [drv_hdmi]start hdmi_init
[ 1.266445] [drv_hdmi]start hdmi thread hdmi_run_thread
[ 1.272615] [dev_disp]start work
[ 1.276419] [dev_disp]output type is not hdmi or hdmi is registed

LCD作为首屏和hdmi作为首屏有两个不一样的地方,LCD作为首屏使用的是syn=1,貌似是通过硬件进行显示同步;hdmi时并不这样做,差异表现在disp的初始化后的start_work函数。
Start_work函数解析。
首先等待初始化完成,如果50ms还没初始化完成,则报异常。
然后判断启动参数,启动参数为sync=1时,则根据启动时对应的屏幕是不是一致的,不一致则切换,并且设置硬件sync函数;如果sync不是1时,则分别对不同的屏幕做初始化。启动时的屏幕配置则从command line中获取,经过验证,lcd为主屏是设置为100,hdmi为主屏时设置为00.

从而在start_work中导致了不同,如果是LCD启动,则如果输出类型是hdmi且HDMI没有注册(也就是没有初始化)则退出,否则判断启动时对应的disp也就是fb是否和控制器对应,不对应则调用bsp_disp_sync_with_hw

bsp_disp_sync_with_hw函数,在启动时syn=1并且启动类型不是DISP_OUTPUT_TYPE_NONE时才可以。先获取fb对应的控制器,然后调用disp_device_attached,从两个screen里找到一个disp_device_attached可以成功的。然后调用控制器,调用控制器对应的设备的sw_enable。

在sync为0时,如果设置的是使用screen0,id=0或者screen1,id=1时,如果输出类型是lcd,lcd已经注册且当前id对应的显示类型不是lcd,调用bsp_disp_device_switch进行切换,hdmi时也如此操作,如果既不是lcd,也不是hdmi,则直接调用切换。

bsp_disp_device_switch函数就是直接用disp_device_attached函数进行绑定,如果不成功,则从两个screen里找一个能绑定成功的。

disp_device_attached,找到id对应的mgr,设备存在,类型不为0,则表示已经绑定成功了。
对应设备是enabled同时,enable和disable都存在,disable设备,unsetmanger函数存在时,unsetmanager。根究disp_dev和output_type找到设备,设备具有set_manager时,设置mgr,设备存在set_mode函数时,设置mode。

Fb_init
首先初始化8个framebuffer,其中有一个fb_num的变量,写死为1,此处做的操作为从设备的信息获取长宽等信息,填入fb的结构体信息。然后调用display_fb_request函数。

display_fb_request函数。
通过fb_id和fb_para设置fb对应的参数,然后调用Fb_map_video_memory,然后获取mgr并且通过mgr把参数设置到g_fbi的参数内。

Fb_map_video_memory函数
函数会根据传入的info内容申请内存并把内存记录到info的变量内。

把syn=1去掉,换成syn=0;然后在注册时保证lcd注册成功;fb_number设置为2,startwork时分别switch一下屏幕,再看日志,再看日志,解决了。
从代码结构上看,应该是能够够实现channel和layer的,但貌似没怎么好好弄,反正我们也不用这么高级的功能,算了,不研究了。

转载于:https://blog.51cto.com/13558393/2056499

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/453161.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

明日之后怎么跳过实名认证_明日之后宝箱达人活动怎么玩 明日之后宝箱达人可以开箱多少次...

《明日之后》宝箱达人是今天游戏中更新的活动,玩家们在部分的野外地图中可以找到宝箱。很多玩家都想知道这个宝箱获得的奖励是什么。接下来就让小编给大家带来明日之后宝箱达人活动奖励介绍,一起来看看吧。明日之后宝箱达人活动介绍 一、活动时间2020年9…

JVM内存模型与垃圾回收GC

Java开发有个很基础的问题,虽然我们平时接触的不多,但是了解它却成为Java开发的必备基础——这就是JVM。在C中我们需要手动申请内存然后释放内存,否则就会出现对象已经不再使用内存却仍被占用的情况。在Java中JVM内置了垃圾回收的机制&#x…

Windows批处理命令学习

Windows批处理命令学习一 Windows的批处理命令固然比不上unix的shell脚本强大,但用好了仍能给我们的工作带来很大作用。一个朋友问我为什么学习批处理命令,我以《程序员修炼之道——从小工到专家》一书的一句话答复他:图形界面的优点是所见即…

介质控制访问为什么不适用多路复用技术来解决冲突

因为使用频分多路复用或者时分多路复用会增加延迟时间,同时信道利用率也比较低

CAE所表示的计算机术语是,计算机应用中,英文缩略语CAE所表示的计算机术语是()。...

_刚果红染色可呈红色阳性反应的疾病有()。当管流过水断面流速按抛物线规律分布时,管中水流为紊流。一般含硫量较低的石油多产自碳酸盐岩系和膏岩系含油层。转移因子属于免疫()剂,适用于()。某客户在南京分行营业部开立的一卡通凭证失磁/损坏,…

第 11 章 Paragraphs

目录 11.1. para11.2. simpara11.3. formalpara11.4. bridgehead11.5. blockquote11.6. sidebar11.7. TM 商标 11.8. epigraph 题词11.9. Font Formatting Codes11.9.1. strong11.9.2. bold11.9.3. italic11.9.4. literal11.9.5. remark11.1. para <para>helloworld</…

伤疤好了有黑印怎么办_春藤家长圈|家有二孩,老大老二一起抢东西,家长该怎么办?...

本期主讲&#xff1a;齐静美国G.T.I.认证父母效能训练师高级家庭教育指导师未来春藤家长学院特聘讲师(西安)五年一线幼儿教学从业经验两个孩子的妈妈每周一次的春藤家长圈线上案例分享时间到啦&#xff01;本周是我们线上案例分享的第十四期&#xff01;本周案例&#xff1a;本…

Java_方法

方法就是将一段代码封装在一个结构体中&#xff0c;并且可反复调用 方法的定义&#xff1a; public static 返回值类型 方法名称 &#xff08;[参数类型 变量&#xff0c; 参数类型 变量&#xff0c;参数类型 变量...]&#xff09;{ 方法中包含的代码&#xff1b; [return 返回…

2011年度最佳代码“不管你们信不信,我反正信了”

最近有段十分流行的代码&#xff0c;是从江湖传闻“身怀八蛋”的铁道部发言人王勇平同志的一句名言&#xff1a;“不管你们信不信&#xff0c;我反正信了……这是生命的奇迹……它就是发生了”所引申出来的。这段代码虽然只是在调侃&#xff0c;但是围绕这段代码也产生了一些讨…

无锡计算机硬件培训,无锡锡山办公软件电脑基础培训随到随学 学会为止

一、办公 2个月WORD文字处理&#xff1b;EXCEL电子表格应用&#xff1b;PowerPoint动画幻灯片制作&#xff1b;国际互联网、电子邮件、网上传真&#xff1b;软件安装、计算机维护、基础、常用办公硬件的使用(打印机、扫描仪、刻录机、数码相机等)从事行政、管理、文秘、销售、…

以太网和局域网的关系

以太网 以太网是当今现有局域网采用的通用通信协议标准&#xff0c;组建于七十年代早期。Ethernet(以太网&#xff09;是一种传输速率为10Mbps的常用局域网&#xff08;LAN&#xff09;标准。在以太网中&#xff0c;所有计算机被连接一条同轴电缆上&#xff0c;采用具有冲突检…

不懂卷积神经网络?别怕,看完这几张萌图你就明白了

本文来自AI新媒体量子位&#xff08;QbitAI&#xff09;这篇文章用最简明易懂的方式解释了卷积神经网络&#xff08;CNN&#xff09;的基本原理&#xff0c;并绕开了里面的数学理论。 同时&#xff0c;如果想对从头开始构建CNN网络之类的问题感兴趣&#xff0c;作者推荐去读《 …

xrd连续扫描和步进扫描_一种提高xrd实验精度的方法

一种提高xrd实验精度的方法【专利摘要】本发明公开了一种提高XRD实验精度的方法&#xff0c;包括如下步骤&#xff1a;步骤1&#xff1a;将待测试样进行处理至表面平整光洁&#xff1b;步骤2&#xff1a;选用步进扫描方式对待测钢试样进行XRD实验&#xff0c;步进扫描方式的扫描…

2018双一流排名 计算机,2018中国双一流高校名单

目前全球范围内&#xff0c;比较有影响力的世界大学排名包括《QS世界大学排名》、《世界大学学术排名(ARWU)》、《泰晤士高等教育世界大学排名》、《usnews世界大学排名》和CWUR沙特阿拉伯全球大学评级中心世界大学排名。这些排名从各个方面对世界范围内的高校进行综合排名&…

交换机和集线器的区别

集线器采用的是共享带宽的工作方式&#xff0c;简单打个比如&#xff0c;集线器就好比一条单行道&#xff0c;“10M”的带宽分多个端口使用&#xff0c;当一个端口占用了大部分带宽后&#xff0c;另外的端口就会显得很慢。相反&#xff0c;交换机是一个独享的通道&#xff0c;它…

移动平台还有哪些创业机会

这是一个移动互联网创业的最好时代。 过去的2011年&#xff0c;国内大批创业者为移动互联网而疯狂。这个超过200亿元的市场牢牢吸引着他们&#xff0c;每天都有新鲜的主意转化为应用。 移动互联网时代的创业成本远小于互联网时代。创新工场创始人李开复在2011中国移动开发者大…

Swift封装 滑出式导航栏

前言&#xff1a; 本文将会创建以下几个主类&#xff1a; DWContainerViewController&#xff1a;这包含了左视图&#xff0c;中视图和右视图控制器的视图&#xff0c;并处理动画和滑动等操作。 DWCenterViewController&#xff1a;中央面板。 DWSidePanelViewController&#…

广东电网计算机专业笔试题目,广东电网笔试题目

广东电网笔试题目笔试是一种与面试对应的测试&#xff0c;是以填写的方法考核应聘者学识水平的重要工具。这种方法可以有效的测量应聘人的基本知识、专业知识、管理知识、综合分析能力和文字表达能力等素质及能力的差异。下面是小编为大家收集的广东电网笔试题目&#xff0c;希…

波特率和比特率

波特率&#xff08;符号率&#xff09;&#xff0c;可以理解为传输介质实际能达到的电压变化&#xff0c;比如每秒可以改变多少次。 比特率&#xff0c;是逻辑层面上每秒能传输多少个比特。 考虑最简单的不归零编码&#xff0c;用5伏电压表示1&#xff0c;-5伏电压表示0&…

usart和uart 的区别

摘自:https://blog.csdn.net/meic51/article/details/7714847 什么是同步和异步 转自https://blog.csdn.net/seashine_yan/article/details/71192283转载于:https://www.cnblogs.com/chulin/p/8661720.html