干货!openharmony L1级开机启动项服务设置-鸿蒙开发者社区-51CTO.COM

干货!openharmony L1级开机启动项服务设置 原创 精华

挖墙脚的农民工
发布于 2022-2-14 15:37
浏览
7收藏

春节不停更,此文正在参加「星光计划-春节更帖活动」openharmony L1级开机服务启动项配置

背景

openharmony L1级开发板需将一个执行文件转换为开机服务运行至开发板中,即开机时执行运行程序。由于当前使用的为L1级开发板与L2级开发板存在一定的差异。本次已L1级进行测试讲解。

设备

君正开发板:x2000,软件:oepenharmony 3.0

准备

我们通过打印显示的方式验证开机启动项是否启动成功。其中代码样例如下:

lts@ubuntu:~/x2000/test$ ls
BUILD.gn  etc  ohos.build  test.c

其中test.c用于编译成可执行文件,其内容如下:

lts@ubuntu:~/x2000/test$ cat test.c 
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc,char* argv[])
{
        printf("\n======================================\n");
        printf("*                                    *");
        printf("*                                    *\n");
        printf("*                                    *\n");
        printf("*                                    *\n");
        printf("*          This is a test            *\n");
        printf("*                                    *\n");
        printf("*                                    *\n");
        printf("*                                    *\n");
        printf("======================================\n");

        return 0;
}
lts@ubuntu:~/x2000/test$ 

gn编译文件内容如下:

lts@ubuntu:~/x2000/test$ cat BUILD.gn 
import("//build/lite/config/component/lite_component.gni")

executable("sysinfo")
{
  sources = [
      "test.c",
  ]

  include_dirs = [ ]

  cflags = [
    "-Wall",
    "-Wno-format",
    "-Wwrite-strings",
  ]
  cflags_cc = cflags

  ldflags = [
       "-lstdc++",
       "-lpthread"
  ]
  public_deps = []
  deps = []
}
group("sys_info") {
    deps = [ 
       ":sysinfo",
       "etc:sysinfo_cfg"
    ]
}
lts@ubuntu:~/x2000/test$  

当然执行文件配置成开机启动项时,可能存在需要配置配置文件的情况,如某些配置文件等,因此在etc目录存放关于配置文件内容。
干货!openharmony L1级开机启动项服务设置-鸿蒙开发者社区
etc目录中配置文件情况如下:
lts@ubuntu:~/x2000/test$ cd etc/
lts@ubuntu:~/x2000/test/etc$ ls
BUILD.gn sysinfo_config.cfg
lts@ubuntu:~/x2000/test/etc$
其中sysinfo_config.cfg 文件为我们需要配置的配置文件。BUILD.gn 为操作配置文件对应的gn文件。
其中gn配置文件内容如下:

lts@ubuntu:~/x2000/test/etc$ cat BUILD.gn 
import("//build/lite/config/component/lite_component.gni")
copy("sysinfo_cp") {
    sources = [ "sysinfo_config.cfg" ]
    outputs = [ "$root_out_dir/etc/sysinfo/sysinfo_config.cfg" ]
}

lite_component("sysinfo_cfg") {
    features = [
      ":sysinfo_cp"
    ]
}
lts@ubuntu:~/x2000/test/etc$etc$

即将配置文件在编译完成之后存放在/etc/sysinfo/ 目录下面。执行文件可以在/etc/sysinfo/目录下面获取使用sysinfo_config.cfg文件。

配置开机启动项

进入代码根目录下:vendor/ingenic/halley5/init_configs,在这里我们需要配置对应的开启启动项目。

lts@ubuntu:~/x2000/vendor/ingenic/halley5/init_configs$ ls 
BUILD.gn  init_linux_5_10_x2000.cfg
lts@ubuntu:~/x2000/vendor/ingenic/halley5/init_configs$ 

修改init_linux_5_10_x2000.cfg,在services添加对应的执行文件名。
如:
干货!openharmony L1级开机启动项服务设置-鸿蒙开发者社区

进入到 lts@ubuntu:~/x2000/vendor/ingenic/halley5/rootfs-overlay/etc/init.d目录,我们需要添加对应的脚本,用于开机启动。
我们添加一个sysinfo脚本,注意需要修改权限

lts@ubuntu:~/x2000/vendor/ingenic/halley5/rootfs-overlay/etc/init.d$ cat sysinfo 
#! /bin/sh
sleep 1 && /bin/sysinfo &
lts@ubuntu:~/x2000/vendor/ingenic/halley5/rootfs-overlay/etc/init.d$ 

修改 rcS文件,将脚本执行命令加入。
干货!openharmony L1级开机启动项服务设置-鸿蒙开发者社区干货!openharmony L1级开机启动项服务设置-鸿蒙开发者社区

烧写

烧写镜像到开发板中,观察打印。
干货!openharmony L1级开机启动项服务设置-鸿蒙开发者社区

开启重启和烧写重启时出现打印,修改开机启动项成功。
验证开机启动配置项
干货!openharmony L1级开机启动项服务设置-鸿蒙开发者社区
说明开机配置项配置成功,此次验证OK。

总结

本次操作遇到一个大坑,在烧写镜像文件时出现报错;
干货!openharmony L1级开机启动项服务设置-鸿蒙开发者社区
环境为:ubuntu
按照报错休息修改无果之后,重新换一个烧写软件烧写,烧写成功。

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
已于2022-2-14 15:39:58修改
8
收藏 7
回复
举报
1条回复
按时间正序
/
按时间倒序
民之码农
民之码农

666

1
回复
2022-2-15 08:15:38
回复
    相关推荐