ZHCAEZ2 February   2025 AM62P

 

  1.   1
  2.   摘要
  3.   商标
  4. 1引言
  5. 2所用硬件
    1. 2.1 AM62Px 处理器
    2. 2.2 SK-LCD1
    3. 2.3 AM62P 的显示子系统
  6. 3早期启动屏幕架构
    1. 3.1 AM62P 的引导阶段
    2. 3.2 无闪烁切换
  7. 4从 SPL 到 U-Boot 的无闪烁切换
    1. 4.1 测试步骤
    2. 4.2 测量
  8. 5从 SBL 到 Linux 内核的无闪烁转换
    1. 5.1 测试步骤
    2. 5.2 测量
  9. 6结果

测量

从 POR 到显示画面出现的时间约为 180ms。该测量是通过使用一个默认处于低电平状态的 GPIO 引脚进行的。该引脚通过 CSL_dssVpSetGoBit() 函数使用 gpio_set_high() API 设置为高电平。OSPI NOR 被用作测试时的引导介质。

  • 本实验使用默认 MCU+ SDK 中提供的 dss_display 共享示例。对该示例进行了修改,以实现通过 SBL 流程演示的无闪烁切换。
  • 用户扩展连接器上的 GPIO0_39(引脚 18)用于时间测量。图 5-5 展示了 SysConfig 中用于启用此引脚的选项。
    AM62P SysConfig 设置图 5-5 SysConfig 设置
  • 通过在 dss_display_share.c 中定义 API,将 GPIO 引脚设置为高电平,如下所示:
    void gpio_set_high(void *args) { 
    	uint32_t gpioBaseAddr, pinNum;
    	DebugP_log("GPIO LED started ...\r\n");
    	
    	/* Get address after translation translate */ 
    	gpioBaseAddr = (uint32_t) AddrTranslateP_getLocalAddr(GPIO_LED_BASE_ADDR); pinNum = GPIO_LED_PIN;
    	GPIO_setDirMode(gpioBaseAddr, pinNum, GPIO_LED_DIR);
    	GPIO_pinWriteHigh(gpioBaseAddr, pinNum);
    	DebugP_log("GPIO LED HIGH!!\r\n");
    }
  • 使用 CSL_dssVpSetGoBit() 中的 API,如下所示:
    diff --git a/source/drivers/dss/v0/hw_include/V3/csl_dssVideoPort.c b/source/drivers/dss/v0/hw_include/V3/csl_dssVideoPort.c
    
    index f882d54..ee18b95 100755
    
    --- a/source/drivers/dss/v0/hw_include/V3/csl_dssVideoPort.c
    
    +++ b/source/drivers/dss/v0/hw_include/V3/csl_dssVideoPort.c
    
    @@ -183,6 +183,8 @@ void CSL_dssVpEnable(CSL_dss_vpRegs *vpRegs, uint32_t enable)
    
         CSL_REG32_WR(&vpRegs->CONTROL, regVal);
    
     }
    
    +extern void gpio_set_high(void *args);
    
    +
    
     void CSL_dssVpSetGoBit(CSL_dss_vpRegs *vpRegs)
    
     {
    
         uint32_t regVal;
    
    @@ -192,6 +194,7 @@ void CSL_dssVpSetGoBit(CSL_dss_vpRegs *vpRegs)
    
                  DSS_VP1_CONTROL_GOBIT,
    
                  CSL_DSS_VP1_CONTROL_GOBIT_VAL_UFPSR);
    
         CSL_REG32_WR(&vpRegs->CONTROL, regVal);
    
    +    gpio_set_high(NULL);
    
     }
    
     void CSL_dssVpSetLcdTdmConfig(CSL_dss_vpRegs *vpRegs,
  • 当 GPIO0_39 引脚连接到逻辑分析仪时,GPIO 引脚大约在 180ms 时被设置为高电平。