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