Linux基礎(chǔ)與驅(qū)動(dòng)開(kāi)發(fā)實(shí)訓(xùn)指導(dǎo)書(shū)_第1頁(yè)
Linux基礎(chǔ)與驅(qū)動(dòng)開(kāi)發(fā)實(shí)訓(xùn)指導(dǎo)書(shū)_第2頁(yè)
Linux基礎(chǔ)與驅(qū)動(dòng)開(kāi)發(fā)實(shí)訓(xùn)指導(dǎo)書(shū)_第3頁(yè)
Linux基礎(chǔ)與驅(qū)動(dòng)開(kāi)發(fā)實(shí)訓(xùn)指導(dǎo)書(shū)_第4頁(yè)
Linux基礎(chǔ)與驅(qū)動(dòng)開(kāi)發(fā)實(shí)訓(xùn)指導(dǎo)書(shū)_第5頁(yè)
已閱讀5頁(yè),還剩62頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

Linux基礎(chǔ)與驅(qū)動(dòng)開(kāi)發(fā)實(shí)訓(xùn)指導(dǎo)書(shū)

一、實(shí)習(xí)(實(shí)訓(xùn))目的和要求

目的

1.熟知Linux操作系統(tǒng);

2.熟知Linux設(shè)備驅(qū)動(dòng)基礎(chǔ);

3.熟知Linux內(nèi)核機(jī)制;

4.熟知簡(jiǎn)單Linux驅(qū)動(dòng)程序的編寫。

要求

1.能完成對(duì)Linux操作系統(tǒng)的安裝及應(yīng)用軟件的安裝和使用:

2.能對(duì)操作系統(tǒng)進(jìn)行相應(yīng)的配置.;

3.能夠完成文件系統(tǒng)的相關(guān)操作;

4.掌握Linux驅(qū)動(dòng)程序編寫的一般方法,能夠閱讀和編寫簡(jiǎn)單的Linux驅(qū)動(dòng)程序。

二、實(shí)習(xí)(實(shí)訓(xùn))內(nèi)容

(1)學(xué)會(huì)對(duì)嵌入式系統(tǒng)進(jìn)行分析、設(shè)計(jì),培養(yǎng)嵌入式系統(tǒng)底層開(kāi)發(fā)能力。

(2)掌握嵌入式Linux開(kāi)發(fā)環(huán)境的搭建方法。

(3)掌握編譯Bootloader、編譯內(nèi)核、部署文件系統(tǒng)的方法。

(4)掌握基于嵌入式Linux的ARM微處理器的簡(jiǎn)單接口驅(qū)動(dòng)程序的設(shè)計(jì)方法。

(5)加強(qiáng)各小組之間的團(tuán)隊(duì)合作精神。

三、實(shí)習(xí)(實(shí)訓(xùn))方式

■集中口分散口校內(nèi)口校外

四、實(shí)習(xí)(實(shí)訓(xùn))具體安排

(1)開(kāi)發(fā)前的準(zhǔn)備:基于Linux的開(kāi)發(fā)環(huán)境的搭建。

(2)系統(tǒng)分析:包括基于Linux驅(qū)動(dòng)程序的原理、開(kāi)發(fā)的流程。

(3)編碼實(shí)現(xiàn):根據(jù)要求對(duì)LED驅(qū)動(dòng)程序進(jìn)行編碼實(shí)現(xiàn)。

(4)測(cè)試:編寫測(cè)試程序?qū)︱?qū)動(dòng)程序進(jìn)行測(cè)試。

安排24課時(shí)時(shí)間進(jìn)行綜合實(shí)訓(xùn)。

4課時(shí)一--嵌入式Linux開(kāi)發(fā)環(huán)境的搭建方法。

3課時(shí)編譯Bootloader、編譯內(nèi)核、文件系統(tǒng)。

8課時(shí)一一基于嵌入式Linux的ARM微處理器的簡(jiǎn)單接口驅(qū)動(dòng)程序的設(shè)計(jì)和測(cè)試程序的設(shè)

計(jì)。

4課時(shí)完成實(shí)訓(xùn)

目錄

第1章設(shè)計(jì)需求1

1.1嵌入式系統(tǒng)簡(jiǎn)介1

1.2設(shè)計(jì)需求1

第2章開(kāi)發(fā)環(huán)境搭建2

2.1安裝VmwareWorkstation9軟件2

2.2在VmwareWorkstation9中安裝Linux操作系統(tǒng)(ubuntul2.04)7

2.3設(shè)置虛擬機(jī)共享11

2.4更新數(shù)據(jù)源12

2.5配置TFTP13

2.6配置NFS服務(wù)14

