ARM9机器车实训平台实验指导手册_第1页
ARM9机器车实训平台实验指导手册_第2页
ARM9机器车实训平台实验指导手册_第3页
ARM9机器车实训平台实验指导手册_第4页
ARM9机器车实训平台实验指导手册_第5页
已阅读5页,还剩204页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ARM9

实验指导手册

南京邮电大学计算机学院嵌入式课程组

第一章Ubuntu8.10的安装和网络配置

1.安装虚拟机软件Vmware6.0.2

虚拟机安装版本Vmware6.0.2的版本

在winxp操作系统下用鼠标双击VMware-workstation-6.0.2-59824图标,开始安装虚拟机

Vmware,如下图所示:

名称

jdNewkeygen

VMwarorkstation_6.0.2~59824

双击VMware-workstation-6.0.2-59824图标,出现vmware的安装界面,所有的选项都采用默

认值,用鼠标点【下一步】,然后出现安装进度条,系统开始安装vmware,等待安装完成后,

出现如下安装完成界面:

用鼠标点【Finish】,虚拟机安装完成。系统提示重新启动计算机,选择【是】重新启动计

算机,电脑重新启动后,虚拟机安装完成。

2.新建虚拟机

打开Vmware虚拟机软件,选【File]->[New]->【VirtualMachine】,弹出新建虚拟机向导

对话框,注意以下几个重要的选项,其他都采用默认选项即可;

选择操作系统和版本,如下图所示:

HevVirtuallachineVizard区

SelectaGuestOperatingSystem

Whichoperatingsystemwillbeinstalledonthis

virtualmachine?

Guestoperatingsystem

OMicrosoftWindows

@Linux

ONovellNetWare

OSunSolaris

OOther

k上一步⑤)][下一步国)>j[取消]

选择虚拟机名称和存放的路径,如下图所示:

NevVirtuallachineVizard

BasetheVirtuallachine

Whatnamewouldyouliketouseforthisvirtual

machine?

Virtualmachinename

Ubuntu

Location

D:\ubuntu

k上一步起下一步国)>】[取消।

设置虚拟机硬盘大小为20G,如下图所示:

NevVirtualMachineVizard区

SpecifyDiskCapacity

Howlargedoyouwantthisdisktobe?

Diskcapacity

Thisvirtualdiskcanneverbelargerthanthemaximumcapacitythatyousethere.

Disksize(GB):|200

□Allocatealldiskspacenow.

Byallocatingthefullcapacityofthevirtualdisk,youenhanceperformanceof

yourvirtualmachine.However,thediskwilltakelongertocreateandtheremust

beenoughspaceonthehost'sphysicaldisk.

Ifyoudonotallocatediskspacenow,yourvirtualdiskfileswillstartsmallthen

becomelargerasyouaddapplications,files,anddatatoyourvirtualmachine.

□Splitdiskinto2GBfiles.

<上一步也)II完成1I取消

点击【完成】按钮,这样我们就新建了一个虚拟机,下面我们设置一下虚拟机的内存,步骤

如下:

点击虚拟机Vmware的[VM]->[settings]时菜单,弹出虚拟机设置对话框,设置虚拟机

使用的内存为512M或1024M,如下图所示:

VirtualMachineSettings

点击【OK】按钮,这样我们就新建了一个虚拟机,该虚拟机的硬盘为20G内存为512M.

接着我们就可以在该虚拟机上安装ubuntu操作系统了。

注:键盘和鼠标控制权在虚拟机和Windows系统之间的切换是通过组合键【Ctrl]+[Alt]来实现的。

3安装Linux操作系统ubuntu

Ubuntu安装版本ubuntu8.10

点击vmware软件工具栏上的【绿色箭头】启动虚拟机,如下图所示:

点击【VM】->[RemovableDevices]->[CD_ROM]->[Edit]菜单,弹出CD_ROM设备

对话框,如下图所示:

在Connection中选中【UseISOimage】,设置ubuntu软件安装包的路径,如上图所示。然后

重新启动虚拟机,开始在虚拟机上安装ubuntu操作系统。

