嵌入式Linux編程入門與開發(fā)實例-嵌入式VNC遠程控制的實現(xiàn)-課件_第1頁
嵌入式Linux編程入門與開發(fā)實例-嵌入式VNC遠程控制的實現(xiàn)-課件_第2頁
嵌入式Linux編程入門與開發(fā)實例-嵌入式VNC遠程控制的實現(xiàn)-課件_第3頁
嵌入式Linux編程入門與開發(fā)實例-嵌入式VNC遠程控制的實現(xiàn)-課件_第4頁
嵌入式Linux編程入門與開發(fā)實例-嵌入式VNC遠程控制的實現(xiàn)-課件_第5頁
已閱讀5頁,還剩92頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第13章嵌入式VNC遠程控制的實現(xiàn)

隨著電子技術(shù)和網(wǎng)絡(luò)技術(shù)的發(fā)展,嵌入式系統(tǒng)在遠程控制管理方面得到了越來越廣泛的應(yīng)用。嵌入式系統(tǒng)自身具有體積小、功能強、價格便宜等優(yōu)點,而將遠程控制軟件移植進入嵌入式系統(tǒng)之中,能夠讓身處異地的人們隨時方便地登錄到遠程個人計算機、遠程服務(wù)器上,并對其進行控制管理操作、故障診斷與維修等,并且可以分別控制和管理多臺不同的電腦,同時反過來可以進行遠程交流、遠程教育等。

1ppt課件第13章嵌入式VNC遠程控制的實現(xiàn)概述13.1需求分析13.2

嵌入式Linux系統(tǒng)移植13.3Tiny-X及應(yīng)用程序移植

13.4RFB協(xié)議簡析及文件系統(tǒng)的裁剪

13.52ppt課件13.1概述

提及遠程控制,大家都不會太陌生。我們都知道早期電腦中的遠程控制技術(shù),始于DOS時代,只不過當時由于技術(shù)上沒有什么大的變化,網(wǎng)絡(luò)不發(fā)達,市場沒有更高的要求,所以遠程控制技術(shù)沒有引起更多人的注意。但是,隨著計算機網(wǎng)絡(luò)技術(shù)的高度發(fā)展,電腦管理及技術(shù)支持的需要,遠程操作及控制技術(shù)越來越引起人們的關(guān)注。遠程控制一般支持下面的這些網(wǎng)絡(luò)方式:LAN、WAN、撥號方式、互聯(lián)網(wǎng)方式。此外,有的遠程控制軟件還支持通過串口、并口、紅外端口來對遠程機進行控制(不過,這里指的遠程機,只能是有限距離范圍內(nèi)的電腦)。傳統(tǒng)的遠程控制軟件一般使用NETBEUI、NETBIOS、IPX∕SPX、TCP∕IP等協(xié)議來實現(xiàn)遠程控制,不過,隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,目前很多遠程控制軟件提供通過Web頁面以Java技術(shù)來控制遠程電腦,這樣可以實現(xiàn)不同操作系統(tǒng)下的遠程控制。

