• 正文
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

飛凌嵌入式ElfBoard ELF 1板卡-文件系統(tǒng)之應(yīng)用開機(jī)自啟

2小時前
131
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

在busybox構(gòu)建文件系統(tǒng)章節(jié)我們已經(jīng)大概了解,文件系統(tǒng)啟動后執(zhí)行的第一個用戶進(jìn)程是init進(jìn)程,init進(jìn)程會解析etc/inittab文件,執(zhí)行inittab中的各個子進(jìn)程,打開文件系統(tǒng)中inittab文件:

第5行指定了系統(tǒng)啟動進(jìn)入的默認(rèn)運(yùn)行級別為5;

第9行是sysinit action,init程序會首先執(zhí)行該進(jìn)程;

第12行在單用戶模式下需要執(zhí)行的操作;

然后22-28就是系統(tǒng)不同的運(yùn)行級別;

通過代碼注釋可知,級別0是halt模式,關(guān)閉系統(tǒng);

級別1是單用戶模式,級別2-5是多用戶模式,級別6是重啟系統(tǒng);

在第5行已經(jīng)指定了本系統(tǒng)運(yùn)行級別為5,所以,在執(zhí)行完成sysinit:/etc/init.d/rcS之后,會執(zhí)行l(wèi)5:5:wait:/etc/init.d/rc 5,這句代碼是將5這個參數(shù)傳給etc/init.d/rc腳本,然后執(zhí)行etc/rc5.d目錄下的所有腳本,打開etc/rc5.d目錄:

可看到這些都是以S字符開頭的符號鏈接,S符號之后的數(shù)字是,執(zhí)行優(yōu)先級別,由小到大依次執(zhí)行。這些符號鏈接都有對應(yīng)的腳本文件。我們通常將自己的自運(yùn)行程序或者腳本放到優(yōu)先級別最低的文件中,比如S99rc.local中,該符號鏈接所對應(yīng)的腳本文件是etc/init.d/rc.local:

14:11 S99rc.local -> ../init.d/rc.local

在etc/init.d/rc.local中又會執(zhí)行etc/rc.local,我們也可以把應(yīng)用程序和腳本放到etc/rc.local中。當(dāng)然也可以自己定義一個自啟動腳本,然后在etc/rc5.d目錄建立一個符號鏈接鏈接到此腳本。例如在etc/目錄下自己創(chuàng)建了autorun.sh腳本文件,在etc/rc5.d目錄下建立了符號鏈接S99autorun.sh,鏈接到了etc/autorun.sh文件:

3月 ?16 ?13:32 ?S99autorun.sh -> ../autorun.sh

現(xiàn)在將我們的應(yīng)用放到autorun.sh中。首先,建立一個應(yīng)用源程序文件my_app.c:

#include <stdio.h>

void main(void)

{

while(1)

{

printf("hello wold!!! rn");

sleep(1);

}

}

編譯生成my_app:

. /opt/fsl-imx-x11/4.1.15-2.0.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi

elf@ubuntu:~/work/elf/rootfs$?$CC my_app.c -o my_app

通過nfs網(wǎng)絡(luò)文件系統(tǒng),或者其他方式將my_app復(fù)制到開發(fā)板文件系統(tǒng)usr/目錄下。

然后,將my_app加入到etc/autorun.sh中后臺運(yùn)行:

#! /bin/sh

./usr/my_app &

保存退出,reboot重啟系統(tǒng)后,程序運(yùn)行:

若想關(guān)閉此應(yīng)用:

使用ps –ef查看應(yīng)用的進(jìn)程號:

root@ELF1:~# ps –ef
root ?618 ?1 ?0 ?10:23 ?? ?00:00:00 ?./usr/my_app

kill關(guān)閉進(jìn)程:

root@ELF1:~# kill 618

相關(guān)推薦