重新启动虚拟机后,出现如下ubuniu安装界面:

Language

AmharicHebrewPolski

ArabicHindiPortuguesdoBrasil

6e/iapycKaAHrvatskiPortugues

6b/irapcKWMagyarRomana

BengaliBahasaIndonesiaPyCCKMW

BosanskiItalianoSamegillii

Catala日本^Slovencina

CestinaSlovenscina

DanskKhmerShqip

Deutsch「区3Svenska

DzongkhaKurd!Tamil

Exxn^iKotLietuviskaiThai

16s

EnglishLatvisk.1Tagalog

EsperantoMaKeaoHCKwTurkle

EspanolMalayalamyrpaiHCbKa

EestiMarathiTiengViet

EuskarazNorskbokmalHolof

SuomiNepali中文(简体)

FrancaisNederlands中文(繁勤

GalegoNorsknynorsk

GujaratiPunjabi(Gurmukhi)

选择语言版本为【English】,然后按【回车】键,出现如下安装界面:

TryUbuntuwithoutanychangetoyourcomputer

InstallUbuntu

CheckCDfordefects

Testmemory

Bootfromfirstharddisk

PressF4toselectalternativestart-upandinstallationmodes.

FlHelpF2LanguageF3KeymapF4ModesF5AccessibilityF6OtherOptions

选择InstallUbunlu,然后【回车】,开始安装Ubuntu,出现ubuntu安装进度界面如卜.:

在出现的安装向导主要设置一下城市和用户名密码,如下图所示,其余的安装对话框都采用

默认值,选择【Forward】即可。

设置安装所在城市

当出现安装所在城市对话框时,选择[ShangHai],通过选择地图上的点选择,如下图所示:

Whereareyou?

Selectacityinyourcountryandtimezone.Iftheindicatedcurrenttimeisincorrecteven

afterselectingthecorrecttimezone,youcanadjustitafterrebootingintotheinstalled

system.

Selectedcity:ShanghaiSelectedregion:China

Timezone:CST(GMT+8:00)Currenttime:03:14:44AM

Step2of7Q旦ack力Forward

设置系统的用户名和密码

系统安装过程中出现设置用户名和密码对话框时,设置登陆到ubuntu的用户名和密码,如

下图所示:

hidhilh

Whoareyou?

Whatisyourname?

cao

Whatnamedoyouwanttousetologin?

cao

ifmorethanonepersonwillusethiscomputer,youcansetupmultipleaccountsafterinstallation.

Chooseapasswordtokeepyouraccountsafe.

•••I1•••I-

Enterthesamepasswordtwice,sothatitcanbecheckedfortypingerrors.

Whatisthenameofthiscomputer?

cao-desktop

Thisnamewillbeusedifyoumakethecomputervisibletoothersonanetwork.

□Loginautomatically

炉Quit.日ackI,Eorward|

Step5of7

然后点击[Forward]按钮,在出现的最后安装向导对话框中点击[Install]按钮,开始安装

ubuntu,ubuntu安装完成后,最后出现安装完成对话框,如下图所示:

点击【Restartnow】开始重新启动ubuntu系统。在系统重启过程中出现如卜界面:

acpid:exiting

init:ttylMainprocess(21606)ki1ledbyKILLsigna1

init:ttylMainprocessended,respanning

Pleaserenovethediscandclosethetray(ifany)thenpressENTER:

提示移走光驱中的磁盘后按回车键,这时我们点击【VM]->[RemovableDevices]->

[CD_ROM]->[Edit]菜单,弹出CD_ROM设备对话框,如下图所示:

在Connection中选中【Usephysicaldrive】,点【OK】按钮,然后按【回车】即可,系统正

常启动,在出现输入用户名和密码提示框时,输入刚才在安装过程中设置的用户名和密码即

可。这样就进入了我们刚安装好的ubuntu操作系统。

3.安装Vmwaretools工具软件

Vmwaretools工具软件用于在window系统和虚拟机的ubuntu系统之间进行数据传递,安装