3ppt課件目前,能實現(xiàn)遠程控制管理的軟件很多,例如Windows自帶的終端服務(wù),PCAnyWhere和冰河等,但是它們要么程序很大占用系統(tǒng)過多空間;要么使用起來過于麻煩、不宜配置;或是需要注冊付費;抑或使用效率低下速度慢。經(jīng)比較,VNC軟件是一款值得推薦的遠程控制軟件。VNC采用遠程幀緩存(RFB)協(xié)議進行通信,它的主要應(yīng)用是使用戶能夠利用VNC客戶端連接到正在運行的遠程VNC服務(wù)器,并借由網(wǎng)絡(luò),傳送鍵盤與鼠標的動作及即時的屏幕畫面,實現(xiàn)遠程圖形化操作。VNC軟件主要由兩個部分組成:VNC服務(wù)端及VNC客戶端。用戶需先將VNC服務(wù)端安裝在目標計算機上,才能夠在本地計算機上執(zhí)行VNC客戶端進行控制。VNC支持多種操作系統(tǒng),如Unix系列(Unix、Linux、Solaris等)、Windows及Mac操作系統(tǒng)。4ppt課件VNC運行的工作流程如下:(1)VNC客戶端通過嵌入式Linux中的VNCViewer連接至遠程VNCServer。(2)VNCServer傳送一對窗口至客戶端,要求輸入連接密碼,以及存取的VNCServer顯示裝置。(3)在客戶端輸入聯(lián)機密碼后,VNCServer驗證客戶端是否具有存取權(quán)限。(4)若是客戶端通過VNCServer驗證,客戶端即要求VNCServer顯示桌面環(huán)境。(5)被控端將畫面顯示控制權(quán)交由VNCServer負責(zé)。(6)VNCServer將把被控端的桌面環(huán)境利用VNC通信協(xié)議送至客戶端,并且允許客戶端控制VNCServer的桌面環(huán)境及輸入裝置。5ppt課件13.2需求分析作為一個基于嵌入式系統(tǒng)的遠程控制實現(xiàn),無論是硬件方面的電路板體積、成本,電路的性能,還是軟件方面的功能實現(xiàn)、運行效率和穩(wěn)定性等,都會受到資源限制的影響。因此在進行軟硬件開發(fā)之前要進行詳細的需求分析。6ppt課件13.2.1軟件需求分析1、交叉編譯工具2、Bootloader引導(dǎo)程序3、Linux內(nèi)核4、Linux根文件系統(tǒng)5、Tiny-X及相關(guān)應(yīng)用程序7ppt課件1.交叉編譯工具工欲善其事,必先利其器。嵌入式Linux系統(tǒng)開發(fā)離不開交叉編譯工具。交叉開發(fā)工具鏈就是為了編譯、鏈接、處理和調(diào)試跨平臺體系結(jié)構(gòu)的程序代碼。主機端裝好Linux操作系統(tǒng)后,就可以準備配置、制作自己的編譯工具。如果要基于Gcc和glibc來制作工具鏈,可以使用crosstool來進行編譯;如果要基于Gcc和uClibc來制作工具鏈,可以使用buildroot來進行編譯。如果不借助這些工具,編譯過程是非常繁瑣的。uClibc比glibc小,在已有的接口上是兼容的,更適用于嵌入式系統(tǒng)。但是uClibc并沒有包括glibc中的所有接口實現(xiàn),因此有些應(yīng)用程序可能在uClibc中不能編譯?;谶@個原因,本章使用glibc和Gcc來制作工具鏈。8ppt課件2.Bootloader引導(dǎo)程序我們知道,當按下PC機的啟動電源時,CPU會首先運行固化在CMOS中的BIOS(BasicInputOutputSystem)程序。BIOS程序的主要任務(wù)是對各種硬件設(shè)備進行自檢和初始化,然后運行位于硬盤MBR(MasterBootRecord)上的操作系統(tǒng)加載程序。操作系統(tǒng)加載程序負責(zé)把操作系統(tǒng)加載到內(nèi)存中,并啟動操作系統(tǒng)。在嵌入式系統(tǒng)中是沒有BIOS程序的,從開機硬件初始化到啟動操作系統(tǒng)內(nèi)核完全是由Bootloader程序完成的。Bootloader是嵌入式系統(tǒng)中最先運行的程序。Bootloader啟動后首先對硬件進行初始化、建立內(nèi)存的映射圖等,其目的是為內(nèi)核準備好軟硬件運行環(huán)境;接著Bootloader會把內(nèi)核加載到內(nèi)存中合適的位置并跳轉(zhuǎn)到內(nèi)核的入口處啟動內(nèi)核。9ppt課件3.Linux內(nèi)核Linux內(nèi)核主要由進程調(diào)度、內(nèi)存管理、虛擬文件系統(tǒng)、網(wǎng)絡(luò)接口、進程間通信等5個子系統(tǒng)組成,是構(gòu)建Linux系統(tǒng)的核心組成部分。在2.6版本內(nèi)核以前,并沒有專門針對嵌入式平臺進行支持。所以把Linux2.6版本以前的內(nèi)核移植到嵌入式平臺上時必須安裝相應(yīng)的補丁。Linux2.6內(nèi)核于2003年12月發(fā)布,在2.4內(nèi)核的基礎(chǔ)上作了極大的改進。使用了新的調(diào)度器,進程的切換更高效;內(nèi)核可以被搶占,使得用戶的操作可以得到更快速的響應(yīng);I/O子系統(tǒng)也經(jīng)歷了很大的修改,使得它在各種工作負荷下都更具響應(yīng)性;模塊子系統(tǒng)、文件系統(tǒng)都做了大量的改進。本章移植Linux-版本的內(nèi)核。10ppt課件4.Linux根文件系統(tǒng)Linux中沒有類似于Windows下的C、D、E等盤符的概念,它以樹狀機構(gòu)管理所有目錄、文件,其他分區(qū)掛接在某個目錄上,這個目錄被稱為掛接點(mountpoint),然后就可以通過這個目錄來訪問這個分區(qū)上的文件了。在一個分區(qū)上存儲文件時,需要遵循一定的格式,這種格式稱為文件系統(tǒng)類型,比如fat、ntfs、ext2、ext3、jffs2、yaffs等。除這些擁有實實在在的存儲分區(qū)的文件系統(tǒng)類型外,Linux還有幾種虛擬的文件系統(tǒng)類型,比如proc、sysfs等,它們的文件并不存儲在實際的設(shè)備上,而是在訪問它們時由內(nèi)核臨時生成。11ppt課件5.Tiny-X及相關(guān)應(yīng)用程序X窗口系統(tǒng)(XWindowingSystem)提供了Linux桌面圖形系統(tǒng)。X系統(tǒng)中的窗口環(huán)境采用客戶端/服務(wù)端(C/S)模式。X系統(tǒng)應(yīng)用程序是客戶端,它們和服務(wù)器通信,向服務(wù)器發(fā)送請求并且接收服務(wù)器發(fā)送的信息。X系統(tǒng)的服務(wù)器控制顯示和處理來自客戶端的請求。應(yīng)用程序(客戶端)只需要知道如何與服務(wù)器端通信,并不需要知道顯示設(shè)備繪制圖形的操作細節(jié)。這個通信機制(協(xié)議)能在任何提供八位字節(jié)流的進程間通信機制上工作。X使用了socket接口來達到通信協(xié)議的一致性。因為X系統(tǒng)是基于socket的,所以它可以在網(wǎng)絡(luò)中運行并且能很好遠程繪圖(Remotegraphics)。X客戶端使用X窗口系統(tǒng)提供的API在屏幕上繪制對象。這些API是函數(shù)庫X-lib中的一部分,用它連接客戶端應(yīng)用程序。本章移植的是體積小巧,但功能強大的Tiny-X。12ppt課件13.2.2硬件需求分析1.嵌入式開發(fā)目標板目前市面上流行的嵌入式開發(fā)板款式很多,本章采用友善之臂推出的mini2440開發(fā)板進行開發(fā),它是一種集成了S3C2440處理器以及各類外設(shè)的電路板。它不但提供了運行嵌入式系統(tǒng)的基本平臺,還提供了開發(fā)和調(diào)試嵌入式軟件系統(tǒng)的硬件平臺。其板上主要配備了以下相關(guān)部件:CPU處理器,SamsungS3C2440A,主頻400MHz,最高533MHz;64MBSDRAM內(nèi)存,時鐘頻率高達100MHz;2MBNORFlash,掉電非易失;128MBNANDFlash,掉電非易失;3.5寸真彩LCD,分別率為240×320;USBHost、USBSlaveB型接口各一個;DM9000網(wǎng)卡一塊;音頻輸入輸出(本章未用到);標準SD/MMC卡座。13ppt課件2.嵌入式開發(fā)主機在PC主機上,Linux已經(jīng)成為優(yōu)秀的計算機操作系統(tǒng)。各種Linux發(fā)行版本,可以直接在PC機上安裝,功能十分強大。它不僅能夠支持各種處理器和外圍設(shè)備接口,而且提供了圖形化的用戶交互界面和豐富的開發(fā)環(huán)境,更重要的是Linux系統(tǒng)性能穩(wěn)定。進行開發(fā)之前,事先在PC主機上安裝Linux操作系統(tǒng),這里安裝的是Ubuntu9.10操作系統(tǒng)。開發(fā)主機上應(yīng)配備有25針的并行接口一個,用來連接JTAG,下載Bootloader到NORFlash中;9針的RS-232串行接口一個,用于打印開發(fā)板啟動、調(diào)試信息并能輸入控制命令;至少一塊網(wǎng)卡,用于網(wǎng)絡(luò)傳輸文件。14ppt課件13.3嵌入式Linux系統(tǒng)移植

