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