電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>嵌入式開發(fā)>嵌入式Linux系統(tǒng)構(gòu)造解析

嵌入式Linux系統(tǒng)構(gòu)造解析

2017-11-04 | rar | 0.3 MB | 次下載 | 1積分

資料介紹

目前嵌入式系統(tǒng)的應(yīng)用越來越廣泛,一臺通用PC的外部設(shè)備就有5~10個嵌入式微處理器,如鍵盤、軟驅(qū)、硬盤、顯示器、打印機、掃描儀、USB接口等均是由嵌入式處理器控制的。在制造工業(yè)、過程控制、通信電視、儀器儀表、汽車船舶、航空航天、消費類產(chǎn)品均是嵌入式系統(tǒng)的應(yīng)用領(lǐng)域。嵌入式系統(tǒng)目前主要有:Windows CE、VxWorks、QNX等,它們都具較好的實時性,系統(tǒng)可靠性,任務(wù)處理隨機性等優(yōu)點。但是它們的價格普遍偏高,很多開發(fā)商承受不起。因而,Linux操作系統(tǒng)成為嵌入式操作系統(tǒng)的首選,原因如下:
  在精簡內(nèi)核在編譯內(nèi)核之前,首先要明確需要那些驅(qū)動和模塊,然后只選擇需要的驅(qū)動和模塊,例如,如果系統(tǒng)不需要網(wǎng)絡(luò)支持,則可以去掉網(wǎng)絡(luò)模塊。內(nèi)核一般是以壓縮方式存放的,在系統(tǒng)啟動時會自行解壓。內(nèi)核都是常駐內(nèi)存的,當(dāng)需要調(diào)用應(yīng)用程序時,再把需要的程序從磁盤
  調(diào)入內(nèi)存運行。
  構(gòu)建內(nèi)核常用的命令包括:
  ◆ make config:內(nèi)核配置,調(diào)用 。/scripts/Configure 按照 arch/i386/config.in 來進行配置。
  ◆ make dep:尋找依賴關(guān)系。
  ◆ make clean:清除以前構(gòu)建內(nèi)核所產(chǎn)生的所有目標(biāo)文件、模塊文件、以及一些臨時文件等。
  ◆ make rmproper:刪除所有因構(gòu)建內(nèi)核過程中產(chǎn)生的所有文件,把內(nèi)核恢復(fù)到最原始的狀態(tài)。
  ◆ make:構(gòu)核,通過各目錄的Makefile 文件將會在各個目錄下產(chǎn)生許多目標(biāo)文件。如果內(nèi)核沒有錯誤,將產(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)生臨時文件。
  ◆ make bzImage:在make 的基礎(chǔ)上產(chǎn)生壓縮比例更大的內(nèi)核映象文件。/arch/$(ARCH)/boot/bzImage 以及在 。/arch/$(ARCH)/boot/compresed/目錄下產(chǎn)生臨時文件。
  ◆ make modules:編譯模塊文件,在make config 時所配置的所有模塊將在這時編譯,形成模塊目標(biāo)文件,并把這些目標(biāo)文件存放在modules 目錄中。
  ◆ make modules_install:把上面編譯好的模塊目標(biāo)文件放置在目錄 。/lib/modules/$KERNEL_VERSION/ 中。上面的編譯內(nèi)核是在沒有改變源代碼的情況下實現(xiàn)的,如果覺得源代碼提供的功能在某些方面不能滿足要求,就要修改源代碼了。源代碼中主要有以下幾個關(guān)鍵部分:有關(guān)進程管理的task_struct 結(jié)構(gòu),這個結(jié)構(gòu)幾乎包括了與進程有關(guān)的所有文件內(nèi)容,還有任務(wù)隊列、時鐘管理和中斷管理,各種進程間的通信機制,內(nèi)存管理中各種內(nèi)存分配函數(shù)的實現(xiàn),虛擬文件系統(tǒng)。
  系統(tǒng)啟動
  引導(dǎo)啟動程序主要包括以下三個文件:bootsect.s,head.s和setup.s 這三個文件雖然都是匯編程序,但確使用了兩種語法格式。bootsect.s和setup.s 采用了近似于Intel的匯編語言語法,需要使用Intel 8086 匯編器和連接器 as86和ld86。head.s 則使用了GUN的匯編格式,并且運行在保護模式下,需要用GUN的as 進行編譯。這是一種AT&T語法的匯編語言格式。 Bootsect.s代碼時磁盤引導(dǎo)塊程序,駐留在磁盤的第一個扇區(qū)中,在PC機加電ROM-BIOS自檢后,引導(dǎo)扇區(qū)由BIOS加載到內(nèi)存0x7C00處,然后將自己移動到內(nèi)存0x90000處。該程序的主要作用是首先將setup模塊(由setup.s編譯的)從磁盤加載到內(nèi)存緊接著bootsect的后面位置(0x90200),然后利用BIOS中斷0x13取磁盤參數(shù)表中當(dāng)前啟動引導(dǎo)盤的參數(shù),接著在屏幕上顯示“Loading system.。.”字符串。再將system模塊從磁盤上加載到內(nèi)存0x10000開始的地方。隨后確定根文件系統(tǒng)的設(shè)備號。
  Setup程序的作用主要是利用ROM-BIOS中斷讀取機器系統(tǒng)數(shù)據(jù),并將這些數(shù)據(jù)保存到0x90000開始的位置(覆蓋了bootsect程序所在的地方)。然后setup程序?qū)ystem模塊從0x10000整塊向下移動到內(nèi)存絕對地址0x0000處,接下來加載中斷描述符表寄存器idtr)和全局描述表寄存器(gdtr)。開啟A20地址線,重新設(shè)置兩個中斷控制芯片8259A,將硬件中斷號重新設(shè)置為0x20-0x2f。最后設(shè)置CPU的控制寄存器CR0(也稱機器狀態(tài)字),從而進入32位保護模式進行,并跳轉(zhuǎn)到位于system模塊最前面部分的head.s程序繼續(xù)運行。 Head.s程序在被編譯后,會被連接成system模塊的最前面開始部分,即頭部(head)程序。從這里開始,內(nèi)核完全都是在保護模式下運行了。這段程序?qū)嶋H上處于內(nèi)存絕對地址0處開始的地方。這個程序功能比較單一,首先是加載各個數(shù)據(jù)段寄存器,重新設(shè)置中斷描述符表idt,共256項。然后重新設(shè)置中斷描述符表gdt,接下來檢測A20地址線是不是開啟了,再檢測PC機是否含有數(shù)學(xué)協(xié)處理器芯片,然后設(shè)置管理內(nèi)存的分頁處理機制,最后利用返回指令將預(yù)先放置在堆棧中的/init/main.c程序的入口地址彈出,去運行main()內(nèi)核初始化程序。
  設(shè)備驅(qū)動程序
  設(shè)備驅(qū)動程序在Linux內(nèi)核中扮演著特殊的角色,它們是一個個獨立的“黑盒子”,使某個特定的硬件響應(yīng)一個定義良好的內(nèi)部編程接口,同時完全隱藏了設(shè)備的工作細節(jié)。用戶操作通過一組標(biāo)準化的調(diào)用完成,而這些調(diào)用是和特定的驅(qū)動程序無關(guān)的。設(shè)備驅(qū)動程序提供的功能是同外設(shè)進行數(shù)據(jù)傳送。設(shè)備包括三種類型:字符設(shè)備、塊設(shè)備和網(wǎng)絡(luò)接口。每個模塊通常實現(xiàn)其中一種類型,相應(yīng)地,模塊可分為字符模塊(char module)、塊模塊(block module)和網(wǎng)絡(luò)模塊(network module)三種。然而這種分類方式并不是十分嚴格,程序員可以構(gòu)建一個大的模塊,在其中實現(xiàn)不同類型的設(shè)備驅(qū)動程序。三種類型的設(shè)備如下:
