Bearpi-HM-Micro開機自啟動程序
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ㄒ)/~~。