好Vmwaretools之后,鼠标可以在window系统和虚拟机之间平滑切换,在window系统和

虚拟机之间可以直接通过【复制】和【粘贴】的方式进行数据交换。Vmwaretools的安装步

骤如下:

1)设置Vmwaretool软件的路径为C:\ProgramFilesWMwareWMwareWorkstationMinux.iso.

点击【VM】->[RemovableDevices]->[CD_ROM]->[Edit]菜单,弹出CD_ROM设备

对话框,如下图所示:

点击【0K】确定,这时在ubuntu的桌面上出现一个光驱图标,如下图所示:

双击VmwareTools图标,打开光盘文件夹,可以看到在该光盘目录下看到

VmwareTools-6.0.2-59824.tar.gz文件,如下图所示:

Name▼SizeType

花VMwarefbols-6.0.2-59824.i386,rpm52.8MBRPMpackage

凶VMwarelbols-6.0.2-59824.tar.gz52.1MBTararchive(gz

返回系统桌面,在点击系统菜单【Places】->[HomeFolder],进入用户目录cao,在用户目

录下建立Soft目录,把VmwareTools-6.0.2-59824.tar.gz复制到Soft目录下。

在安装VmwareTools-之前我们要先解锁root用户,点击桌面系统菜单【System】->

[Administration]->[UsersandGroups],弹出用户设置对话框如下:

选中root用户,然后点击下面的【Unlock】,在点【Close]按钮关闭对话框。

接着开始设置root用户密码,点击桌面系统菜单【ApplicationsAccessories】->【Terminal],

进入用户字符终端操作界面如下图所示:

ao'-|豆丁因

FileEditViewTerminalTabsHelp

Torunacommandasadministrator(user“root”),useMsudo〈command〉”.

SeeHmansudoroot1'fordetails.

cao@cao-desktop:-$sudopasswdroot

[sudo]passwordforcao:

EnternewUNIXpassword:

RetypenewUNIXpassword:

passwd:passwordupdatedsuccessfully

cao@cao-desktop:*$su

Password:

root@cao-desktop:/home/cao#

按照上图所示输入命令sudopasswdrooi设置root用户密码;

提示passwordforcao时,输入cao用户密码;

提示EnternewUNIXpassword时,输入root用户密码;

提示RetypenewUNIXpassword时再次输入root用户密码;

最后显示password更新成功。

最后输入命令su切换到root用户,在提示Password时,输入我们刚才设置的root用户密

码即可,然后我们可以看到我们成功切换到root用户了,命令提示符由以cao开头改为以

root开头了,表示我们已经成功切换到了root用户。

安装VmwareTools工具

打开ubuntu字符操作终端,进入到Soft目录,解压VmwareTools-6.0.2-59824.tar.gz软件包,

解压完成后,我们看到在Soft目录下生成了一个新的文件夹vmware・tools・distrib,如下图所

示:

FileEditViewTerminallabsHelp

cao@cao-desktop:^$Is

DesktopDocumentsExMusicPicturesPublicSoftTemplatesVideos

cao@cao-desktop:cdSoft

cao@cao-desktop:*/Soft$Is

VMwareTools-6.0.2-59824.tar.gzvmware-tools-distrib

cao@cao-desktop:~/Soft$tarzxvfVMwareTools-6.0.2-59824.tar.gz

执行su命令切换到root用户,执行cdvmware-tools-distrib命令进入到vmware-tools-distrib

目录,执行Is命令查看该文件夹下的文件,我们可以看到vmware-tools-distrib文件夹下有

一个vmware-install.pl安装脚本文件,在操作终端下通过输入命令./vmware-install.pl执行该

脚本文件安装vmware-tools即可。如卜.图所示:

的gfe湍番第图醐击却所示滔渊咸密爵掰附百屋t曾元庭普福a

FileEditViewJerminalTabsHelp

cao@cao-desktop:*$Is

DesktopDocumentsExMusicPicturesPublicSoftTemplatesVideos

cao@cao-desktop:*$cdSoft

cao@cao-desktop:*/Soft$Is