Linux操作系統(tǒng)的移植主要包括移植BootLoader、移植Linux內(nèi)核、移植相應(yīng)的驅(qū)動程序和構(gòu)建文件系統(tǒng)。使某個平臺的代碼運行在其他平臺上的過程叫做移植。Linux操作系統(tǒng)是一種遵循GPL協(xié)議的開源系統(tǒng),其內(nèi)核可以進行剪裁,并且支持32位和64位的CPU,可以運行在ARM、PowerPC、M68k等多種硬件平臺上。15ppt課件13.3.1交叉開發(fā)環(huán)境的構(gòu)建1.交叉開發(fā)模式所謂的交叉開發(fā)模式就是指在主機上編輯、編譯程序,然后在目標板上運行、驗證程序的過程。圖13-1所示是交叉開發(fā)模式。圖13-1交叉開發(fā)模式16ppt課件目標板和主機之間通常可以使用JTAG接口、串口、以太網(wǎng)接口以及USB接口等方式進行連接。JTAG接口傳輸方式:JTAG仿真器跟主機之間連接,將第一個引導(dǎo)程序燒寫進入NorFlash之中。串口傳輸方式:主機端通過kermit、minicom或者windows超級終端等工具都可以通過串口打印目標板程序運行、調(diào)試信息,另外它是嵌入式開發(fā)的重要控制臺。網(wǎng)絡(luò)傳輸方式:網(wǎng)絡(luò)傳輸方式一般采用NFS、TFTP等協(xié)議傳輸文件。USB接口傳輸方式:通常分主從設(shè)備端,主機端為主設(shè)備端,目標板端為從設(shè)備端。用于下載測試應(yīng)用程序到目標板中。17ppt課件2.交叉編譯環(huán)境交叉編譯通俗地講就是在一種平臺上編譯出能運行在體系結(jié)構(gòu)不同的另一種平臺上的程序,比如在PC平臺(X86CPU)上編譯出能運行在以ARM為內(nèi)核的CPU平臺上的程序,編譯得到的程序在X86CPU平臺上是不能運行的,必須放到ARMCPU平臺上才能運行,所以要生成在目標機上運行的程序,必須要用交叉編譯工具鏈來完成。在裁減和定制Linux內(nèi)核用于嵌入式系統(tǒng)之前,由于一般嵌入式開發(fā)系統(tǒng)的資源有限,通常都要在PC上建立一個用于目標機的交叉編譯工具鏈,用該交叉編譯工具鏈在PC上編譯目標機上要運行的程序。交叉編譯工具鏈是一個由編譯器、連接器和解釋器組成的綜合開發(fā)環(huán)境,交叉編譯工具鏈主要由binutils、gcc和glibc3個部分組成。18ppt課件建立交叉編譯工具鏈是一個相當復(fù)雜的過程,如果不想自己經(jīng)歷復(fù)雜繁瑣的編譯過程,網(wǎng)上有一些編譯好的可用的交叉編譯工具鏈可以下載,但就以學(xué)習(xí)為目的來說讀者有必要學(xué)習(xí)自己制作一個交叉編譯工具鏈。下面就通過具體的實例講述基于ARM的嵌入式Linux交叉編譯工具鏈的制作過程。首先下載crosstool-0.43.tar.gz,其官方網(wǎng)站是http:///crosstool,它是一個方便的用來建立交叉編譯工具鏈的工具。wget/crosstool/crosstool-0.43.tar.gztar-zxvfcrosstool-0.43.tar.gz19ppt課件解壓縮后查看目錄中的文件,其中包含很多的Shell腳本文件,編輯其中的demo-arm.sh文件,其中第7行制定編譯過程中軟件包下載路徑,第8行制定交叉編譯工具鏈的安裝路徑。取消第25行的注釋(這里我們要建立一個gcc-3.3.6,glibc-2.3.2的交叉編譯鏈)同時修改notest為gdb還可以同時創(chuàng)建arm-linux-gdb的交叉調(diào)試工具。#!/bin/sh#Thisscripthasonelineforeachknownworkingtoolchain#forthisarchitecture.Uncommenttheoneyouwant.#Generatedbygenerate-demo.plfrombuildlogs/all.dats.txtset-exTARBALLS_DIR=$HOME/downloadsRESULT_TOP=/usr/local/crosstoolexportTARBALLS_DIRRESULT_TOP20ppt課件GCC_LANGUAGES="c,c++"exportGCC_LANGUAGES#Really,youshoulddothemkdirbeforerunningthis,#andchown/opt/crosstooltoyourselfsoyoudon'tneedtorunasroot.mkdir-p$RESULT_TOP#eval`catarm.datgcc-2.95.3-glibc-2.1.3.dat`sh

all.sh--notest#eval`catarm.datgcc-2.95.3-glibc-2.2.2.dat`sh

all.sh--notest#eval`catarm.datgcc-2.95.3-glibc-2.2.5.dat`sh

all.sh--notest#eval`catarm.datgcc-3.2.3-glibc-2.2.5.dat`sh

all.sh--notest#eval`catarm.datgcc-3.2.3-glibc-2.3.2.dat`sh

all.sh--notest#eval`catarm.datgcc-3.2.3-glibc-2.3.2-tls.dat`sh

all.sh--notest#eval`catarm.datgcc-3.3.6-glibc-2.2.2.dat`sh

all.sh--notest#eval`catarm.datgcc-3.3.6-glibc-2.2.5.dat`sh

all.sh--notesteval`catarm.datgcc-3.3.6-glibc-2.3.2.dat`sh

all.sh--gdb#eval`catarm.datgcc-3.3.6-glibc-2.3.2-tls.dat`sh

all.sh--notest21ppt課件修改arm.dat文件,將TARGET=arm-unknown-linux-gnu改為TARGET=arm-linux,保證編譯出來的工具是常用的名字。KERNELCONFIG=`pwd`/arm.configTARGET=arm-linuxTARGET_CFLAGS="-O"最后一步,保證網(wǎng)絡(luò)的暢通,以普通用戶的權(quán)限來執(zhí)行demo-arm.sh腳本文件。./demo-arm.sh22ppt課件它會自動從網(wǎng)絡(luò)下載所需的軟件包并且進行編譯,整個編譯過程大概需要1~2個小時。如果沒出現(xiàn)意外情況的話,會在“/usr/local/crosstool”目錄下生成一套交叉編譯工具鏈。把制作好的交叉編譯工具鏈添加到當前的環(huán)境變量當中,只需要修改主目錄下的.bashrc文件,在文件末尾添加exportPATH=/usr/local/crosstool/gcc-3.3.6-glibc-2.3.2/bin:$PATH,并且重新讀取到當前的環(huán)境變量當中就可以了。echo'exportPATH=/usr/local/crosstool/gcc-3.3.6-glibc-2.3.2/bin:$PATH'>>.bashrcsource.bashrc23ppt課件3.主機開發(fā)工具安裝與配置1)串口控制臺工具串行通訊接口很適合作為控制臺,在各種操作系統(tǒng)上一般都有現(xiàn)成的控制臺程序可以使用。Windows操作系統(tǒng)有超級終端(Hyperterminal)工具;Linux/UNIX操作系統(tǒng)有Minicom、C-Kermit等工具。本文用的是Linux下的minicom,首先安裝Minicom到系統(tǒng)中,然后通過在Shell下執(zhí)行“minicom-s”命令進行配置,配置菜單如圖13-2所示。當需要使用時,執(zhí)行“sudo

