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结果

无闪烁切换

为了实现从 U-Boot 次级程序加载器 (SPL) 到 U-Boot 阶段的无闪烁切换,需保持图像帧缓冲区并且不要关闭显示子系统 (DSS) 驱动程序。为了将帧缓冲区从 SPL 阶段传递到 U-Boot 正常阶段,首先在内存中保留一块区域,并通过 video_post_probe 函数中的 bloblist 将该区域从 SPL 阶段传递到 U-Boot 正常阶段。在 SPL 阶段,帧缓冲区区域、大小、像素列数 (xsize) 以及像素行数 (ysize) 等各种参数都存储在一个 blob 中。Blob 是预留的内存区域,其中包含从一个阶段传递到另一个阶段的信息。当初始设置序列在 U-Boot 正常阶段运行时,会调用 reserve_video API,该 API 会检查视频 blob 是否存在。如果视频 blob 存在,应用程序编程接口 (API) 将使用来自前一个阶段的 blob 数据,确保设置相同的帧缓冲区区域和参数,从而保持启动画面不受任何闪烁影响,顺利过渡到下一个阶段。如果找到 blob,则不会再次探测 DSS 驱动程序,从而防止屏幕刷新。