VMwareTools-6.0.2-59824.tar.gzvmware-tools-distrib

cao@cao-desktop:*/Soft$cdvmware-tools-distrib

cao@cao-desktop:*/Soft/vmware-tools-distrib$Is

bindocetcFILESINSTALLinstallerlibvmware-install.pl

cao@cao-desktop:*/Soft/vmware-tools-distribssu

Password:

root@cao-desktop:/home/cao/Soft/vmware-tools-distrib#・/vmware-install.pl

CreatinganewVMwareToolsinstallerdatabaseusingthetar4format.

InstallingVMwareTools.

Inwhichdirectorydoyouwanttoinstallthebinaryfiles?

[/usr/bin]

Whatisthedirectorythatcontainstheinitdirectories(rcO.d/torc6.d/)?

[/etc]|

然后开始安装vmwareTools工具,安装过程中出现一些选项全部采用默认值,一直按【回

车】即可,最后操作终端输出如下提示安装成功信息,如下图所示:

VmwareTools安装成功后,我们就可以在Windows和虚拟机的ubuntu之间直接通过【复制】

和【粘贴】命令进行数据交换了。

#./vmware-config-tools.pl

网络配置

Ubuntu的虚拟机安装模式下的网络配置

虚拟机下安装好ubuntu之后,在[system]下点【NetworkConfiguration],弹出Network

Connections对话框:

选取Wired选项卡,选中ethO,点Edit按钮,弹出如下网络接口ethO编辑对话框:

注:如果此处没有显示ethO网络,则在windows下手工配置网络接口的IP地址,然后再重新启动虚拟机,

再进入上述网络配置对话框,一般都会出现ethO网络。

Connectionname:etho

0Connectautomatically

□Systemsetting

Wired802.lxSecurityIPv4Settings

一———j-

Method:Manual▼

Addresses

AddressNetmaskGateway,nbAdd

2024

父Routes...

在网络接口ethO编辑对话框配置ethO的IPaddress为192.168.0.220,Netmask为

,Gateway为,DNS为,配置完成后,点OK即可。

IP地址,网络掩码,网关的具体配置值需要根据实际网络环境配置。

注:如果这样配置不能上网,可以々试通过DHCP方式获取IP地址,DNS还是手动设置。

配置完成后,重新EnableNetworking即可,如下图所示:

Home

ApplicationsPlacesSystem°(

o匕0❷犯lueMar16,11:54AM?&4|

;«WnableNetwork项)

OConnectioninformation

mEditConnections...

OAbout

这样就完成了Ubuntu的网络配置,配置完成后,就可以在ubuntu里面打开浏览器上网了。

设置软件源服务器

在全球很多国家都设置有为ubuntu系统服务的服务器,上面有很多为ubuntu提供的应用软

件,我们通过设置软件源服务器,来实现在线通过网络完成软件的安装,即通过一条命令实

现软件的搜索,下载和安装,同时会安装该软件需要的依赖文件,同过在网络来安装ubuntu

上的应用软件非常方便。Ubuntu软件源服务器的设置步骤如下:

1)在桌面系统菜单上点击【System】->[Administration]->[SoftwareSource],弹出软件

源设置对话框如下:

SoftwareSources.□x

i]UbuntuSoftware^Third-PartySoftwareUpdatesAuthenticationStatistics

DownloadablefromtheInternet

HICanonical-supportedOpenSourcesoftware(main)

0Community-maintainedOpenSourcesoftware(universe)

0Proprietarydriversfordevices(restricted)

01Softwarerestrictedbycopyrightorlegalissues(multiverse)

□Sourcecode

Downloadfrom:ServerforTaiwan▼

InstallablefromCD-ROM/DVD

CdromwithUbuntu8.10UntrepidIbex1

□:Officiallysupported

Restrictedcopyright

Revert困Close

在Downloadfrom里选择软件源服务器,我们一般选择Taiwan的倒数第1或第2个服务器,

如上图所示,选择好软件源服务器后,点【Close】按钮,弹出如下对话框提示可获得的软

件包信息已经过时,需要重新更新。

