自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Bearpi-HM-Micro開機(jī)自啟動(dòng)程序

系統(tǒng) OpenHarmony
項(xiàng)目開發(fā)需要聯(lián)網(wǎng)傳輸數(shù)據(jù),每次開機(jī)都要事先運(yùn)行WiFi程序。于是想辦法能不能板子開機(jī)的時(shí)候就能自動(dòng)啟動(dòng)運(yùn)行WiFi程序,不需要每次都命令行輸入。

??想了解更多關(guān)于開源的內(nèi)容,請(qǐng)?jiān)L問:??

??51CTO 開源基礎(chǔ)軟件社區(qū)??

??https://ost.51cto.com??

1、前言

項(xiàng)目開發(fā)需要聯(lián)網(wǎng)傳輸數(shù)據(jù),每次開機(jī)都要事先運(yùn)行WiFi程序。于是想辦法能不能板子開機(jī)的時(shí)候就能自動(dòng)啟動(dòng)運(yùn)行WiFi程序,不需要每次都命令行輸入。

2、開發(fā)例程

(1)準(zhǔn)備工作

找到啟動(dòng)WiFi的程序,文件目錄:/home/nebula/bearpi/bearpi-hm_micro_small/applications/BearPi/BearPi-HM_Micro/samples/communication/wpa_supplicant/src/wpa_sample.c。

以下代碼為主函數(shù)代碼:

int main(int argc, char *argv[])
{
printf("------------------------\n");
printf("------------------------\n");
printf("------------------------\n");
printf("--------test------------\n");
printf("------------------------\n");
printf("------------------------\n");
printf("------------------------\n");

g_wpaArgc = argc;
for (int i = 0; i < g_wpaArgc; i++)
{
g_wpaArg[i] = argv[i];
}
sleep(30);
g_wpaArgc = 5;
g_wpaArg[0] = "-i";
g_wpaArg[1] = "wlan0";
g_wpaArg[2] = "-d";
g_wpaArg[3] = "-c";
g_wpaArg[4] = "/etc/wpa_supplicant.conf";

int ret = pthread_create(&g_wpaThread, NULL, ThreadMain, NULL);
if (ret != 0)
{
printf("[WpaSample]create thread failed error:%s.\n", strerror(ret));
return 1;
}
pthread_join(g_wpaThread, NULL);
return 0;
}

依照官方執(zhí)行WiFi程序的命令./bin/wpa_supplicant -i wlan0 -d -c /etc/wpa_supplicant.conf,把程序?qū)懰?/p>

特別注意:經(jīng)過后期的教訓(xùn)終結(jié),一定要 sleep(30),等待開發(fā)板初始化網(wǎng)卡才能連接。

【FFH】Bearpi-HM-Micro開機(jī)自啟動(dòng)程序-開源基礎(chǔ)軟件社區(qū)

(2)查找資料&確定方向

??干貨!openharmony L1級(jí)開機(jī)啟動(dòng)項(xiàng)服務(wù)設(shè)置??從啟動(dòng)日志簡(jiǎn)單梳理Openharmony啟動(dòng)流程。

雖然沒有找到完全適合Micro的,但都是OpenHarmony的架構(gòu),大同小異。

【FFH】Bearpi-HM-Micro開機(jī)自啟動(dòng)程序-開源基礎(chǔ)軟件社區(qū)


可以發(fā)現(xiàn)配置開機(jī)啟動(dòng)項(xiàng)是在代碼根目錄下的vender(內(nèi)核)文件夾里配置的。找到含有類似init_config.cfg.的文件名。

具體在Bearpi-Micro的詳細(xì)地址如下:vendor/bearpi/bearpi_hm_micro/init_configs/。

【FFH】Bearpi-HM-Micro開機(jī)自啟動(dòng)程序-開源基礎(chǔ)軟件社區(qū)

好了,問題來了,這兩個(gè)除了名字不一樣,內(nèi)容一模一樣的文件到底該改哪一個(gè)?

經(jīng)過大量的試錯(cuò)(修改了八九次)發(fā)現(xiàn)只能修改init_bearpi_hm_micro.cfg這個(gè)文件。

詳細(xì)的配置如下:

