




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、嵌入式應(yīng)用程序設(shè)計嵌入式應(yīng)用程序設(shè)計第四章 嵌入式Linux開發(fā)環(huán)境的搭建 .2 4.1 搭建嵌入式Linux交叉開發(fā)環(huán)境4.2 Bootloader4.3 Linux內(nèi)核與移植4.4 嵌入式文件系統(tǒng)的構(gòu)建4.5 小結(jié)4.6 思考與練習(xí)本章課程:本章課程:.34.1 構(gòu)建嵌入式Linux開發(fā)環(huán)境構(gòu)建一個Linux系統(tǒng),需仔細考慮下面幾點。(1)選擇嵌入式Linux發(fā)行版。(2)熟悉開發(fā)環(huán)境和工具。(3)熟悉Linux內(nèi)核。(4)熟悉目標板引導(dǎo)方式。(5)熟悉Linux根文件系統(tǒng)。(6)理解Linux內(nèi)存模型。(7)理解Linux調(diào)度機制和進程線程編程。.4 4.1.1 嵌入式交叉編譯環(huán)境搭建交
2、叉編譯環(huán)境的意義如何搭建嵌入式交叉編譯環(huán)境嵌入式交叉編譯環(huán)境包括哪些內(nèi)容.54.1.2 主機交叉開發(fā)環(huán)境的配置 配置控制臺程序Windows操作系統(tǒng)中有超級終端(HyperTerminal)工具;Linux/Unix操作系統(tǒng)有minicom(使用“minicom”命令啟動該軟件)等工具 超級終端配置minicom配置.64.1.2 主機交叉開發(fā)環(huán)境的配置 配置TFTP服務(wù) tftp是一個傳輸文件的簡單協(xié)議,它基于UDP協(xié)議而實現(xiàn)。此協(xié)議設(shè)計的時候是進行小文件傳輸?shù)?tftp傳輸中有3種模式。netascii:8位的ASCII碼形式。octet:8位源數(shù)據(jù)類型。mail:這種模式已經(jīng)不再支持,它
3、將返回的數(shù)據(jù)直接返回給用戶,而不是保存為文件。.7 4.1.2 主機交叉開發(fā)環(huán)境的配置Linux下TFTP服務(wù)配置 tftp是一個傳輸文件的簡單協(xié)議,它基于UDP協(xié)議而實現(xiàn)。此協(xié)議設(shè)計的時候是進行小文件傳輸?shù)?vim /etc/xinetd.d/tftpservice tftp socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /tftpboot disable = no per_source = 11 cps = 100 2 flags
4、= IPv 主機交叉開發(fā)環(huán)境的配置 啟動TFTP服務(wù)$ /etc/init.d/xinetd start 關(guān)閉TFTP服務(wù) $ /etc/init.d/xinetd stop重啟TFTP服務(wù) $ /etc/init.d/xinetd restart查看TFTP狀態(tài)$ netstat au | grep tftpProto Recv-Q Send-Q Local Address Foreign Address Stateudp 0 0 *:tftp *:*.9 4.1.2 主機交叉開發(fā)環(huán)境的配置Windows下TFTP服務(wù)配置在Windows下配置tftp服務(wù)需要安裝使用tftp
5、服務(wù)器軟件,常見的可使用tftpd32,網(wǎng)上有很多下載該軟件的地方,讀者可以自行下載。要注意的是,該軟件是tftp的服務(wù)器端,而目標板上則是tftp的客戶端 .10 4.1.2 主機交叉開發(fā)環(huán)境的配置NFS文件系統(tǒng)NFS為Network FileSystem的簡稱,最早是由Sun公司提出發(fā)展起來的,其目的就是讓不同的機器、不同的操作系統(tǒng)之間可以彼此共享文件。NFS的使用分為服務(wù)器端和客戶端,其中服務(wù)器端提供要共享的文件,而客戶端則通過掛載“mount”這一動作來實現(xiàn)對共享文件的訪問操作。在嵌入式開發(fā)中,通常NFS服務(wù)端在宿主機上運行,而客戶端在目標板上運行。NFS服務(wù)器端是通過讀入它的配置文件
6、“/etc/ exports”來決定所共享的文件目錄的. .114.1.2 主機交叉開發(fā)環(huán)境的配置 NFS配置配置文件:/etc/exports配置文件每一行格式: 共享的目錄 客戶端主機名稱或IP(參數(shù)1,參數(shù)2)NFS配置文件常用參數(shù):NFS配置文件舉例:cat /etc/exports/home/david/project *(rw,sync,no_root_squash).12 4.1.2 主機交叉開發(fā)環(huán)境的配置NFS服務(wù)啟動設(shè)置NFS服務(wù)在每次系統(tǒng)引導(dǎo)時自動開啟:# /sbin/chkconfig nfs on (在Ubuntu中應(yīng)該輸入 /sbin/chkconfig nfs-ke
7、rnel-server on) .13 Bootloader是什么? Bootloader是在操作系統(tǒng)運行之前執(zhí)行的一段小程序。通過這段小程序,我們可以初始化硬件設(shè)備、建立內(nèi)存空間的映像表,從而建立適當?shù)南到y(tǒng)軟硬件環(huán)境,為最終調(diào)用操作系統(tǒng)內(nèi)核做好準備。 4.2 Bootloader.14 4.2.1 Bootloader的種類 .15 4.2.2 U-Boot的編譯和使用什么是U-Boot 最早,DENX軟件工程中心的Wolfgang Denk基于8xxrom的源碼創(chuàng)建了PPCBOOT工程,并且不斷添加處理器的支持。后來,Sysgo Gmbh把PPCBOOT移植到ARM平臺上,創(chuàng)建了ARMBO
8、OT工程。然后以PPCBOOT工程和ARMBOOT工程為基礎(chǔ),創(chuàng)建了U-Boot工程。 .16 4.2.2 U-Boot的編譯和使用U-Boot編譯 U-Boot目錄可以分為三類:與處理器體系結(jié)構(gòu)或者開發(fā)板硬件直接相關(guān)。一些通用的函數(shù)或驅(qū)動。U-Boot的應(yīng)用程序、工具或者文件。.17 4.2.2 U-Boot的編譯和使用U-Boot目錄結(jié)構(gòu).18 4.2.2 U-Boot的編譯和使用 U-Boot的源碼是通過gcc和Makefile組織編譯的。頂層目錄下的Makefile首先可以設(shè)置開發(fā)板的定義,然后遞歸地調(diào)用各級子目錄下的Makefile,最后把編譯過的程序鏈接成U-Boot映像。頂層目錄
9、下的 Makefile它負責(zé)u-boot整體配置編譯。每一種開發(fā)板在Makefile都需要有板子配置的定義。配置u-boot: make smdk2410_config編譯: make.19 4.2.2 U-Boot的編譯和使用U-Boot生成鏡像文件.204.2.2 U-Boot的編譯和使用U-Boot工具.214.2.2 U-Boot的編譯和使用U-Boot命令介紹命令介紹bootm命令命令 bootm命令可以引導(dǎo)啟動存儲在內(nèi)存中的程序映像。這些內(nèi)存包括RAM和可以永久保存的Flash。第1個參數(shù)addr是程序映像的地址,這個程序映像必須轉(zhuǎn)換成U-Boot的格式。第2個參數(shù)對于引導(dǎo)Linu
10、x內(nèi)核有用,通常作為U-Boot格式的RAMDISK映像存儲地址;也可以是傳遞給Linux內(nèi)核的參數(shù)(默認情況下傳遞bootargs環(huán)境變量給內(nèi)核)。.224.2.2 U-Boot的編譯和使用U-Boot命令介紹命令介紹bootp命令命令bootp命令通過bootp請求,要求DHCP服務(wù)器分配IP地址,然后通過TFTP協(xié)議下載指定的文件到內(nèi)存。第1個參數(shù)是下載文件存放的內(nèi)存地址。第2個參數(shù)是要下載的文件名稱,這個文件應(yīng)該在開發(fā)主機上準備好。.234.2.2 U-Boot的編譯和使用U-Boot命令介紹命令介紹cmp命令命令cmp命令可以比較兩塊內(nèi)存中的內(nèi)容。.b以字節(jié)為單位;.w以字為單位;.
11、l以長字為單位。注意:cmp.b中間不能保留空格,需要連續(xù)輸入命令。第1個參數(shù)addr1是第一塊內(nèi)存的起始地址。第2個參數(shù)addr2是第二塊內(nèi)存的起始地址。第3個參數(shù)count是要比較的數(shù)目,單位是字節(jié)、字或者長字。.244.2.2 U-Boot的編譯和使用U-Boot命令介紹命令介紹cp命令命令cp命令可以在內(nèi)存中復(fù)制數(shù)據(jù)塊,包括對Flash的讀寫操作。第1個參數(shù)source是要復(fù)制的數(shù)據(jù)塊起始地址。第2個參數(shù)target是數(shù)據(jù)塊要復(fù)制到的地址。這個地址如果在Flash中,那么會直接調(diào)用寫Flash的函數(shù)操作。所以U-Boot寫Flash就使用這個命令,當然需要先把對應(yīng)Flash區(qū)域擦干凈。
12、第3個參數(shù)count是要復(fù)制的數(shù)目,根據(jù)cp.b、cp.w、cp.l分別以字節(jié)、字、長字為單位。 .254.2.2 U-Boot的編譯和使用U-Boot命令介紹命令介紹crc32命令命令crc32命令可以計算存儲數(shù)據(jù)的校驗和。第1個參數(shù)address是需要校驗的數(shù)據(jù)起始地址。第2個參數(shù)count是要校驗的數(shù)據(jù)字節(jié)數(shù)。第3個參數(shù)addr用來指定保存結(jié)果的地址。.264.2.2 U-Boot的編譯和使用U-Boot命令介紹命令介紹echo命令命令echo命令回顯參數(shù) .274.2.2 U-Boot的編譯和使用U-Boot命令介紹命令介紹erse命令命令erase命令可以擦除Flash。參數(shù)必須指定
13、Flash擦除的范圍。按照起始地址和結(jié)束地址,start必須是擦除塊的起始地址;end必須是擦除末尾塊的結(jié)束地址。這種方式最常用。 .284.2.2 U-Boot的編譯和使用U-Boot命令介紹命令介紹nand命令命令nand命令可以通過不同的參數(shù)實現(xiàn)對Nand Flash的擦除、讀、寫操作。常見的幾種命令的含義如下(具體格式見help nand)。nand erase:擦除Nand Flash。nand read:讀取Nand Flash,遇到flash壞塊時會出錯。nand read.jffs2:讀取Nand Flash,遇到壞塊時會把壞塊部分對應(yīng)的內(nèi)容填充為0 xff,不會出錯。nand
14、 read.jffs2s:讀取Nand Flash,遇到壞塊時自動跳過(建議使用)。nand write:寫Nand Flash,nand write命令遇到flash壞塊時會出錯。nand write.jffs2:寫Nand Flash,可自動跳過壞塊(建議使用)。.294.2.2 U-Boot的編譯和使用U-Boot命令介紹命令介紹flinfo命令命令nand命令可以通過不同的參數(shù)實現(xiàn)對Nand Flash的擦除、讀、寫flinfo命令打印全部Flash組的信息,也可以只打印其中某個組。一般嵌入式系統(tǒng)的Flash只有一個組。.304.2.2 U-Boot的編譯和使用U-Boot命令介紹命令
15、介紹go命令命令go命令可以執(zhí)行應(yīng)用程序。第1個參數(shù)是要執(zhí)行程序的入口地址。第2個可選參數(shù)是傳遞給程序的參數(shù),可以不用。.314.2.2 U-Boot的編譯和使用U-Boot命令介紹命令介紹iminfo命令命令iminfo可以打印程序映像的開頭信息,包含了映像內(nèi)容的校驗(序列號、頭和校驗和)。第1個參數(shù)指定映像的起始地址??蛇x的參數(shù)是指定更多的映像地址。.324.2.2 U-Boot的編譯和使用U-Boot命令介紹命令介紹loadb命令命令loadb命令可以通過串口線下載二進制格式文件。.334.2.2 U-Boot的編譯和使用U-Boot命令介紹命令介紹loads命令命令loads命令可以通
16、過串口線下載S-Record格式文件。.344.2.2 U-Boot的編譯和使用U-Boot命令介紹命令介紹mw命令命令mw命令可以按照字節(jié)、字、長字寫內(nèi)存,.b、.w、.l的用法與cp命令相同。第1個參數(shù)address是要寫的內(nèi)存地址。第2個參數(shù)value是要寫的值。第3個可選參數(shù)count是要寫單位值的數(shù)目。.354.2.2 U-Boot的編譯和使用U-Boot命令介紹命令介紹nfs命令命令nfs命令可以使用NFS網(wǎng)絡(luò)協(xié)議通過網(wǎng)絡(luò)啟動映像。.364.2.2 U-Boot的編譯和使用U-Boot命令介紹命令介紹printenv命令命令printenv命令打印環(huán)境變量??梢源蛴∪凯h(huán)境變量,也
17、可以只打印參數(shù)中列出的環(huán)境變量。.374.2.2 U-Boot的編譯和使用U-Boot命令介紹命令介紹protect命令命令protect命令是對Flash寫保護的操作,可以使能和解除寫保護。第1個參數(shù)on代表使能寫保護;off代表解除寫保護。第2、第3個參數(shù)是指定Flash寫保護操作范圍,跟擦除的方式相同。.384.2.2 U-Boot的編譯和使用U-Boot命令介紹命令介紹rarpboot命令命令rarpboot命令可以使用TFTP協(xié)議通過網(wǎng)絡(luò)啟動映像。也就是把指定的文件下載到指定地址,然后執(zhí)行。第1個參數(shù)是映像文件下載到的內(nèi)存地址。第2個參數(shù)是要下載執(zhí)行的鏡像文件。.394.2.2 U-
18、Boot的編譯和使用U-Boot命令介紹命令介紹run命令命令run命令可以執(zhí)行環(huán)境變量中的命令,后面參數(shù)可以跟幾個環(huán)境變量名。.404.2.2 U-Boot的編譯和使用U-Boot命令介紹命令介紹setenv命令命令setenv命令可以設(shè)置環(huán)境變量。第1個參數(shù)是環(huán)境變量的名稱。第2個參數(shù)是要設(shè)置的值,如果沒有第2個參數(shù),表示刪除這個環(huán)境變量。.414.2.2 U-Boot的編譯和使用U-Boot命令介紹命令介紹sleep命令命令tftpboot命令可以使用TFTP協(xié)議通過網(wǎng)絡(luò)下載文件。按照二進制文件格式下載。另外使用這個命令,必須配置好相關(guān)的環(huán)境變量。例如serverip和ipaddr。第1
19、個參數(shù)loadAddress是下載到的內(nèi)存地址。第2個參數(shù)是要下載的文件名稱,必須放在TFTP服務(wù)器相應(yīng)的目錄下。.424.2.3 U-Boot移植在頂層Makefile中為開發(fā)板添加新的配置選項創(chuàng)建一個新目錄存放開發(fā)板相關(guān)的代碼,并且添加新文件 為開發(fā)板添加新的配置文件 配置開發(fā)板 編譯U-Boot 添加驅(qū)動或者功能選項 調(diào)試U-Boot源代碼,直到U-Boot在開發(fā)板上能夠正常啟動 .434.3 Linux內(nèi)核與移植Linux內(nèi)核是Linux操作系統(tǒng)的核心,也是整個Linux功能體現(xiàn)。它是用C語言編寫,符合POSIX標準。Linux最早是由芬蘭黑客Linus Torvalds為嘗試在英特爾
20、X86架構(gòu)上提供自由免費的類Unix操作系統(tǒng)而開發(fā)的。 Linux內(nèi)核主要功能進程管理內(nèi)存管理文件管理設(shè)備管理網(wǎng)絡(luò)管理 .444.3.1 Linux內(nèi)核結(jié)構(gòu).454.3.1 Linux內(nèi)核結(jié)構(gòu).464.3.2 Linux配置與編譯編譯內(nèi)核之前要先配置。為了正確、合理地設(shè)置內(nèi)核編譯配置選項,從而只編譯系統(tǒng)需要的功能的代碼,一般主要有下面4個考慮。 尺寸小節(jié)省內(nèi)存減少漏洞動態(tài)加載模塊.474.3.2 Linux配置與編譯編譯內(nèi)核的步驟:下載內(nèi)核源碼 修改內(nèi)核目錄樹根下的的Makefile,指明交叉編譯器 設(shè)置環(huán)境變量 配置內(nèi)核產(chǎn)生.config文件 輸入內(nèi)核配置命令(make menuconfig),進行內(nèi)核選項的選擇 編譯內(nèi)核下載Linux內(nèi)核 .484.3.3Linux內(nèi)核移植所謂移植就是把程序代碼從一種運行環(huán)境轉(zhuǎn)移到另外一種運行環(huán)境。對于內(nèi)核移植來說,主要是從一種硬件平臺轉(zhuǎn)移到另外一種硬件平臺上運行。添加開發(fā)板平臺支持選項移植開發(fā)板驅(qū)動程序 .494.4 嵌入式文件系統(tǒng)的構(gòu)建 在嵌入式Linux中,busybox是構(gòu)造文件系統(tǒng)最常用的軟件工具包,它被非常形象地稱為嵌入式Linux系統(tǒng)中的“瑞士軍刀”,因為它將許多常用的Linux命令和工具結(jié)合到了一個單獨的可執(zhí)行程序(busybox)中。雖然與相應(yīng)的GNU工具比較起來,busybox所提供的功能和參數(shù)略少,但在比較小的系統(tǒng)(例
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 車間安全生產(chǎn)協(xié)議書
- 防止股東競爭協(xié)議書
- 買賣房車庫合同協(xié)議書
- 體育生紀律管理協(xié)議書
- 勞動培訓(xùn)簽服務(wù)協(xié)議書
- ktv股東合同協(xié)議書
- 餐館合股開店協(xié)議書
- 鋁礦施工合作協(xié)議書
- 購車簽訂免責(zé)協(xié)議書
- 黃山定點醫(yī)藥協(xié)議書
- 安徽卷-2025屆高考化學(xué)全真模擬卷
- 河北省石家莊市2025屆普通高中高三教學(xué)質(zhì)量檢測(三)英語試卷及答案
- 2025屆百師聯(lián)盟高三下學(xué)期二輪復(fù)習(xí)聯(lián)考(三)政治試題(含答案)
- 江西省豐城市第九中學(xué)2024-2025學(xué)年高二下學(xué)期期中考試英語試卷(含答案無聽力原文及音頻)
- 康復(fù)技術(shù)考試試題及答案
- 2025年新工人入場安全培訓(xùn)考試試題附完整答案(奪冠)
- 2024年云南省文山州第二人民醫(yī)院選調(diào)工作人員考試真題
- 河北名校2025屆高考生物全真模擬密押卷含解析
- 血站考試試題及答案
- 《埃菲爾鐵塔》課件
- (三模)南通市2025屆高三第三次調(diào)研測試英語試卷(含答案解析)
評論
0/150
提交評論