1、前言
项目开发需要联网传输数据,每次开机都要事先运行WiFi程序。于是想办法能不能板子开机的时候就能自动启动运行WiFi程序,不需要每次都命令行输入。
2、开发例程
(1)准备工作
找到启动WiFi的程序,文件目录:/home/nebula/bearpi/bearpi-hm_micro_small/applications/BearPi/BearPi-HM_Micro/samples/communication/wpa_supplicant/src/wpa_sample.c。
以下代码为主函数代码:
依照官方执行WiFi程序的命令./bin/wpa_supplicant -i wlan0 -d -c /etc/wpa_supplicant.conf,把程序写死
特别注意:经过后期的教训终结,一定要 sleep(30),等待开发板初始化网卡才能连接。
(2)查找资料&确定方向
干货!openharmony L1级开机启动项服务设置从启动日志简单梳理Openharmony启动流程。
虽然没有找到完全适合Micro的,但都是OpenHarmony的架构,大同小异。
可以发现配置开机启动项是在代码根目录下的vender(内核)文件夹里配置的。找到含有类似init_config.cfg.的文件名。
具体在Bearpi-Micro的详细地址如下:vendor/bearpi/bearpi_hm_micro/init_configs/。
好了,问题来了,这两个除了名字不一样,内容一模一样的文件到底该改哪一个?
经过大量的试错(修改了八九次)发现只能修改init_bearpi_hm_micro.cfg这个文件。
详细的配置如下:
在OpenHarmony 中init进程通过读取/etc/init.cfg,根据配置执行指定命令,或启动指定进程。
添加的代码有:
Init配置文件基于JSON格式,用来配置系统启动时必要的命令和服务。Init在系统启动时解析配置文件,并根据配置文件执行对应的命令,启动相应的服务。
3、效果
4、总结
看似简单,实则配置文件的格式要求十分十分严谨,多一个逗号不行,少一个逗号也不行!!!
都是在不断的试错、尝试中总结的经验。
其实在OpenHarmony设备开发的官方文档引导启动配置文件中也有说到:
cfg文件是严格按照JSON格式编写的,当添加服务或命令未生效时,可以优先排查添加内容的格式是否正确/(ㄒoㄒ)/~~。