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参考文献

自定义裁剪

自定义裁减需要修改arch/arm64/configs/defconfig中的配置,比如将CONFIG_PPS设置为y时将该配置的相关代码编入内核中并在内核启动时启动,设置为m时即为动态加载的模块,在内核启动完成后文件系统启动时加载,设置为n时则禁用。然而需要注意的是,很多模块具有相互依赖的关系,因此简单修改defconfig可能并不生效,具体是否生效可以在编译后查看Linux SDK目录下board-support/ti-linux-xxxx目录下.config确认最终生效的配置。例如,B模块依赖于A,将A配置为禁用,但是B配置为使能,编译完会发现在.config中A仍然能被使能。

自定义裁减也可以使用Linux配置工具menuconfig进行配置,该配置工具在配置时会检查依赖关系,帮助有效配置。

举个例子,如下图所示,在目标应用中可能不需要使用蓝牙以及相关协议栈,使用menuconfig时会打开图形界面,使用方向键进行选择控制。

 Menuconfig界面 图 4-1 Menuconfig界面

选择网络支持项后,可以看到蓝牙相关选项。在蓝牙选项上按m则配置为动态加载的模块,按n配置为禁用,按y配置为内核模块,会与内核一起启动。

 在Menuconfig界面中配置蓝牙 图 4-2 在Menuconfig界面中配置蓝牙

修改完成后,选择保存。

 保存Menuconfig 图 4-3 保存Menuconfig