stm32嵌入式linux系統(tǒng)_嵌入式Linux系統(tǒng)的構(gòu)成
本文關(guān)鍵詞:嵌入式Linux系統(tǒng),由筆耕文化傳播整理發(fā)布。
> Linux > 正文 嵌入式Linux系統(tǒng)的構(gòu)成 2012-12-13 來(lái)源:熊堯的專欄 我要投稿
嵌入式Linux系統(tǒng)的構(gòu)成
一個(gè)典型的嵌入式Linux系統(tǒng)按照存儲(chǔ)空間的劃分通常包括引導(dǎo)區(qū),內(nèi)核區(qū)與文件系統(tǒng)區(qū),引導(dǎo)區(qū)存放Boot Loader與系統(tǒng)參數(shù),內(nèi)核區(qū)存放特定嵌入式平臺(tái)的定制Linux內(nèi)核
文件系統(tǒng)包括根文件系統(tǒng)和建立與Flash內(nèi)存設(shè)備之上的文件系統(tǒng)。圖形界面系統(tǒng)和用戶應(yīng)用程序就放在文件系統(tǒng)區(qū)中
1:Boot Loader占用的空間一般都比較小,它后面緊挨著一個(gè)啟動(dòng)參數(shù)區(qū),用來(lái)保存Linux內(nèi)核啟動(dòng)參數(shù)和用戶啟動(dòng)配置。
2:Boot Loader程序是嵌入式系統(tǒng)的引導(dǎo)加載程序,是系統(tǒng)加電后運(yùn)行的第一段軟件代碼。Boot Loader程序的主要任務(wù)就是初始化硬件設(shè)備,建立內(nèi)存空間的映射圖,從而將系統(tǒng)的
軟硬件環(huán)境帶到一個(gè)合適的環(huán)境中,Boot Loader程序最重要的任務(wù)就是啟動(dòng)Linux內(nèi)核
3:文件系統(tǒng)是嵌入式Linux系統(tǒng)占用空間最大的部分,它通常占據(jù)了Boot Loader和內(nèi)核之外的所有空間,Linux啟動(dòng)完畢之后會(huì)加載一個(gè)根文件系統(tǒng),根文件系統(tǒng)包含了系統(tǒng)必備
配置信息,庫(kù)函數(shù)和shell解釋器以及核心目錄。其他的文件系統(tǒng)則可以掛載在根文件系統(tǒng)下面
‘
Boot Loader 一般通過(guò)JTAG接口和仿真器燒寫到存儲(chǔ)器,而內(nèi)核和文件系統(tǒng)則可以通過(guò)串口和網(wǎng)口燒寫到存儲(chǔ)器。
Linux內(nèi)核主要由五個(gè)部分組成:進(jìn)程調(diào)度,內(nèi)存管理,文件系統(tǒng),網(wǎng)絡(luò)子系統(tǒng),以及設(shè)備管理。
內(nèi)存管理:(Memory Management) Linux的內(nèi)存管理支持虛擬內(nèi)存,采取的是分頁(yè)機(jī)制,內(nèi)存管理子系統(tǒng)允許多個(gè)進(jìn)程安全的共享主內(nèi)存區(qū)域。通過(guò)內(nèi)存管理,Linux可以支
持超過(guò)實(shí)際內(nèi)存大小的內(nèi)存地址,磁盤可以當(dāng)作內(nèi)存,磁盤與內(nèi)存之間可以相互交換。
設(shè)備管理:Linux支持字符設(shè)備,塊設(shè)備,以及網(wǎng)絡(luò)設(shè)備三類硬件設(shè)備,并提供與平臺(tái)設(shè)備的概念與sys文件系統(tǒng)來(lái)管理各種設(shè)備,linux的設(shè)備驅(qū)動(dòng)可以編譯進(jìn)入內(nèi)核,在系統(tǒng)啟
動(dòng)時(shí)加載,也可以作為模塊形式動(dòng)態(tài)加載
Linux的代碼結(jié)構(gòu)
linux 2.6的內(nèi)核代碼非常龐大,其中設(shè)備驅(qū)動(dòng)程序約占一半
arch 硬件平臺(tái)相關(guān)代碼
block 塊設(shè)備核心代碼
crypto 加密函數(shù)庫(kù)
documentation 有關(guān)內(nèi)核各個(gè)部分通用解釋和注釋的文本文件
drivers 設(shè)備驅(qū)動(dòng)相關(guān)代碼
fs 文件系統(tǒng)相關(guān)代碼
include 內(nèi)核頭文件
init 內(nèi)核初始化代碼
ipc 系統(tǒng)進(jìn)程間的通信
kernel 內(nèi)核核心部分:進(jìn)程調(diào)度,中斷處理,信號(hào)處理,模塊
lib 通用內(nèi)核函數(shù)
mm 內(nèi)存管理
net 網(wǎng)絡(luò)通信協(xié)議代碼
samples 內(nèi)核例子
security 系統(tǒng)安全相關(guān)代碼
sound 音頻體系代碼
編譯內(nèi)核的幾個(gè)命令
1: make menuconfig //配置內(nèi)核命令
2: make //編譯生成目標(biāo)文件,包括可加載模塊
3:make zImage //編譯生成內(nèi)核
4:make modules_install //安裝模塊
為什么要配置內(nèi)核呢?
在編譯之前是肯定要配置內(nèi)核的,make menuconfig,,生成默認(rèn)配置文件.config,這個(gè)文件是設(shè)置cpu體系,以及很多
驅(qū)動(dòng)選項(xiàng)的,沒(méi)有配置這個(gè),是不能進(jìn)行編譯的。新下載的內(nèi)核都是沒(méi)有默認(rèn)的.config,這需要你找到一個(gè)默認(rèn)的config文件
比如 arch/arm/configs/ 下是 arm cpu 很多的默認(rèn)配置,當(dāng)然你也可以把你以前的 config 文件拷貝到新內(nèi)核目錄下。
.config 是配置編譯內(nèi)核的最初步驟
為何要重新編譯內(nèi)核?
新的內(nèi)核修訂了舊內(nèi)核的bug,并增加了許多新的特性。如果用戶想要使用這些新特性,或想根據(jù)自己的系統(tǒng)度身定制一個(gè)更高效,更穩(wěn)定的內(nèi)核,就需要重新編譯Linux內(nèi)核。
通常,更新的內(nèi)核會(huì)支持更多的硬件,具備更好的進(jìn)程管理能力,運(yùn)行速度更快、 更穩(wěn)定,并且一般會(huì)修復(fù)老版本中發(fā)現(xiàn)的許多漏洞等,經(jīng)常性地選擇升級(jí)更新的系統(tǒng)內(nèi)核是Linux使用者的必要操作內(nèi)容。
為了正確的合理地設(shè)置內(nèi)核編譯配置選項(xiàng),從而只編譯系統(tǒng)需要的功能的代碼,一般主要有下面四個(gè)考慮:
1:自己定制編譯的內(nèi)核運(yùn)行更快(具有更少的代碼)
2:系統(tǒng)將擁有更多的內(nèi)存(內(nèi)核部分將不會(huì)被交換到虛擬內(nèi)存中)
3:不需要的功能編譯進(jìn)入內(nèi)核可能會(huì)增加被系統(tǒng)攻擊者利用的漏洞
4:將某種功能編譯為模塊方式編譯進(jìn)被內(nèi)核的方式速度要慢一些
內(nèi)核Makefile
Linux2.6內(nèi)核的Makefile分為4個(gè)組成部分
1:頂層Makefile:在內(nèi)核代碼最頂層。頂層的Makefile文件讀取.config文件的內(nèi)容,并總體上負(fù)責(zé)build內(nèi)核和模塊
2:config配置文件:內(nèi)核的配置文件,一般在/arch/*/configs下
3:Makefile 的通用規(guī)則:在/scripts/目錄下面的Makefile.*
4:kbuild Makefile 文件:在各級(jí)目錄下面
(1):目標(biāo)定義,就是用來(lái)定義那些內(nèi)容要作為模塊編譯,那些要編譯鏈接進(jìn)入內(nèi)核
obj-y +=foo.o 它表示由foo.c或foo.s文件編譯得到foo.o并鏈接進(jìn)內(nèi)核,如果使用$(obj-m),則表示對(duì)象文件編譯成可加載的內(nèi)核模塊~
好了,這些都是一些基礎(chǔ)性的東西,但是很重要啊,敲了這么長(zhǎng)時(shí)間啦~歇一下吧,希望對(duì)你有所幫助。
七款嵌入式Linux操作系統(tǒng)簡(jiǎn)介
學(xué)習(xí)嵌入式Linux系統(tǒng)的筆記和體會(huì)
VDC調(diào)查顯示Linux繼續(xù)領(lǐng)跑嵌入式操作系
新手學(xué)堂:嵌入式Linux系統(tǒng)下時(shí)間的實(shí)
在嵌入式Linux環(huán)境下制作QPF字庫(kù)的方法
嵌入式中l(wèi)inux+android與wince的區(qū)別
linux下嵌入式交叉安裝交叉編譯器步驟
嵌入式linux的tftp安裝配置及tftp命令
嵌入式Linux系統(tǒng)內(nèi)核啟動(dòng)流程
嵌入式系統(tǒng)燒寫uboot/bootloader/kern
圖文推薦
文章 推薦
· Linux無(wú)線網(wǎng)絡(luò)架構(gòu) · Linux進(jìn)程調(diào)度原理 · CentOS 6.4 yum安裝 LAMP環(huán)境 · 《Linux多線程服務(wù)端編程》—muduo網(wǎng)絡(luò) · 25 個(gè)你可能不知道的 Linux 真相 · Linux信號(hào)處理 · 《Linux多線程服務(wù)端編程》—線程同步 · Sphinx 在 Linux 下的安裝與基本配置 · · · · · · · ·
熱門新聞
· CentOS7 搭建LVS+keepalived負(fù)載均衡 · Linux中的計(jì)劃任務(wù)—Crontab · Linux運(yùn)維筆記----RHEL7.1之yum源配置 · HDFS inotify:Linux inotify機(jī)制在 · 一個(gè)linux下的epoll事件模型實(shí)例 · linux系統(tǒng)命令筆記 · 自寫聊天室_LinuxC實(shí)現(xiàn)(4)——項(xiàng)目文檔 · Linux最常用的20個(gè)命令
本文關(guān)鍵詞:嵌入式Linux系統(tǒng),由筆耕文化傳播整理發(fā)布。
本文編號(hào):116424
本文鏈接:http://sikaile.net/wenshubaike/xxkj/116424.html