1. 概述
顯示是非常重要的一個模塊,人機交互的橋梁。那么SA8155 Hypervisor顯示是如何處理的呢。對處理流程非常的好奇O(∩_∩)O哈哈~。
- 數(shù)據(jù)流(buffer),如何刷屏
- 同步機制(Vsync)
- 幀率控制
TODO文章來源:http://www.zghlxwxcb.cn/news/detail-471608.html
2.OpenWFD
有點復雜,本文不介紹,標準基礎的技術,需要專業(yè)的人去磨。如下貼兩張圖。
圖1?
圖2?
3. 顯示框架?
3.1 顯示框架如下圖
本人理解繪制
? 每個WFD Client連接一個顯示輸出:
eQDIDisplayID : This is the QDI display ID associated with each port.
Should be of type QDI_Display_IDType
QDI_DISPLAY_NONE = 0
QDI_DISPLAY_PRIMARY = 1
QDI_DISPLAY_SECONDARY = 2
QDI_DISPLAY_THIRD = 3
QDI_DISPLAY_EXTERNAL = 4
QDI_DISPLAY_EXTERNAL2 = 5
QDI_DISPLAY_EXTERNAL3 = 6
QDI_DISPLAY_FRAMEBUFFER = 7
<WFDClient
ID = '0x7817'
eWFDClientType = '0x7'>
<WFDPort ID='1'>
<PortAttribs
eQDIDisplayID = '3'
uDisplayNode = '0'
ePortType = '0x7660'
eZOrderBase = '0'
></PortAttribs>
<WFDPipeline
eQDILayerID = '17'
eZOrder = '0'
></WFDPipeline>
</WFDPort>
</WFDClient>
3.2?Graphics Hypervisor 架構:
4. QNX MDSS(MultiMedia Display Sub System)及WFD相關
核心代碼路基:qnx_ap/AMSS/multimedia/display
TODO
5. Bridge Driver/ 配置部分(重點)
常規(guī)座艙設計:?
開發(fā)板設計:
核心代碼路徑:qnx_ap/boards/display
5.1 目錄架構:
├── adp_star_sda8155
│???├── config
│???│???├── graphics_ADP_STAR.conf
│???│???├── graphics_ADP_STAR_FDN.conf
│???│???├── graphics_ADP_STAR_GVM.conf
│???│???├── Makefile
│???│???├── qcdisplaycfg_ADP_STAR_FDN.xml
│???│???├── qcdisplaycfg_ADP_STAR_LA_MULTI_DISP.xml? //WFDClient各個顯示輸出配置
│???│???└── qcdisplaycfg_ADP_STAR.xml
│???└── Makefile
├── common
│???├── bridge_chip //涉及高可用框架
│???│???├── client //客戶端(API)
│???│???├── drv //驅(qū)動/資源管理器
│???│???├── Makefile
│???│???├── plugins //串行解串芯片相關
│???│???└── server //服務端(高可用進程)
│???├── Makefile
│???└── panels //屏接口配置,以及DSI->DP等轉(zhuǎn)換芯片
│??? ? ?├── DANX7625_DP_QC_0
│??? ? ?├── DANX7625_DP_QC_1??
│??? ? ?├── DANX7625_DP_QC_2?
│??? ? ?├── DANX7625_DP_QC_3??
│??? ? ?├── DP1_COMMON_QC
│??? ? ?├── DP_BOND_COMMON_QC
│??? ? ?├── DP_COMMON_MST_QC
│??? ? ?├── DP_COMMON_QC
│??? ? ?├── DSI_COMMON_QC_0
│??? ? ?├── DSI_COMMON_QC_1
│??? ? ?├── EDP_COMMON_QC
│??? ? ?├── Makefile
│??? ? ?├── public
│??? ? ?├── SDANX7625x2_DPx2_QC_8155
└── Makefile
Demo板中硬件接口對應的屏驅(qū)動文件:?
Display interface | driver for SA8155 Panel(Demo板) |
DSI-0 | DANX7625_DP_QC_0 |
DSI-1 | DANX7625_DP_QC_1 |
DP0 | DP_COMMON_QC |
DP-MST | DP_COMMON_MST_QC |
DP1 | N/A |
eDP | N/A |
TODO
5.2 Bridge Driver(Server/Client)資源管理器
TODO
5.3 轉(zhuǎn)換芯片(DSI->DP)
TODO
5.4 串行解串(Serializer/DeSerializer)
行業(yè)兩大技術:??
- Ti的 PDLINK3
- 美信的 GMSL1/2
PDLINK 代表芯片:DS90UH947--DS90UH948?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??DS90UH953--DS90UH954
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? DS90UH941--DS90UH981
GMSL2 代表芯片:Max96737--Max96752
???????????????????????????????Max96718--Max96717
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Max96751--Max96718F
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Max96745--Max96768
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Max96789--Max96752F/Max9278
├── common
│???│???├── plugins? //串行解串相關
│???│???│???├── DS90UH981Q_QC_0 //TI PDLINK3 UH981
│???│???│???├── DS90UH983Q_QC_0 //TI PDLINK3 UH983
│???│???│???└── Makefile
?
TODO
5.5?qcdisplaycfg配置
5.5.1 WFDClinet配置:
描述
<!-- WFD Configurations : Used to configure WFD driver -->
<WFDConfig>
? <!-- Client enumeration :
? ? ? ?ID ? ? ? ? ? ? ? : Defines a unique value that resembles a client. It must have a prefix of 0x78##;
? ? ? ? ? ? ? ? ? ? ? ? ? where ## is any unique value for each of the clients.
? ? ? ? ? ? ? ? ? ? ? ? ? Exception: Client ID 0x78FF must be used for SCREEN.
? ? ? ?eWFDClientType ? : Defines the Client Type associated with different clients
? ? ? ? ? ? ? ? ? ? ? ? ? ? WFD_CLIENT_TYPE_CLUSTER ?= 0x1
? ? ? ? ? ? ? ? ? ? ? ? ? ? WFD_CLIENT_TYPE_MONITOR ?= 0x2
? ? ? ? ? ? ? ? ? ? ? ? ? ? WFD_CLIENT_TYPE_TELLTALE = 0x3
? ? ? ? ? ? ? ? ? ? ? ? ? ? WFD_CLIENT_TYPE_RVC ? ? ?= 0x4
? ? ? ? ? ? ? ? ? ? ? ? ? ? WFD_CLIENT_TYPE_LA_GVM ? = 0x5
? ? ? ? ? ? ? ? ? ? ? ? ? ? WFD_CLIENT_TYPE_LV_GVM ? = 0x6
? ? ? ? ? ? ? ? ? ? ? ? ? ? WFD_CLIENT_TYPE_SPLASH ? = 0x7? ? Port enumeration :
? ? ? ID ? ? ? ? ? ? ? ? ? ? : Defines the order in which ports are enumerated
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?to client. Starts from '0'? ? ? Port configuration ? ? : Define attributes for each enumerated port.
? ? ? ? ? ? ? ? ? ? ? ? ? ?Following attributes to be set
? ? ? ? eQDIDisplayID : This is the QDI display ID associated with each port.
? ? ? ? ? ? ? ? ? ? ? ? Should be of type QDI_Display_IDType
? ? ? ? ? ? ? ? ? ? ? ? ? QDI_DISPLAY_NONE ? ? ? ?= 0
? ? ? ? ? ? ? ? ? ? ? ? ? QDI_DISPLAY_PRIMARY ? ? = 1
? ? ? ? ? ? ? ? ? ? ? ? ? QDI_DISPLAY_SECONDARY ? = 2
? ? ? ? ? ? ? ? ? ? ? ? ? QDI_DISPLAY_THIRD ? ? ? = 3
? ? ? ? ? ? ? ? ? ? ? ? ? QDI_DISPLAY_EXTERNAL ? ?= 4
? ? ? ? ? ? ? ? ? ? ? ? ? QDI_DISPLAY_EXTERNAL2 ? = 5
? ? ? ? ? ? ? ? ? ? ? ? ? QDI_DISPLAY_EXTERNAL3 ? = 6
? ? ? ? ? ? ? ? ? ? ? ? ? QDI_DISPLAY_FRAMEBUFFER = 7
? ? ? ? ePortType ? ? : This defines the type of the port.
? ? ? ? ? ? ? ? ? ? ? ? Should be of type WFDPortType
? ? ? ? ? ? ? ? ? ? ? ? ? WFD_PORT_TYPE_INTERNAL ? ? ? ?= 0x7660
? ? ? ? ? ? ? ? ? ? ? ? ? WFD_PORT_TYPE_COMPOSITE ? ? ? = 0x7661
? ? ? ? ? ? ? ? ? ? ? ? ? WFD_PORT_TYPE_SVIDEO ? ? ? ? ?= 0x7662
? ? ? ? ? ? ? ? ? ? ? ? ? WFD_PORT_TYPE_COMPONENT_YPbPr = 0x7663
? ? ? ? ? ? ? ? ? ? ? ? ? WFD_PORT_TYPE_COMPONENT_RGB ? = 0x7664
? ? ? ? ? ? ? ? ? ? ? ? ? WFD_PORT_TYPE_COMPONENT_RGBHV = 0x7665
? ? ? ? ? ? ? ? ? ? ? ? ? WFD_PORT_TYPE_DVI ? ? ? ? ? ? = 0x7666
? ? ? ? ? ? ? ? ? ? ? ? ? WFD_PORT_TYPE_HDMI ? ? ? ? ? ?= 0x7667
? ? ? ? ? ? ? ? ? ? ? ? ? WFD_PORT_TYPE_DISPLAYPORT ? ? = 0x7668
? ? ? ? ? ? ? ? ? ? ? ? ? WFD_PORT_TYPE_DSI ? ? ? ? ? ? = 0x766A
? ? ? ? eZOrderBase ? : Starting Z-order for layers assigned to this port for
? ? ? ? ? ? ? ? ? ? ? ? this client? ? ? Pipeline configuration : Define attributes for each enumerated pipeline
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?within a port. Following attributes to be set
? ? ? ? eQDILayerID : This is the QDI layer ID associated with each pipeline.
? ? ? ? ? ? ? ? ? ? ? Should be of type QDI_Layer_IDType
? ? ? ? ? ? ? ? ? ? ? ? QDI_LAYER_ID_OVERLAY1 ?= 5 ?- ViG0 (supports YUV content)
? ? ? ? ? ? ? ? ? ? ? ? QDI_LAYER_ID_OVERLAY2 ?= 6 ?- ViG1 (supports YUV content)
? ? ? ? ? ? ? ? ? ? ? ? QDI_LAYER_ID_OVERLAY3 ?= 7 ?- ViG2 (supports YUV content)
? ? ? ? ? ? ? ? ? ? ? ? QDI_LAYER_ID_OVERLAY4 ?= 8 ?- ViG3 (supports YUV content)
? ? ? ? ? ? ? ? ? ? ? ? QDI_LAYER_ID_OVERLAY5 ?= 9 ?- ViG4 (ViG0 REC1)
? ? ? ? ? ? ? ? ? ? ? ? QDI_LAYER_ID_OVERLAY6 ?= 10 - ViG5 (ViG1 REC1)
? ? ? ? ? ? ? ? ? ? ? ? QDI_LAYER_ID_OVERLAY7 ?= 11 - ViG6 (ViG2 REC1)
? ? ? ? ? ? ? ? ? ? ? ? QDI_LAYER_ID_OVERLAY8 ?= 12 - ViG7 (ViG3 REC1)
? ? ? ? ? ? ? ? ? ? ? ? QDI_LAYER_ID_DMA1 ? ? ?= 14 - DMA0
? ? ? ? ? ? ? ? ? ? ? ? QDI_LAYER_ID_DMA2 ? ? ?= 15 - DMA1
? ? ? ? ? ? ? ? ? ? ? ? QDI_LAYER_ID_DMA3 ? ? ?= 16 - DMA2
? ? ? ? ? ? ? ? ? ? ? ? QDI_LAYER_ID_DMA4 ? ? ?= 17 - DMA3
? ? ? ? ? ? ? ? ? ? ? ? QDI_LAYER_ID_DMA5 ? ? ?= 18 - DMA4 (DMA0 REC1)
? ? ? ? ? ? ? ? ? ? ? ? QDI_LAYER_ID_DMA6 ? ? ?= 19 - DMA5 (DMA1 REC1)
? ? ? ? ? ? ? ? ? ? ? ? QDI_LAYER_ID_DMA7 ? ? ?= 20 - DMA6 (DMA2 REC1)
? ? ? ? ? ? ? ? ? ? ? ? QDI_LAYER_ID_DMA8 ? ? ?= 21 - DMA7 (DMA3 REC1)
? ? ? ? eZOrder ? ? : Defines the Z-order of each pipeline within the port
? ? ? ? ? ? ? ? ? ? ? Should be of type QDI_ZorderType
? ? ? ? ? ? ? ? ? ? ? ? QDI_ZORDER_0 ?= 0 ?- bottom layer
? ? ? ? ? ? ? ? ? ? ? ? QDI_ZORDER_1 ?= 1 ?- stage 1 layer
? ? ? ? ? ? ? ? ? ? ? ? QDI_ZORDER_2 ?= 2 ?- stage 2 layer
? ? ? ? ? ? ? ? ? ? ? ? QDI_ZORDER_3 ?= 3 ?- stage 3 layer
? ? ? ? ? ? ? ? ? ? ? ? QDI_ZORDER_4 ?= 4 ?- stage 4 layer
? ? ? ? ? ? ? ? ? ? ? ? QDI_ZORDER_5 ?= 5 ?- stage 5 layer
? ? ? ? ? ? ? ? ? ? ? ? QDI_ZORDER_6 ?= 6 ?- stage 6 layer
? ? ? ? ? ? ? ? ? ? ? ? QDI_ZORDER_7 ?= 7 ?- stage 7 layer
? ? ? ? ? ? ? ? ? ? ? ? QDI_ZORDER_8 ?= 8 ?- stage 8 layer
? ? ? ? ? ? ? ? ? ? ? ? QDI_ZORDER_9 ?= 9 ?- stage 9 layer
? ? ? ? ? ? ? ? ? ? ? ? QDI_ZORDER_10 = 10 - top layer? Restrictions:
? ?- Each QDI layer ID can be used inside one WFDPipeline tag only
? ?- WFDPipeline tags within one eQDIDisplayID tag must have unique eZOrder.
? ? ?i.e. Two WFDPipelines cannot have the same eZOrder within the same
? ? ?eQDIDisplayID
? ?- Pipelines that represent different rectangles of the same physical pipe
? ? ?must use the same QDI display ID.
? ? ?i.e. If DMA0 is used on eQDIDisplayID='1' then DMA4 must also be used on
? ? ?eQDIDisplayID='1', even if the pipelines are assigned to different clients
? ?- RECT1 pipelines cannot be assigned to displays wider than 2048 pixels
? -->
參考案例:
? <WFDClient
? ? ?ID ? ? ? ? ? ? ? = '0x7812' //Client ID,每個顯示ID不同(0x7800~0x78FF)
? ? ?eWFDClientType ? = '0x3'>//Client Type,倒車RVC還是儀表,還是HMI
? ? <WFDPort ID='1'>//
? ? ? <PortAttribs
? ? ? ? eQDIDisplayID = '1'//顯示ID,首屏,副屏等
? ? ? ? uDisplayNode ?= '0'
? ? ? ? ePortType ? ? = '0x7660'//顯示接口類型,DSI/DP/eDP等
? ? ? ? eZOrderBase ? = '10'
? ? ? ></PortAttribs>
? ? ? <WFDPipeline
? ? ? ? eQDILayerID ? = '8'
? ? ? ? eZOrder ? ? ? = '10'
? ? ? ></WFDPipeline>
? ? </WFDPort>
? </WFDClient>?
5.5.2 顯示參數(shù)配置
- 分辨率
- 前后肩
- 時鐘
- 其他
<Display ID='1'> //顯示ID?QDI_DISPLAY_PRIMARY 對應?eQDIDisplayID
? <!-- Panel Library:
? ? cPanelDriverRoot : Directory where the panel driver library is stored
? ? cPanelName ? ? ? : Name of the panel driver library
? -->? <PanelLibrary //屏驅(qū)動
? ? cPanelDriverRoot = '/lib64/'
? ? cPanelName ? ? ? = 'DANX7625_DP_QC_0' //DSI->轉(zhuǎn)DP芯片
? ></PanelLibrary>? <PanelVideoTiming//時序配置
? ? ePixelFormatType = '3' //格式
? ? uVisWidth ? ? ? ?= '1920'
? ? uHsyncFrontPorch = '88'
? ? uHsyncWidth ? ? ?= '44'
? ? uHsyncBackPorch ?= '148'
? ? uVisHeight ? ? ? = '1080'
? ? uVsyncFrontPorch = '4'
? ? uVsyncWidth ? ? ?= '5'
? ? uVsyncBackPorch ?= '36'
? ? uPixelFreqInHz ? = '148500000'
? ? bDEPolarity ? ? ?= '0'
? ></PanelVideoTiming>?? <DSIConfiguration //DSI配置
? ? cBridgeChipID = 'NATIVE' //是否有BridgeChip(串解器),沒有就是NATIVE
? ? eMapSelect ? ?= '0'
? ? uNumOfLanes ? = '4'// DSI LANE數(shù)量
? ></DSIConfiguration>
</Display>
TODO
6.? 高可用機制(重要)
高可用機制是汽車電子軟件設計的可靠性、穩(wěn)定性的可靠保障。汽車電子產(chǎn)品尤其是前裝,本著可靠性,穩(wěn)定性第一原則。
TODO
6.1?異常監(jiān)控?
TODO
6.2 異常定位
TODO
6.3?異?;謴?/h3>
TODO
6.4 熱拔插支持
TODO
7. 總結
綜上,對于BSP開發(fā)人員來講,梳理后,感覺不難吧,O(∩_∩)O哈哈~。技術還是那些技術,只不過換了個平臺,換了一種實現(xiàn)方式。文章來源地址http://www.zghlxwxcb.cn/news/detail-471608.html
到了這里,關于05-SA8155 QNX Display框架及代碼分析(1)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!