第3章Uboot、Linux內(nèi)核的編譯及根文件系統(tǒng)的制作15

3.1安裝交叉編譯器15

3.2網(wǎng)絡(luò)設(shè)置16

3.3安裝busybox工具17

3.4編譯Bootloader18

3.5編譯Linux內(nèi)核19

3.6制作文件系統(tǒng)27

第4章內(nèi)核與根文件系統(tǒng)的燒寫30

4.1配置超級(jí)終端30

4.2燒寫內(nèi)核34

4.3文件系統(tǒng)測(cè)試一簡(jiǎn)單的Helloword程序36

第5章Linux設(shè)備驅(qū)動(dòng)39

5.1LED設(shè)備驅(qū)動(dòng)39

5.2按鍵中斷實(shí)例41

5.3數(shù)碼管實(shí)例42

附錄代碼45

第1章設(shè)計(jì)需求

1.1嵌入式系統(tǒng)簡(jiǎn)介

嵌入式系統(tǒng)是基于單片機(jī)的一種升級(jí)版,它是以應(yīng)用為中心、以計(jì)算機(jī)技術(shù)為基礎(chǔ)、軟件硬件可裁

剪、適應(yīng)應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。我們可從幾方面來(lái)

理解嵌入式系統(tǒng):

1、嵌入式系統(tǒng)是面向用戶、面向產(chǎn)品、面向應(yīng)用的,嵌入式系統(tǒng)是與應(yīng)用緊密結(jié)合的,它具有很

強(qiáng)的專用性,必須結(jié)合實(shí)際系統(tǒng)需求進(jìn)行合理的裁減利用。嵌入式系統(tǒng)和具體應(yīng)用有機(jī)地結(jié)合在一起,

它的升級(jí)換代也是和具體產(chǎn)品同步進(jìn)行,因此嵌入式系統(tǒng)產(chǎn)品一旦進(jìn)入市場(chǎng),具有較長(zhǎng)的生命周期。

2、嵌入式系統(tǒng)是將先進(jìn)的計(jì)算機(jī)技術(shù)、半導(dǎo)體技術(shù)和電子技術(shù)和各個(gè)行業(yè)的具體應(yīng)用相結(jié)合后的

產(chǎn)物。這一點(diǎn)就決定了它必然是一個(gè)技術(shù)密集、資金密集、高度分散、不斷創(chuàng)新的知識(shí)集成系統(tǒng)。

3、嵌入式系統(tǒng)必須根據(jù)應(yīng)用需求對(duì)軟硬件進(jìn)行裁剪,滿足應(yīng)用系統(tǒng)的功能、可靠性、成本、體積

等要求。為了提高執(zhí)行速度和系統(tǒng)可靠性,嵌入式系統(tǒng)中的軟件一般都固化在存儲(chǔ)器芯片或單片機(jī)本身

中,而不是存貯于磁盤等載體中。

4、嵌入式系統(tǒng)本身不具冬自主開(kāi)發(fā)能力,即使設(shè)計(jì)完成以后用戶通常也是不能對(duì)其中的程序功能

進(jìn)行修改的,必須有一套開(kāi)發(fā)工具和環(huán)境才能進(jìn)行開(kāi)發(fā)。實(shí)際上,凡是與產(chǎn)品結(jié)合在一起的具有嵌入式

特點(diǎn)的控制系統(tǒng)都可以叫嵌入式系統(tǒng)?,F(xiàn)在人們講嵌入式系統(tǒng)時(shí),某種程度.上指近些年比較熱的具有操

作系統(tǒng)的嵌入式系統(tǒng)。

1.2設(shè)計(jì)需求

本次綜合實(shí)訓(xùn)任務(wù)主要是基于Linux的LED驅(qū)動(dòng)程序設(shè)計(jì)及完成相關(guān)的操作。大致分為兩個(gè)階段,

第一階段為環(huán)境搭建,第二部分是驅(qū)動(dòng)程序設(shè)計(jì)。

需要完成的任務(wù)是,由驅(qū)動(dòng)程序驅(qū)動(dòng)開(kāi)發(fā)板的LED燈,并且經(jīng)測(cè)試,能夠正確的點(diǎn)亮或熄滅開(kāi)發(fā)板

上的LED燈,即為完成本次實(shí)訓(xùn)任務(wù)。有能力的同學(xué),可以嘗試使用更多的方式實(shí)現(xiàn)LED控制,或者嘗

試驅(qū)動(dòng)開(kāi)發(fā)板上的其它硬件設(shè)備,如數(shù)碼管、攝像頭、觸控屏、網(wǎng)卡等等。

