- 物聯網嵌入式技術項目教程
- 張小恒 李靜主編
- 4字
- 2023-06-28 16:06:06
相關知識
1.2.1 嵌入式Linux概述
Linux是一種基于可移植操作系統接口標準(POSIX)的多用戶、多任務、支持多線程和多CPU的操作系統。軟件支持主要的UNIX工具軟件、應用程序和網絡協議,硬件支持32位和64位。1991年10月5日首次發布第一個Linux操作系統內核Linux 0.01,目前有上百種不同的發行版本,主要包括Red Hat Linux、Ubuntu Linux、SuSE Linux、Gentoo Linux、Debian Linux、Fedora等。其優勢包括:完全開源免費、多用戶多任務、界面良好、多種平臺支撐、軟件支持豐富、安全可靠、良好穩定性及強大網絡功能。
1.嵌入式Linux操作系統
嵌入式Linux(Embedded Linux)是指將完整的Linux經過裁剪修改小型化后,固化在嵌入式處理器的存儲器中,并應用于特定場合的專用Linux操作系統。嵌入式Linux既繼承了Internet上無限的開放源代碼資源,又具有嵌入式操作系統的特性,與其他嵌入式操作系統相比具備如下優勢。
(1)內核完全開源免費及良好移植性
由于內核代碼完全開源免費,不同領域和不同層次的用戶可以根據實際應用場景對內核進行改造,低成本地設計和開發出滿足自己需要的嵌入式系統。類似于Linux,嵌入式Linux也符合IEEE POSIX.1相關標準,使得應用程序可移植性良好。
(2)強大的網絡支持及兼容性
嵌入式Linux支持所有標準的因特網協議,來源于Linux網絡協議棧構建的嵌入式TCP/IP網絡協議棧,除IPV4還包括IPV6。此外還支持多種文件系統,包括ext2、fat16、fat32、romfs等。良好的兼容和支持特性有利于應用開發。
(3)Linux具備一整套完整工具鏈
傳統嵌入式開發調試一般采用在線仿真器(ICE)方式實現。仿真器為目標程序建立完整的仿真環境,完成監視調試相關功能。這種使用專用仿真器的調試方式適合硬件底層調試,但成本較高。而嵌入式Linux只需軟硬件支持基本的串口功能即可進行調試,成本極低且能解決實際應用中的大部分問題。嵌入式Linux的完整工具鏈(Tool Chain)包括用作編譯器的GCC工具,用作調試工具的GDB、KGDB、XGDB等。相關工具可以完成從操作系統底層到應用軟件上層的調試。對不同平臺架構及不同處理器開發者可以通過全套工具鏈建立相應的開發環境和交叉運行環境,開發及仿真十分方便。
(4)具有廣泛的硬件支持特性
系統可運行在x86、Alpha、Sparc、MIPS、PPC、Motorola、NEC、ARM等多種硬件平臺,而且開放源代碼,可以定制。
綜上,嵌入式Linux應用領域非常廣泛,如平板、機頂盒、手機、掃描儀、數據網絡、交換機、路由器、服務器以及衛星通信、醫療電子、交通運輸計算機外設、工業控制、航空航天領域各種特種設備等。與臺式機/筆記本式計算機相比,各種手持設備、消費電子以及特殊用途的專用設備市場容量極大,因此嵌入式Linux系統具有極其強大的生命力和廣泛的應用前景。
2.Linux文件系統
Linux文件系統目錄如圖1-25所示,“/”為根目錄,其下的一級子目錄作用如下所述。

