OpenHarmony中.cfg引导启动配置文件中不同jobs配置项启动顺序

离北况归
发布于 2025-7-24 17:05
浏览
0收藏

笔者最近在移植soc到OpenHarmony时,遇到了内核amd GPU驱动在初始化时无法加载ramdisk中全部显卡固件的问题,于是将gpu驱动编译成ko形式在init阶段去加载,笔者希望尽量越早加载该ko越好,现将经验分享如下:

开发环境和前置知识

关键代码

  • 5.0.0/base/startup/init/services/init/standard/init.c
    // execute init
    PostTrigger(EVENT_TRIGGER_BOOT, "pre-init", strlen("pre-init"));
    PostTrigger(EVENT_TRIGGER_BOOT, "init", strlen("init"));
    TriggerServices(START_MODE_BOOT);
    PostTrigger(EVENT_TRIGGER_BOOT, "post-init", strlen("post-init"));
    TriggerServices(START_MODE_NORMAL);
    clock_gettime(CLOCK_MONOTONIC, &(g_bootJob.startTime));

这个部分去触发不同阶段的启动事件。 可以分析得出配置项启动顺序:pre-init > init > post-init

OpenHarmony中.cfg引导启动配置文件中不同jobs配置项启动顺序-鸿蒙开发者社区

所以对于需要启动非常早的操作可以在5.0.0/base/startup/init/services/etc/init.cfg的pre-init配置中添加,也可以选择自己创建一个.cfg引导启动配置文件
OpenHarmony中.cfg引导启动配置文件中不同jobs配置项启动顺序-鸿蒙开发者社区

知识拓展

  • 5.0.0/base/startup/init/services/init/standard/init.c
    OpenHarmony中.cfg引导启动配置文件中不同jobs配置项启动顺序-鸿蒙开发者社区
    在触发不同阶段的启动事件之前,oh将将内核启动时间写入系统参数,我们可以通过param get ohos.boot.time.kernel获取

OpenHarmony中.cfg引导启动配置文件中不同jobs配置项启动顺序-鸿蒙开发者社区

已于2025-7-24 17:15:38修改
1
收藏
回复
举报
回复
    相关推荐