圖2-2典型安裝

圖2-3安裝路徑

圖2-4啟動(dòng)時(shí)檢查更新

3

圖2-5幫助提高VmwareWorkstation

VMwareWorkstationSetupj

Shortcuts

Selecttheshortcutsyouwishtoplaceonyoursystem.

CreateshortcutsforVMwareWorkstationinthefollowingpla:es:

iyDesktop

7StartMenuProgramsfolder

<Back~|區(qū)Cancel

圖2-6創(chuàng)建桌面快捷方式和開(kāi)始菜單文件夾

4

圖2-7繼續(xù)完成安裝

圖2-8安裝進(jìn)度

5

Pleasewaitwhilethewizardperformstherequestedoperation.Thismaytakeseveral

minutes.

Status:Installingpackagesonthesystem

<BackNext>Cancel

圖2-9安裝進(jìn)度

圖270安裝完成

至此安裝結(jié)束,VmwareWorkslation9軟件可以正常使用了

6

2.2在VmwareWorkstation9中安裝Linux操作系統(tǒng)(ubuntul2.04)

ubuntu是一個(gè)免費(fèi)的操作系統(tǒng),隸屬Linux類操作系統(tǒng),基于GNU/Linux設(shè)計(jì),基于Debian之上

的一個(gè)發(fā)行版。ubuntu囊括了大最精挑細(xì)選自Debian發(fā)行版的軟件包,同時(shí)保留了Debian強(qiáng)大的

軟件包管理系統(tǒng),以便簡(jiǎn)易的安裝或徹底的刪除程序。與大多數(shù)發(fā)行版附帶數(shù)量巨大的可用可不用的軟

件不同,Ubuntu的軟件包清單只包含那些高質(zhì)量的重要應(yīng)用程序。

ubuntu提供了一個(gè)健壯、功能豐富的計(jì)算環(huán)境,既適合家用又適用于商業(yè)環(huán)境。Ubuntu開(kāi)發(fā)團(tuán)隊(duì)

努力精益求精,每6個(gè)月就會(huì)發(fā)布一個(gè)版本.以提供最新最強(qiáng)大的軟件.默認(rèn)桌面環(huán)境采用GNOME.一

個(gè)UNIX和Linux主流桌面套件和開(kāi)發(fā)平臺(tái)。另一個(gè)UNIX和Linux主流桌面環(huán)境是KDE。

接下來(lái),準(zhǔn)備在VmwareWorkstation9中安裝ubuntul2.04操作系統(tǒng),安裝步驟如下圖2-11至2-16

所示:

NewVirtualMachineWizard

WelcometotheNewVirtual

MachineWizard

Whattypeofconfigurationdoyouwant?

d'Typical(recommended)

CreateaWorkstation9.0virtualmachine

inafeweasysteps.

Custom(advanced)

Createavirtualmachinewthadvanced

options,suchasaSCSIcontrollertype,

virtualdisktypeandcompatibilitywith

olderVMwareproducts.

HelpNext>Cancel

圖2Tl典型安裝

7

圖2-12選擇安裝文件圖2T3設(shè)置用戶名及密碼

8

圖2-14虛擬機(jī)安裝路徑圖2-15設(shè)置虛擬機(jī)文件結(jié)構(gòu)

9

NewVirtualMachineWizardIS

ReadytoCreateVirtualMachine

ClickFinishtocreatethevirtualmachineandstartinstallingUbuntuand

thenVMwareTools.

Thevirtualmachinewillbecreatedwiththefollowingsettings:

Ubuntu>

Name:>

Location:G:\VirtualMachines\Ubuntul2.04

Version:Workstation9.0三

OperatingSy...UbuntuJ

HardDisk:20GB,Split

a,?4a

Ilf?

CustomizeHardware...