点击【Reload】按钮更新可获得的软件包信息。更新完成后,我们就完成了ubuntu软件源

服务器的设置。

安装Iibncurses5-dev软件包

在ubuntu环境下,我们用命令makemenuconfig来对内核进行裁剪和配置时,需要用终端模

式下的字符菜单支持软件包libncurses5-dev,下面我们就通过网络的方式来安装

libncurses5-dev软件包,安装的前提是已经设置了软件源和ubuntu系统的网络工作正常。安

装libncurses5-dev非常简单,在终端模式下输入:叩l-getinstalllibncurses5-dev即可。如

下图所示:

FileEditViewTerminalJabsHelp

cao@cao-desktop:su

Password:

root@cao-desktop:/home/cao#apt-getinstalllibncurses5-dev

Readingpackagelists...Done

Buildingdependencytree

Readingstateinformation...Done

ThefollowingNEWpackageswillbeinstalled:

libncurses5-dev

0upgraded,1newlyinstalled,0toremoveand362notupgraded.

Needtoget1483kBofarchives.

Afterthisoperation,6480kBofadditionaldiskspacewillbeused.

Get:1http://tw.archive.ubuntu.comintrepid/mainlibncurses5-dev5.6+2007112

4-lubuntu2[1483kB]

Fetched1483kBin10s(142kB/s)

Selectingpreviouslydeselectedpackagelibncurses5-dev.

(Readingdatabase・・・99820filesanddirectoriescurrentlyinstalled.)

Unpackinglibncurses5-dev(from.../Iibncurses5-dev_5.6+20071124-lubuntu2_i3

86.deb)

Processingtriggersforman-db

SettingupLibncurses5-dev(5.6+20071124-lubuntu2)

root@cao-desktop:/home/cao#

这样,libncurses5-dev就安装好了,我们可以在终端模式下通过makemenuconfig命令来配

置和裁剪linux内核了。

安装交叉编译器arm-linux-gcc

嵌入式开发的应用程序编译好后不是在PC机上运行,而是在我们的ARM开发板上运行,

这时需要用arm-linux・gcc交叉编译器编译。安装交叉编译器非常简单,步骤如下:

1)拷贝arm-linux-gcc交叉编译器软件包arm-linux-gcc-4.3.2.tgz到/home/cao/Soft目录。

2)进入到Soft目录,在该目录下执行tarzxvfarm-linux-gcc-4.3.2.tgz-C/命令

Mffiarm-linux-gcc-4.3.2.tgz。如下图所示:

FileEditViewTerminallabsHelp

cao@cao-desktop:*$su

Password:

root@cao-desktop:/home/cao#Is

DesktopDocumentsExamplesMusicPicturesPublicSoftTemplatesVideos

root@cao-desktop:/home/cao#cdSoft

root@cao-desktop:/home/cao/Soft#Is

arm-linux-gcc-4.3.2.tgzVMwareTools-6.9.2-59824.tar.gzvmware-tools-distrib

root@cao-desktop:/home/cao/Soft#tarzxvfarm-linux-gcc-4.3.2.tgz-C/

注:c是大写,c后面有个空格

该命令执行后,将把arm-linux-gcc安装到/usr/local/arm/4.3.2目录。arm-linux-gcc编译器

安装好后,我们还要把交叉编译器arm-linux-gcc的路径加入到系统的PATH环境变量,这

样在操作终端的其他任意目录下都可以使用arm-linux-gcco设置环境变量的步骤如下:

1)在终端界面下输入gedit/root/.bashrc,编辑./bashrc文件,如下图所示:

FileEditViewTerminallabsHelp

cao@cao-desktop:-$su

Password:

root(acao-desktop:/home/cao#gedit/root/.bashrc

2)在.bashrc文件中增加如下命令把交叉编译器的路径增加到环境变量PATH中,

exportPATH=$PATH:/usr/local/arm/4.3.2/bin,然后保存推出,如下图所示:

2小皿任

FileEditViewSearchDocumentsHelp

0日▼巴总与心以双

NewOpenSavePrint...UndoRi「PasteFindReplace