minicom”運行,退出時執(zhí)行“Ctrl+A+Q”組合鍵即可。24ppt課件圖13-2minicom配置菜單25ppt課件2)NFS服務(wù)NFS服務(wù)的主要任務(wù)是把本地的一個目錄通過網(wǎng)絡(luò)輸出,其他計算機可以遠程掛接這個目錄并且訪問文件。NFS服務(wù)有自己的協(xié)議和端口號,但是在文件傳輸或者其他相關(guān)信息傳遞的時候,NFS則使用遠程過程調(diào)用(RPC,RemoteProcedureCall)協(xié)議。NFS是嵌入式開發(fā)不可或缺的工具。首先安裝NFS服務(wù)軟件,執(zhí)行以下命令會自動下載安裝:$sudoapt-getinstallnfs-kernel-serverportmap它的配置文件為/etc/eXports,在里面可以增加想要通過網(wǎng)絡(luò)文件系統(tǒng)訪問的目錄,本文配置內(nèi)容如下:/nfsboot*(rw,sync,no_root_squash)26ppt課件13.3.2Bootloader的移植簡單地說,Bootloader

就是在操作系統(tǒng)內(nèi)核運行之前運行的一段小程序。通過這段小程序,我們可以初始化硬件設(shè)備、建立內(nèi)存空間的映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準備好正確的環(huán)境。通常Bootloader是嚴重地依賴于硬件而實現(xiàn)的,特別是在嵌入式世界。因此,在嵌入式世界里建立一個通用的Bootloader幾乎是不可能的。盡管如此,我們?nèi)匀豢梢詫ootloader

歸納出一些通用的概念來,以指導(dǎo)用戶特定的Bootloader

設(shè)計與實現(xiàn)。27ppt課件Bootloader可以分為以下兩種操作模式。(1)啟動加載(Bootloading)模式。上電后,Bootloader從板子上的某個固態(tài)存儲設(shè)備上將操作系統(tǒng)加載到RAM中運行,整個過程并沒有用戶介入。產(chǎn)品發(fā)布時,Bootloader工作在這種模式下。(2)下載(Downloading)模式。在這種模式下,開發(fā)人員可以使用各種命令,通過串口連接或網(wǎng)絡(luò)連接等通信手段從主機下載文件(比如內(nèi)核鏡像、文件系統(tǒng)鏡像),將它們直接放在內(nèi)存中運行或燒入Flash類固態(tài)存儲設(shè)備中。28ppt課件由于Bootloader的實現(xiàn)依賴CPU的體系結(jié)構(gòu),因此大多數(shù)Bootloader

都分為stage1和stage2兩大部分。依賴于CPU體系結(jié)構(gòu)的代碼,比如設(shè)備初始化代碼等,通常都放在stage1中,而且通常都用匯編語言來實現(xiàn),以達到短小精悍的目的。而stage2則通常用C語言來實現(xiàn),這樣可以實現(xiàn)給復(fù)雜的功能,而且代碼會具有更好的可讀性和可移植性。29ppt課件Bootloader

的stage1通常包括以下步驟(以執(zhí)行的先后順序):硬件設(shè)備初始化。為加載Bootloader

的stage2準備RAM空間。拷貝Bootloader

的stage2到RAM空間中。設(shè)置好堆棧。跳轉(zhuǎn)到stage2的C入口點。30ppt課件Bootloader

的stage2通常包括以下步驟(以執(zhí)行的先后順序):初始化本階段要使用到的硬件設(shè)備。檢測系統(tǒng)內(nèi)存映射(memorymap)。將kernel映像和根文件系統(tǒng)映像從flash上讀到RAM空間中。為內(nèi)核設(shè)置啟動參數(shù)。調(diào)用內(nèi)核。31ppt課件這是Bootloader

一開始就執(zhí)行的操作,其目的是為stage2的執(zhí)行以及隨后的kernel的執(zhí)行準備好一些基本的硬件環(huán)境。它通常包括以下步驟(以執(zhí)行的先后順序):(1)屏蔽所有的中斷。為中斷提供服務(wù)通常是OS設(shè)備驅(qū)動程序的責(zé)任,因此在Bootloader的執(zhí)行全過程中可以不必響應(yīng)任何中斷。中斷屏蔽可以通過寫CPU的中斷屏蔽寄存器或狀態(tài)寄存器(比如ARM的CPSR寄存器)來完成。(2)設(shè)置CPU的速度和時鐘頻率。(3)RAM初始化。包括正確地設(shè)置系統(tǒng)的內(nèi)存控制器的功能寄存器以及各內(nèi)存庫控制寄存器等。(4)初始化LED。典型地,通過GPIO來驅(qū)動LED,其目的是表明系統(tǒng)的狀態(tài)是OK還是Error。如果板子上沒有LED,那么也可以通過初始化UART向串口打印Bootloader