[7Poweronthisvirtualmachineaftercreation

EZZ6a&Z)[FinishCancel

J

圖2T6完成安裝

至此ubuntul2.04操作系統(tǒng)安裝完畢,等待系統(tǒng)自動(dòng)配置完成即可,安裝完成后,會(huì)進(jìn)入ubuntu

的圖形界面,這樣我們就安裝ubuntul2.04操作系統(tǒng)完成了,可以在這個(gè)操作系統(tǒng)下進(jìn)行我們的實(shí)訓(xùn)了。

10

2.3設(shè)置虛擬機(jī)共享

在ubuntu操作系統(tǒng)安裝完畢后,啟動(dòng)ubuntu,然后在VmwareWorkstation中設(shè)置虛擬機(jī)文件夾

共享,方便以后在宿主PC以及虛擬機(jī)之間傳輸文件。具體設(shè)置如下圖:

圖2-17設(shè)置虛擬機(jī)文件共享

II

2.4更新數(shù)據(jù)源

ubuntu包含大量的服務(wù)和程序,有些服務(wù)必須聯(lián)網(wǎng)更新后才能使用,更新數(shù)據(jù)源是為了以后使用

更多服務(wù)做準(zhǔn)備工作,具體步驟如下:

(1)首先在ubuntu中打開(kāi)終端,在終端中輸入如下命令:

sudogedit/etc/apt/sources.list

(2)打開(kāi)sources,list文件后,在此文件中添加如下信息:

debhttp://mirrors.163.com/ubuntu/oneiricmainuniverserestrictedmultiverse

deb-srehttp://mirrors.163.com/ubuntu/oneiricmainuniverserestrictedmultiverse

debhttp://mirrors.163.com/ubuntu/oneiric-securityuniversemainmultiverse

restricted

deb-srchttp://niirrors.163.com/ubuntu/oneiric-securityuniversemainmultiverse

restricted

debhttp://mirrors.163.com/ubuntu/oneiric-updatesuniversemainmultiverse

restricted

debhttp://mirrors.163.com/ubuntu/oneiric-proposeduniversemainmultiverse

restricted

deb-srchttp://mirrors.163.com/ubuntu/oneiric-proposeduniversemainmultiverse

restricted

debhttp://mirrors.163.com/ubuntu/oneiric-backportsuniversemainmultiverse

restricted

deb-srchttp:〃mirrors.163.com/ubuntu/oneiric-backportsuniversemainmultiverse

restricted

deb-srchttp://mirrors.163.com/ubuntu/oneiric-updatesuniversemainmultiverse

restricted

添加完以上信息后,保存文件并退出。

(3)回到終端界面,輸入命令:

sudoapt-getupdate

開(kāi)始更新數(shù)據(jù)源,等待系統(tǒng)更新完畢即可。

12

2.5配置TFTP

TFTP的全稱是TrivialFileTransferProtocol,即簡(jiǎn)單文件傳輸協(xié)議。使用此服務(wù)傳送文件時(shí)

沒(méi)有數(shù)據(jù)校驗(yàn)、密碼驗(yàn)證,非常適合小型文件的傳輸。在通過(guò)TFTP傳送文件時(shí),需要服務(wù)端和客戶端,

對(duì)于我們嵌入式系統(tǒng)來(lái)講,服務(wù)端就是我們的宿主機(jī),下面我們來(lái)對(duì)他進(jìn)行配置:

(1)在終端中輸入命令安裝TFTP服務(wù):

sudoapt-gotinstalltftp-hpa

sudoapt-getinstalltftpd-hpa〃服務(wù)器

(2)在終端中輸入命令:sudogcdit/etc/dcfault/tftpd-hpa,打開(kāi)文件后,將文件內(nèi)容更改為

如下所示的內(nèi)容:

TFTP_USERNAME="tf卬"

TFTP_DIRECTORY^/temp/tftpboot"

TFTPADDRESS_0.0.0.0:69〃

TFTP_OPTIONS="—secure-c”

文件內(nèi)容更改完畢,保存并退出,回到終端界面

(3)重新啟動(dòng)TFTP服務(wù):

sudo/etc/init.d/tftpd-hparestart

(4)測(cè)試TFTP,首先在丁TP服務(wù)端所在目錄下新建測(cè)試文件test。,然后輸入以下命令:

tftplocalhost

tftp>gettestO

tftp>puttcstl

tflp>q

在任意目錄下,輸入以上命令,能夠正常的和tftpboot服務(wù)端進(jìn)行文件傳輸,即表示TFTP

服務(wù)已經(jīng)安裝并配置成功了,測(cè)試圖如下圖2T8所示:

root@ubuntu:/temp/tftpboot#Is

aaaaaa~bbbled6410.binulmage

root@ubuntu:/temp/tftpboot#touchtestO

root@ubuntu:/temp/tftpboot#

aaaaaa-bbbled6410.bintesteulnage

root@ubuntu:/temp/tftpboot#cd..

root@ubuntu:/temp#tftplocalhost

tftp>gettest?

tftp>q

root@ubuntu:/temp#

aaanixietube

arm-linux-gcc-4.3.2.tgzrootall.sh

busybox-1.15.2s3c6410-2.6.27-Samsung-box

busybox-1.15.2.tar.bz2s3c6410-2.6.27-samsung-box.bz2

helloworlds3c6410-cross-4.2.2-eabt.tar

leds3c6410_uboot

Xed6410_2.6.36s3c6410_uboot.bz2

led6410.binteste

ledsl

linux-2.6.36usr

linux-2.6.36.tar.bz2

root@ubuntu:/temp#■

圖2-18配置TFTP

13

2.6配置NFS服務(wù)

NFS(NetworkFileSystem)指網(wǎng)絡(luò)文件系統(tǒng),是Linux系統(tǒng)中經(jīng)常使用的一種服務(wù),NFS是一個(gè)

RPCservice,很像windows中的文件共享服務(wù)。它的設(shè)計(jì)是為了在不同的系統(tǒng)間使用,所以它的通訊

協(xié)議設(shè)計(jì)與主機(jī)及作業(yè)系統(tǒng)無(wú)關(guān)。當(dāng)使用者想用遠(yuǎn)端檔案時(shí)只要用"mount”就可把remote檔案系統(tǒng)掛接

在自己的檔案系統(tǒng)之下,使得遠(yuǎn)端的檔案在使用上和local的檔案沒(méi)兩樣。

在NFS服務(wù)中,宿主機(jī)(Servers)是被掛載(mount)端,為了遠(yuǎn)端客戶機(jī)(Clients)(如:S3C6410

目標(biāo)板)可以訪問(wèn)宿主PC機(jī)的文件,我們需要配置宿主機(jī)兩方面內(nèi)容:①打開(kāi)NFS服務(wù),②允許“指

定用戶”訪問(wèn)宿主PC機(jī)。

(1)在終端中輸入命令安裝NFS服務(wù):apt-getinstallnfs-kernel-server

(2)輸入以下命令以配置NFS服務(wù):

sudogedit/etc/exports

打開(kāi)文件后,在文件中添加如下內(nèi)容:

/temp/tftpboot/nfsroot*(insecure,rw,sync,rorootsquash)

添加完畢,保存文件并退出,繼續(xù)輸入如下命令,為NFS服務(wù)端所在目錄授予權(quán)限:

chmod777/temp/tftpboot/nfsroot

(3)重新啟動(dòng)NFS服務(wù)

sudo/etc/init.d/nfs-kernel-serverrestart

sudo/etc/init.(1/portmaprestart

(3)測(cè)試NFS服務(wù):

showmount-c

mount172.16.41.217:/temp/tftpboot/nfsroot/mnt

Is-1/mnt

14

第3章Uboot>Linux內(nèi)核的編譯及根文件系統(tǒng)的制作

3.1安裝交叉編譯器

絕大多數(shù)的Linux軟件開(kāi)發(fā)都是以native方式進(jìn)行的,即本機(jī)(HOST)開(kāi)發(fā)、調(diào)試,本機(jī)運(yùn)行的

方式。這種方式通常不適合于嵌入式系統(tǒng)的軟件開(kāi)發(fā),因?yàn)閷?duì)于嵌入式系統(tǒng)的開(kāi)發(fā),沒(méi)有足夠的資源在

