資料介紹
目前嵌入式系統(tǒng)的應(yīng)用越來(lái)越廣泛,一臺(tái)通用PC的外部設(shè)備就有5~10個(gè)嵌入式微處理器,如鍵盤、軟驅(qū)、硬盤、顯示器、打印機(jī)、掃描儀、USB接口等均是由嵌入式處理器控制的。在制造工業(yè)、過(guò)程控制、通信電視、儀器儀表、汽車船舶、航空航天、消費(fèi)類產(chǎn)品均是嵌入式系統(tǒng)的應(yīng)用領(lǐng)域。嵌入式系統(tǒng)目前主要有:Windows CE、VxWorks、QNX等,它們都具較好的實(shí)時(shí)性,系統(tǒng)可靠性,任務(wù)處理隨機(jī)性等優(yōu)點(diǎn)。但是它們的價(jià)格普遍偏高,很多開(kāi)發(fā)商承受不起。因而,Linux操作系統(tǒng)成為嵌入式操作系統(tǒng)的首選,原因如下:
在精簡(jiǎn)內(nèi)核在編譯內(nèi)核之前,首先要明確需要那些驅(qū)動(dòng)和模塊,然后只選擇需要的驅(qū)動(dòng)和模塊,例如,如果系統(tǒng)不需要網(wǎng)絡(luò)支持,則可以去掉網(wǎng)絡(luò)模塊。內(nèi)核一般是以壓縮方式存放的,在系統(tǒng)啟動(dòng)時(shí)會(huì)自行解壓。內(nèi)核都是常駐內(nèi)存的,當(dāng)需要調(diào)用應(yīng)用程序時(shí),再把需要的程序從磁盤
調(diào)入內(nèi)存運(yùn)行。
構(gòu)建內(nèi)核常用的命令包括:
◆ make config:內(nèi)核配置,調(diào)用 。/scripts/Configure 按照 arch/i386/config.in 來(lái)進(jìn)行配置。
◆ make dep:尋找依賴關(guān)系。
◆ make clean:清除以前構(gòu)建內(nèi)核所產(chǎn)生的所有目標(biāo)文件、模塊文件、以及一些臨時(shí)文件等。
◆ make rmproper:刪除所有因構(gòu)建內(nèi)核過(guò)程中產(chǎn)生的所有文件,把內(nèi)核恢復(fù)到最原始的狀態(tài)。
◆ make:構(gòu)核,通過(guò)各目錄的Makefile 文件將會(huì)在各個(gè)目錄下產(chǎn)生許多目標(biāo)文件。如果內(nèi)核沒(méi)有錯(cuò)誤,將產(chǎn)生文件vmlinux,這就是構(gòu)建的內(nèi)核。
◆ make zImage:在make 的基礎(chǔ)上產(chǎn)生壓縮的內(nèi)核映象文件。/arch/$(ARCH)/boot/zImage 以及在 。/arch/$(ARCH)/boot/compresed/目錄下產(chǎn)生臨時(shí)文件。
◆ make bzImage:在make 的基礎(chǔ)上產(chǎn)生壓縮比例更大的內(nèi)核映象文件。/arch/$(ARCH)/boot/bzImage 以及在 。/arch/$(ARCH)/boot/compresed/目錄下產(chǎn)生臨時(shí)文件。
◆ make modules:編譯模塊文件,在make config 時(shí)所配置的所有模塊將在這時(shí)編譯,形成模塊目標(biāo)文件,并把這些目標(biāo)文件存放在modules 目錄中。
◆ make modules_install:把上面編譯好的模塊目標(biāo)文件放置在目錄 。/lib/modules/$KERNEL_VERSION/ 中。上面的編譯內(nèi)核是在沒(méi)有改變?cè)创a的情況下實(shí)現(xiàn)的,如果覺(jué)得源代碼提供的功能在某些方面不能滿足要求,就要修改源代碼了。源代碼中主要有以下幾個(gè)關(guān)鍵部分:有關(guān)進(jìn)程管理的task_struct 結(jié)構(gòu),這個(gè)結(jié)構(gòu)幾乎包括了與進(jìn)程有關(guān)的所有文件內(nèi)容,還有任務(wù)隊(duì)列、時(shí)鐘管理和中斷管理,各種進(jìn)程間的通信機(jī)制,內(nèi)存管理中各種內(nèi)存分配函數(shù)的實(shí)現(xiàn),虛擬文件系統(tǒng)。
系統(tǒng)啟動(dòng)
引導(dǎo)啟動(dòng)程序主要包括以下三個(gè)文件:bootsect.s,head.s和setup.s 這三個(gè)文件雖然都是匯編程序,但確使用了兩種語(yǔ)法格式。bootsect.s和setup.s 采用了近似于Intel的匯編語(yǔ)言語(yǔ)法,需要使用Intel 8086 匯編器和連接器 as86和ld86。head.s 則使用了GUN的匯編格式,并且運(yùn)行在保護(hù)模式下,需要用GUN的as 進(jìn)行編譯。這是一種AT&T語(yǔ)法的匯編語(yǔ)言格式。 Bootsect.s代碼時(shí)磁盤引導(dǎo)塊程序,駐留在磁盤的第一個(gè)扇區(qū)中,在PC機(jī)加電ROM-BIOS自檢后,引導(dǎo)扇區(qū)由BIOS加載到內(nèi)存0x7C00處,然后將自己移動(dòng)到內(nèi)存0x90000處。該程序的主要作用是首先將setup模塊(由setup.s編譯的)從磁盤加載到內(nèi)存緊接著bootsect的后面位置(0x90200),然后利用BIOS中斷0x13取磁盤參數(shù)表中當(dāng)前啟動(dòng)引導(dǎo)盤的參數(shù),接著在屏幕上顯示“Loading system.。.”字符串。再將system模塊從磁盤上加載到內(nèi)存0x10000開(kāi)始的地方。隨后確定根文件系統(tǒng)的設(shè)備號(hào)。
Setup程序的作用主要是利用ROM-BIOS中斷讀取機(jī)器系統(tǒng)數(shù)據(jù),并將這些數(shù)據(jù)保存到0x90000開(kāi)始的位置(覆蓋了bootsect程序所在的地方)。然后setup程序?qū)ystem模塊從0x10000整塊向下移動(dòng)到內(nèi)存絕對(duì)地址0x0000處,接下來(lái)加載中斷描述符表寄存器(idtr)和全局描述表寄存器(gdtr)。開(kāi)啟A20地址線,重新設(shè)置兩個(gè)中斷控制芯片8259A,將硬件中斷號(hào)重新設(shè)置為0x20-0x2f。最后設(shè)置CPU的控制寄存器CR0(也稱機(jī)器狀態(tài)字),從而進(jìn)入32位保護(hù)模式進(jìn)行,并跳轉(zhuǎn)到位于system模塊最前面部分的head.s程序繼續(xù)運(yùn)行。 Head.s程序在被編譯后,會(huì)被連接成system模塊的最前面開(kāi)始部分,即頭部(head)程序。從這里開(kāi)始,內(nèi)核完全都是在保護(hù)模式下運(yùn)行了。這段程序?qū)嶋H上處于內(nèi)存絕對(duì)地址0處開(kāi)始的地方。這個(gè)程序功能比較單一,首先是加載各個(gè)數(shù)據(jù)段寄存器,重新設(shè)置中斷描述符表idt,共256項(xiàng)。然后重新設(shè)置中斷描述符表gdt,接下來(lái)檢測(cè)A20地址線是不是開(kāi)啟了,再檢測(cè)PC機(jī)是否含有數(shù)學(xué)協(xié)處理器芯片,然后設(shè)置管理內(nèi)存的分頁(yè)處理機(jī)制,最后利用返回指令將預(yù)先放置在堆棧中的/init/main.c程序的入口地址彈出,去運(yùn)行main()內(nèi)核初始化程序。
設(shè)備驅(qū)動(dòng)程序
設(shè)備驅(qū)動(dòng)程序在Linux內(nèi)核中扮演著特殊的角色,它們是一個(gè)個(gè)獨(dú)立的“黑盒子”,使某個(gè)特定的硬件響應(yīng)一個(gè)定義良好的內(nèi)部編程接口,同時(shí)完全隱藏了設(shè)備的工作細(xì)節(jié)。用戶操作通過(guò)一組標(biāo)準(zhǔn)化的調(diào)用完成,而這些調(diào)用是和特定的驅(qū)動(dòng)程序無(wú)關(guān)的。設(shè)備驅(qū)動(dòng)程序提供的功能是同外設(shè)進(jìn)行數(shù)據(jù)傳送。設(shè)備包括三種類型:字符設(shè)備、塊設(shè)備和網(wǎng)絡(luò)接口。每個(gè)模塊通常實(shí)現(xiàn)其中一種類型,相應(yīng)地,模塊可分為字符模塊(char module)、塊模塊(block module)和網(wǎng)絡(luò)模塊(network module)三種。然而這種分類方式并不是十分嚴(yán)格,程序員可以構(gòu)建一個(gè)大的模塊,在其中實(shí)現(xiàn)不同類型的設(shè)備驅(qū)動(dòng)程序。三種類型的設(shè)備如下:
在精簡(jiǎn)內(nèi)核在編譯內(nèi)核之前,首先要明確需要那些驅(qū)動(dòng)和模塊,然后只選擇需要的驅(qū)動(dòng)和模塊,例如,如果系統(tǒng)不需要網(wǎng)絡(luò)支持,則可以去掉網(wǎng)絡(luò)模塊。內(nèi)核一般是以壓縮方式存放的,在系統(tǒng)啟動(dòng)時(shí)會(huì)自行解壓。內(nèi)核都是常駐內(nèi)存的,當(dāng)需要調(diào)用應(yīng)用程序時(shí),再把需要的程序從磁盤
調(diào)入內(nèi)存運(yùn)行。
構(gòu)建內(nèi)核常用的命令包括:
◆ make config:內(nèi)核配置,調(diào)用 。/scripts/Configure 按照 arch/i386/config.in 來(lái)進(jìn)行配置。
◆ make dep:尋找依賴關(guān)系。
◆ make clean:清除以前構(gòu)建內(nèi)核所產(chǎn)生的所有目標(biāo)文件、模塊文件、以及一些臨時(shí)文件等。
◆ make rmproper:刪除所有因構(gòu)建內(nèi)核過(guò)程中產(chǎn)生的所有文件,把內(nèi)核恢復(fù)到最原始的狀態(tài)。
◆ make:構(gòu)核,通過(guò)各目錄的Makefile 文件將會(huì)在各個(gè)目錄下產(chǎn)生許多目標(biāo)文件。如果內(nèi)核沒(méi)有錯(cuò)誤,將產(chǎn)生文件vmlinux,這就是構(gòu)建的內(nèi)核。
◆ make zImage:在make 的基礎(chǔ)上產(chǎn)生壓縮的內(nèi)核映象文件。/arch/$(ARCH)/boot/zImage 以及在 。/arch/$(ARCH)/boot/compresed/目錄下產(chǎn)生臨時(shí)文件。
◆ make bzImage:在make 的基礎(chǔ)上產(chǎn)生壓縮比例更大的內(nèi)核映象文件。/arch/$(ARCH)/boot/bzImage 以及在 。/arch/$(ARCH)/boot/compresed/目錄下產(chǎn)生臨時(shí)文件。
◆ make modules:編譯模塊文件,在make config 時(shí)所配置的所有模塊將在這時(shí)編譯,形成模塊目標(biāo)文件,并把這些目標(biāo)文件存放在modules 目錄中。
◆ make modules_install:把上面編譯好的模塊目標(biāo)文件放置在目錄 。/lib/modules/$KERNEL_VERSION/ 中。上面的編譯內(nèi)核是在沒(méi)有改變?cè)创a的情況下實(shí)現(xiàn)的,如果覺(jué)得源代碼提供的功能在某些方面不能滿足要求,就要修改源代碼了。源代碼中主要有以下幾個(gè)關(guān)鍵部分:有關(guān)進(jìn)程管理的task_struct 結(jié)構(gòu),這個(gè)結(jié)構(gòu)幾乎包括了與進(jìn)程有關(guān)的所有文件內(nèi)容,還有任務(wù)隊(duì)列、時(shí)鐘管理和中斷管理,各種進(jìn)程間的通信機(jī)制,內(nèi)存管理中各種內(nèi)存分配函數(shù)的實(shí)現(xiàn),虛擬文件系統(tǒng)。
系統(tǒng)啟動(dòng)
引導(dǎo)啟動(dòng)程序主要包括以下三個(gè)文件:bootsect.s,head.s和setup.s 這三個(gè)文件雖然都是匯編程序,但確使用了兩種語(yǔ)法格式。bootsect.s和setup.s 采用了近似于Intel的匯編語(yǔ)言語(yǔ)法,需要使用Intel 8086 匯編器和連接器 as86和ld86。head.s 則使用了GUN的匯編格式,并且運(yùn)行在保護(hù)模式下,需要用GUN的as 進(jìn)行編譯。這是一種AT&T語(yǔ)法的匯編語(yǔ)言格式。 Bootsect.s代碼時(shí)磁盤引導(dǎo)塊程序,駐留在磁盤的第一個(gè)扇區(qū)中,在PC機(jī)加電ROM-BIOS自檢后,引導(dǎo)扇區(qū)由BIOS加載到內(nèi)存0x7C00處,然后將自己移動(dòng)到內(nèi)存0x90000處。該程序的主要作用是首先將setup模塊(由setup.s編譯的)從磁盤加載到內(nèi)存緊接著bootsect的后面位置(0x90200),然后利用BIOS中斷0x13取磁盤參數(shù)表中當(dāng)前啟動(dòng)引導(dǎo)盤的參數(shù),接著在屏幕上顯示“Loading system.。.”字符串。再將system模塊從磁盤上加載到內(nèi)存0x10000開(kāi)始的地方。隨后確定根文件系統(tǒng)的設(shè)備號(hào)。
Setup程序的作用主要是利用ROM-BIOS中斷讀取機(jī)器系統(tǒng)數(shù)據(jù),并將這些數(shù)據(jù)保存到0x90000開(kāi)始的位置(覆蓋了bootsect程序所在的地方)。然后setup程序?qū)ystem模塊從0x10000整塊向下移動(dòng)到內(nèi)存絕對(duì)地址0x0000處,接下來(lái)加載中斷描述符表寄存器(idtr)和全局描述表寄存器(gdtr)。開(kāi)啟A20地址線,重新設(shè)置兩個(gè)中斷控制芯片8259A,將硬件中斷號(hào)重新設(shè)置為0x20-0x2f。最后設(shè)置CPU的控制寄存器CR0(也稱機(jī)器狀態(tài)字),從而進(jìn)入32位保護(hù)模式進(jìn)行,并跳轉(zhuǎn)到位于system模塊最前面部分的head.s程序繼續(xù)運(yùn)行。 Head.s程序在被編譯后,會(huì)被連接成system模塊的最前面開(kāi)始部分,即頭部(head)程序。從這里開(kāi)始,內(nèi)核完全都是在保護(hù)模式下運(yùn)行了。這段程序?qū)嶋H上處于內(nèi)存絕對(duì)地址0處開(kāi)始的地方。這個(gè)程序功能比較單一,首先是加載各個(gè)數(shù)據(jù)段寄存器,重新設(shè)置中斷描述符表idt,共256項(xiàng)。然后重新設(shè)置中斷描述符表gdt,接下來(lái)檢測(cè)A20地址線是不是開(kāi)啟了,再檢測(cè)PC機(jī)是否含有數(shù)學(xué)協(xié)處理器芯片,然后設(shè)置管理內(nèi)存的分頁(yè)處理機(jī)制,最后利用返回指令將預(yù)先放置在堆棧中的/init/main.c程序的入口地址彈出,去運(yùn)行main()內(nèi)核初始化程序。
設(shè)備驅(qū)動(dòng)程序
設(shè)備驅(qū)動(dòng)程序在Linux內(nèi)核中扮演著特殊的角色,它們是一個(gè)個(gè)獨(dú)立的“黑盒子”,使某個(gè)特定的硬件響應(yīng)一個(gè)定義良好的內(nèi)部編程接口,同時(shí)完全隱藏了設(shè)備的工作細(xì)節(jié)。用戶操作通過(guò)一組標(biāo)準(zhǔn)化的調(diào)用完成,而這些調(diào)用是和特定的驅(qū)動(dòng)程序無(wú)關(guān)的。設(shè)備驅(qū)動(dòng)程序提供的功能是同外設(shè)進(jìn)行數(shù)據(jù)傳送。設(shè)備包括三種類型:字符設(shè)備、塊設(shè)備和網(wǎng)絡(luò)接口。每個(gè)模塊通常實(shí)現(xiàn)其中一種類型,相應(yīng)地,模塊可分為字符模塊(char module)、塊模塊(block module)和網(wǎng)絡(luò)模塊(network module)三種。然而這種分類方式并不是十分嚴(yán)格,程序員可以構(gòu)建一個(gè)大的模塊,在其中實(shí)現(xiàn)不同類型的設(shè)備驅(qū)動(dòng)程序。三種類型的設(shè)備如下:
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- Linux嵌入式系統(tǒng)開(kāi)發(fā),嵌入式Linux開(kāi)發(fā)教程
- 嵌入式Linux專題(一)——嵌入式Linux系統(tǒng)構(gòu)成及啟動(dòng)流程
- 【嵌入式Linux(基礎(chǔ)篇)】從標(biāo)準(zhǔn)Linux到嵌入式Linux + 嵌入式Linux知識(shí)架構(gòu)
- 嵌入式linux編譯 ko,嵌入式linux:編譯linux驅(qū)動(dòng)模塊
- 【嵌入式】構(gòu)建嵌入式Linux系統(tǒng)(uboot、內(nèi)核、文件系統(tǒng))
- 嵌入式LINUX系統(tǒng)內(nèi)核和內(nèi)核模塊調(diào)試
- 基于嵌入式Linux視頻監(jiān)控系統(tǒng)畢業(yè)論文
- 嵌入式Linux與物聯(lián)網(wǎng)軟件開(kāi)發(fā)C語(yǔ)言內(nèi)核深度解析書(shū)籍的介紹
- 嵌入式Linux開(kāi)發(fā)教程之嵌入式系統(tǒng)介紹資料免費(fèi)下載
- 如何使用ARM進(jìn)行嵌入式linux的系統(tǒng)設(shè)計(jì)
- 嵌入式Linux開(kāi)發(fā)教程之嵌入式Linux應(yīng)用開(kāi)發(fā)手冊(cè)資料免費(fèi)下載 12次下載
- 精通嵌入式Linux編程—構(gòu)造自己的GUI環(huán)境 16次下載
- 構(gòu)造嵌入式Linux的文件系統(tǒng)
- 嵌入式LINUX系統(tǒng)
- 嵌入式Linux系統(tǒng)開(kāi)發(fā)基礎(chǔ)
- 簡(jiǎn)化SBC的嵌入式Linux軟件開(kāi)發(fā) 998次閱讀
- 嵌入式系統(tǒng)的全面解析 3146次閱讀
- 基于嵌入式Linux內(nèi)核的ARM9運(yùn)行實(shí)現(xiàn)方式介紹 1475次閱讀
- 基于ARM的嵌入式操作系統(tǒng)該如何設(shè)計(jì) 1480次閱讀
- 基于Yocto Project的定制嵌入式Linux產(chǎn)品設(shè)計(jì)淺析 1w次閱讀
- 關(guān)于嵌入式系統(tǒng)的特點(diǎn)和Linux內(nèi)核的實(shí)時(shí)應(yīng)用分析 1037次閱讀
- 關(guān)于Linux嵌入式操作系統(tǒng)的優(yōu)勢(shì)特征詳解 5521次閱讀
- 學(xué)習(xí)嵌入式linux系統(tǒng)開(kāi)發(fā),文件類型一定要分清 809次閱讀
- 嵌入式Linux系統(tǒng)的7個(gè)重要模塊 6605次閱讀
- 基于嵌入式Linux的無(wú)線視頻監(jiān)控系統(tǒng)設(shè)計(jì) 3004次閱讀
- 如何成為嵌入式高手的學(xué)習(xí)路線解析 2.3w次閱讀
- 嵌入式Linux的學(xué)習(xí)方法解析 3091次閱讀
- 基于FPGA的嵌入式Linux操作系統(tǒng)解決方案 6026次閱讀
- 基于嵌入式Linux的家居監(jiān)控系統(tǒng)設(shè)計(jì) 2023次閱讀
- 基于Linux的嵌入式實(shí)時(shí)操作系統(tǒng)的研究 2298次閱讀
下載排行
本周
- 1TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 2開(kāi)關(guān)電源基礎(chǔ)知識(shí)
- 5.73 MB | 6次下載 | 免費(fèi)
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設(shè)計(jì)
- 0.60 MB | 3次下載 | 免費(fèi)
- 5基于FPGA的光纖通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 0.61 MB | 2次下載 | 免費(fèi)
- 6基于FPGA的C8051F單片機(jī)開(kāi)發(fā)板設(shè)計(jì)
- 0.70 MB | 2次下載 | 免費(fèi)
- 751單片機(jī)窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費(fèi)
- 8基于51單片機(jī)的RGB調(diào)色燈程序仿真
- 0.86 MB | 2次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33564次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21548次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書(shū))
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
- 0.00 MB | 6653次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537796次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191185次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183278次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論
查看更多