的Logo字符信息來完成這一點。(5)關(guān)閉CPU內(nèi)部指令/數(shù)據(jù)cache。32ppt課件13.3.3Linux內(nèi)核的移植1、Linux內(nèi)核的定制原理2、Linux內(nèi)核源碼結(jié)構(gòu)3、配置和編譯內(nèi)核源碼4、對YAFFS文件系統(tǒng)的支持33ppt課件1.Linux內(nèi)核的定制原理定制內(nèi)核的根本目的是使內(nèi)核能夠根據(jù)嵌入式系統(tǒng)的軟硬件需求為應(yīng)用程序提供一個專用的運行平臺。從實現(xiàn)的角度看,定制內(nèi)核就是有針對性地定制內(nèi)核的各項功能。定制程序功能的基本方法有兩種:一是直接修改程序的源代碼,二是添加或刪除源文件。但是這兩種方法的效率都很低,而且一旦出現(xiàn)錯誤也不容易改正,所以并不適合于代碼量大的程序。對于源代碼量達到上百萬行的Linux內(nèi)核來說,通過直接修改源代碼的方式來進行定制更加行不通。34ppt課件在Linux內(nèi)核中,幾乎每個目錄下都有Makefile文件。面對數(shù)量眾多、結(jié)構(gòu)復(fù)雜的Makefile文件,僅僅依靠手工的方式來定制Makefile同樣是不合適的。為此,Linux內(nèi)核把哪些源文件需要被編譯和鏈接的規(guī)則都記錄在.config文件中。由Makefile文件根據(jù).config文件中的規(guī)則來控制源文件的編譯過程。這樣一來,Makefile文件的定制就又轉(zhuǎn)變成了.config文件的定制。為了提高.config文件的定制效率,需要使用內(nèi)核配置工具。它們分別通過以下命令啟動。35ppt課件makeconfig。它采用文本的操作界面。用戶通過輸入y或n來配置內(nèi)核的功能。由于需要逐一操作每個配置選項,所以配置的效率非常低。makemenuconfig。它采用菜單操作界面。如圖13-3所示。圖13-3內(nèi)核配置菜單36ppt課件2.Linux內(nèi)核源碼結(jié)構(gòu)Linux內(nèi)核文件數(shù)目將近2萬,除去其他架構(gòu)CPU的相關(guān)文件,支持S3C2410、S3C2440這兩款芯片的完整內(nèi)核文件也有1萬多個。這些文件的組織結(jié)構(gòu)并不復(fù)雜,它們分別位于頂層目錄下的各個子目錄中。表13-1描述了主要目錄的功能。表13-1Linux內(nèi)核子目錄結(jié)構(gòu)目錄名描述arch體系結(jié)構(gòu)相關(guān)代碼,例如arch/arm、arch/i386block塊設(shè)備的通用函數(shù)crypto常用的加密和散列算法,還有一些壓縮和CRC校驗算法37ppt課件drivers所有的設(shè)備驅(qū)動,例如drivers/char、drivers/mtdDocumentation內(nèi)核文檔fsLinux支持的文件系統(tǒng)代碼,比如fs/jffs2、fs/ext2include內(nèi)核頭文件,有基本頭文件、各種驅(qū)動或功能部件頭文件、各種體系相關(guān)的頭文件init內(nèi)核的初始化代碼,其中的main.c文件中的start_kernel函數(shù)是內(nèi)核引導(dǎo)后運行的第一個函數(shù)38ppt課件ipc進程間通信的代碼kernel內(nèi)核管理的核心代碼lib內(nèi)核用到的一些庫函數(shù)代碼mm內(nèi)存管理代碼net網(wǎng)絡(luò)支持代碼,每個子目錄對應(yīng)于網(wǎng)絡(luò)的一個方面security安全、密鑰相關(guān)代碼sound音頻設(shè)備的驅(qū)動程序scripts用于配置、編譯內(nèi)核的腳本文件usr用來制作一個壓縮的cpio歸檔文件:initrd的鏡像,它可以作為內(nèi)核啟動后掛載的第一個文件系統(tǒng)39ppt課件3.配置和編譯內(nèi)核源碼本章編譯Linux-版本的內(nèi)核。首先,修改內(nèi)核根目錄下的Makeflle文件,這個文件中需修改的內(nèi)容包括以下兩個方面。(1)指定目標平臺:修改前ARCH ?=&(SUBARCH)修改后ARCH ?=arm(2)指定交叉編譯器:修改前CROSS_COMPILE?=修改后CROSS_COMPILE?=arm-linux-40ppt課件然后,修改MTD(即內(nèi)存技術(shù)設(shè)備)分區(qū),在arch/arm/mach-s3c2440/mach-mini2440.c文件中,本章將NandFlash劃分為3個區(qū),前1MB用于存放引導(dǎo)程序,接下來的3MB用于存放嵌入式內(nèi)核,剩下的空間用來存放yaffs文件系統(tǒng),分區(qū)結(jié)構(gòu)如下所示:staticstruct

mtd_partitionmini2440_default_nand_part[]__initdata={ [0]={ .name ="u-boot", .size =0x00100000, .offset =0, }, [1]={ .name ="kernel",

41ppt課件 .size =0x00300000, .offset =0x00100000, }, [2]={ .name ="root", .size =MTDPART_SIZ_FULL, .offset =0x00400000, },};42ppt課件4.對YAFFS文件系統(tǒng)的支持(1)首先,獲取YAFFS2的源代碼從http://www.aleph1.co.uk/cgi-bin/viewcvs.cgi/yaffs2/下載并且解壓縮,YAFFS2目錄下有一個腳本文件可以用來給內(nèi)核打補丁。./patch-ker.sh/cpath其中/c這個參數(shù)用來將YAFFS2的代碼復(fù)制到內(nèi)核的相應(yīng)目錄下,path是內(nèi)核源代碼的路徑。(2)其次,配置內(nèi)核時選中YAFFS2支持:

Filesystems一>Miscellaneousfilesystems一><*>YAFFS2filesystemsupport43ppt課件13.3.4Linux根文件系統(tǒng)的構(gòu)建文件系統(tǒng)是一種用于向用戶提供底層數(shù)據(jù)訪問的機制。它將設(shè)備中的空間劃分為特定大小的塊(扇區(qū)),一般每塊512字節(jié)。數(shù)據(jù)存儲在這些塊中,大小被修正為占用整數(shù)個塊。由文件系統(tǒng)軟件來負責(zé)將這些塊組織為文件和目錄,并記錄哪些塊被分配給了哪個文件,以及哪些塊沒有被使用。不過,文件系統(tǒng)并不一定只在特定存儲設(shè)備上出現(xiàn)。它是數(shù)據(jù)的組織者和提供者,至于它的底層,可以是磁盤,也可以是其它動態(tài)生成數(shù)據(jù)的設(shè)備(比如網(wǎng)絡(luò)設(shè)備)。44ppt課件1.Linux文件系統(tǒng)層次標準介紹因為Linux的開發(fā)人員實在太多了,如果每個人都使用自己的目錄配置方法,那么將可能會帶來很多管理問題。所以,后來就有所謂的文件系統(tǒng)層次標準(FilesystemHierarchyStandard,F(xiàn)HS)出臺。它定義了文件系統(tǒng)中的目錄、文件分類存放的原則,定義了系統(tǒng)運行所需的最小文件、目錄的集合。下面分別介紹一下各個目錄的作用。(1)/bin基礎(chǔ)系統(tǒng)所需要的那些命令位于此目錄,也是最小系統(tǒng)所需要的命令;比如ls、cp、mkdir等命令;功能和/usr/bin類似,這個目錄中的文件都是可執(zhí)行的,普通用戶都可以使用的命令。做為基礎(chǔ)系統(tǒng)所需要的最基礎(chǔ)的命令就是放在這里。(2)/bootLinux的內(nèi)核及引導(dǎo)系統(tǒng)程序所需要的文件,比如vmlinuz

initrd.img

文件都位于這個目錄中。在一般情況下,GRUB或LILO系統(tǒng)引導(dǎo)管理器也位于這個目錄;(3)/dev設(shè)備文件存儲目錄,比如聲卡、磁盤......45ppt課件(4)/etc系統(tǒng)配置文件的所在地,一些服務(wù)器的配置文件也在這里;比如用戶帳號及密碼配置文件;(5)/home普通用戶家目錄默認存放目錄;(6)/lib庫文件存放目錄(7)/lost+found