本機(jī)(即開(kāi)發(fā)板上系統(tǒng))運(yùn)行開(kāi)發(fā)工具和調(diào)試工具。通常的嵌入式系統(tǒng)的軟件開(kāi)發(fā)采用一種叫做交叉編

譯調(diào)試的方式。交叉編譯調(diào)試環(huán)境建立在宿主機(jī)(即一臺(tái)PC機(jī))上,對(duì)應(yīng)的開(kāi)發(fā)板叫做目標(biāo)板。

HUB

宿主機(jī)

圖3T交叉編譯環(huán)境

開(kāi)發(fā)時(shí)使用宿主機(jī)上的交叉編譯、匯編及連接工具形成可執(zhí)行的二進(jìn)制代碼(這種可執(zhí)行代碼并不

能在宿主機(jī)上執(zhí)行,而只能在目標(biāo)板匕執(zhí)行),然后把可執(zhí)行文件下載到目標(biāo)機(jī)上運(yùn)行。調(diào)試時(shí)的方法

很多,可以使用串口、以太網(wǎng)口等,具體使用哪種調(diào)試方法可以根據(jù)目標(biāo)機(jī)處理器所提供的支持作出選

擇。宿主機(jī)和目標(biāo)板的處理器一般都不相同,宿主機(jī)為Inlel或AMD處理器,而F1標(biāo)板如S3c6410為

SAMSUNGS3c64xx處理器,GMJ編譯器提供這樣的功能,在編譯編譯器時(shí)可以選擇開(kāi)發(fā)所需的宿主機(jī)和

1=1標(biāo)機(jī)從而建立開(kāi)發(fā)環(huán)境。

宿主機(jī)上的操作系統(tǒng)一般要求安裝Linux,但Linux有多個(gè)發(fā)行版本,在此,我們使用Ubuntu作