下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1感應(yīng)筆電路圖
  2. 0.06 MB   |  7次下載  |  免費
  3. 2美的電磁爐維修手冊大全
  4. 1.56 MB   |  5次下載  |  5 積分
  5. 3Cortex-M3/M4F指令集技術(shù)用戶手冊
  6. 2.28MB   |  3次下載  |  免費
  7. 4SMD LED選型手冊 貼片燈珠
  8. 5.47 MB   |  3次下載  |  免費
  9. 5基于PLC的拉絲機張力控制系統(tǒng)研究
  10. 0.14 MB   |  2次下載  |  5 積分
  11. 6LZC3106G高性能諧振控制器中文手冊
  12. 1.29 MB   |  1次下載  |  1 積分
  13. 7JL2233B集成電平轉(zhuǎn)換功能的LDO中文手冊
  14. 0.50 MB   |  1次下載  |  免費
  15. 8加密芯片的一種破解方法和對應(yīng)加密方案改進設(shè)計
  16. 0.29 MB   |  1次下載  |  免費

本月

  1. 1使用單片機實現(xiàn)七人表決器的程序和仿真資料免費下載
  2. 2.96 MB   |  44次下載  |  免費
  3. 2UC3842/3/4/5電源管理芯片中文手冊
  4. 1.75 MB   |  19次下載  |  免費
  5. 3華瑞昇CR216芯片數(shù)字萬用表規(guī)格書附原理圖及校正流程方法
  6. 0.74 MB   |  14次下載  |  3 積分
  7. 4DMT0660數(shù)字萬用表產(chǎn)品說明書
  8. 0.70 MB   |  13次下載  |  免費
  9. 53314A函數(shù)發(fā)生器維修手冊
  10. 16.30 MB   |  13次下載  |  免費
  11. 6TPS54202H降壓轉(zhuǎn)換器評估模塊用戶指南
  12. 1.02MB   |  8次下載  |  免費
  13. 7STM32F101x8/STM32F101xB手冊
  14. 1.69 MB   |  8次下載  |  1 積分
  15. 8感應(yīng)筆電路圖
  16. 0.06 MB   |  7次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935119次下載  |  10 積分
  3. 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計
  4. 1.48MB  |  420062次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233084次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費下載
  8. 340992  |  191367次下載  |  10 積分
  9. 5十天學(xué)會AVR單片機與C語言視頻教程 下載
  10. 158M  |  183335次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81581次下載  |  10 積分
  13. 7Keil工具MDK-Arm免費下載
  14. 0.02 MB  |  73807次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65987次下載  |  10 積分