24小時聯(lián)系電話:18217114652、13661815404
中文
技術(shù)專題
理論嵌入式Linux要求
理論嵌入式Linux要求
硬件
片上系統(tǒng)
片上系統(tǒng)(SoC)本質(zhì)上是一種采用單個平臺并將整個計算機系統(tǒng)集成到其上的集成電路。它將CPU的功能與執(zhí)行和執(zhí)行其功能所需的其他組件結(jié)合在一起。它負責使用其他硬件并運行您的軟件。SoC的主要優(yōu)點包括較低的延遲和節(jié)能功能。
它由各種構(gòu)建塊組成:
核心+緩存+ MMU – SoC的核心是處理器,它將定義其功能。通常,SoC具有多個處理器內(nèi)核。對于“真實”處理器,例如ARM Cortex-A9。這是選擇SoC時要牢記的主要內(nèi)容??赡苡芍T如NEON之類的SIMD協(xié)處理器共同輔助。
內(nèi)部RAM – IRAM由位于CPU旁邊的超高速SRAM組成。它的行為類似于CPU緩存,并且通常很小。在引導順序的第一階段中使用它。
外設(shè) –它們可以是一個簡單的ADC,DSP或圖形處理單元,它通過一些總線連接到內(nèi)核。低功耗/實時協(xié)處理器可幫助主內(nèi)核執(zhí)行實時任務(wù)或處理低功耗狀態(tài)。此類IP內(nèi)核的示例是USB,PCI-E,SGX等。
外部RAM
SoC在引導期間和引導之后使用RAM存儲臨時數(shù)據(jù)。它是嵌入式系統(tǒng)在常規(guī)操作期間使用的內(nèi)存。
非易失性記憶
在嵌入式系統(tǒng)或單板計算機中,它是SD卡。在其他情況下,它可以是NAND,NOR或SPI數(shù)據(jù)閃存。它是SoC讀取并存儲系統(tǒng)工作所需的所有軟件組件的數(shù)據(jù)源。
外圍設(shè)備
SoC必須具有用于標準通信協(xié)議(例如USB,以太網(wǎng)和HDMI)的外部接口。它還包括Wi-Fi和藍牙的無線技術(shù)協(xié)議。
軟件
首先,我們介紹了啟動鏈,它是SoC上電時發(fā)生的一系列操作。
引導ROM:這是存儲在ROM中的一段代碼,由引導核心在開機時執(zhí)行。該代碼包含有關(guān)SoC配置的說明,以使其能夠執(zhí)行應(yīng)用程序。Boot ROM執(zhí)行的配置包括內(nèi)核寄存器和堆棧指針的初始化,高速緩存和行緩沖區(qū)的啟用,中斷服務(wù)程序的編程,時鐘配置。
Boot ROM還實現(xiàn)了啟動輔助模塊(BAM),可使用以太網(wǎng),SD / MMC,USB,CAN,UART等接口從外部存儲器下載應(yīng)用程序映像。
第一階段自舉程序
在第一階段的引導程序中執(zhí)行以下操作
設(shè)置引導加載程序代碼使用的內(nèi)存段和堆棧
重置磁盤系統(tǒng)
顯示字符串“正在加載操作系統(tǒng)…”
在FAT目錄中找到第二階段引導加載程序
將第二階段引導加載程序映像以1000:0000的速度讀入內(nèi)存
將控制權(quán)轉(zhuǎn)移到第二階段的引導程序
它將Boot ROM復制到SoC的內(nèi)部RAM中。必須足夠小以適合通常小于100kB的內(nèi)存。它初始化外部RAM和SoC的外部存儲器接口,以及其他可能感興趣的外設(shè)(例如,禁用看門狗定時器)。完成后,它將根據(jù)上下文執(zhí)行下一階段,可以稱為MLO,SPL或其他。
第二階段自舉程序
這是主要的引導加載程序,可以比第一階段大10倍,它完成了相關(guān)外圍設(shè)備的初始化。
將引導扇區(qū)復制到本地內(nèi)存區(qū)域
在FAT目錄中查找內(nèi)核映像
在2000:0000讀取內(nèi)存中的內(nèi)核映像
重置磁盤系統(tǒng)
啟用A20線
在0000:0000處建立中斷描述符表
將全局描述符表設(shè)置為0000:0800
將描述符表加載到CPU中
切換到保護模式
清除預取隊列
設(shè)置保護模式的內(nèi)存段和堆棧,以供內(nèi)核代碼使用
使用跳遠將控制權(quán)轉(zhuǎn)移到內(nèi)核代碼
Linux內(nèi)核
Linux內(nèi)核是Linux OS的主要組件,并且是硬件和進程之間的核心接口。它在硬件和流程之間進行通信,從而盡可能高效地管理資源。內(nèi)核執(zhí)行以下工作
內(nèi)存管理:跟蹤內(nèi)存,存儲多少內(nèi)存以及存儲在何處
流程管理:確定哪些流程可以使用處理器,何時使用以及持續(xù)多長時間
設(shè)備驅(qū)動程序:充當硬件和進程之間的解釋器
系統(tǒng)調(diào)用和安全性:接收來自流程的服務(wù)請求
為了將內(nèi)核置于上下文中,可以將它們解釋為具有3層的Linux機器:
硬件:物理機-系統(tǒng)的基礎(chǔ),由內(nèi)存(RAM)和處理器(CPU)以及輸入/輸出(I / O)設(shè)備(例如存儲,網(wǎng)絡(luò)和圖形)組成。
Linux內(nèi)核:操作系統(tǒng)的核心。它是駐留在內(nèi)存中的軟件,可以告訴CPU該怎么做。
用戶進程:這些是內(nèi)核管理的正在運行的程序。用戶進程共同構(gòu)成了用戶空間。內(nèi)核允許進程和服務(wù)器相互通信。
Init和rootfs – init是要運行的第一個非內(nèi)核任務(wù),并具有PID1。它將初始化使用系統(tǒng)所需的所有內(nèi)容。在生產(chǎn)嵌入式系統(tǒng)中,它也啟動了主要應(yīng)用程序。在這樣的系統(tǒng)中,它可以是BusyBox或定制的應(yīng)用程序。