在ext2或ext3文件系統(tǒng)中,當系統(tǒng)意外崩潰或機器意外關(guān)機,而產(chǎn)生一些文件碎片放在這里。當系統(tǒng)啟動的過程中fsck工具會檢查這里,并修復(fù)已經(jīng)損壞的文件系統(tǒng)。有時系統(tǒng)發(fā)生問題,有很多的文件被移到這個目錄中,可能會用手工的方式來修復(fù),或移到文件到原來的位置上。(8)/media即插即用型存儲設(shè)備的掛載點自動在這個目錄下創(chuàng)建,比如USB盤系統(tǒng)自動掛載后,會在這個目錄下產(chǎn)生一個目錄;CD/DVD自動掛載后,也會在這個目錄中創(chuàng)建一個目錄,類似cdrom

的目錄。這個只有在最新的發(fā)行套件上才有,比如Fedora等??梢詤⒖?etc/fstab的定義;(9)/mnt

這個目錄一般是用于存放掛載儲存設(shè)備的掛載目錄的,比如有cdrom

等目錄??梢詤⒖?etc/fstab的定義。有時我們可以把讓系統(tǒng)開機自動掛載文件系統(tǒng),把掛載點放在這里也是可以的。主要看/etc/fstab中怎么定義了;比如光驅(qū)可以掛載到/mnt/cdrom

。46ppt課件(10)/proc操作系統(tǒng)運行時,進程(正在運行中的程序)信息及內(nèi)核信息(比如cpu、硬盤分區(qū)、內(nèi)存信息等)存放在這里。/proc目錄偽裝的文件系統(tǒng)proc的掛載目錄,proc并不是真正的文件系統(tǒng)。(11)/rootLinux超級權(quán)限用戶root的家目錄;/sbin

大多是涉及系統(tǒng)管理的命令的存放,是超級權(quán)限用戶root的可執(zhí)行命令存放地,普通用戶無權(quán)限執(zhí)行這個目錄下的命令,這個目錄和/usr/sbin或(12)/usr/local/sbin目錄是相似的。(13)/tmp

臨時文件目錄,有時用戶運行程序的時候,會產(chǎn)生臨時文件。/tmp就用來存放臨時文件的。/var/tmp目錄和這個目錄相似。(14)/usr

這個是系統(tǒng)存放程序的目錄,比如命令、幫助文件等。這個目錄下有很多的文件和目錄。當我們安裝一個Linux發(fā)行版官方提供的軟件包時,大多安裝在這里。如果有涉及服務(wù)器配置文件的,會把配置文件安裝在/etc目錄中。/usr目錄下包括涉及字體目錄/usr/share/fonts,幫助目錄(15)/usr/share/man或/usr/share/doc,普通用戶可執(zhí)行文件目錄/usr/bin或/usr/local/bin。超級權(quán)限用戶root的可執(zhí)行命令存放目錄,比如/usr/sbin

或/usr/local/sbin

等;還有程序的頭文件存放目錄/usr/include。47ppt課件(16)/var

這個目錄的內(nèi)容是經(jīng)常變動的,看名字就知道,我們可以理解為vary的縮寫,/var下有/var/log這是用來存放系統(tǒng)日志的目錄。/var/www目錄是定義Apache服務(wù)器站點存放目錄;/var/lib用來存放一些庫文件。(17)/etc/init.d

這個目錄是用來存放系統(tǒng)或服務(wù)器以SystemV模式啟動的腳本,這在以SystemV模式啟動或初始化的系統(tǒng)中常見。/etc/xinit.d

如果服務(wù)器是通過xinetd模式運行的,它的腳本要放在這個目錄下。/etc/rc.d

這是BSD方式啟動腳本的存放地;比如定義網(wǎng)卡,服務(wù)器開啟腳本等。48ppt課件2.移植Busybox構(gòu)建Linux根文件系統(tǒng),就是參照FHS的標準創(chuàng)建相應(yīng)的目錄,并且在其中存放各種可執(zhí)行程序,建立相關(guān)的配置文件以及相應(yīng)的庫文件。這里我們采用的是Busybox工具,它是遵循GPL協(xié)議的一個開源的工具,最初是為了Debian安裝盤編寫的,其目的是在一張軟盤上創(chuàng)建一個可引導(dǎo)的Linux系統(tǒng),可以用于安裝盤和急救盤,其大小在1.44MB以內(nèi)。它將眾多的Unix命令集合到一個可執(zhí)行文件當中,很多標準的Linux工具都可以共享很多相同的元素,這些工具被合并到一個可執(zhí)行程序中,就可以共享這些相同的元素,從而產(chǎn)生更小的可執(zhí)行程序。Busybox在設(shè)計時充分的考慮了硬件資源受限的環(huán)境,通過不同的符號鏈接來選擇到底執(zhí)行哪一個命令,這對資源緊張的嵌入式Linux系統(tǒng)來說再合適不過了。49ppt課件首先下載busybox,http://,這里我們用的是busybox-1.3.0,解壓縮以后,修改Makefile文件移植前ARCH ?=&(SUBARCH)移植后ARCH ?=arm指定交叉編譯器:移植前CROSS_COMPILE ?=移植后CROSS_COMPILE ?=arm-linux-50ppt課件3.構(gòu)建Linux根文件系統(tǒng)[1]首先建立etc目錄和一些基本的配置文件。mkdir-petc/init.d/&&touchetc/inittab&&touchetc/init.d/rcS&&touchetc/fstab&&touchetc/resolv.conf[2]參考busyboxexample目錄下的inittab文件編輯etc/inittab文件如下#/etc/inittab::sysinit:/etc/init.d/rcSttySAC0::askfirst:/bin/sh::ctrlaltdel:/sbin/reboot::shutdown:/bin/umount-a-r51ppt課件[3]編輯etc/init.d/rcS文件,配置ip#!/bin/shPATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/sbin/ifconfiglonetmaskupifconfigeth00netmaskuprouteadddefaultgw

mount-a然后執(zhí)行chmod755etc/init.d/rcS添加可執(zhí)行權(quán)限。52ppt課件[4]編輯etc/resolv.conf修改添加dns配置echo"nameserver">etc/resolv.conf[5]編輯etc/fstab文件,這是一個用來定義系統(tǒng)開機后自動掛載的配置文件#device mount-point type option dumpfsck orderproc /proc proc defaults 0 0ramfs /tmp

