【嵌入式Linux系統(tǒng)開發(fā)】——系統(tǒng)移植概述
發(fā)布時間:2024-01-11 10:34:02
一、什么是嵌入式系統(tǒng)
嵌入式系統(tǒng)是以應(yīng)用為中心,以計算機技術(shù)為基礎(chǔ),軟硬件可裁剪,適用于應(yīng)用系統(tǒng),對功能、可靠性、成本、體積、功耗等方面有特殊要求的專用計算機系統(tǒng)。
嵌入式系統(tǒng)與通用計算機系統(tǒng)的本質(zhì)區(qū)別在于系統(tǒng)應(yīng)用不同,嵌入式系統(tǒng)是將一個計算機系統(tǒng)嵌入到對象系統(tǒng)中。這個對象可能是龐大的機器,也可能是小巧的手持設(shè)備,用戶并不關(guān)心這個計算機系統(tǒng)的存在。
嵌入式系統(tǒng)一般包含嵌入式微處理器、外圍硬件設(shè)備、嵌入式操作系統(tǒng)和應(yīng)用程序4個部分。嵌入式領(lǐng)域已經(jīng)有豐富的軟硬件資源可以選擇,涵蓋了通信、網(wǎng)絡(luò)、工業(yè)控制、消費電子、汽車電子等各種行業(yè)。
二、嵌入式系統(tǒng)操作
三、嵌入式Linux的特點
1、Linux系統(tǒng)是層次結(jié)構(gòu)且內(nèi)核完全開放。Linux是由很多體積小且性能高的微內(nèi)核系統(tǒng)組成。在內(nèi)核代碼完全開放的前提下,不同領(lǐng)域和不同層次的用戶可以根據(jù)自己的應(yīng)用需要方便地對內(nèi)核進行改造,低成本地設(shè)計和開發(fā)出滿足自己需要的嵌入式系統(tǒng)。
2、強大的網(wǎng)絡(luò)支持功能。Linux誕生于因特網(wǎng)時代并具有Unix的特性,保證了它支持所有標準因特網(wǎng)協(xié)議,并且可以利用Linux的網(wǎng)絡(luò)協(xié)議棧將其開發(fā)成為嵌入式的TCP/IP網(wǎng)絡(luò)協(xié)議棧。
3、Linux具備一整套工具鏈,容易自行建立嵌入式系統(tǒng)的開發(fā)環(huán)境和交叉運行環(huán)境,可以跨越嵌入式系統(tǒng)開發(fā)中仿真工具的障礙。Linux也符合IEEE POSIX1標準,使應(yīng)用程序具有較好的可移植性。
傳統(tǒng)的嵌入式開發(fā)的程序調(diào)試和調(diào)試工具是用在線仿真器(ICE)實現(xiàn)的。它通過取代目標板的微處理器,給目標程序提供一個完整的仿真環(huán)境,完成監(jiān)視和調(diào)試程序;但一般價格比較昂貴,只適合做非常底層的調(diào)試。
4、Linux具有廣泛的硬件支持特性。無論是RISC還是CISC、32位還是64位等各種處理器Linux都能運行。這意味著嵌入式Linux將具有更廣泛的應(yīng)用前景。
四、嵌入式系統(tǒng)的組成
1、硬件和軟件
嵌入式系統(tǒng)通常由嵌入式處理器、外圍設(shè)備、嵌入式操作系統(tǒng)和應(yīng)用軟件等幾大部分組成。
2、硬件層
硬件層由嵌入式處理器、存儲器系統(tǒng)、通用設(shè)備接口和I/O接口(如A/D、D/A、I/O等)組成。在一片嵌入式微處理器基礎(chǔ)上增加電源電路、時鐘電路和存儲器電路(ROM和SDRAM等),就構(gòu)成了七個嵌入式核心控制模塊。其中,操作系統(tǒng)和應(yīng)用程序都可以固化在ROM中。
3、中間層
中間層也稱為硬件抽象層或板極支持包,它把系統(tǒng)軟件與底層硬件部分隔離。板極支持包對上具有操作系統(tǒng)相關(guān)性,對下具有硬件相關(guān)性。設(shè)計一個完整的中間層需要完成兩部分工作:
① 嵌入式系統(tǒng)的初始化,它包括片級初始化、板級初始化和系統(tǒng)級初始化。
② 設(shè)計硬件相關(guān)的設(shè)備驅(qū)動
4、軟件層
軟件層由多任務(wù)操作系統(tǒng)(OS)、文件系統(tǒng)、圖形用戶接口(GUI)、網(wǎng)絡(luò)系統(tǒng)及通用組件模塊組成。OS是嵌入式應(yīng)用軟件的基礎(chǔ)和開發(fā)平臺;是一段嵌入式目標代碼中的程序,系統(tǒng)復(fù)位后首先執(zhí)行,相當于用戶的主程序,用戶的其他應(yīng)用程序都建立在OS之上;是一個標準的內(nèi)核,它將CPU時鐘、中斷、I/O、定時器等資源都封裝起來,留給用戶的是一個標準的API函數(shù)接口。
5、 功能層與執(zhí)行裝置
功能層由基于OS開發(fā)的應(yīng)用程序組成,用來完成對被控對象的控制功能。功能層是面向被控制對象和用戶的,為方便用戶操作,往往需要提供一個友好的人機界面。執(zhí)行裝置是指那些可以接受嵌入式計算機系統(tǒng)發(fā)出控制命令,執(zhí)行所規(guī)定的操作或任務(wù)的設(shè)備和裝置。在不同應(yīng)用領(lǐng)域中,嵌入式系統(tǒng)的執(zhí)行裝置一般是不同的,應(yīng)該根據(jù)具體的應(yīng)用場合和系統(tǒng)所要求實現(xiàn)的功能選擇不同的設(shè)備和執(zhí)行裝置。
五、?Linux內(nèi)核目錄結(jié)構(gòu)
arch :包含和硬件體系結(jié)構(gòu)相關(guān)的代碼,每種平臺占一個相應(yīng)的目錄,如i386、arm、arm64、powerpc、mips 等。Linux 內(nèi)核目前已經(jīng)支持30 種左右的體系結(jié)構(gòu)。在arch目錄下,存放的是各個平臺以及各個平臺的芯片對Linux 內(nèi)核進程調(diào)度、內(nèi)存管理、中斷等的支持,以及每個具體的SoC 和電路板的板級支持代碼。
block:塊設(shè)備驅(qū)動程序I/O 調(diào)度。
crypto:常用加密和散列算法(如AES、SHA 等),還有一些壓縮和CRC 校驗算法。
documentation:內(nèi)核各部分的通用解釋和注釋。
drivers :設(shè)備驅(qū)動程序,每個不同的驅(qū)動占用一個子目錄,如char、block、net、mtd、i2c 等。
fs:所支持的各種文件系統(tǒng),如EXT、FAT、NTFS、JFFS2 等。
include:頭文件,與系統(tǒng)相關(guān)的頭文件放置在include/linux 子目錄下。
init:內(nèi)核初始化代碼。著名的start_kernel() 就位于init/main.c 文件中。
ipc:進程間通信的代碼。
kernel :內(nèi)核最核心的部分,包括進程調(diào)度、定時器等,而和平臺相關(guān)的一部分代碼放在arch/*/kernel 目錄下。
lib:庫文件代碼。
mm:內(nèi)存管理代碼,和平臺相關(guān)的一部分代碼放在arch/*/mm 目錄下。
net:網(wǎng)絡(luò)相關(guān)代碼,實現(xiàn)各種常見的網(wǎng)絡(luò)協(xié)議。
scripts:用于配置內(nèi)核的腳本文件。
security:主要是一個SELinux 的模塊。
sound:ALSA、OSS 音頻設(shè)備的驅(qū)動核心代碼和常用設(shè)備驅(qū)動。
usr:實現(xiàn)用于打包和壓縮的cpio 等。
include:內(nèi)核API 級別頭文件。
以上為本次所有分享內(nèi)容
關(guān)注“盛圖科技”公眾號
私信“寒假編程訓(xùn)練營”即可免費報名參加!