(5).bashrcQI

n:

#if[-f~/.bash_aliases];then

#.~/.bash_aliases

#fi

#enablecolorsupportofIsandalsoaddhandyaliases

if["$TERM"!="dumb"];then

eval11'dircolors-b*

aliasls='Is--color=auto'

#aliasdir='Is--color=auto--format=vertical1

#aliasvdir=*Is--color=auto--format=long'

fi

exportPATH=$PATH:/usr/local/arm/4.3.2/bin|

|,

#somemoreIsaliases

#alias11='Is-I'

#aliasla='Is-A'

#aliasl='ls-CF'

#enableprogrammablecompletionfeatures(youdon'tneedtoenable

#this,ifit'salreadyenabledm/etc/bash.bashrcand/etc/profile

#sources/etc/bash.bashrc).Q

Ln62,Col43INS

重新打开终端,通过SU命令切换到root用户,输入arm-linux-gcc-v就可以看到我们安装的

交叉编译器arm-linux-gcc的版本信息了。如下图所示:

画僮面循曲[箔G尚掰畸i向Iil可/淞fi.E回因

FileEditViewTerminallabsHelp

cao@cao-desktop:*$su

Password:/

root(3cao-desktop:/home/cao#Jarm-linux-gcc-vJ

Usingbuilt-inspecs./

Target:arm-none-linux-gnueabi

Configuredwith:/scratch/julian/lite-respin/linux/src/gcc-4.3/configure--build

=i686-pc-linux-gnu--host=i686-pc-linux-gnu--target=arm-none-linux-gnueabi--en

able-threads--disable-libmudflap--disable-libssp--disable-libstdcxx-pch--wit

h-gnu-as--with-gnu-ld--enable-languages=c,C++--enable-shared--enable-symvers

=gnu--enable-_cxaatexit--with-pkgversion='SourceryG++Lite2008q3-72'--wit

h-bugurl=https://suppo/GNUToolchain/--disable-nls-prefix,

opt/codesourcery--with-sysroot=/opt/codesourcery/arm-none-linux-gnueabi/libc--

with-build-sysroot=/scratch/julian/lite-respin/linux/install/arm-none-linux-gnue

abi/libc--with-gmp=/scratch/julian/lite-respin/linux/obj/host-libs-2008q3-72-ar

m-none-linux-gnueabi-i686-pc-linux-gnu/usr--with-mpfr=/scratch/julian/lite-resp

in/linux/obj/host-libs-2008q3-72-arm-none-linux-gnueabi-i686-pc-linux-gnu/usr--

disable-libgomp--enable-poison-system-directories--with-build-time-tools=/scra

tch/julian/lite-respin/linux/install/arm-none-linux-gnueabi/bin--with-build-tim

e-tools=/scratch/julian/lite-respin/linux/install/arm-none-linux-gnueabi/bin

Threadmodel:posix

gccversion4.3.2(SourceryG++Lite2008q3-72)

root@cao-desktop:/home/cao#

我们可以看到我们的安装的gcc版本为4.3.2,到这里,我们的交叉编译器环境arm-linux-gcc

就安装好了。

第二章嵌入式Linux开发工具的使用

课程目标:

>掌握嵌入式Linux应用程序的编译、链接方法;

>掌握Linux环境下交叉编译器arm-1inux-gcc的基本用法;

>掌握Linux环境下源代码管理工具make的用法;

>掌握Makefile文件的基本规则:

本章我们通过一个具体的实例来详细说明嵌入式linux环境下应用程序的开发过程,包括嵌

入式linux环境下源代码编写,编译,链接,应用程序从主机下载到目标机,以及应用程序

在目标机的运行整个过程,从而使学员掌握在嵌入式linux环境下开发应用程序的基本方法

和步骤。

项目描述:要求编写一个学生信息管理应用程序,能从键盘输入学生学号,姓名,成绩,按

照成绩排名,然后再输出到电脑屏幕上。

一、源代码规划和编写

这个应用程序虽然简单,但为了联系多目录情况卜的Makefile文件编写方法,我们对该项

目的源代码做如下规划:

1)总的源代码目录为stumgr,里面包括所以与该项目相关的文件和目录,stumgr包括

include,sort,inout三个目录和main.c、Makefile、Rules.make;

2)include目录里包括头文件main.h;