ramfs defaults 0 0sysfs /sys sysfs defaults 0 0ramfs /dev ramfs defaults 0 0var /var

ramfs defaults 0 053ppt課件表13-2常見的設(shè)備節(jié)點設(shè)備節(jié)點名稱設(shè)備類型主設(shè)備號次設(shè)備號文件權(quán)限說明console字符51600控制臺mem字符11600物理內(nèi)存null字符13666空設(shè)備54ppt課件random字符18644隨機數(shù)發(fā)生器tty字符50666控制臺tty0字符40600虛擬控制臺tty1字符41600虛擬控制臺ttyS0字符464600第一個串口zero字符15666零設(shè)備55ppt課件mknod-m600consolec51mknod-m600memc11mknod-m666nullc13mknod-m644randomc18mknod-m666ttyc50mknod-m600tty0c40mknod-m600tty1c41mknod-m600ttyS0c464mknod-m666zeroc1556ppt課件[6]最后創(chuàng)建一些其他的目錄mdirprocmnt

tmpsysroot這樣一個基本的文件系統(tǒng)就已經(jīng)做好了,把做好的目錄按照FHS標準放在自建的rootfs目錄下面。現(xiàn)在需要制作YAFFS2文件系統(tǒng)映像文件,在YAFFS2源碼目錄下有一個utils目錄,下面有編譯好的mkyaffs2image的代碼,編譯好了以后就可以用來制作YAFFS2文件系統(tǒng)映像文件了。57ppt課件[7]利用mkyaffsimage工具制作根文件系統(tǒng)鏡像,例如根文件系統(tǒng)放在/nfsboot目錄下,可以執(zhí)行如下命令完成:mkyaffsimage/nfsboot

rootfs.img

把rootfs.img復(fù)制到NFS目錄后,在U-Boot控制界面就可以將鏡像下載到開發(fā)板內(nèi)存、繼而把鏡像燒入到NandFlash中,操作命令如下:nfs0x3000800005:/nfsboot/rootfs.imgnanderase0x4000000x7c00000nand

write.yaffs0x300080000x400000$(filesize)58ppt課件修改U-Boot的命令行參數(shù)以MTD2分區(qū)作為根文件系統(tǒng),設(shè)置如下:setenv

bootargs‘noinitrdconsole=ttySAC0root=/dev/mtdblock2rootfstype=yaffs’saveenv啟動開發(fā)板就可以了。當開發(fā)測試時,可以設(shè)置U-Boot從NFS啟動,這時的設(shè)置為:setenv

bootargs"console=ttySAC0init=/linuxrc

mem=64Mroot=/dev/nfs

rw

nfsroot=05:/nfsboot,proto=tcp,nfsvers=3,nolockip=00:05:05::wenjun24x0:eth0:off"setenv

bootcmd"nfs0x3000800005:/nfsboot/uImage;bootm"saveenv59ppt課件13.4Tiny-X及應(yīng)用程序移植

13.4.1LinuxX圖形系統(tǒng)和嵌入式X13.4.2配置編譯Tiny-X13.4.3編譯Matchbox13.4.4編譯VNCViewer13.4.5編譯Xterm

60ppt課件13.4.1LinuxX圖形系統(tǒng)和嵌入式XX窗口系統(tǒng)(XWindowingSystem)提供了Linux桌面圖形系統(tǒng)。X系統(tǒng)中的窗口環(huán)境采用客戶端/服務(wù)端(C/S)模式。X系統(tǒng)應(yīng)用程序是客戶端,它們和服務(wù)器通信,向服務(wù)器發(fā)送請求并且接收服務(wù)器發(fā)送的信息。X系統(tǒng)的服務(wù)器控制顯示和處理來自客戶端的請求。應(yīng)用程序(客戶端)只需要知道如何與服務(wù)器端通信,并不需要知道顯示設(shè)備繪制圖形的操作細節(jié)。這個通信機制(協(xié)議)能在任何提供八位字節(jié)流的進程間通信機制上工作。X使用了socket接口來達到通信協(xié)議的一致性。因為X系統(tǒng)是基于socket的,所以它可以在網(wǎng)絡(luò)中運行并且能很好遠程繪圖(Remotegraphics)。X客戶端使用X窗口系統(tǒng)提供的API在屏幕上繪制對象。這些API是函數(shù)庫X-lib中的一部分,用它連接客戶端應(yīng)用程序。

61ppt課件13.4.2配置編譯Tiny-X1、解壓縮源代碼2、建立臨時目錄3、修改和添加配置文件4、修改armtinyx/lib/X11/Makefile文件5、編譯和安裝Tiny-X6、測試Tiny-X62ppt課件1.編譯Tiny-X的依賴軟件本章編譯的所有軟件都安裝到/usr/arm目錄下,配置時指定“-prefix=/usr/arm”。它們之間也存在依賴關(guān)系,所以按照一定順序進行交叉編譯,共計14個軟件包。具體過程如下:1)zlibtarzxvfzlib-1.2.3.tar.gzcdzlib-1.2.3CC=arm-linux-gcc./configure--prefix=/usr/arm-sharedmakemakeinstall63ppt課件2)libpngtarjxvflibpng-1.2.33.tar.bz2cdlibpng-1.2.33CC=arm-linux-gcc./configure--host=arm-linux--prefix=/usr/armmakemakeinstall64ppt課件3)expattarzxvfexpat-2.0.1.tar.gzcdexpat-2.0.1CC=arm-linux-gcc./configure--host=arm-linux--prefix=/usr/armmakemakeinstall65ppt課件4)freetypetarjxvffreetype-2.3.7.tar.bz2cdfreetype-2.3.7CC=arm-linux-gcc./configure--host=arm-linux--prefix=/usr/armmakemakeinstall66ppt課件5)libxmltarzxvflibxml2-2.6.31.tar.gzcdlibxml2-2.6.31CC=arm-linux-gcc./configure--host=arm-linux--prefix=/usr/armmakemakeinstall67ppt課件6)fontconfigtarzxvffontconfig-2.6.0.tar.gzcdfontconfig-2.6.0CC=arm-linux-gccexportLIBXML2_CFLAGS=-I/usr/arm/include/libxml2exportLIBXML2_LIBS="-L/usr/arm/lib-lxml2"./configure--host=arm-linux--prefix=/usr/arm--with-arch=armmakemakeinstall68ppt課件7)libdrmtarjxvflibdrm-2.3.0.tar.bz2cdlibdrm-2.3.0CC=arm-linux-gcc./configure--host=arm-linux--prefix=/usr/armmakemakeinstall69ppt課件8)openssltarzxvfopenssl-0.9.8d.tar.gzcdopenssl-0.9.8d./Configure--prefix=/usr/arm--openssldir=/usr/arm/openssl