為本系統(tǒng)的宿主機(jī)PC操作系統(tǒng),然后在宿主機(jī)上要建立交叉編譯調(diào)試的開(kāi)發(fā)環(huán)境。

嵌入式開(kāi)發(fā)通常要求宿主雙配置有網(wǎng)絡(luò),支持NFS(為交叉開(kāi)發(fā)時(shí)mount所用),支持TFTP(為下

載文件時(shí)所用)等服務(wù)。

具體步驟如下:

(1)在ubunlu終端下,將文件復(fù)制到工作目錄:

cp/mnt/hgfs/Shared/arm-linux-gcc-4.3.2.tgz/temp

(2)將arm-linux-gcc-4.3.2.tgz解壓到/usr/local/2rm目錄下:

tarxvjfarm-linux-gcc-4.3.2.tgz-C/usr/local/arm

解壓完成后,在/巧力1℃21/2口1目錄下會(huì)有剛剛解壓的4.3.2編譯器,以后可以方便的使用

此編譯器來(lái)進(jìn)行一些編譯工作了。

root@ubuntu:/usr/local/arm#Is

4.3.2

root@ubuntu:/usr/local/am#cd4.3.2

root@ubuntu:/usr/local/arm/4.3.2#Is

arn-none-ltnux-gnueabtbinlibLtbexecshare

root0ubuntu:/usr/local/arm/4.3.2#

圖3-2交叉編譯環(huán)境安裝

15

3.2網(wǎng)絡(luò)設(shè)置

橋接:虛擬機(jī)和宿主機(jī)具有不同的ip地址,適合嵌入系統(tǒng)在線開(kāi)發(fā),上網(wǎng)不方便。

NAT:虛擬機(jī)和宿主機(jī)是同樣的IP,適合上網(wǎng)安裝軟件。

設(shè)置方法:

(1)雙擊虛擬機(jī)的網(wǎng)卡切換橋接和NAT.

圖3-3更改網(wǎng)絡(luò)連接為橋接方式

(2)更改為橋接后:

sudogedit/etc/network/interfaces,打開(kāi)文件后,添加以下信息并保存退出:

autolo

ifaceloinetloopback

autoethO

ifaceethOinetstatic

address172.16.41.217

netmask255.255.255.0

network172.16.41.0

broadcast172.16.41.255

gateway172.16.41.1

(3)使用如下命令來(lái)啟動(dòng)networking服務(wù):

/etc/init.d/networkingrestart

16

3.3安裝busybox工具

在Linux內(nèi)核編譯的工作中,busybox是一個(gè)十分實(shí)用的工具,安裝busybox能為內(nèi)核編譯工作帶

來(lái)許多方便,安裝busybox很簡(jiǎn)單:

(1)復(fù)制busybox-1.15.2.tar.bz2文件到工作目錄并解壓,解壓完后進(jìn)入busybox目錄:

cpbusybox-1.15.2.tar.bz2/temp

tarxfbusybox-1.15.2.tar.bz2

cdbusybox-1.15.2

(2)修改Makefile文件:

sudogeditMakefile

CROSS_COMPILE?=/usr/local/arm/4.3.2/btn/|arm-linux-

(3)依次執(zhí)行以下命令:

make

makeinstall

這樣就完成了busybox工具的安裝,不需要做其它修改工作

「oot@ubuntu:八emp#cdbusybox-1.15.2

root@ubuntu:/temp/busybox-1.15.2#Is

appletsdebianutilsLICENSEprocps

archdocsloginuttlsREADME

archivale2fsprogsRaflutilsrunit

AUTHORSeditorsMakefilescripts

busyboxexamplesMakefile-seltnux

busybox.linksfindutilsMakefile,customshell

busybox_unstrippedincludeMakefile.flagssysklogd

busybox_unstripped.napinttMakefile.helptestsuite

busybox_unstripped.out.InstallniscutilsTODO

Config.tnINSTALLnoduttlsTODO_conftg_nonmu

console-toolslibbbnetworkingutil-ltnux

coreutilslibpwdgrpprtntutils

rootfflubuntu:/temp/busylbox-1.15.2#

圖3-4busybox安裝

17

3.4編譯Bootloader

bootloader引導(dǎo)加載程序是系統(tǒng)加電后運(yùn)行的第一段軟件代碼。PC機(jī)中的引導(dǎo)加載程序由BIOS(其

本質(zhì)就是一段固件程序)和位于硬盤MBR中的OSBootLoader(比如,LILO和GRUB等)一起組成。BIOS

