STM32MP157 Linux系統(tǒng)移植開(kāi)發(fā)篇6:Linux內(nèi)核簡(jiǎn)介
本文章為《STM32MP157 Linux系統(tǒng)移植開(kāi)發(fā)篇》系列中的一篇,筆者使用的開(kāi)發(fā)平臺(tái)為華清遠(yuǎn)見(jiàn)FS-MP1A開(kāi)發(fā)板(STM32MP157開(kāi)發(fā)板)。stm32mp157是ARM雙核,2個(gè)A7核,1個(gè)M4核,A7核上可以跑Linux操作系統(tǒng),M4核上可以跑FreeRTOS、RT-Thread等實(shí)時(shí)操作系統(tǒng),STM32MP157開(kāi)發(fā)板所以既可以學(xué)嵌入式linux,也可以學(xué)stm32單片機(jī)。
針對(duì)FS-MP1A開(kāi)發(fā)板,除了Linux系統(tǒng)移植篇外,還包括其他多系列教程,包括Cortex-A7開(kāi)發(fā)篇、Cortex-M4開(kāi)發(fā)篇、擴(kuò)展板驅(qū)動(dòng)移植篇、Linux應(yīng)用開(kāi)發(fā)篇、FreeRTOS系統(tǒng)移植篇、Linux驅(qū)動(dòng)開(kāi)發(fā)篇、硬件設(shè)計(jì)篇、人工智能機(jī)器視覺(jué)篇、Qt應(yīng)用編程篇、Qt綜合項(xiàng)目實(shí)戰(zhàn)篇等。歡迎關(guān)注,更多stm32mp157開(kāi)發(fā)教程及視頻,可加技術(shù)交流Q群459754978,感謝關(guān)注。
關(guān)于FS-MP1A開(kāi)發(fā)板:
手機(jī)淘寶分享碼:復(fù)制本行文字打開(kāi)手淘?T4FPXn3YYJ2?
鏈接:https://item.taobao.com/item.htm?id=622457259672
Linux內(nèi)核簡(jiǎn)介
Linux內(nèi)核是Linux操作系統(tǒng)的核心,也是整個(gè)Linux功能體現(xiàn)。它是用C語(yǔ)言編寫,符合POSIX標(biāo)準(zhǔn)。Linux最早是由芬蘭黑客Linus Torvalds為嘗試在英特爾X86架構(gòu)上提供自由免費(fèi)的類Unix操作系統(tǒng)而開(kāi)發(fā)的。該計(jì)劃開(kāi)始于1991年,這里有一份Linus Torvalds當(dāng)時(shí)在Usenet新聞組comp.os.minix所登載的帖子,這份著名的帖子標(biāo)志著Linux計(jì)劃的正式開(kāi)始。在計(jì)劃的早期有一些Minix黑客提供了協(xié)助,而今天全球無(wú)數(shù)程序員正在為該計(jì)劃無(wú)償提供幫助。
今天Linux是一個(gè)一體化內(nèi)核(Monolithic Kernel)系統(tǒng)。設(shè)備驅(qū)動(dòng)程序可以完全訪問(wèn)硬件。Linux內(nèi)的設(shè)備驅(qū)動(dòng)程序可以方便地以模塊化(Modularize)的形式設(shè)置,并在系統(tǒng)運(yùn)行期間可直接裝載或卸載。
Linux內(nèi)核主要功能包括:進(jìn)程管理、內(nèi)存管理、文件管理、設(shè)備管理、網(wǎng)絡(luò)管理等。
進(jìn)程管理:進(jìn)程是在計(jì)算機(jī)系統(tǒng)中資源分配的最小單元。內(nèi)核負(fù)責(zé)創(chuàng)建和銷毀進(jìn)程, 而且由調(diào)度程序采取合適的調(diào)度策略,實(shí)現(xiàn)進(jìn)程之間的合理且實(shí)時(shí)的處理器資源的共享。從而內(nèi)核的進(jìn)程管理活動(dòng)實(shí)現(xiàn)了多個(gè)進(jìn)程在一個(gè)或多個(gè)處理器之上的抽象。內(nèi)核還負(fù)責(zé)實(shí)現(xiàn)不同進(jìn)程之間、進(jìn)程和其他部件之間的通信。
內(nèi)存管理:內(nèi)存是計(jì)算機(jī)系統(tǒng)中最主要的資源。內(nèi)核使得多個(gè)進(jìn)程安全而合理地共享內(nèi)存資源,為每個(gè)進(jìn)程在有限的物理資源上建立一個(gè)虛擬地址空間。內(nèi)存管理部分代碼可以分為硬件無(wú)關(guān)部分和硬件有關(guān)部分:硬件無(wú)關(guān)部分實(shí)現(xiàn)進(jìn)程和內(nèi)存之間的地址映射等功能;硬件有關(guān)部分實(shí)現(xiàn)不同體系結(jié)構(gòu)上的內(nèi)存管理相關(guān)功能并為內(nèi)存管理提供硬件無(wú)關(guān)的虛擬接口。
文件管理:在Linux系統(tǒng)中的任何一個(gè)概念幾乎都可以看作一個(gè)文件。內(nèi)核在非結(jié)構(gòu)化的硬件之上建立了一個(gè)結(jié)構(gòu)化的虛擬文件系統(tǒng),隱藏了各種硬件的具體細(xì)節(jié)。從而在整個(gè)系統(tǒng)的幾乎所有機(jī)制中使用文件的抽象。Linux在不同物理介質(zhì)或虛擬結(jié)構(gòu)上支持?jǐn)?shù)十種文件系統(tǒng)。例如, Linux支持磁盤的標(biāo)準(zhǔn)文件系統(tǒng)ext3和虛擬的特殊文件系統(tǒng)。
設(shè)備管理:Linux系統(tǒng)中幾乎每個(gè)系統(tǒng)操作最終都映射到一個(gè)或多個(gè)物理設(shè)備上。 除了處理器, 內(nèi)存等少數(shù)的硬件資源之外, 任何一種設(shè)備控制操作都由設(shè)備特定的驅(qū)動(dòng)代碼來(lái)進(jìn)行。內(nèi)核中必須提供系統(tǒng)中可能要操作的每一種外設(shè)的驅(qū)動(dòng)。
網(wǎng)絡(luò)管理:內(nèi)核支持各種網(wǎng)絡(luò)標(biāo)準(zhǔn)協(xié)議和網(wǎng)絡(luò)設(shè)備。網(wǎng)絡(luò)管理部分可分為網(wǎng)絡(luò)協(xié)議棧和網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序。網(wǎng)絡(luò)協(xié)議棧負(fù)責(zé)實(shí)現(xiàn)每種可能的網(wǎng)絡(luò)傳輸協(xié)議(TCP/IP協(xié)議等);網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序負(fù)責(zé)與各種網(wǎng)絡(luò)硬件設(shè)備或虛擬設(shè)備進(jìn)行通訊。