3)sort目录里面包括stusort.c和Makefile

4)inout目录里面包括input.c和output.c和Makefile

stumgr项目源代码组织结构图如下图所示:

源代码目录stumgr下的Makefile文件负责最终的可执行文件的生成。其他各个目录下的

Makefile负责把自己目录下的.c文件编译成目标文件.0。

各个文件的源代码请参考项目源码包。

二、Makefile文件编写

顶层目录stumgr下的Makefile文件内容如下:

#MakefileforTopdirectory

includeRules.make

#gettheallsourcefileandobjectfile

#$@presentthewholetargetfilename

#$<presentthefirstdependentfile

SRCS:=$(wildcard*.c)

OBJS:=$(patsubst%.c,%.o,$(SRCS))

stuinfomg:$(OBJS)src

$(CC)-o$®$(OBJS)inout/stuinout.osort/stus.o

#shoulduse$(MAKE)varibletoinvokedirectoryMakefile,$(MAKE)islikemake

src:

$(MAKE)-Cinout

$(MAKE)-Csort

%.o:%.c

$(CC)-c-o$@$<

clean:

rm-rf*.o

rmstuinfomg

$(MAKE)-Cinoutclean

$(MAKE)-Csortclean

Sort目录下的Makefile文件内容:

#Makefileforsortdirectory

include/home/cao/ShiYan/stumgr/Rules.make

#usefunctioninmakefile,SRCSpresendallcsourcefile

SRCS:=$(wildcard*.c)

#OBJSpresendallobjectfilefromcsourcefile

OBJS:=$(patsubst%.c,%.o,$(SRCS))

#allobjectfileinsortwilllinktostus.ofile

O.TARGET:=stus.o

$(O.TARGET):$(OBJS)

$(AR)-r-o$@$(OBJS)

#meanonlycompiletoobjectfile

%o:%.c

$(CC)-c-o$@$<

clean:

rm-rf*.o

inout目录下Makefile文件内容:

#Makefileforinoutdirectory

include/home/cao/ShiYan/stumgr/Rules.make

#usefunctioninmakefile,SRCSpresendallcsourcefile

SRCS:=$(wildcard*.c)

#OBJSpresendallobjectfilefromcsourcefile

OBJS:=$(patsubst%.c,%.o,$(SRCS))

#allobjectfileininoutwilllinktostuinout.ofile

O.TARGET:=stuinout.o

$(O.TARGET):$(OBJS)

$(AR)-r-o$®$(OBJS)

#"・c"meanonlycompiletoobjectfile

%.o:%.c

$(CC)-c-o$@$<

clean:

rm-rf*.o

编写完Makefile文件和源代码后,就可以开始编译运行程序了。

三、运行和调试

在项目顶层目录stumgr下输入make命令,开始编译该项目的各个目录下的源代码,最后链

接成一个可执行的映像文件stuinfomg。编译结果如下图所示:

FileEditViewTerminallabsHelp

root@cao-desktop:/hoine/cao/ShiYan/stumgr#臼

root@cao-desktop:/home/cao/ShiYan/stumgr#

root@cao-desktop:/home/cao/ShiYan/stumgr#

root@cao-desktop:/home/cao/ShiYan/stumgr#

root@cao-desktop:/home/cao/ShiYan/stumgr#make

gcc-c-omain.omain.c

make-Cinout

make[l]:Enteringdirectory'/home/cao/ShiYan/stumgr/inout'

gcc-c-oinput.oinput.c

gcc-c-ooutput.ooutput.c

ar-r-ostuinout.oinput.ooutput.o

ar:creatingstuinout.o

make[l]:Leavingdirectory,/home/cao/ShiYan/stumgr/inout'

make-Csort

make[l]:Enteringdirectory'/home/cao/ShiYan/stumgr/sort'