在完成硬件檢測(cè)和資源分配后,將硬盤MBR中的BootLoader讀到系統(tǒng)的RAM中,然后將控制權(quán)交給OS

BootLoaderoBootLoader的主要運(yùn)行任務(wù)就是將內(nèi)核映象從硬盤上讀到RAM中,然后跳轉(zhuǎn)到內(nèi)核的入

口點(diǎn)去運(yùn)行,也即開(kāi)始啟動(dòng)操年系統(tǒng)。

步驟如下:

(1)將s3c6410_uboot.bz2解壓到任意目錄,使用cd命令進(jìn)入該目錄:

tarxfs3c6410_uboot.bz2

cds3c6410uboot

(2)修改Makefile文件:

sudogeditMakefile

在Makefile中將CROSS_COMPILE所指向的路徑修改為編譯器所在目錄,如下圖所示:

CROSS_COMPILE=/usr/local/arm/4.3.2/bin/arm-linux-

exportCROSS_COMPILE

(3)編譯uboot,在終端下分別執(zhí)行如下命令;

makedistclean

makembt6410_config

make

編譯完成后,會(huì)在uboot根目錄下生成uboot.bin文件,可以利用這個(gè)uboot.bin文件進(jìn)行

燒寫了。

root@ubuntu:/temp/s3c6410_uboot#Is

arm_conftg.mkincludenkmovt

avr32_config.mklib_armnand_spl

based_on_2O06-12-06ltb_avr32net

black?tn_conftg.mkItb2blackftnntosz_conftg.mk

boardlib_genericnios_config.mk

CHANGELOGlib二1386post

CHANGELOG-before-U-Boot-1.1.5lib_m68kppc_config.mk

Changelog_Samsungltb_mtcrobl.azeREADME

commonltb_nipsrtc

config.mklib_niosrules.mk

COPYINGltb_ntos2System.map

cpullb_ppctags

CREDITSm68k_conftg.mktools

diskMAINTAINERSu-boot

docMAKEALLu-boot.bin

driversMakefileu-boot.dis

dttMakefile-u-boot.map

examplesmtcroblaze_conftg.mku-boot.srec

fsmips_config.mk

i386_config.mknkconfig

「oot@ubuntu:/temp/s3c6410_uboot#,

圖3-5uboot編譯

18

3.5編譯Linux內(nèi)核

(1)將linux-2.6.36.bz2拷貝到工作目錄,然后解壓

tarxflinux-2.6.36.bz2

(2)進(jìn)入linux-2.6.36內(nèi)核目錄,修改Makefile

cdlinux-2.6.36

sudogeditMakefile

ARCH一?=arm

CROSS_COMPILE?=/usr/local/arm/4.3.2/bin/arm-linux-

(3)修改mach-smdk6410.c

gedit1inux-2.6.36/arch/arm/niach-s3c64xx/mach-smdk6410.c

在mach-smdk6410.c文件中添加如下內(nèi)容:

staticstructresourcesmdk6410smsc91lx_rcsourccs[]=(

[0]={

.start=S3C64XX_PA_XM0CSN5,

.end=S3C64XX_PA_XM0CSN5+SZ_64K-1,

//.start=S3C64XX_PA_SMC9115,

//.end=S3C64XX_SZ_SMC9115,

.flags=IORESOURCE.MEM,

},

[1]={

.start=S3C_EINT(10),

.end=S3C_EINT(10),

.flags=二ORESOURCE」RQ|IRQ_TYPE_LEVEL_LOW,

},

);

(4)修改linux-2.6.36內(nèi)核根目錄下的.config文件,執(zhí)行以下命令:

cplinux-2.6.36/ctreh/arm/configs/s3c6400_defconfig/temp/1inux-2.6.36/.config

這樣可以將s3c6400_defconfig中的信息復(fù)制到.config中,執(zhí)行此命令的目的是為了在核

配置中添加或修改一些信息,如串口號(hào),網(wǎng)卡驅(qū)動(dòng)等等。

(5)配置網(wǎng)卡驅(qū)動(dòng),在linux-2.6.36根目錄下執(zhí)行命令:

makemenuconfig

在新彈出的窗口中,按照下列信息進(jìn)行相應(yīng)配置。(注意:*表示該功能編譯到內(nèi)核,M表示

作為內(nèi)核模塊編譯,空格表示該功能不編譯到內(nèi)核中,即新的內(nèi)核不支持該功能)

SystemType

(2)S3CUARTtouseforlow-lcvclprocess

JNetworkingSupport

Networkingoptions:

VTCP/IPnetworking

VIP:kernellevelautoconfiguration

VIP:DHCPsupport