{
"jobs" : [{
"name" : "pre-init",
"cmds" : [
"mkdir /storage/data/log",
"chmod 0755 /storage/data/log",
"chmod 0777 /dev/hdf",
"chown 4 4 /storage/data/log",
"mkdir /storage/data/softbus",
"mkdir /sdcard",
"chmod 0777 /sdcard",
"start foundation",
"start bundle_daemon",
"start appspawn",
"start wms_server",
"start shell"
]
}, {
"name" : "init",
"cmds" : [
"start apphilogcat",
"start wpa_supplicant"
]
}, {
"name" : "post-init",
"cmds" : [
"chown 0 99 /dev/hdf",
"chown 0 99 /dev/hdf/dev_mgr",
"chown 0 99 /dev/hdf/hdfwifi",
"chown 0 99 /dev/gpio",
"chown 0 99 /dev/i2c-0",
"chown 0 99 /dev/i2c-1",
"chown 0 99 /dev/i2c-2",
"chown 0 99 /dev/i2c-3",
"chown 0 99 /dev/i2c-4",
"chown 0 99 /dev/i2c-5",
"chown 0 99 /dev/i2c-6",
"chown 0 99 /dev/i2c-7",
"chown 0 99 /dev/uartdev-0",
"chown 0 99 /dev/uartdev-1",
"chown 0 99 /dev/uartdev-2",
"chown 0 99 /dev/uartdev-3",
"chown 0 99 /dev/spidev0.0",
"chown 0 99 /dev/spidev1.0",
"chown 0 99 /dev/spidev2.0",
"chown 0 99 /dev/spidev2.1"
]
}
],
"services" : [{
"name" : "foundation",
"path" : ["/bin/foundation"],
"uid" : 7,
"gid" : 7,
"once" : 0,
"importance" : 1,
"caps" : [10, 11, 12, 13]
}, {
"name" : "shell",
"path" : ["/bin/shell"],
"uid" : 2,
"gid" : 2,
"once" : 0,
"importance" : 0,
"caps" : [4294967295]
}, {
"name" : "appspawn",
"path" : ["/bin/appspawn"],
"uid" : 1,
"gid" : 1,
"once" : 0,
"importance" : 0,
"caps" : [2, 6, 7, 8, 11, 23]
}, {
"name" : "apphilogcat",
"path" : ["/bin/apphilogcat", "-L", "auto"],
"uid" : 4,
"gid" : 4,
"once" : 1,
"importance" : 0,
"caps" : []
}, {
"name" : "wpa_supplicant",
"path" : ["/bin/wpa_supplicant","-i","wlan0","-d","-c","/etc/wpa_supplicant.conf"],
"uid" : 8,
"gid" : 8,
"once" : 0,
"importance" : 0,
"caps" : [0,1]
},{
"name" : "wms_server",
"path" : ["/bin/wms_server"],
"uid" : 0,
"gid" : 0,
"once" : 1,
"importance" : 0,
"caps" : []
}, {
"name" : "bundle_daemon",
"path" : ["/bin/bundle_daemon"],
"uid" : 8,
"gid" : 8,
"once" : 0,
"importance" : 0,
"caps" : [0, 1]
}
]
}

在OpenHarmony 中init進(jìn)程通過讀取/etc/init.cfg,根據(jù)配置執(zhí)行指定命令,或啟動(dòng)指定進(jìn)程。

添加的代碼有:

【FFH】Bearpi-HM-Micro開機(jī)自啟動(dòng)程序-開源基礎(chǔ)軟件社區(qū)

【FFH】Bearpi-HM-Micro開機(jī)自啟動(dòng)程序-開源基礎(chǔ)軟件社區(qū)

Init配置文件基于JSON格式,用來配置系統(tǒng)啟動(dòng)時(shí)必要的命令和服務(wù)。Init在系統(tǒng)啟動(dòng)時(shí)解析配置文件,并根據(jù)配置文件執(zhí)行對(duì)應(yīng)的命令,啟動(dòng)相應(yīng)的服務(wù)。

3、效果

【FFH】Bearpi-HM-Micro開機(jī)自啟動(dòng)程序-開源基礎(chǔ)軟件社區(qū)

4、總結(jié)

看似簡(jiǎn)單,實(shí)則配置文件的格式要求十分十分嚴(yán)謹(jǐn),多一個(gè)逗號(hào)不行,少一個(gè)逗號(hào)也不行!??!
都是在不斷的試錯(cuò)、嘗試中總結(jié)的經(jīng)驗(yàn)。
其實(shí)在OpenHarmony設(shè)備開發(fā)的官方文檔???引導(dǎo)啟動(dòng)配置文件???中也有說到:
cfg文件是嚴(yán)格按照J(rèn)SON格式編寫的,當(dāng)添加服務(wù)或命令未生效時(shí),可以優(yōu)先排查添加內(nèi)容的格式是否正確/(ㄒoㄒ)/~~。

???想了解更多關(guān)于開源的內(nèi)容,請(qǐng)?jiān)L問:??

??51CTO 開源基礎(chǔ)軟件社區(qū)??

??https://ost.51cto.com??。

責(zé)任編輯:jianghua 來源: 51CTO開源基礎(chǔ)軟件社區(qū)
相關(guān)推薦

2010-01-04 10:05:18

linux掛載windows

2022-11-04 15:10:31

JS應(yīng)用LED燈

2013-11-19 13:31:16

遠(yuǎn)程控制軟件

2010-01-27 18:00:57

Android開機(jī)自啟

2021-08-06 22:41:53

Windows微軟自啟動(dòng)

2021-08-06 12:47:22

Windows 10Windows微軟

2015-10-28 17:21:37

Oracle11glinux自啟動(dòng)

2010-02-03 09:47:34

Linux smb服務(wù)

2018-03-02 13:28:19

Linux開機(jī)自啟動(dòng)

2016-09-23 15:50:25

Windows 7VirtualBox虛擬機(jī)

2023-11-13 16:28:48

微軟Windows 11

2010-02-22 18:12:25

CentOS vsft

2013-01-18 17:30:32

Linux系統(tǒng)

2017-06-23 15:01:10

2012-06-04 13:11:30

Windows 8開機(jī)啟動(dòng)

2009-11-28 20:16:04

2009-11-11 10:26:02

LinuxOracle監(jiān)聽自啟動(dòng)

2010-09-10 09:41:53

Android

2010-05-26 09:21:12

啟動(dòng)SVN

2023-05-31 07:54:11

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)