圖1-25 Linux文件系統目錄
(1)/bin
bin是“二進制文件(Binaries)”的英文縮寫,主要存放系統命令,普通用戶和root超級用戶都可以執行。放在/bin下的命令在單用戶模式下也可以執行。
(2)/boot
boot是系統啟動目錄,保存與系統啟動相關的文件,如內核文件、啟動引導程序(grub)文件以及其他連接文件、鏡像文件等。
(3)/dev
dev是“設備(device)”的英文縮寫,該目錄下存放的是Linux的外部設備,在Linux中訪問設備的方式和訪問文件的方式是相同的。
(4)/etc
etc是“等等(et cetera)”的英文縮寫,這個目錄用來存放所有的系統管理需要的配置文件和子目錄。
(5)/home
home是普通用戶的主目錄(也稱為家目錄)。在創建用戶時,每個用戶要有一個默認登錄和保存自己數據的位置,就是用戶的主目錄,所有普通用戶的主目錄是在/home/下建立一個和用戶名相同的目錄。如用戶lxr的主目錄就是/home/lxr。
(6)/lib
lib是“庫(library)”的英文縮寫,這個目錄里存放著系統最基本的動態鏈接共享庫文件,其作用類似于Windows里的動態鏈接庫(dll)文件。幾乎所有的應用程序都需要用到這些共享庫文件。
(7)/lost+found
這個目錄一般情況下是空的,當系統非法關機后,這里就存放了一些系統修復過程中恢復的文件。
(8)/media
media是掛載目錄。系統建議用來掛載媒體設備,如U盤和光盤。
(9)/mnt
mnt也是掛載目錄。早期Linux中只有這一個掛載目錄。系統建議這個目錄用來掛載額外的設備,如U盤、移動硬盤和其他操作系統的分區。
(10)/opt
安裝大的應用程序。這個目錄是放置和安裝其他軟件的位置,手工安裝的源碼包軟件都可以安裝到這個目錄中。不過筆者還是習慣把軟件放到/usr/local/目錄中,也就是說/usr/local/目錄也可以用來放置和安裝軟件。
(11)/proc
proc是“進程(processes)”的英文縮寫,/proc是一種偽文件系統(即虛擬文件系統),存儲的是當前內核運行狀態的一系列特殊文件,這個目錄是一個虛擬的目錄,它是系統內存的映射,可以通過直接訪問這個目錄來獲取系統信息。
(12)/root
root是超級用戶的主目錄。普通用戶主目錄在/home/下,超級用戶root的主目錄在“/”下。
(13)/sbin
保存與系統環境設置相關的命令,只有root超級用戶可以使用這些命令進行系統環境設置,但也有些命令允許普通用戶查看。
(14)/srv
該目錄存放一些服務啟動之后需要提取的數據。
(15)/sys
虛擬文件系統。和/proc/目錄相似,該目錄中的數據都保存在內存中,主要保存與內核相關的信息。
(16)/tmp
臨時目錄,系統存放臨時文件的目錄。在該目錄下,所有用戶都可以訪問和寫入。建議此目錄中不保存重要數據,最好每次開機都把該目錄清空。
(17)/usr
usr是“共享資源(unix shared resources)”的英文縮寫,這是一個非常重要的目錄,用戶的很多應用程序和文件都放在這個目錄下,類似于Windows下的program files目錄。
(18)/var
var是“變量(variable)”的英文縮寫,這個目錄中存放著在不斷擴充著的文件,一般可以將那些經常修改的目錄放在這個目錄下。包括各種日志文件。
(19)/run
這是一個臨時文件系統,存儲系統啟動以來的信息。當系統重啟時,這個目錄下的文件應該被刪掉或清除。如果系統上有/var/run目錄,應該讓它指向run目錄。
3.Linux文件權限
Linux是一個多用戶操作系統,為了保護用戶個人的文件不被其他用戶讀取、修改或執行,Linux提供文件權限機制,文件的操作權限分為讀、寫和執行,分別用r、w、x來表示。對每個文件(或目錄)而言,都有4種不同的用戶。
●root:系統超級用戶能夠以root賬號登錄。
●owner:實際擁有文件(或目錄)的用戶。
●group:用戶所在組的成員。
●other:以上三類之外的所有其他用戶。
4.Linux Shell
Shell是系統的用戶界面,提供了用戶與內核進行交互操作的一種接口。它接收用戶輸入的命令并把它送入內核去執行。
(1)Shell的特點
1)圖形用戶界面化。Linux提供了像Microsoft Windows那樣的可視的命令輸入界面——X Window的圖形用戶界面(GUI)。它提供了很多窗口管理器,其操作就像Windows一樣,有窗口、圖標和菜單,所有的管理都是通過鼠標控制。現在比較流行的窗口管理器是KDE和GNOME。
2)解析命令。Shell內置的命令解釋器,解析用戶輸入的命令并把它們送到內核。
3)可編程。Shell有自己的編程語言用于對命令的編輯,它允許用戶編寫由shell命令組成的程序。Shell編程語言具有普通編程語言的很多特點,比如它也有循環結構和分支控制結構等,用這種編程語言編寫的Shell程序與其他應用程序具有同樣的效果。
(2)常見的Shell版本
每個Linux系統的用戶可以擁有自己的用戶界面或Shell,用以滿足他們自己專門的Shell需要。同Linux本身一樣,Shell也有多種不同的版本。目前主要有下列版本的Shell:
1)Bourne Shell:是貝爾實驗室開發的。
2)BASH:是GNU的Shell版本,是GNU操作系統上默認的Shell。
3)Korn Shell:是對Bourne Shell的發展,在大部分內容上與Bourne Shell兼容。
4)C Shell:是SUN公司Shell的BSD版本。
(3)Shell提示符及命令操作
Shell有兩種提示符:#和$。Linux系統登錄時可以用兩種身份登錄:root用戶和一般用戶。以“#”為提示符表明該終端是由root用戶打開的,root用戶具有最高權限,因此可以輸入任何可用的命令。以“$”為提示符表明該終端是一般用戶,一般用戶在使用系統時是有限制的。
在Shell下輸入相應的命令并按〈Enter〉鍵,Shell就執行命令。如果沒有此命令,Shell會提示:“command not fount”。Shell命令是區分大小寫的,一條命令只要有一個字母的大小寫發生變化,系統就認為是一條不同的命令。輸入命令、目錄名或文件名的開頭一個或幾個字母后按〈Tab〉鍵,Shell會在相應目錄里進行匹配,自動補齊命令、目錄名或文件名。還可以通過按〈↑〉或〈↓〉鍵來顯示執行過的命令,這在重復執行某些命令時會給用戶帶來很大的方便。