版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- CCAA - 2022年12月建筑施工領(lǐng)域?qū)I(yè)答案及解析 - 詳解版(65題)
- 河北省石家莊市辛集市2025-2026學(xué)年七年級(jí)上學(xué)期期末生物學(xué)試題(含解析)
- 養(yǎng)老院志愿服務(wù)制度
- 養(yǎng)老院護(hù)理服務(wù)質(zhì)量規(guī)范制度
- 企業(yè)危廢管理制度
- 煙花爆竹倉(cāng)庫(kù)建設(shè)項(xiàng)目環(huán)評(píng)報(bào)告
- CCAA - 考前沖刺練習(xí)二答案及解析 - 詳解版(62題)
- 向上安全教育課件
- 2025年北海市殘疾人康復(fù)培訓(xùn)中心招聘筆試真題
- 苯酚丙酮裝置操作工操作水平強(qiáng)化考核試卷含答案
- 危險(xiǎn)化學(xué)品安全法解讀
- 2026元旦主題班會(huì):馬年猜猜樂(lè)新春祝福版 教學(xué)課件
- 110kV旗潘線π接入社旗陌陂110kV輸電線路施工方案(OPGW光纜)解析
- 第5章 PowerPoint 2016演示文稿制作軟件
- 王洪圖黃帝內(nèi)經(jīng)80課時(shí)講稿
- 鼎甲異構(gòu)數(shù)據(jù)同步軟件用戶手冊(cè)
- 個(gè)人借條電子版模板
- 新版FMEA(AIAG-VDA)完整版PPT可編輯FMEA課件
- 廣州自來(lái)水公司招聘筆試題
- GB/T 5023.7-2008額定電壓450/750 V及以下聚氯乙烯絕緣電纜第7部分:二芯或多芯屏蔽和非屏蔽軟電纜
- GB/T 17766-1999固體礦產(chǎn)資源/儲(chǔ)量分類
評(píng)論
0/150
提交評(píng)論