中国建设网站官网,php通用企业网站源码,手机网站开发用什么,三星单片机开发网站UEFI的流程UEFI跟uboot一样在OS加载启动之前#xff0c;正确的指定启动服务#xff0c;并向内核传递信息#xff0c;代替原先的uboot。它包含了上电、驱动实现#xff0c;以及os环境的建立和应用程序#xff08;类似于fastboot#xff09;。这个os是UEFI自己独立运行独有…UEFI的流程UEFI跟uboot一样在OS加载启动之前正确的指定启动服务并向内核传递信息代替原先的uboot。它包含了上电、驱动实现以及os环境的建立和应用程序类似于fastboot。这个os是UEFI自己独立运行独有。UEFI由XBL和ABL组成XBL原先的LK移到这里负责驱动和充电功能属于高通的私有代码。其中大量的使用了protocol包含了驱动函数指针和数据也就是驱动在ABL可以直接调用。ABL应用程序主要作用是加载引导kernel和fastboot。在Android 代码测。lcd流程DisplayDxeInitialize 函数入口Drivers/DisplayDxe/DisplayDxe.inf 文件中ENTRY_POINTDisplayDxeInitialize。位置BOOT.XF.4.1\boot_images\QcomPkg\Drivers\DisplayDxe\DisplayDxe.cCreateEventEx创建回调函数关于给屏幕上下电DisplayPwr_InitLPMSupport初始化相关如电源、时钟。MDPSetProperty初始化ABL上下文获得支持的屏。位置QcomPkg\Library\MDPLib\MDPLib.cDisplay_Utils_Initialize通过 MDP_DISPLAY_PROPERTY_ABL_INTERFACE_INIT 类型进入CheckTargetPanelSupport获取所有的panel 列表MDPPlatformConfigure获取gPanelList数组保存在psPanelDTInfo中从头文件#include MDPPlatformLib.h可以看出调用的是 /MDPPlatformLibBoot/MDPPlatformLib.c 中的代码MDP_SetBootServiceVariable QcomTokenSpace GUID 配置变量PanelCount和PanelListCheckPanelOverride检查ABL是否有配置覆盖MDPInit初始化屏。位置boot_images/QcomPkg/Library/MDPLib/MDPLib.cMDP_OSAL_CALLOC分配 DSI 和 I2C 相关的缓存内存资源MDPPlatformConfigure判断是否有硬件加速MDPPlatformConfigure获取平台芯片idsInitParam.aSupportedDisplays[MDP_DISPLAY_PRIMARY])如果配置了MDP_DISPLAY_PRIMARYMDPPower上电MDPDetect检查默认配置的屏幕通过MDPDetectPanel 读取LCD id选择具体屏的xmlDisplayDxeSelectMode配置显示屏的模式MDPSetProperty使能主屏显示prop属性InstallMultipleProtocolInterfaces仅当检测到面板时才安装显示协议。UEFI之display的移植BOOT.XF.4.1/boot_images/QcomPkg/Settings/Panel下复制一份xml修改其中的数据Panel_cptf_xxxx_1440_vid.xmlSocPkg/AgattiPkg/LAA/Core.fdf 把该xml加入编译guid可以用工具生成FILE FREEFORM 439836d3-599f-4156-a671-f98a64d8482b {SECTION UI Panel_cptf_xxxxx_1440_vid.xmlSECTION RAW QcomPkg/Settings/Panel/Panel_cptf_ili8911_1440_vid.xml}Include/Library/MDPPlatformLib.h 添加lcd宏MDPPLATFORM_PANEL_xxxxx_1440_HDPLUS_VIDEO SocPkg/AgattiPkg/Library/MDPPlatformLib/MDPPlatformLibPanelConfig.h将lcd宏、功能函数、xml绑定 { MDPPLATFORM_PANEL_xxxxx_1440_HDPLUS_VIDEO, // ePanelSelectedPanel_cptf_xxxx_1440_vid.xml, // pPanelXmlConfigPanel_Default_PowerUp, // pPanel_PowerUpPanel_Default_PowerDown, // pPanel_PowerDownPanel_Default_Reset, // pPanel_ResetPanel_Default_Peripheral_Power, // pPanel_Peripheral_PowerPanel_Default_Brightness_Enable, // pPanel_Brightness_EnablePanel_Default_Brightness_Level // pPanel_Brightness_Level},SocPkg/AgattiPkg/Library/MDPPlatformLib/MDPPlatformLib.c: fastBootPanelList和uefiPanelList添加fastBootPanelList将lcd宏和xml及kernel的dts绑定 PANEL_CREATE_ENTRY(cpft_xxxx_1440_vid, MDPPLATFORM_PANEL_xxxxx_1440_HDPLUS_VIDEO, qcom,mdss_dsi_cpft_xxxx_video:, DISP_INTF_DSI, DISP_TOPOLOGY_CONFIG_NONE, DISP_TIMING_CONFIG_NONE,PLL_OVERRIDE_NONE, DISP_MODE_SINGLE_DSI | DISP_MODE_SKIP_BOOTLOADER, DISP_MODE_SINGLE_DSI | DISP_MODE_SKIP_BOOTLOADER, DISP_MODE_SINGLE_DSI | DISP_MODE_SKIP_BOOTLOADER),
uefiPanelList将LCD的id和lcd宏绑定读取id后会选择该lcd宏选取该lcd配置{ 0x06, // uCmdType0x05, // total number of retry on failures{{{0xDA, 0x00}, // address to read ID1{0xid, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // expected readback}, {{0xDB, 0x00}, // address to read ID2{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // expected readback},{{0xDC, 0x00}, // address to read ID3{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // expected readback}},0, // Lane remap order {0, 1, 2, 3}NULL, // psPanelCfg (panel configuration)0, // uPanelCfgSizeMDPPLATFORM_PANEL_xxxxx_1440_HDPLUS_VIDEO, // eSelectedPanel 0 // uFlags},./SocPkg/AgattiPkg/Library/MDPPlatformLib/MDPPlatformLibPanelCommon.h 设置修改lcd rest gpio#define DEFAULT_DISP_RESET_GPIO 82 如果开机需要修改gpio的配置状态可以修改SocPkg/AgattiPkg/Settings/TLMM/loader/TLMMChipset.xmluefi-kernel之lcd移植vendor/qcom/proprietary/devicetree-4.19/qcom复制其他panel dtsi并修改相关的proch值mdss_mdp {dsi_cpft_xxxx_video: qcom,mdss_dsi_cpft_xxxx_video {qcom,mdss-dsi-panel-name cptf xxxx video mode dsi panel;qcom,mdss-dsi-panel-controller mdss_dsi0;qcom,mdss-dsi-panel-type dsi_video_mode;qcom,mdss-dsi-panel-destination display_1;...../bengal-sde-display.dtsi 添加头文件 #include dsi-panel-cpft-xxxx-1440-plus-vid.dtsi./scuba-idp.dtsi添加电源、reset、背光模式dsi_cpft_xxxx_video {qcom,panel-supply-entries dsi_panel_pwr_supply_no_labibb;qcom,mdss-dsi-bl-pmic-control-type bl_ctrl_dcs;qcom,bl-pmic-pwm-period-usecs 100;qcom,mdss-dsi-bl-min-level 1;qcom,mdss-dsi-bl-max-level 4095;qcom,platform-reset-gpio tlmm 82 0;qcom,platform-reset-gpio-always-on;qcom,platform-en-gpio tlmm 105 0;
};添加clock时序记得用2.0.0的时序表格dsi_cpft_xxxx_video {qcom,mdss-dsi-t-clk-post 0x09;qcom,mdss-dsi-t-clk-pre 0x15;qcom,dsi-select-clocks mux_byte_clk0, mux_pixel_clk0,src_byte_clk0, src_pixel_clk0,shadow_byte_clk0, shadow_pixel_clk0;qcom,mdss-dsi-display-timings {timing0 {qcom,mdss-dsi-panel-phy-timings [1C 19 02 03 01 02 04 a01C 19 02 03 01 02 04 a01C 19 02 03 01 02 04 a01C 19 02 03 01 02 04 a01C 07 02 03 01 02 04 a0 ];qcom,display-topology 1 0 1;qcom,default-topology-index 0;};};
};如果没有亮屏可以试试息屏在亮屏。如果可以亮屏则是xbl没亮问题而引起kernel亮屏失败。