gcc-c-ostusort.ostusort.c

stusort.c:Infunction<score_sort,:

stusort.c:20:warning:incompatibleimplicitdeclarationofbuilt-infunction'm

emcpy/

ar-r-ostus.ostusort.o

ar:creatingstus.o

make[l]:Leavingdirectory'/home/cao/ShiYan/stumgr/sort'

gcc-ostuinfomgmain.oinout/stuinout.osort/stus.o

root@cao-desktop:/home/cao/ShiYan/stumgr#

我们可以看到make工具进入各个源码目录的编译过程,最后在stumgr目录下生成了可执行

的映像文件stuinfomg,在stumgr目录下输入:

./stuinfomg

就可以看到运行结果了。

第三章嵌入式Linux系统的内存管理

课程目标

>掌握嵌入式Linux系统中虚拟地址和物理地址的概念

>掌握嵌入式Linux系统中虚拟地址到物理地址转换的基本原理

>掌握对ARM体系结构CPU的内存管理单元MMU的编程

>掌握嵌入式Linux系统中内核的内存分配和释放函数的用法

一、虚拟地址和物理地址概述

任何时候,计算机上都存在一个程序能够产生的地址集合,我们称之为地址范围。这个范围

的大小由CPU的位数决定,例如一个32位的CPU,它的地址范围是O~OxFFFFFFFF(4G),

而对于一个64位的CPU,它的地址范围为O~OxFFFFFFFFFFFFFFFF(64T).这个范围就是我

们的程序能够产生的地址范围,我们把这个地址范围称为虚拟地址空间,该空间中的某一个

地址我们称之为虚拟地址。与虚拟地址空间和虚拟地址相对应的则是物理地址空间和物理地

址,大多数时候我们的系统所具备的物理地址空间只是虚拟地址空间的•个子集,这里举一

个最简单的例子直观地说明这两者,对于一台内存为256MB的32bitx86主机来说,它的虚

拟地址空间范围是O~OxFFFFFFFF(4G),而物理地址空间范围是OxOOOOOOOOO~OxOFFFFFFF

(256MB)。

如果CPU没有内存管理单元MMU,CPU则统一采用物理地址进行寻址,CPU发出物理地

址到内存总线上,直接对物理内存进行读写。如下图所示:

如果CPU有了内存管理单元MMU并启用了MMU的地址转换功能,则CPU采用虚拟地址

进行寻址,此时CPU送出的是虚拟地址而不是物理地址,虚拟地址不是直接送给内存总线

而是送给内存管理单元MMU,MMU完成虚拟地址到物理地址转换后再送到内存总线上,完

成对物理内存的读写。如下图所示:

ARM9

根据上面的分析,我们知道MMU在内存管理中的地位非常重要,MMU是位于CPU芯片

内部的存储管理单元部件,他的功能就是把CPU发出的虚拟地址转换为访问内存的物理地

址。不管CPU使用虚拟地址还是物理地址进行寻址,最终访问的都是实际的物理内存空间,

这点大家要清楚。

二、虚拟地址到物理地址的转换基本原理

ARM920tcpu使用页表来进行转换,页表由一个个条目组成,每个条目存储一段虚拟地址

对应的物理地址及访问权限,或者下一级页表的地址。

S3c2440最多会用到两级页表,以段(Section,1M)的方式进行转换时只用到一级页表,

以页(Page)的方式进行转换时用到两级页表。

页的大小有3种:大页(64KB),小页(4KB),极小页(1KB)。条目也称为描述符,有:

段描述符、大页描述符、小页描述符、极小页描述符-保存段、大页、小页、极小页的起始

物理地址;粗页表描述符、细页表描述符,它们保存二级页表的物理地址。

ARM虚拟地址到物理地址的转换过程如下图所示:

TramUtion

TT8bow©ubleSocuonbe—Section

1D«SC”por

LargoP390

Indox^dbyIndox0dby

modifiedmodiHodbos«L4rgopage

dwalvirtual

oddross

bits(31:20)bits(190)

Indexodby

modified

4096omns1MBvirtual

addross

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论