os/compiler:arm-linux-gccmakemakeinstall70ppt課件9)jpegtarzxvfjpegsrc.v6b.tar.gzcdjpeg-6bCC=arm-linux-gcc./configure--host=arm-linux--prefix=/usr/arm--enable-shared修改Makefile文件,AR=ar

rc

改成AR=arm-linux-ar

rc;AR2=ranlib

改成AR2=arm-linux-ranlib,接著執(zhí)行:mkdir/usr/arm/manmkdir/usr/arm/man/man1makemakeinstall71ppt課件10)glibtarzxvfglib-2.19.0.tar.gzcdglib-2.19.0exportPREFIX=/usr/armexportLDFLAGS=-L$PREFIX/libexportCFLAGS="-g-I$PREFIX/include"exportPKG_CONFIG_PATH=$PREFIX/lib/pkgconfigechoac_cv_type_long_long=yes>arm-linux.cacheechoglib_cv_stack_grows=no>>arm-linux.cacheechoglib_cv_uscore=no>>arm-linux.cacheechoac_cv_func_posix_getpwuid_r=yes>>arm-linux.cacheechoac_cv_func_posix_getgrgid_r=yes>>arm-linux.cacheCC=arm-linux-gcc

./configure--host=arm-linux--build=i386-linux--prefix=$PREFIX--cache-file=arm-linux.cachemakemakeinstall72ppt課件11)cairotarzxvfcairo-1.8.8.tar.gzcdcairo-1.8.8exportPREFIX=/usr/armCC=arm-linux-gcc

exportLDFLAGS=-L$PREFIX/libexportCFLAGS="-g-I$PREFIX/include"exportPKG_CONFIG_PATH=$PREFIX/lib/pkgconfig./configure--host=arm-linux--prefix=$PREFIX--disable-gtk-doc--disable-xcb--without-x--disable-xlib--disable-xlib-xrender--enable-directfb--enable-freetype--disable-win32--disable-svg--enable-png--enable-pdf--enable-psmakemakeinstall73ppt課件12)pangotarzxvfpango-1.20.2.tar.gzcdpango-1.20.2exportPREFIX=/usr/armexportLDFLAGS=-L$PREFIX/libexportCFLAGS="-g-I$PREFIX/include"exportPKG_CONFIG_PATH=$PREFIX/lib/pkgconfigCC=arm-linux-gcc

./configure--host=arm-linux--prefix=$PREFIX--enable-cairo--without-xmakemakeinstall74ppt課件13)atktarzxvfatk-1.24.0.tar.gzcdatk-1.24.0exportPREFIX=/usr/armexportLDFLAGS=-L$PREFIX/libexportCFLAGS="-g-I$PREFIX/include"exportPKG_CONFIG_PATH=$PREFIX/lib/pkgconfigCC=arm-linux-gcc

./configure--host=arm-linux--build=i386-linux--prefix=$PREFIXmakemakeinstall75ppt課件14)tifftarzxvftiff-3.7.4.tar.gztiff-3.7.4exportPREFIX=/usr/armCC=arm-linux-gcc

./configure--host=arm-linux--prefix=$PREFIX--enable-sharedmakemakeinstall76ppt課件2.編譯Tiny-X1、解壓縮源代碼$tarzxvfXFree86-4.6.0-src-1.tgz$tarzxvfXFree86-4.6.0-src-2.tgz$tarzxvfXFree86-4.6.0-src-3.tgz$tarzxvfXFree86-4.6.0-src-4.tgz$tarzxvfXFree86-4.6.0-src-5.tgz$tarzxvfXFree86-4.6.0-src-6.tgz$tarzxvfXFree86-4.6.0-src-7.tgz解壓后生成代碼目錄Xc。77ppt課件2、建立臨時目錄在與Xc同一個目錄下建立另外一個鏈接文件夾。$mkdir

armTinyX$cd

armTinyX$lndir../Xc/78ppt課件3、修改和添加配置文件在armTinyX/config/cf目錄下修改cross.def文件并添加host.def文件。4、修改armtinyx/lib/X11/Makefile文件找到:#if(BuildServersOnly||!BuildX11Lib)&&!XnestServer&&!BuildGLXLibrary&&!BuildClients&&!XdmXServer修改為:#if(BuildServersOnly||!BuildX11Lib)&&!XnestServer&&!BuildGLXLibrary&&!BuildClients&&!XdmXServer&&!TinyXServer79ppt課件5、編譯和安裝Tiny-X#makeWorld#makeinstall6、測試Tiny-X復(fù)制整個Tiny-X目錄到相應(yīng)的NFS目錄(/nfsboot)下,從網(wǎng)絡(luò)啟動開發(fā)板,掛載根文件系統(tǒng)后,在開發(fā)板控制終端中輸入:#cd/usr/arm/bin#./Xfbdev-mousemouse-keybdkeyboard&80ppt課件13.4.3編譯Matchbox1、下載源代碼2、逐一對上述各軟件包進行交叉編譯81ppt課件1、下載源代碼可以通過以下網(wǎng)址下載所需要的軟件包。http://matchbox-/download.html軟件包清單為:libmatchbox-1.9.tar.gz它是Matchbox的基本庫matchbox-common-0.9.1.tar.gz它中含有圖標及一些配置數(shù)據(jù)matchbox-window-manager-1.2.tar.gz它是窗口管理器matchbox-panel-0.9.3.tar.gz它是控制面板matchbox-desktop-0.9.tar.gz它是桌面管理器82ppt課件2、逐一對上述各軟件包進行交叉編譯方法與編譯Tiny-X的依賴軟件類似,這里就不詳述了。編譯結(jié)束,將安裝代碼復(fù)制到nfsboot目錄,通過網(wǎng)絡(luò)啟動,運行以下命令進行測試:#Xfbdev-mousemouse-keybdkeyboard&#exportDISPLAY=:0#exportHOME=/root#matchbox-session&matchbox-session啟動的程序有:matchbox-window-manager、matchbox-desktop、matchbox-panel;而matchbox-panel自己又啟動了mb-applet-menu-launcher和mb-applet-clock,就是桌面左下角的按鈕、右下角的時鐘。83ppt課件13.4.4編譯VNCViewer這里所移植的VNCViewer是TigerVNC,登錄http://官網(wǎng),下載tigervnc-1.0.1.tar.gz源代碼,執(zhí)行以下命令編譯:$tarzxvftigervnc-1.0.1.tar.gz$cdtigervnc-1.0.1/unix$CC=arm-linux-gcc$CXX=arm-linux-g++$./configure--host=arm-linux--x-libraries=/usr/arm/lib--x-includes=/usr/arm/include

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論