VIP:BOOTPsupport

JIP:RARPsupport

19

DeviceDrivers:

VNetworkingDeviceSupport

7Ethernet(10or100Mbit)

*SMSCLAN911x/LAN921x...

FileSystems:

NetWorkfilesystem

JNFSClientsupport

?JRootfilesystemonNFS

如下列圖3-6至3-17所示,修改高亮的內(nèi)容:

?C@root(2)ubuntu:/temp/linux-2.6.36

.config-LinuxKernelV2.6.36Configuration

LinuxKernelConfiguration

Arrowkeysnavigatethemenu.<Enter>selectssubmenus—>.

Highlightedlettersarchotkeys.Pressing<Y>includes,<N>excludes,

<M>modularizesfeatures.Press<Esc><Esc>toexit,<?>forHelp,</>

forSearch.Legend:[*]built-in[]excluded<M>module<>

Generalsetup—>

[*]Enableloadablemodulesupport>

-*-EnabletheblockIayer—>

stem

Bussupport—>

KernelFeatures—>

Bootoptions—>

CPUPowerManagement—>

Floatingpointemulation—>

userspacebinaryformats—>

Powermanagementoptions—>

[*]Networkingsupport—>

DeviceDrivers—>

Filesystems—>

〈Select)<Exit><Help>

圖3-6SystemType

20

croot@)ubuntu:/temp/llnux-2.6.36

.config-LinuxKernelV2.6.36Configuration

SystemType

Arrowkeysnavigatethemenu.<Enter>selectssubmenus—>.

Highlightedlettersarehotkeys.Pressing<Y>includes,<N>excludes,

<M>modularizesfeatures.Press<Esc><Esc>toexit,<?>forHelp,</>

forSearch.Legend:[*]built-in[]excluded<M>module<>

[*]MMU-basedPagedMemoryManagementSupport

ARMsystemtype(SamsungS3C64XX)—>

***Bootoptions***

[*]S3CRebootondecompressionerror

[*]ForceUARTFIFOonduringbootprocess

S3CUARTtouseforlow-levelmessages

(0)NumberofadditionalCPIOpins

(0)Spacebetweengpiobanks

[]ADCcommondriversupport

***Powermanagement***

[]S3C2410PMSuspenddebug

[]SMDKLEDsuspend/resumedebugging

[]S3C2410PMSuspendMemoryCRC

S3C64XXDMA

<Select>

圖3-7S3c串口連接更改為2

?.住root@ubuntu:/temp/llnux-2.6.36

.config-LinuxKernelV2.6.36Configuration

LinuxKernelConfiguration

Arrowkeysnavigatethemenu.<Enter>selectssubmenus—>.

Highlightedlettersarehotkeys.Pressing<Y>includes,<N>excludes,

<M>modularizesfeatures.Press<Esc><Esc>toexit,<?>forHelp,</>

forSearch.Legend:[*]built-in[]excluded<M>module<>

CPUPowerManagement

Floatingpointemulation

Userspacebinaryformats

Powermanagementoptions

Networkingsu

DeviceDrivers-

Filesystems—

Kernelhacking-

Securityoptions

-*-CryptographicAPI

Libraryroutines

LoadanAlternateConfigurationFile

SaveanAlternateConfigurationFile

〈Select:<Exit><Help>

圖3-8網(wǎng)卡配置

21

O(d?root^)ubuntu:/temp/linux-2.6.36

.config-LinuxKernelV2.6.36Configuration

Networkingsupport

Arrowkeysnavigatethemenu.<Enter>selectssubmenus—>.

Highlightedlettersarehotkeys.Pressing<Y>includes,<N>excludes,

<M>modularizesfeatures.Press<Esc><Esc>toexit,<?>forHelp,</>

forSearch.Legend:[*]built-in[]excluded<M>module<>

--Networking啰ppo「t

Networktn

[]AmateurRadiosupport>

CANbussubsystemsupport—>

IrDA(infrared)subsystemsupport—>

Bluetoothsubsystemsupport—>

RxRPCsessionsockets

Wireless—>

WiMAXWirelessBroadbandsupport—>

RFswitchsubsystemsupport—>

Plan9ResourceSharingSupport(9P2000)(Experimental)

CAIFsupport—>

〈Select<Exit><Help>

圖3-9網(wǎng)卡配置選項(xiàng)

OC)@root(2)ubuntu:/temp/linux-2.6.36

.config-LinuxKernelV2.6.36Configuration

Networkingoptions

Arrowkeysnavigatethemenu.<Enter>selectssubmenus—>.

Highlightedlettersarehotkeys.Pressing<Y>includes,<N>exclud

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論