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

测试步骤

本节描述了实现早期启动屏幕以及从 SBL 阶段到 Linux 内核的无闪烁切换所需的步骤。MCU+ SDK 中的 DSS 共享示例将镜像的早期启动屏幕与 SBL 集成在一起,并支持 OSPI 引导介质、器件管理器和处理器间通信功能。引导加载程序、IPC 和显示功能会在独立的任务中运行。显示任务通过 Alpha 混合显示启动画面,并最终切换到显示共享任务,在该任务中,信号帧会快速来回移动。该示例使用了 Falcon 引导,这意味着跳过了中间的 U-Boot 阶段,SBL 直接启动 Linux 镜像。本 DSS 示例经过一些修改后用于演示。


AM62P 启动界面时间

图 5-1 启动界面时间
  • 下载处理器 SDK 并使用 /board-support 下的 ti-linux-kernel 目录按照以下步骤进行修改。在对 ti-linux-kernel 进行修改后,生成设备树 Blob (DTB) 和镜像文件。这些文件稍后用于创建 linux.appimage,该文件在 RTOS 示例中用于在 A53 内核上运行 Linux。
  • linux.appimage 是使用 Falcon 引导模式构建的。因此,将 bootargs 信息包含在所选节点下的 k3-am62p5-sk.dts 文件中:
    bootargs = "console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000 root=/dev/mmcblk1p2 rw rootfstype=ext4 rootwait";
  • 为了确保在 Linux 内核启动期间启动画面保持不变,ti-u-boot 使用帧缓冲区区域元数据动态更新 Linux 内核器件树,并将该区域标记为在 Linux 器件树中保留,如下所示:
    framebuffer: framebuffer@ff700000 {
         reg = <0x00 0xff700000 0x00 0x008ca000>;
         no-map;
    };
  • 通过手动修改所选节点下的板级器件树文件,将 simple-framebuffer 节点的状态设置为“oke”,如以下代码所示:
    framebuffer0: framebuffer@0 {
          compatible = "simple-framebuffer";
          power-domains = <&k3_pds 186 TI_SCI_PD_EXCLUSIVE>,
                          <&k3_pds 243 TI_SCI_PD_EXCLUSIVE>,
                          <&k3_pds 244 TI_SCI_PD_EXCLUSIVE>;
          clocks = <&k3_clks 186 6>,
                   <&dss0_vp1_clk>,
                   <&k3_clks 186 2>;
          display = <&dss0>;
          reg = <0x00 0xff700000 0x00 0x008ca000>;
          width = <1920>;
          height = <1200>;
          stride = <(1920 * 4)>;
          format = "x8r8g8b8";
     };
  • 为了在显示服务器启动之前保持启动动画的显示,需要通过在 arch/arm64/configs/defconfig 中删除以下配置选项来手动禁用直接渲染管理器 (DRM) 帧缓冲器设备仿真 功能,如下所述:# CONFIG_DRM_FBDEV_EMULATION 未设置
  • 在之前展示的 Linux 目录更改之后,构建 Linux 内核,以创建 DTB 和内核镜像。
  • 将覆盖文件 k3-am62p5-sk-microtips-mf101hie-panel.dtbo 应用到 DTB 文件,以支持在 OLDI 面板上的显示。使用以下命令:
    fdtoverlay -i ./arch/arm64/boot/dts/ti/k3-am62p5-sk.dtb ./arch/arm64/boot/dts/ti/k3-am62p5-sk-microtips-mf101hie-panel.dtbo -o ./../../board-support/prebuilt-images/am62pxx-evm-display-cluster/k3-am62p.dtb
  • 将以下两个文件复制到 /board-support/prebuilt-images/am62pxx-evm-display-cluster 文件夹:
    1. k3-am62p.dtb(在上一步中创建)
    2. 镜像 (arch/arm64/boot//)
  • examples/drivers/dss/dss_display_share/dss_display_share.c 文件中,删除 DispApp_splashThread()DispApp_displayShareThread() 的使用和定义
    AM62P 代码更改 1图 5-2 代码更改 1
    AM62P 代码更改 2图 5-3 代码更改 2
    AM62P 代码更改 3图 5-4 代码更改 3
  • tools/boot/sbl_prebuild/am62px-sk/default_sbl_ospi_linux_hs_fs_splash_screen.cfg 中编译镜像
  • 使用通用异步收发器 (UART) TI UniFlash 工具将构建好的镜像烧录到 OSPI 闪存中。
  • 为了快速渲染 Linux GUI 应用程序,使用 SDK 中的顶层 makefile 构建并安装 ti-img-rogue-driver。采用以下步骤:
    1. 运行命令:
      make ti-img-rogue-driver (Value RGX_BVNC="36.53.104.796" in Rules.make)
    2. 插入 SD 卡并运行以下命令:
      sudo make ti-img-rogue-driver_install DESTDIR=/media/aparna/root
  • 切换到 OSPI NOR 引导模式以观看演示。
    BOOTMODE [ 8 : 15 ] (SW5) = 0000 0000
    BOOTMODE [ 0 : 7 ] (SW4) = 1100 1110