




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1開(kāi)發(fā)環(huán)境的建立開(kāi)發(fā)環(huán)境的建立2內(nèi)容提要內(nèi)容提要1、宿主機(jī)、宿主機(jī)-目標(biāo)機(jī)開(kāi)發(fā)模式目標(biāo)機(jī)開(kāi)發(fā)模式 2、XsBase255目標(biāo)機(jī)環(huán)境目標(biāo)機(jī)環(huán)境3、宿主機(jī)環(huán)境、宿主機(jī)環(huán)境 4、試驗(yàn)、試驗(yàn)燒寫(xiě)燒寫(xiě)XsBase255的的BootLoader 使用使用Minicom實(shí)現(xiàn)串口通信實(shí)現(xiàn)串口通信 建立開(kāi)發(fā)環(huán)境建立開(kāi)發(fā)環(huán)境 熟悉交叉編譯環(huán)境和開(kāi)發(fā)工具熟悉交叉編譯環(huán)境和開(kāi)發(fā)工具 31、宿主機(jī)、宿主機(jī)-目標(biāo)機(jī)開(kāi)發(fā)模式目標(biāo)機(jī)開(kāi)發(fā)模式EthernetSerialJTAGEthernetHUB網(wǎng)絡(luò)網(wǎng)絡(luò)目標(biāo)扳目標(biāo)扳主機(jī)工作站主機(jī)工作站PC硬件調(diào)試器硬件調(diào)試器4嵌入式系統(tǒng)開(kāi)發(fā)與通常嵌入式系統(tǒng)開(kāi)發(fā)與通常PC機(jī)上的軟件機(jī)上的軟件
2、開(kāi)發(fā)的區(qū)別開(kāi)發(fā)的區(qū)別交叉開(kāi)發(fā)。交叉開(kāi)發(fā)。交叉編譯。交叉編譯。特點(diǎn)特點(diǎn)5一個(gè)嵌入式系統(tǒng)的開(kāi)發(fā)環(huán)境一般包括一個(gè)嵌入式系統(tǒng)的開(kāi)發(fā)環(huán)境一般包括:嵌入式目標(biāo)板嵌入式目標(biāo)板開(kāi)發(fā)用的宿主機(jī)(開(kāi)發(fā)用的宿主機(jī)(PC)硬件調(diào)試器硬件調(diào)試器 6應(yīng)用程序的開(kāi)發(fā)通常是應(yīng)用程序的開(kāi)發(fā)通常是Linux操作系統(tǒng)在嵌入式目操作系統(tǒng)在嵌入式目標(biāo)機(jī)上運(yùn)行進(jìn)來(lái)之后進(jìn)行。此時(shí),更多的是在宿標(biāo)機(jī)上運(yùn)行進(jìn)來(lái)之后進(jìn)行。此時(shí),更多的是在宿主機(jī)上使用主機(jī)上使用GDB通過(guò)網(wǎng)絡(luò)(或串口)與目標(biāo)板通通過(guò)網(wǎng)絡(luò)(或串口)與目標(biāo)板通信,進(jìn)行程序的調(diào)試。信,進(jìn)行程序的調(diào)試。7XsBase255目標(biāo)機(jī)環(huán)境目標(biāo)機(jī)環(huán)境JTAG接口簡(jiǎn)介接口簡(jiǎn)介 在在XSBase25
3、5目標(biāo)機(jī)上,使用常用的硬件測(cè)試方法目標(biāo)機(jī)上,使用常用的硬件測(cè)試方法JTAG進(jìn)行測(cè)試。進(jìn)行測(cè)試。 作為硬件測(cè)試手段,作為硬件測(cè)試手段,JTAG的功能與的功能與CPU狀態(tài)無(wú)關(guān),可以狀態(tài)無(wú)關(guān),可以驅(qū)動(dòng)設(shè)備的所有外部引腳并讀入數(shù)據(jù),而且在設(shè)備內(nèi)部奪驅(qū)動(dòng)設(shè)備的所有外部引腳并讀入數(shù)據(jù),而且在設(shè)備內(nèi)部奪取外部的連接點(diǎn)(與通往外部的各個(gè)取外部的連接點(diǎn)(與通往外部的各個(gè)pin腳一一連接)。腳一一連接)。各個(gè)各個(gè)cell為了形成串行移位寄存器(邊界掃描寄存器)而為了形成串行移位寄存器(邊界掃描寄存器)而相連。整體的接口由相連。整體的接口由5個(gè)個(gè)pin腳來(lái)控制(腳來(lái)控制(TDI,TMS,TCK,nTRST,TDO)
4、。其功能包括:測(cè)試線路連線和端子的)。其功能包括:測(cè)試線路連線和端子的連接狀態(tài);測(cè)試設(shè)備間的連接狀態(tài);進(jìn)行連接狀態(tài);測(cè)試設(shè)備間的連接狀態(tài);進(jìn)行Flash memory(閃存)(閃存) 燒寫(xiě)等。燒寫(xiě)等。 89BootLoaderBoot Loader 就是在操作系統(tǒng)內(nèi)核運(yùn)行之前運(yùn)行的一段小就是在操作系統(tǒng)內(nèi)核運(yùn)行之前運(yùn)行的一段小程序。通過(guò)這段小程序,我們可以初始化硬件設(shè)備、建立內(nèi)程序。通過(guò)這段小程序,我們可以初始化硬件設(shè)備、建立內(nèi)存空間的映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個(gè)合適的存空間的映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個(gè)合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準(zhǔn)備好正確的環(huán)境。狀態(tài),以便為最終
5、調(diào)用操作系統(tǒng)內(nèi)核準(zhǔn)備好正確的環(huán)境。PC由由BIOS和位于和位于MBR(主引導(dǎo)記錄)中的(主引導(dǎo)記錄)中的bootloader引導(dǎo):引導(dǎo):lLILO(Linux Loader,Linux加載程序)加載程序)lGRUB(GRand Unified Bootloader,完備的統(tǒng)一,完備的統(tǒng)一引導(dǎo)載入軟件引導(dǎo)載入軟件) U-BOOT(Universal Boot Loader,支持嵌入式,支持嵌入式Linux 系統(tǒng)的引導(dǎo))系統(tǒng)的引導(dǎo))10Boot Loader是系統(tǒng)加電后運(yùn)行的第一段代碼。是系統(tǒng)加電后運(yùn)行的第一段代碼。通常情況下,通常情況下,Boot Loader通過(guò)串口與宿主機(jī)進(jìn)行通過(guò)串口與宿主機(jī)
6、進(jìn)行文件傳輸,但串口傳輸?shù)乃俣仁怯邢薜?,因此通文件傳輸,但串口傳輸?shù)乃俣仁怯邢薜?,因此通過(guò)以太網(wǎng)連接并借助過(guò)以太網(wǎng)連接并借助TFTP協(xié)議來(lái)下載文件是個(gè)更協(xié)議來(lái)下載文件是個(gè)更好的選擇。好的選擇。 在在XSBase255上使用的上使用的Boot Loader加載操作系加載操作系統(tǒng)內(nèi)核之前統(tǒng)內(nèi)核之前IP沒(méi)有被設(shè)置。這個(gè)時(shí)候無(wú)法通過(guò)以沒(méi)有被設(shè)置。這個(gè)時(shí)候無(wú)法通過(guò)以太網(wǎng)進(jìn)行數(shù)據(jù)傳送,我們必須在太網(wǎng)進(jìn)行數(shù)據(jù)傳送,我們必須在Boot Loader上通上通過(guò)過(guò)BootP設(shè)置設(shè)置IP,然后通過(guò),然后通過(guò)TFTP傳送數(shù)據(jù)。傳送數(shù)據(jù)。 11系統(tǒng)加電或復(fù)位后,所有的系統(tǒng)加電或復(fù)位后,所有的CPU通常都從某個(gè)由通常都從
7、某個(gè)由CPU制制造商預(yù)先安排的地址上取指令?;谠焐填A(yù)先安排的地址上取指令?;赬Scale內(nèi)核的內(nèi)核的CPU在復(fù)位時(shí)通常都從地址在復(fù)位時(shí)通常都從地址0 x00000000處取它的第一條指處取它的第一條指令。而基于這種令。而基于這種CPU構(gòu)建的嵌入式系統(tǒng)通常都有某種類(lèi)構(gòu)建的嵌入式系統(tǒng)通常都有某種類(lèi)型的固態(tài)存儲(chǔ)設(shè)備型的固態(tài)存儲(chǔ)設(shè)備(比如:比如:ROM、EEPROM或或FLASH等等)被映射到這個(gè)預(yù)先安排的地址上。因此在系統(tǒng)加電后,被映射到這個(gè)預(yù)先安排的地址上。因此在系統(tǒng)加電后,CPU將首先執(zhí)行將首先執(zhí)行Boot Loader程序(程序( 0 x00000000)。)。 一個(gè)同時(shí)裝有一個(gè)同時(shí)裝有B
8、oot Loader、內(nèi)核的啟動(dòng)參數(shù)、內(nèi)核映像和根文件系統(tǒng)映像的、內(nèi)核的啟動(dòng)參數(shù)、內(nèi)核映像和根文件系統(tǒng)映像的固態(tài)存儲(chǔ)設(shè)備的典型空間分配結(jié)構(gòu)圖固態(tài)存儲(chǔ)設(shè)備的典型空間分配結(jié)構(gòu)圖12大多數(shù)大多數(shù)Boot Loader都包含兩種不同的操作模式:都包含兩種不同的操作模式:?jiǎn)?dòng)加載啟動(dòng)加載模式和模式和下載下載模式,這種區(qū)別僅對(duì)于開(kāi)模式,這種區(qū)別僅對(duì)于開(kāi)發(fā)人員才有意義。但從最終用戶的角度看,發(fā)人員才有意義。但從最終用戶的角度看,Boot Loader的作用就是用來(lái)加載操作系統(tǒng),而并不存的作用就是用來(lái)加載操作系統(tǒng),而并不存在所謂的啟動(dòng)加載模式與下載工作模式的區(qū)別。在所謂的啟動(dòng)加載模式與下載工作模式的區(qū)別。 啟
9、動(dòng)加載模式啟動(dòng)加載模式下載模式下載模式13Boot Loader的階段的階段1通常包括以下步驟:通常包括以下步驟:a. 硬件設(shè)備初始化。硬件設(shè)備初始化。b. 為加載為加載 Boot Loader 的的 階段階段2 準(zhǔn)備準(zhǔn)備 RAM 空間??臻g。 c. 拷貝拷貝 Boot Loader 的的 階段階段2 到到 RAM 空間中??臻g中。 d. 設(shè)置好堆棧。設(shè)置好堆棧。 e. 跳轉(zhuǎn)到跳轉(zhuǎn)到 階段階段2 的的 C 入口點(diǎn)。入口點(diǎn)。 14Boot Loader的階段的階段2通常包括以下步驟:通常包括以下步驟:a. 初始化本階段要使用到的硬件設(shè)備。初始化本階段要使用到的硬件設(shè)備。b. 檢測(cè)系統(tǒng)內(nèi)存映射檢測(cè)
10、系統(tǒng)內(nèi)存映射(memory map)。 c. 將將 kernel 映像和根文件系統(tǒng)映像從映像和根文件系統(tǒng)映像從 flash 上讀到上讀到 RAM 空間中??臻g中。 d. 為內(nèi)核設(shè)置啟動(dòng)參數(shù)。為內(nèi)核設(shè)置啟動(dòng)參數(shù)。 153、宿主機(jī)環(huán)境、宿主機(jī)環(huán)境3.1 BOOTP協(xié)議協(xié)議 3.2 TFTP協(xié)議協(xié)議 3.3 交叉編譯交叉編譯 3.4 Make工具工具 163.1 BOOTP協(xié)議協(xié)議 BOOTP服務(wù)的全稱是服務(wù)的全稱是BootStrap Protocol(引導(dǎo)協(xié)議)(引導(dǎo)協(xié)議) 使用使用TCP/IP網(wǎng)絡(luò)協(xié)議中的網(wǎng)絡(luò)協(xié)議中的UDP 67/68兩個(gè)通訊端口兩個(gè)通訊端口常用到的常用到的DHCP服務(wù)就是從服務(wù)
11、就是從BOOTP服務(wù)擴(kuò)展而來(lái)的服務(wù)擴(kuò)展而來(lái)的過(guò)程:過(guò)程: 第一步,在目標(biāo)板由第一步,在目標(biāo)板由BootLoader啟動(dòng)啟動(dòng)BOOTP,此時(shí)目,此時(shí)目標(biāo)板還沒(méi)有標(biāo)板還沒(méi)有IP地址,它就用廣播形式以地址,它就用廣播形式以IP地址地址向向網(wǎng)絡(luò)中發(fā)出網(wǎng)絡(luò)中發(fā)出IP地址查詢的請(qǐng)求,這個(gè)請(qǐng)求幀中包含了客地址查詢的請(qǐng)求,這個(gè)請(qǐng)求幀中包含了客戶機(jī)的網(wǎng)卡戶機(jī)的網(wǎng)卡MAC地址等信息。地址等信息。17第二步,主機(jī)平臺(tái)運(yùn)行第二步,主機(jī)平臺(tái)運(yùn)行BootP服務(wù)的服務(wù)器接收到的這服務(wù)的服務(wù)器接收到的這個(gè)請(qǐng)求幀,根據(jù)這幀中的個(gè)請(qǐng)求幀,根據(jù)這幀中的MAC地址在地址在Bootptab啟動(dòng)數(shù)啟動(dòng)數(shù)據(jù)庫(kù)中查找這個(gè)據(jù)庫(kù)中
12、查找這個(gè)MAC的記錄,如果沒(méi)有此的記錄,如果沒(méi)有此MAC的記錄的記錄則不響應(yīng)這個(gè)請(qǐng)求;如果有就將則不響應(yīng)這個(gè)請(qǐng)求;如果有就將FOUND幀發(fā)送回目標(biāo)幀發(fā)送回目標(biāo)板。板。FOUND幀中包含的主要信息有目標(biāo)板的幀中包含的主要信息有目標(biāo)板的IP地址、地址、服務(wù)器的服務(wù)器的IP地址、硬件類(lèi)型、網(wǎng)關(guān)地址、硬件類(lèi)型、網(wǎng)關(guān)IP地址、目標(biāo)板地址、目標(biāo)板MAC地址和啟動(dòng)映象文件名。地址和啟動(dòng)映象文件名。 第三步,目標(biāo)板就根據(jù)第三步,目標(biāo)板就根據(jù)FOUND幀中的信息通過(guò)幀中的信息通過(guò)TFTP服服務(wù)器下載啟動(dòng)映象文件。務(wù)器下載啟動(dòng)映象文件。183.2 TFTP協(xié)議協(xié)議TFTP服務(wù)的全稱是服務(wù)的全稱是Trivial F
13、ile Transfer Protocol(簡(jiǎn)單(簡(jiǎn)單文件傳輸協(xié)議)文件傳輸協(xié)議) TFTP可以看成一個(gè)簡(jiǎn)化了的可以看成一個(gè)簡(jiǎn)化了的FTP,TFTP不需要認(rèn)證客戶不需要認(rèn)證客戶端的權(quán)限,這樣遠(yuǎn)程啟動(dòng)的目標(biāo)板在啟動(dòng)一個(gè)完整的操作端的權(quán)限,這樣遠(yuǎn)程啟動(dòng)的目標(biāo)板在啟動(dòng)一個(gè)完整的操作系統(tǒng)之前就可以通過(guò)系統(tǒng)之前就可以通過(guò)TFTP下載啟動(dòng)映象文件,而不需要證下載啟動(dòng)映象文件,而不需要證明自己是合法的用戶明自己是合法的用戶 TFTP在安裝時(shí)一定要設(shè)立一個(gè)單獨(dú)的目錄作為在安裝時(shí)一定要設(shè)立一個(gè)單獨(dú)的目錄作為T(mén)FTP服務(wù)服務(wù)的根目錄,設(shè)置的根目錄,設(shè)置TFTP服務(wù)為:只能下載不能上傳等以減少服務(wù)為:只能下載不能上
14、傳等以減少安全隱患安全隱患 193.3 交叉編譯交叉編譯交叉編譯就是在一個(gè)架構(gòu)下編譯另一個(gè)架構(gòu)的目標(biāo)文件。交叉編譯就是在一個(gè)架構(gòu)下編譯另一個(gè)架構(gòu)的目標(biāo)文件。目標(biāo)文件在不同架構(gòu)間由于采用的目標(biāo)文件在不同架構(gòu)間由于采用的CPU指令集不同等原因指令集不同等原因不能通用。比如不能通用。比如X86架構(gòu)的程序不能運(yùn)行于架構(gòu)的程序不能運(yùn)行于ARM架構(gòu)的架構(gòu)的XSBase255目標(biāo)機(jī)。目標(biāo)機(jī)。采用何種交叉編譯器產(chǎn)生何種格式的目標(biāo)文件還要取決于采用何種交叉編譯器產(chǎn)生何種格式的目標(biāo)文件還要取決于目標(biāo)機(jī)的操作系統(tǒng)。目標(biāo)機(jī)的操作系統(tǒng)。本門(mén)課程交叉編譯就是在本門(mén)課程交叉編譯就是在X86架構(gòu)的宿主機(jī)上生成適用于架構(gòu)的宿主
15、機(jī)上生成適用于ARM架構(gòu)的,架構(gòu)的,ELF格式的可執(zhí)行代碼。格式的可執(zhí)行代碼。203.4 Make工具工具GNU Make是一種常用的編譯工具,通過(guò)它,程序員可以是一種常用的編譯工具,通過(guò)它,程序員可以很方便地管理軟件編譯的內(nèi)容、方式和時(shí)機(jī),從而使程序很方便地管理軟件編譯的內(nèi)容、方式和時(shí)機(jī),從而使程序員能夠把主要精力集中在代碼的編寫(xiě)上。員能夠把主要精力集中在代碼的編寫(xiě)上。Make自動(dòng)判斷源自動(dòng)判斷源碼中哪些部分有更新,重新編譯這些文件并重新鏈接。對(duì)碼中哪些部分有更新,重新編譯這些文件并重新鏈接。對(duì)于那些由許多源文件組成的大型軟件項(xiàng)目來(lái)說(shuō),采用這種于那些由許多源文件組成的大型軟件項(xiàng)目來(lái)說(shuō),采用這
16、種項(xiàng)目管理方法則可以極大地提高工作效率,讓原本復(fù)雜繁項(xiàng)目管理方法則可以極大地提高工作效率,讓原本復(fù)雜繁瑣的開(kāi)發(fā)工作變得簡(jiǎn)單?,嵉拈_(kāi)發(fā)工作變得簡(jiǎn)單。make 工具通過(guò)一個(gè)稱為工具通過(guò)一個(gè)稱為makefile的文件來(lái)完成并自動(dòng)維的文件來(lái)完成并自動(dòng)維護(hù)編譯工作。護(hù)編譯工作。makefile需要按照某種語(yǔ)法進(jìn)行編寫(xiě),其中需要按照某種語(yǔ)法進(jìn)行編寫(xiě),其中說(shuō)明了如何編譯各個(gè)源文件并連接生成可執(zhí)行文件,并定說(shuō)明了如何編譯各個(gè)源文件并連接生成可執(zhí)行文件,并定義了源文件之間的依賴關(guān)系。當(dāng)修改了其中某個(gè)源文件時(shí),義了源文件之間的依賴關(guān)系。當(dāng)修改了其中某個(gè)源文件時(shí),如果其他源文件依賴于該文件,則也要重新編譯所有依賴如
17、果其他源文件依賴于該文件,則也要重新編譯所有依賴該文件的源文件。該文件的源文件。 21基本規(guī)則基本規(guī)則 :目標(biāo)、依賴關(guān)系、指令:目標(biāo)、依賴關(guān)系、指令target : dependency command 目標(biāo)(目標(biāo)(target):需要由):需要由make工具創(chuàng)建的項(xiàng)目,是指令(工具創(chuàng)建的項(xiàng)目,是指令(command)執(zhí)行的結(jié)果文件(目標(biāo)文件或執(zhí)行文件),也可以是一個(gè)標(biāo)簽執(zhí)行的結(jié)果文件(目標(biāo)文件或執(zhí)行文件),也可以是一個(gè)標(biāo)簽(Lable),如),如make clean、make all等。等。依賴(依賴(dependency):要?jiǎng)?chuàng)建的項(xiàng)目依賴于哪些文件或目標(biāo)。):要?jiǎng)?chuàng)建的項(xiàng)目依賴于哪些文件或
18、目標(biāo)。依賴條依賴條件頂格書(shū)寫(xiě)。件頂格書(shū)寫(xiě)。 指令(指令(command):創(chuàng)建每個(gè)項(xiàng)目時(shí)):創(chuàng)建每個(gè)項(xiàng)目時(shí)make需要運(yùn)行的命令(任意的需要運(yùn)行的命令(任意的Shell命令)命令) 。指令必須使用一個(gè)指令必須使用一個(gè)TAB符(制表位)開(kāi)始進(jìn)行書(shū)寫(xiě)。符(制表位)開(kāi)始進(jìn)行書(shū)寫(xiě)。在指令部分定義的指令會(huì)在依賴文件的內(nèi)容有所變更或找不到目標(biāo)文件在指令部分定義的指令會(huì)在依賴文件的內(nèi)容有所變更或找不到目標(biāo)文件時(shí)被執(zhí)行。時(shí)被執(zhí)行。22如果一個(gè)工程有三個(gè)源文件如果一個(gè)工程有三個(gè)源文件write.c,read.c,main.c生成可生成可執(zhí)行程序執(zhí)行程序test 。 用于生成用于生成test的的Makefile文
19、件如下:文件如下:test: main.o read.o write.o gcc o test main.o read.o write.omain.o : io.h main.c gcc c main.cread.o : io.h read.c gcc c read.cwrite.o : io.h write.c gcc c write.cclean: rm test main.o read.o write.o-c:對(duì)源程序進(jìn)行預(yù)處理、編譯,產(chǎn)生目標(biāo)文件,但不進(jìn)行連接。:對(duì)源程序進(jìn)行預(yù)處理、編譯,產(chǎn)生目標(biāo)文件,但不進(jìn)行連接。-o :定義輸出的執(zhí)行文件名為:定義輸出的執(zhí)行文件名為。23clean
20、不是一個(gè)文件,它只不過(guò)是一個(gè)動(dòng)作名字,有點(diǎn)像不是一個(gè)文件,它只不過(guò)是一個(gè)動(dòng)作名字,有點(diǎn)像C語(yǔ)言中的語(yǔ)言中的lable一樣,其冒號(hào)后什么也沒(méi)有,那么,一樣,其冒號(hào)后什么也沒(méi)有,那么,make就不會(huì)自動(dòng)去找文件的依賴性,也就不會(huì)自動(dòng)執(zhí)行其后所就不會(huì)自動(dòng)去找文件的依賴性,也就不會(huì)自動(dòng)執(zhí)行其后所定義的命令。要執(zhí)行其后的命令,就要在定義的命令。要執(zhí)行其后的命令,就要在make命令后明顯命令后明顯得指出這個(gè)得指出這個(gè)lable的名字。的名字。 例如,使用名為例如,使用名為clean標(biāo)簽來(lái)進(jìn)行清除,可以沒(méi)有依賴關(guān)系標(biāo)簽來(lái)進(jìn)行清除,可以沒(méi)有依賴關(guān)系部分,即執(zhí)行命令部分,即執(zhí)行命令以此來(lái)清除所有的目標(biāo)文件,以便
21、重新編譯。以此來(lái)清除所有的目標(biāo)文件,以便重新編譯。相當(dāng)于執(zhí)行了:相當(dāng)于執(zhí)行了: rootXSBase test# make cleanrootXSBase test# rm test main.o read.o write.o 24Makefile依賴關(guān)系依賴關(guān)系 使用使用vi編譯器創(chuàng)建編譯器創(chuàng)建Makefile后,進(jìn)行后,進(jìn)行make,則生成執(zhí)行文件,則生成執(zhí)行文件test。Make將按照將按照 Makefile中指定的依賴關(guān)系來(lái)依次執(zhí)行。中指定的依賴關(guān)系來(lái)依次執(zhí)行。rootXSBase test# make 25宏和標(biāo)簽宏和標(biāo)簽 為了為了makefile的易維護(hù),在的易維護(hù),在makefi
22、le中我們可以使用變中我們可以使用變量。量。makefile的變量也就是一個(gè)字符串,理解成的變量也就是一個(gè)字符串,理解成C語(yǔ)言語(yǔ)言中的宏可能會(huì)更好。中的宏可能會(huì)更好。 比如,我們聲明一個(gè)能夠表示比如,我們聲明一個(gè)能夠表示obj文件的宏,宏名可為文件的宏,宏名可為objects,OBJECTS,objs,OBJS,obj或或 OBJ等。等。可使用宏(可使用宏(Macro)功能和標(biāo)簽()功能和標(biāo)簽(Label)功能使)功能使Makefile的創(chuàng)建更為靈活。宏起到以替換指定的內(nèi)容使的創(chuàng)建更為靈活。宏起到以替換指定的內(nèi)容使程序簡(jiǎn)單化的作用。宏必須要在程序簡(jiǎn)單化的作用。宏必須要在$(.)里面使用。里面使
23、用。26例:利用宏來(lái)創(chuàng)建例:利用宏來(lái)創(chuàng)建Makefile。在這里宏是。在這里宏是OBJECTS,將,將main.o、read.o、write.o替換為替換為OBJECTS來(lái)使用。來(lái)使用。 OBJECTS = main.o read.o write.otest: $(OBJECTS) #使用名為使用名為OBJECTS的宏來(lái)創(chuàng)建的宏來(lái)創(chuàng)建 Makefile. gcc o test $(OBJECTS)main.o: io.h main.c gcc c main.cread.o: io.h read.c gcc c read.cwrite.o: io.h write.c gcc c write.cc
24、lean: rm test $(OBJECTS)27預(yù)定義的宏預(yù)定義的宏(Pre-defined Macro) 執(zhí)行執(zhí)行make -p可看到可看到Make中事先指定好的各個(gè)值(宏,環(huán)境參數(shù)等)。中事先指定好的各個(gè)值(宏,環(huán)境參數(shù)等)。 宏的定義宏的定義涵義涵義 AS = as指定匯編器,默認(rèn)值為指定匯編器,默認(rèn)值為asASFLAGS =匯編程序(匯編程序(AS指令)的選項(xiàng)設(shè)置指令)的選項(xiàng)設(shè)置 CC = cc 或或 CC = gcc指定編譯器(指定編譯器(C),默認(rèn)值為),默認(rèn)值為cc CFLAGS =C編譯器(編譯器(gcc指令)的選項(xiàng)設(shè)置指令)的選項(xiàng)設(shè)置 CXX = g+指定指定C+編譯器,
25、默認(rèn)值為編譯器,默認(rèn)值為g+ CPPFLAGS =C+編譯器(編譯器(g+指令)的選項(xiàng)設(shè)置指令)的選項(xiàng)設(shè)置 LD = ld指定鏈接器指定鏈接器 LDFLAGS =ld的選項(xiàng)設(shè)置的選項(xiàng)設(shè)置 28擴(kuò)展名規(guī)則擴(kuò)展名規(guī)則 擴(kuò)展名規(guī)則(擴(kuò)展名規(guī)則(Suffix Rule)是根據(jù)文件的擴(kuò)展名來(lái)進(jìn)行適)是根據(jù)文件的擴(kuò)展名來(lái)進(jìn)行適當(dāng)?shù)倪\(yùn)算操作。例如,當(dāng)?shù)倪\(yùn)算操作。例如,.c一般指一般指C源文件,源文件,.o文件是目標(biāo)文文件是目標(biāo)文件。件。.c文件編譯后應(yīng)成為文件編譯后應(yīng)成為.o文件。文件。 在這里出現(xiàn)名為在這里出現(xiàn)名為.SUFFIXES的宏,這個(gè)宏自動(dòng)處理的宏,這個(gè)宏自動(dòng)處理Makefile中需要慎重處理的文
26、件的擴(kuò)展名。中需要慎重處理的文件的擴(kuò)展名。 .SUFFIXES = .c .o 上面的例子對(duì)帶有上面的例子對(duì)帶有.c和和.o擴(kuò)展名的文件按照擴(kuò)展名規(guī)則來(lái)擴(kuò)展名的文件按照擴(kuò)展名規(guī)則來(lái)處理,自動(dòng)操作使處理,自動(dòng)操作使.c文件編譯后生成文件編譯后生成.o文件。文件。 29宏名宏名涵義涵義$*沒(méi)有擴(kuò)展名的當(dāng)前目標(biāo)文件沒(méi)有擴(kuò)展名的當(dāng)前目標(biāo)文件 $當(dāng)前目標(biāo)文件當(dāng)前目標(biāo)文件的完整名稱的完整名稱 $第一個(gè)依賴文件的名稱,即比當(dāng)前目標(biāo)文件更新的第一個(gè)文件名第一個(gè)依賴文件的名稱,即比當(dāng)前目標(biāo)文件更新的第一個(gè)文件名 $?所有的依賴文件,以空格分開(kāi),這些依賴文件修改日期比目標(biāo)的創(chuàng)建所有的依賴文件,以空格分開(kāi),這些依賴
27、文件修改日期比目標(biāo)的創(chuàng)建日期晚。比當(dāng)前目標(biāo)文件更新的所有文件名日期晚。比當(dāng)前目標(biāo)文件更新的所有文件名$所有的依賴文件,以空格分開(kāi),重復(fù)出現(xiàn)的名字只保留一個(gè)所有的依賴文件,以空格分開(kāi),重復(fù)出現(xiàn)的名字只保留一個(gè)$+所有的依賴文件,以空格分開(kāi),并以出現(xiàn)的先后為序,保持重復(fù)出現(xiàn)所有的依賴文件,以空格分開(kāi),并以出現(xiàn)的先后為序,保持重復(fù)出現(xiàn)的名字不變的名字不變內(nèi)部宏定義(內(nèi)部宏定義(Internal Macro)用于簡(jiǎn)化用于簡(jiǎn)化Makefile的寫(xiě)法的寫(xiě)法30內(nèi)部宏的用法內(nèi)部宏的用法例子一:例子一: main.o : main.c io.h gcc -c $*.c 說(shuō)明:說(shuō)明:$*是沒(méi)有擴(kuò)展名的當(dāng)前目標(biāo)文
28、件,所以是沒(méi)有擴(kuò)展名的當(dāng)前目標(biāo)文件,所以$*.c擴(kuò)展為擴(kuò)展為main.c。 例子二:例子二: test : gcc -o $ -c main.c 說(shuō)明:說(shuō)明:$是當(dāng)前目標(biāo)文件,相當(dāng)于是當(dāng)前目標(biāo)文件,相當(dāng)于test。 例子三:例子三: .c.o : gcc -c $ test: main.o gcc -o $ main.o 說(shuō)明:如果源文件說(shuō)明:如果源文件.c比目標(biāo)文件比目標(biāo)文件.o更新,則更新,則.c文件會(huì)自動(dòng)編譯。即在文件會(huì)自動(dòng)編譯。即在main.o生成之后更新了生成之后更新了main.c的話,那么的話,那么main.c就會(huì)被就會(huì)被$自動(dòng)重新編譯。自動(dòng)重新編譯。 31myprog:main.
29、o display.o input.ogcc main.o display.o input.o -o myprogmain.o:main.c commom.hgcc -c main.cdisplay.o:display.c display.h common.hgcc -c display.cinput.o:input.c input.h common.hgcc -c input.cclean:rm -f myprog main.o display.o input.oCC=gccOBJS=main.o display.o input.omyprog:$(OBJS)$(CC) $(OBJS) -o
30、 $main.o:main.c commom.h $(CC) -c $display.o:display.c display.h common.h $(CC) -c $input.o:input.c input.h common.h $(CC) -c $clean: rm -f myprog $(OBJS)32實(shí)驗(yàn)三實(shí)驗(yàn)三 Makefile使用命令編譯程序使用命令編譯程序使用預(yù)定義變量編譯程序使用預(yù)定義變量編譯程序使用預(yù)定義變量對(duì)多個(gè)使用預(yù)定義變量對(duì)多個(gè).c文件編譯文件編譯具體練習(xí)題目詳見(jiàn)實(shí)驗(yàn)指導(dǎo)書(shū)具體練習(xí)題目詳見(jiàn)實(shí)驗(yàn)指導(dǎo)書(shū)33RPM(1) rpm的主要功能及命令的主要功能及命令rpm的基本使
31、用的基本使用 Red Hat軟件包管理器(軟件包管理器(RedHat Package Manager, 簡(jiǎn)稱簡(jiǎn)稱RPM)。)。 在在Red Hat Linux的光盤(pán)上,有許多以的光盤(pán)上,有許多以rpm為類(lèi)型名的為類(lèi)型名的文件,它們是分類(lèi)將各軟件產(chǎn)品的所有必要的文件打包文件,它們是分類(lèi)將各軟件產(chǎn)品的所有必要的文件打包到相應(yīng)文件中,這些文件就是軟件包。安裝程序用到相應(yīng)文件中,這些文件就是軟件包。安裝程序用rpm命令打開(kāi)這些軟件包并將文件復(fù)制到硬盤(pán)中適當(dāng)?shù)奈恢妹畲蜷_(kāi)這些軟件包并將文件復(fù)制到硬盤(pán)中適當(dāng)?shù)奈恢蒙?。上?34一系列的一系列的rpm命令構(gòu)成了軟件包管理器,命令構(gòu)成了軟件包管理器,rpm包管
32、理的用包管理的用途如下:途如下: 可以安裝、刪除、升級(jí)和管理以可以安裝、刪除、升級(jí)和管理以rpm包形式發(fā)布的軟件;包形式發(fā)布的軟件;可以查詢某個(gè)可以查詢某個(gè)rpm包中包含哪些文件,以及某個(gè)指定文件包中包含哪些文件,以及某個(gè)指定文件屬于哪個(gè)屬于哪個(gè)rpm包;包;可以在查詢系統(tǒng)中的某個(gè)可以在查詢系統(tǒng)中的某個(gè)rpm包是否已安裝以及其版本;包是否已安裝以及其版本;作為開(kāi)發(fā)者可以把自己開(kāi)發(fā)的軟件打成作為開(kāi)發(fā)者可以把自己開(kāi)發(fā)的軟件打成rpm包發(fā)布;包發(fā)布;依賴性的檢查,查詢安裝某個(gè)依賴性的檢查,查詢安裝某個(gè)rpm包時(shí),需要哪些其它的包時(shí),需要哪些其它的rpm包。包。 35注意:注意:rpm軟件的安裝、刪除
33、、更新只有軟件的安裝、刪除、更新只有root權(quán)限權(quán)限才能使用;對(duì)于查詢功能任何用戶都可以操作。才能使用;對(duì)于查詢功能任何用戶都可以操作。軟件包文件名是由軟件包名、版本號(hào)和版本的發(fā)軟件包文件名是由軟件包名、版本號(hào)和版本的發(fā)行號(hào)三部分組成,例如從軟件包文件名行號(hào)三部分組成,例如從軟件包文件名“XFree86--25.rpm”,我們可以獲得如下,我們可以獲得如下信息:軟件包名:信息:軟件包名:XFree86;版本號(hào):;版本號(hào):;版本的發(fā)行號(hào):版本的發(fā)行號(hào):25。 36命令命令rpm的基本使用方法的基本使用方法 格式格式: rpm options RPM filename功
34、能:能夠建立、編譯、查詢、校驗(yàn)、升級(jí)和卸載獨(dú)立軟件包的包功能:能夠建立、編譯、查詢、校驗(yàn)、升級(jí)和卸載獨(dú)立軟件包的包管理器。管理器。參數(shù)參數(shù):-qa 查看系統(tǒng)內(nèi)所有已安裝的軟件包列表。查看系統(tǒng)內(nèi)所有已安裝的軟件包列表。-ql 軟件包名稱軟件包名稱 查看此軟件包中所有的文件及所在的目錄。查看此軟件包中所有的文件及所在的目錄。-qd 軟件包名稱軟件包名稱 查看此軟件包中所有的文檔。查看此軟件包中所有的文檔。-qc 軟件包名稱軟件包名稱 查看此軟件包中所有的組態(tài)配置文件。查看此軟件包中所有的組態(tài)配置文件。-qi 軟件包名稱軟件包名稱 顯示軟件包的詳細(xì)信息,包括版本號(hào)、大小、安裝顯示軟件包的詳細(xì)信息,包
35、括版本號(hào)、大小、安裝日期和簡(jiǎn)短說(shuō)明。日期和簡(jiǎn)短說(shuō)明。-qs 列出軟件包中所有文件所處的狀態(tài)。列出軟件包中所有文件所處的狀態(tài)。-p 查詢指定的。查詢指定的。-R 顯示顯示軟件包軟件包的關(guān)聯(lián)性信息。的關(guān)聯(lián)性信息。-e 刪除軟件包。刪除軟件包。-i 安裝軟件包。安裝軟件包。-V 驗(yàn)證軟件包。驗(yàn)證軟件包。 37得到一個(gè)新軟件,在安裝之前,一般都要先查看一下得到一個(gè)新軟件,在安裝之前,一般都要先查看一下這個(gè)軟件包里有什么內(nèi)容,假設(shè)這個(gè)文件是:這個(gè)軟件包里有什么內(nèi)容,假設(shè)這個(gè)文件是:Linux-1.4-6.i368.rpm,查看的組合命令有很多,在此介紹一,查看的組合命令有很多,在此介紹一些常用命令:些常
36、用命令: 查看系統(tǒng)內(nèi)所有已安裝的軟件包列表查看系統(tǒng)內(nèi)所有已安裝的軟件包列表# rpm -qa查看一個(gè)軟件包的用途、版本等信息查看一個(gè)軟件包的用途、版本等信息# rpm -qpi Linux-1.4-6.i368.rpm 系統(tǒng)將會(huì)列出這個(gè)軟件包的詳細(xì)資料,包括含有多少系統(tǒng)將會(huì)列出這個(gè)軟件包的詳細(xì)資料,包括含有多少個(gè)文件、各文件名稱、文件大小、創(chuàng)建時(shí)間、編譯日個(gè)文件、各文件名稱、文件大小、創(chuàng)建時(shí)間、編譯日期等信息。期等信息。 38查看一件軟件包所包含的文件查看一件軟件包所包含的文件# rpm -qpl Linux-1.4-6.i368.rpm 可以用可以用-qpl選項(xiàng)查看軟件包將會(huì)在系統(tǒng)里安裝哪些
37、部選項(xiàng)查看軟件包將會(huì)在系統(tǒng)里安裝哪些部分,以方便我們的選擇。分,以方便我們的選擇。查看軟件包的文檔所在的位置查看軟件包的文檔所在的位置# rpm -qpd Linux-1.4-6.i368.rpm查看一個(gè)軟件包的配置文件查看一個(gè)軟件包的配置文件# rpm -qpc Linux-1.4-6.i368.rpm查看一個(gè)軟件包的依賴關(guān)系查看一個(gè)軟件包的依賴關(guān)系# rpm -qpR Linux-1.4-6.i368.rpm 39選擇安裝方式后,開(kāi)始安裝一個(gè)選擇安裝方式后,開(kāi)始安裝一個(gè)rpm 包。在安裝包。在安裝過(guò)程中,若系統(tǒng)提示此軟件已安裝過(guò)或因其他原過(guò)程中,若系統(tǒng)提示此軟件已安裝過(guò)或因其他原因無(wú)法繼續(xù)
38、安裝,但如果確實(shí)想執(zhí)行安裝命令,因無(wú)法繼續(xù)安裝,但如果確實(shí)想執(zhí)行安裝命令,可以在可以在 -ivh后加一參數(shù)后加一參數(shù)“-replacepkgs”。# rpm -ivh Linux-1.4-6.i368.rpm或或# rpm -ivh -replacepkgs Linux-1.4-6.i368.rpm 40對(duì)低版本軟件進(jìn)行升級(jí)是提高其功能的好辦法,這樣可以對(duì)低版本軟件進(jìn)行升級(jí)是提高其功能的好辦法,這樣可以省去卸載后再安裝新軟件的麻煩,要升級(jí)某個(gè)軟件,只須省去卸載后再安裝新軟件的麻煩,要升級(jí)某個(gè)軟件,只須執(zhí)行如下命令:執(zhí)行如下命令:rpm -uvh ,注意:此時(shí)的文件,注意:此時(shí)的文件名必須是要升
39、級(jí)軟件的升級(jí)補(bǔ)丁。名必須是要升級(jí)軟件的升級(jí)補(bǔ)丁。 # rpm -Uvh Linux-1.4-6.i368.rpm不過(guò),在安裝和升級(jí)時(shí),如果軟件包有依賴關(guān)系的,需解不過(guò),在安裝和升級(jí)時(shí),如果軟件包有依賴關(guān)系的,需解決依賴關(guān)系;如果找不到依賴關(guān)系的包,可以用下面的命決依賴關(guān)系;如果找不到依賴關(guān)系的包,可以用下面的命令強(qiáng)制安裝。其中選項(xiàng)令強(qiáng)制安裝。其中選項(xiàng)(-nodeps)表示不表示不驗(yàn)證驗(yàn)證軟件包軟件包的相的相互關(guān)聯(lián)性互關(guān)聯(lián)性;選項(xiàng);選項(xiàng)(-force)表示表示強(qiáng)行置換強(qiáng)行置換軟件包軟件包或文件?;蛭募?# rpm -ivh -nodeps -force Linux-1.4-6.i368.rpm
40、 # rpm -Uvh -nodeps -force Linux-1.4-6.i368.rpm如果對(duì)軟件包僅僅是作測(cè)試,并不真正安裝,則執(zhí)行下面如果對(duì)軟件包僅僅是作測(cè)試,并不真正安裝,則執(zhí)行下面命令。命令。 # rpm -ivh -test Linux-1.4-6.i368.rpm41如果需要為軟件包指定安裝目錄:要加參數(shù)如果需要為軟件包指定安裝目錄:要加參數(shù)(-relocate) ,在默認(rèn)情況下,通常可執(zhí)行程序都放在安裝目錄下的在默認(rèn)情況下,通??蓤?zhí)行程序都放在安裝目錄下的bin或或者者sbin目錄中。目錄中。 # rpm -ivh -relocate /=/usr/local/newlin
41、ux Linux-1.4-6.i368.rpm在卸載某個(gè)安裝過(guò)的軟件時(shí),需首先查出刪除的在卸載某個(gè)安裝過(guò)的軟件時(shí),需首先查出刪除的rpm包,包,然后執(zhí)行然后執(zhí)行rpm -e 命令來(lái)卸載。命令來(lái)卸載。 # rpm -e newlinux #卸載卸載newlinux,如果有其它的,如果有其它的rpm依賴于該依賴于該rpm包,系統(tǒng)包,系統(tǒng)會(huì)出現(xiàn)警告。如果一定要卸載,可以用選項(xiàng)會(huì)出現(xiàn)警告。如果一定要卸載,可以用選項(xiàng) -nodeps 忽忽略依賴關(guān)系。但最好不要這么做。略依賴關(guān)系。但最好不要這么做。 42rpm管理包管理器還支持網(wǎng)絡(luò)的安裝和查詢。管理包管理器還支持網(wǎng)絡(luò)的安裝和查詢。 格式:格式:rpm 選
42、項(xiàng)選項(xiàng) rpm包的包的http或者或者ftp的地址的地址例如,想通過(guò)例如,想通過(guò) Fedora Core 4.0 的一個(gè)鏡像查詢、的一個(gè)鏡像查詢、安裝軟件包。安裝軟件包。# rpm -qpi /./RPMS/rsh-0.17-29.rpm#查詢查詢# rpm -ivh /./RPMS/rsh-0.17-29.rpm#安裝安裝 43實(shí)驗(yàn)二實(shí)驗(yàn)二 開(kāi)發(fā)環(huán)境的建立開(kāi)發(fā)環(huán)境的建立4.1燒寫(xiě)燒寫(xiě)XsBase255的的BootLoader 光盤(pán)拷貝:打開(kāi)終端,將光盤(pán)中所有文件(光盤(pán)拷貝:打開(kāi)終端,將光盤(pán)中所有文
43、件( 包括目錄包括目錄pxa255 )拷貝到)拷貝到Filestystem(即根目錄(即根目錄“/”)中。)中。root$localhost /# mount /dev/cdrom /mnt/cdrom root$localhost /# cp a /mnt/cdrom/* /創(chuàng)建創(chuàng)建Bootp:安裝:安裝 bootp rpm包包,bootp rpm在提供的在提供的光盤(pán)的光盤(pán)的PRM目錄里。目錄里。root$localhost root# cd /pxa255/RPMroot$localhost RPM# rpm i bootp-2.4.3-7.i386.rpm44新建新建bootp 文件文件
44、 在在/etc/xinetd.d目錄下新建目錄下新建bootp文件并按如下配置。文件并按如下配置。 /etc/xinetd.d/bootpservice bootps disable = no socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/bootpd也可通過(guò)拷貝方式獲取也可通過(guò)拷貝方式獲取bootp、bootptab、tftp三個(gè)配置文件三個(gè)配置文件#cd /pxa255/Net_Config#cp bootp /etc/xinetd.d#cp tftp /etc/xinetd.d#c
45、p bootptab /etc45inetd的設(shè)置 inetd 的設(shè)置文件是的設(shè)置文件是/etc/inetd.conf。在啟動(dòng)時(shí),。在啟動(dòng)時(shí),inetd 從這一文件讀入從這一文件讀入設(shè)置信息。每設(shè)置信息。每1 行描述行描述1 個(gè)服務(wù)的設(shè)置,各字段用分割符和空格分開(kāi)。帶個(gè)服務(wù)的設(shè)置,各字段用分割符和空格分開(kāi)。帶#(注釋注釋)的行不予執(zhí)行。以下表示行的格式。的行不予執(zhí)行。以下表示行的格式。service_name:描述:描述telnet 等服務(wù)名稱。服務(wù)名稱和端口號(hào)一覽表登錄等服務(wù)名稱。服務(wù)名稱和端口號(hào)一覽表登錄在在/etc/services 中。中。socket_type:描述:描述stream
46、(流型流型)和和dgram(數(shù)據(jù)型數(shù)據(jù)型)等接口等接口(socket)類(lèi)型類(lèi)型(種類(lèi)種類(lèi))。protocol:描述:描述tcp 和和udp 等,從登錄在等,從登錄在/etc/protocols 中找出的相對(duì)中找出的相對(duì)應(yīng)的程序。應(yīng)的程序。flag:描述:描述wait 或或nowait。僅在當(dāng)。僅在當(dāng)socket_type 為為dgram(數(shù)據(jù)型數(shù)據(jù)型)時(shí)才時(shí)才有意義,到一個(gè)處理結(jié)束之前,等待下一個(gè)要求有意義,到一個(gè)處理結(jié)束之前,等待下一個(gè)要求(wait),或者在有要求,或者在有要求時(shí)不予等待時(shí)不予等待(nowait),指示接受。,指示接受。user:描述:描述root 和和nobody 等以什
47、么樣的用戶權(quán)限啟動(dòng)服務(wù)。等以什么樣的用戶權(quán)限啟動(dòng)服務(wù)。server_path:以全路徑描述啟動(dòng)的服務(wù)器程序。:以全路徑描述啟動(dòng)的服務(wù)器程序。args:描述在:描述在server_path 中記述的服務(wù)器程序的啟動(dòng)名和參數(shù)中記述的服務(wù)器程序的啟動(dòng)名和參數(shù)(選項(xiàng)選項(xiàng)) 46新建新建bootptab 文件文件 在在 /etc下新建下新建bootptab文件并按如下配置。文件并按如下配置。/etc/bootptabtest: ht=1: ha=0 x123456789A00: ip=0: sm=注意:注意: 板子的板子的ip地址和主機(jī)平臺(tái)的地址和主機(jī)平臺(tái)
48、的ip地址必須在同一個(gè)網(wǎng)段內(nèi)。地址必須在同一個(gè)網(wǎng)段內(nèi)。(例如例如 主機(jī)主機(jī) IP: 00, 板子板子 IP : 192.168.10.xxx)47重啟重啟 xinetd 在主機(jī)平臺(tái)重啟在主機(jī)平臺(tái)重啟xinetd。創(chuàng)建創(chuàng)建tftp 安裝安裝tftp rpm root$localhost root # /etc/rc.d/init.d/xinetd restartStopping xinetd : OK Starting xinetd : OK root$localhost root# cd /pxa255/RPMroot$localhost RPM# rpm i tftp
49、-server-0.17-9.i386.rpm48新建新建tftp 文件文件 在在/etc/xinetd.d下新建下新建tftp文件并按如下配置。文件并按如下配置。 /etc/xinetd.d/tftpservice tftp disable = no socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /tftpboot如完成上述步驟后如完成上述步驟后tftp還不工作,請(qǐng)檢查防火墻是否存在。還不工作,請(qǐng)檢查防火墻是否存在。關(guān)閉防火墻使用關(guān)閉
50、防火墻使用lokkit命令。命令。49下載下載 Bootloader, Kernel, Filesystem 映象文件映象文件建立建立tftpboot目錄并復(fù)制映象文件目錄并復(fù)制映象文件 編譯生成編譯生成XSBase255專(zhuān)用的專(zhuān)用的JTAG程序程序 root$localhost /# mkdir tftpbootroot$localhost /#cd /pxa255/Imageroot$localhost Image#cp ./* /tftpbootroot$localhost pxa255 #cd Jflash-xsBase255root$localhost Jflash-xsBase25
51、5#vi Makefile查查看文中所有目看文中所有目標(biāo)標(biāo)文件名文件名為為Jflash-XHYPER255是否已改是否已改為為Jflash-XSBase255,注意:注意:頭頭文件名不要修改文件名不要修改root$localhost Jflash-xsBase255#make生成生成Jflash-XSBase255(下(下載載PXA255的的Jflash工具),可用工具),可用ls命令命令查查看看root$localhost Jflash-xsBase255#cp Jflash-XSBase255 /tftpboot50正確連線正確連線已經(jīng)存在名為已經(jīng)存在名為x-boot255的的Boot L
52、oader Image,用于,用于XSBase255目標(biāo)機(jī)。目標(biāo)機(jī)。 用用JTAG線正確連接宿主機(jī)和目標(biāo)機(jī),開(kāi)啟目標(biāo)機(jī)。線正確連接宿主機(jī)和目標(biāo)機(jī),開(kāi)啟目標(biāo)機(jī)。 利用利用JTAG燒寫(xiě)燒寫(xiě)B(tài)ootLoader正常運(yùn)行結(jié)果如下圖所示。正常運(yùn)行結(jié)果如下圖所示。 #cd /tftbootroot$localhost tftpboot #lsJflash-XSBase255 rootfs.img x-boot255 zImageroot$localhost tftpboot #./Jflash-XSBase255 x-boot25551524.2、使用、使用Minicom實(shí)現(xiàn)串口通信實(shí)現(xiàn)串口通信 Mini
53、com的安裝的安裝 安裝安裝linux時(shí)基本上會(huì)安裝時(shí)基本上會(huì)安裝minicom。安裝與否可用下面。安裝與否可用下面的指令來(lái)確認(rèn)。的指令來(lái)確認(rèn)。 #rpm -qa | grep minicom minicom-2.00.0-18.1 其中開(kāi)關(guān)其中開(kāi)關(guān)q代表代表question,a代表代表all??梢酝ㄟ^(guò)這條指令??梢酝ㄟ^(guò)這條指令打印目前安裝的打印目前安裝的rpm包的信息。并通過(guò)管道執(zhí)行包的信息。并通過(guò)管道執(zhí)行g(shù)rep指指令。上面的提示信息中表示,現(xiàn)在安裝上的令。上面的提示信息中表示,現(xiàn)在安裝上的Minicom版版本是本是2.00.0-18.1。 534.2、使用、使用Minicom實(shí)現(xiàn)串口通信
54、實(shí)現(xiàn)串口通信 將串口線正確連接好。將串口線正確連接好。Minicom的設(shè)置的設(shè)置 minicom -s命令直接從命令行進(jìn)入配置菜單。命令直接從命令行進(jìn)入配置菜單。不帶參數(shù)的不帶參數(shù)的minicom命令進(jìn)入命令進(jìn)入minicom后,在命令模式后,在命令模式中配置。中配置。rootlocalhost home# minicom -s54之后出現(xiàn)之后出現(xiàn)Minicom設(shè)置窗口,設(shè)置畫(huà)設(shè)置窗口,設(shè)置畫(huà)面中選擇面中選擇Serial port setup(串行端口設(shè)置)(串行端口設(shè)置)+-configuration-+| Filenames and paths | File transfer protoc
55、ols | Serial port setup | Modem and dialing | Screen and keyboard | Save setup as dfl | Save setup as | Exit | Exit from Minicom |+-+55串口設(shè)置窗口串口設(shè)置窗口 +-+| A - Serial Device : /dev/ttyS0| B - Lockfile Location : /var/lock | C - Callin Program : | D - Callout Program : | E - Bps/Par/Bits : 115200 8N1| F
56、 - Hardware Flow Control : No| G - Software Flow Control : No| Change which setting?|+-+56按按“A”進(jìn)行串口設(shè)備的選擇。若進(jìn)行串口設(shè)備的選擇。若目標(biāo)機(jī)接在目標(biāo)機(jī)接在COM1上,則輸入上,則輸入/dev/ttyS0;若接在若接在COM2上則輸上則輸入入/dev/ttyS1。按回車(chē)結(jié)束設(shè)置。按回車(chē)結(jié)束設(shè)置。 按按“E”進(jìn)行波特率的設(shè)置,需要進(jìn)行波特率的設(shè)置,需要設(shè)置設(shè)置Speed為為115200,Parity bit為為No,Data bit為為8,Stop bits為為1。按回車(chē)結(jié)束設(shè)置。按回車(chē)結(jié)束設(shè)置。
57、按按“F”設(shè)置硬件流量控制。設(shè)置設(shè)置硬件流量控制。設(shè)置Hardware Flow Control為為No。 波特率設(shè)置窗口波特率設(shè)置窗口 57串口設(shè)置完成后的結(jié)果為串口設(shè)置完成后的結(jié)果為58串口設(shè)置完成后按串口設(shè)置完成后按“Esc”返回返回Minicom設(shè)置窗口,選擇設(shè)置窗口,選擇Save setup as dfl(保存設(shè)置為默認(rèn)方式),最后選擇(保存設(shè)置為默認(rèn)方式),最后選擇“Esc”。這樣就會(huì)退出設(shè)置窗口,回到。這樣就會(huì)退出設(shè)置窗口,回到Minicom主畫(huà)面。主畫(huà)面。 正常設(shè)置后,重新上電開(kāi)啟目標(biāo)機(jī),此時(shí)在正常設(shè)置后,重新上電開(kāi)啟目標(biāo)機(jī),此時(shí)在Minicom窗窗口上看到啟動(dòng)信息,按任意鍵暫
58、停,口上看到啟動(dòng)信息,按任意鍵暫停,將進(jìn)入將進(jìn)入bootloader 命令模式,此時(shí)命令模式,此時(shí)出現(xiàn)出現(xiàn)XSBASE提示符。提示符。退出退出Minicom窗口的快捷鍵:窗口的快捷鍵:Ctrl+A或或q594.3、建立開(kāi)發(fā)環(huán)境、建立開(kāi)發(fā)環(huán)境 (1)在宿主機(jī)上安裝)在宿主機(jī)上安裝xinetd 為了使用為了使用BOOTP,首先要在宿主機(jī)上安裝,首先要在宿主機(jī)上安裝xinetd。 首先首先rpm命令查詢命令查詢xinetd rpm包的安裝信息:包的安裝信息: rootlocalhost root# rpm qa | grep xinetd 說(shuō)明宿主機(jī)上已經(jīng)安裝了說(shuō)明宿主機(jī)上已經(jīng)安裝了xinetd,版
59、本號(hào)為,版本號(hào)為2.3.10-6最后啟動(dòng)最后啟動(dòng)xinetd:rootXSBase root# /etc/rc.d/init.d/xinetd start60(2)在宿主機(jī)上安裝)在宿主機(jī)上安裝BOOTP 使用使用rpm命令查詢是否已經(jīng)安裝命令查詢是否已經(jīng)安裝BOOTP rpm包,包,BOOTP安裝完畢之后會(huì)生成安裝完畢之后會(huì)生成/usr/sbin/bootpd文件,這個(gè)文件需文件,這個(gè)文件需要被要被xinetd程序運(yùn)行,需要?jiǎng)?chuàng)建程序運(yùn)行,需要?jiǎng)?chuàng)建/etc/xinetd.d/bootp文件文件并進(jìn)行設(shè)置。并進(jìn)行設(shè)置。61(3)bootptab文件的生成和設(shè)置文件的生成和設(shè)置 字段字段ht表示表示Hardware T
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- TY/T 1112-2024冰球賽事轉(zhuǎn)播制作規(guī)程
- 課題申報(bào)書(shū)培訓(xùn)反思
- 河南高中課題申報(bào)書(shū)范例
- 課題申報(bào)書(shū)活頁(yè)要蓋章嗎
- 課題申報(bào)書(shū)撰寫(xiě)注意點(diǎn)
- 全國(guó)規(guī)劃辦課題申報(bào)書(shū)
- 怎樣申報(bào)課題申報(bào)書(shū)
- 幼師申報(bào)書(shū)課題怎么寫(xiě)
- 廠房土地回收合同范例
- 課題申報(bào)評(píng)審書(shū)范文
- 小學(xué)高年級(jí)《紅樓春趣》劇本(寧波實(shí)驗(yàn)學(xué)校)
- 安徽省縣域?qū)W前教育普及普惠督導(dǎo)評(píng)估指標(biāo)體系
- 第二章-英國(guó)學(xué)前教育
- 樂(lè)沛LOTSPLAY德國(guó)HABA邏輯思維課程介紹手冊(cè)
- 瘧原蟲(chóng)鏡檢技術(shù)-血片制作、染色及瘧原蟲(chóng)形態(tài)鑒別課件
- 2例不良事件根因分析
- GB 1523-2013綿羊毛
- 2004年考研英語(yǔ)一真題及答案
- 劉半農(nóng)《教我如何不想她》課件
- 前行第07節(jié)課(僅供參考)課件
- 博弈論與信息經(jīng)濟(jì)學(xué)課件
評(píng)論
0/150
提交評(píng)論