ZHCAG72 September   2026

 

  1.   1
  2.   摘要
  3.   商标
  4. 1简介
  5. 2启动流程
    1. 2.1 SPL启动流程
      1. 2.1.1 R5 SPL
      2. 2.1.2 TF-A+OPTEE+A53 SPL
      3. 2.1.3 U-Boot
      4. 2.1.4 Linux以及用户态
    2. 2.2 SPL Falcon模式
      1. 2.2.1 实现步骤
        1. 2.2.1.1 安装Linux SDK
        2. 2.2.1.2 添加falcon脚本
        3. 2.2.1.3 编译Linux设备树
        4. 2.2.1.4 制作tispl.bin
        5. 2.2.1.5 制卡启动
    3. 2.3 从SPL替换为SBL
      1. 2.3.1 在SBL中进行Falcon启动
  6. 3启动介质
  7. 4操作系统启动优化
    1. 4.1 裁剪操作系统
      1. 4.1.1 使用预设的裁剪
      2. 4.1.2 自定义裁剪
    2. 4.2 减少log输出
  8. 5用户空间优化
    1. 5.1 使用systemd自定义启动服务
  9. 6使用init脚本最小化启动服务
  10. 7总结
  11. 8参考文献

使用预设的裁剪

为了快速实现快速启动功能,TI提供了额外的overlay config来帮助裁减内核。在内核代码中,kernel/configs/ti_early_display.config文件提供了额外的内核模块配置。该配置中有如下的描述,详细说明了关闭该模块能够带来的启动优化。

#This reduces kernel image size by 0KB and boot time by 144ms
CONFIG_RODATA_FULL_DEFAULT_ENABLED=n

为了应用预设的快速启动配置,需要修改相应的makerule。首先进入Linux SDK安装目录下的makerules文件夹,修改Makefile_linux相应部分,将ti_early_display.config加入编译命令。

linux: linux-dtbs
@echo =================================
@echo Building the Linux Kernel
@echo =================================
$(MAKE) -C $(LINUXKERNEL_INSTALL_DIR) ARCH=arm64 CROSS_COMPILE=$(CROSS_COMPILE) defconfig ti_arm64_prune.config ti_early_display.config
$(MAKE) -j $(MAKE_JOBS) -C $(LINUXKERNEL_INSTALL_DIR) ARCH=arm64 CROSS_COMPILE=$(CROSS_COMPILE) Image
$(MAKE) -j $(MAKE_JOBS) -C $(LINUXKERNEL_INSTALL_DIR) ARCH=arm64 CROSS_COMPILE=$(CROSS_COMPILE) modules
ifeq ($(SOC_TYPE),hs)
$(MAKE) linux-fitImage
endif

由于Linux依赖于设备树,因此设备树的编译命令中也需要加入该配置文件,在Makefile_linux-dtbs中,将ti_early_display.config加入编译命令。

linux-dtbs:
@echo =====================================
@echo Building the Linux Kernel DTBs
@echo =====================================
$(MAKE) -C $(LINUXKERNEL_INSTALL_DIR) ARCH=arm64 CROSS_COMPILE=$(CROSS_COMPILE) defconfig ti_arm64_prune.config ti_early_display.config
@for DTB in $(KERNEL_DEVICETREE); do \
$(MAKE) -j $(MAKE_JOBS) -C $(LINUXKERNEL_INSTALL_DIR) DTC_FLAGS=-@ ARCH=arm64 CROSS_COMPILE=$(CROSS_COMPILE) $$DTB; \
done

在修改完编译指令后,重新编译Linux,重新编译出的镜像文件大小从20MB下降到15MB左右,同时Linux启动时间降低约1s。