王日++任軍++曾星++羅瑩玉
本文主要介紹嵌入式系統(tǒng)的基本概念以及學(xué)習(xí)嵌入式Linux系統(tǒng)心得體會(huì)。在Linux系統(tǒng)的學(xué)習(xí)過程中,逐步熟練掌握操作方法并獲得學(xué)習(xí)總結(jié)。
【關(guān)鍵詞】嵌入式系統(tǒng) 嵌入式Linux系統(tǒng) 學(xué)習(xí)總結(jié)
1 嵌入式系統(tǒng)
1.1 嵌入式系統(tǒng)的定義
一方面按照歷史性、本質(zhì)性、普遍性要求,嵌入式系統(tǒng)定義為:嵌入式系統(tǒng)是嵌入到對象體系中的計(jì)算機(jī)應(yīng)用系統(tǒng),與對象系統(tǒng)交互,在實(shí)現(xiàn)對象系統(tǒng)某些任務(wù)過程時(shí),對應(yīng)用系統(tǒng)會(huì)提出響應(yīng)時(shí)間的限定要求。
另一方面從應(yīng)用上嵌入式系統(tǒng)被定義為:以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟件硬件可裁剪,適應(yīng)應(yīng)用系統(tǒng)對功能、可靠性、成本、體積、功耗嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。
1.2 嵌入式系統(tǒng)的特點(diǎn)
(1)系統(tǒng)內(nèi)核??;
(2)專用性強(qiáng);
(3)系統(tǒng)精簡;
(4)高實(shí)時(shí)性;
(5)多任務(wù)的操作系統(tǒng);
(6)需要開發(fā)工具和環(huán)境。
1.3 嵌入式系統(tǒng)的應(yīng)用
在當(dāng)前數(shù)字信息技術(shù)和網(wǎng)絡(luò)技術(shù)高速發(fā)展的時(shí)代,嵌入式系統(tǒng)已經(jīng)廣泛地滲透到工業(yè)控制、交通管理、信息家電、家庭智能管理等方方面面中。隨著國內(nèi)外各種嵌入式產(chǎn)品的進(jìn)一步開發(fā)和推廣,嵌入式技術(shù)將越來越和人們的生活緊密結(jié)合。
2 嵌入式Linux的學(xué)習(xí)過程
2.1 常用命令總結(jié)
(1)cd命令——切換目錄;
(2)cp命令——拷貝文件或目錄;
(3)ls命令——列出目錄內(nèi)容;
(4)mkdir命令——?jiǎng)?chuàng)建目錄;
(5)rmdir命令——?jiǎng)h除目錄;
(6)rm命令——移動(dòng)文件或目錄;
(7)grep命令——行過濾工具;
(8)chmod命令——設(shè)置訪問權(quán)限;
(9)cat命令——顯示文件內(nèi)容;
(10)vi命令——文本編輯器;
(11)jobs命令——查看中止或者在后臺運(yùn)行的程序;
(12)bg命令——把程序放在后臺運(yùn)行;
(13)fg命令——把程序放在前臺運(yùn)行;
(14)ctrl+c命令——終止在前臺運(yùn)行的程序;
(15)kill命令——終止一個(gè)進(jìn)程;
(16)mount命令——把某個(gè)文件系統(tǒng)掛接到某個(gè)目錄下;
(17)Ifconfig命令——顯示或配置網(wǎng)絡(luò)設(shè)備。
2.2 Gcc—makefile
2.2.1 Gcc的使用方法(以hello.c文件為例)
(1)預(yù)處理:gcc -E hello.c -o hello.i
編譯:gcc -S hello.i -o hello.s
匯編:gcc -c hello.s -o hello.o
鏈接:gcc hello.o -o hello
生成可執(zhí)行文件:hello
(2)gcc hello.c -o hello
生成可執(zhí)行文件:hello
(3)gcc hello.c
生成可執(zhí)行文件:a.out
2.2.2 makefile的使用方法
(1)基本結(jié)構(gòu):
目標(biāo)文件:依賴文件
(2)使用make命令就能編譯得到結(jié)果。
2.3 文件I/O編程
2.3.1 函數(shù)說明
(1)open()函數(shù)是用于打開或創(chuàng)建文件;
(2)close()函數(shù)是用于關(guān)閉一個(gè)被打開的文件;
(3)read()函數(shù)是用于將從指定的文件描述符中讀出的數(shù)據(jù)放到緩存區(qū)中;
(4)write()函數(shù)是用于向打開的文件寫數(shù)據(jù),寫操作從文件的當(dāng)前指針位置開始;
(5)lseek()函數(shù)是用于在指定的文件描述符中將文件指針定位到相應(yīng)的位置;
(6)fcntl()函數(shù)給文件上鎖。
2.3.2 使用流程
打開文件open()、設(shè)置文件鎖fcntl()、定位文件指針位置lseek()、對文件進(jìn)行讀寫操作write()、read()。
2.4 編寫守護(hù)進(jìn)程
(1)創(chuàng)建子進(jìn)程,終止父進(jìn)程;
(2)在子進(jìn)程中創(chuàng)建新會(huì)話setsid;
(3)改變工作目錄chdir;
(4)重設(shè)文件創(chuàng)建掩碼umask;
(5)關(guān)閉文件描述符。
2.5 進(jìn)程間通信
2.5.1 管道
(1)用于具有親緣關(guān)系的進(jìn)程之間的通信;
(2)建立管道pipe();
(3)管道關(guān)閉時(shí)只需使用普通的close()函數(shù)逐個(gè)關(guān)閉各個(gè)文件描述符。
2.5.2 FIFO
有名管道的創(chuàng)建使用函數(shù)mkfifo(),在創(chuàng)建管道成功之后,就可以使用open()、read()、和write()這些函數(shù)。
2.5.3 信號(如圖1所示)
(1)信號的發(fā)送與捕捉。
kill()函數(shù)、raise()函數(shù)、alarm()函數(shù)、pause()函數(shù)
(2)信號的處理。
使用簡單函數(shù)signal(),只需指出要處理的信號和處理函數(shù)即可;
使用信號集函數(shù)組。
2.5.4 信號量
創(chuàng)建信號量或獲得在系統(tǒng)已存在的信號量semget()
初始化信號量semctl()函數(shù)的SETVAL操作
信號量的PV操作semop()
刪除信號量semclt()函數(shù)的IPC_RMID操作
2.5.5 共享內(nèi)存
創(chuàng)建共享內(nèi)存shmget()
映射共享內(nèi)存shmat()
撤銷映射shmdt()
2.5.6 消息隊(duì)列
創(chuàng)建或打開消息隊(duì)列msgget()
添加消息msgsnd()
讀取消息msgrcv()
控制消息隊(duì)列msgctl()。
3 學(xué)習(xí)總結(jié)
嵌入式系統(tǒng)本身是一個(gè)相對模糊的定義,而Linux則是類似于windows的操作系統(tǒng),它的核心源代碼是開放的、自用使用的。在了解了基礎(chǔ)知識和安裝虛擬機(jī)之后,我便開始進(jìn)行上機(jī)操作,加深基本命令的理解和函數(shù)的使用。
在學(xué)習(xí)的過程中想要獨(dú)立解決疑問,可以通過網(wǎng)絡(luò)資源、課外書或大量的動(dòng)手實(shí)踐才能真正的領(lǐng)會(huì)Linux的精髓。同時(shí)在我們自己的學(xué)習(xí)中,要盡最大的能力去幫助他人,在幫助他人的同時(shí)自己會(huì)深刻鞏固知識。
參考文獻(xiàn)
[1]何立民.嵌入式系統(tǒng)的實(shí)時(shí)性問題[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2004(09).
[2]孫天澤.嵌入式Linux操作系統(tǒng)[M].北京:人民郵電出版社,2012.
[3]夏瑋瑋,沈連豐等.嵌入式系統(tǒng)關(guān)鍵技術(shù)分析與開發(fā)應(yīng)用[J].單片機(jī)與嵌入式應(yīng)用,2003(02).
[4]賈紅偉,葉文萊.嵌入式操作系統(tǒng)與嵌入式Linux[J].吉林師范大學(xué)學(xué)報(bào),2005.
作者單位
山東科技大學(xué) 山東省青島市 266590