《ARM与嵌入式技术》实验讲义1 2.docx
- 文档编号:30016046
- 上传时间:2023-08-04
- 格式:DOCX
- 页数:35
- 大小:1.82MB
《ARM与嵌入式技术》实验讲义1 2.docx
《《ARM与嵌入式技术》实验讲义1 2.docx》由会员分享,可在线阅读,更多相关《《ARM与嵌入式技术》实验讲义1 2.docx(35页珍藏版)》请在冰豆网上搜索。
《ARM与嵌入式技术》实验讲义12
实验一嵌入式Linux开发环境搭建
一、实验目的
1、熟悉linux下常用命令
2、学会配置NFS系统
3、熟悉2410实验平台
4、学会linux下软件的安装
二、实验内容
安装VMwareTools和编译工具;配置linux系统和目标板的IP,目标板和linux系统的通信并完成文件共享;实现linux和XP系统间文件共享;了解LINUX系统结构;
三、预备知识
1、了解linux下常用命令
2、了解NFS
3、了解交叉编译概念
四、实验设备及工具
硬件:
2410经典嵌入式实验平台,PC机(内存至少500M),硬盘10G以上。
软件:
PC机xp系统,虚拟机,REDHATLINUX9.0。
五、实验内容与步骤
5.1安装VMtools
说明:
按ctrl+alt可以在虚拟机和XP之间切换。
1..在XP下,用鼠标点击菜单:
VM->installVMwareTools,如下图:
在虚拟机桌面点右键选择“新建终端”,输入如下命令:
[root@BCroot]#ls
anaconda-ks.cfginstall.loginstall.log.syslog
[root@BCroot]#cd/mnt/cdrom/
[root@BCcdrom]#ls
VMwareTools-6.0.0-45731.i386.rpmVMwareTools-6.0.0-45731.tar.gz
[root@BCcdrom]#cpVMwareTools-6.0.0-45731.tar.gz/opt
cp:
是否覆盖‘/opt/VMwareTools-6.0.0-45731.tar.gz’?
Y
[root@BCcdrom]#cd/opt
[root@BCopt]#ls
hostVMwareTools-6.0.0-45731.i386.rpmvmware-tools-distrib
targetVMwareTools-6.0.0-45731.tar.gz
[root@BCopt]#tar-xzvfVMwareTools-6.0.0-45731.tar.gz
用CD命令进入解压目录进行安装:
[root@BC/]#cd/opt/vmware-tools-distrib/
[root@BCvmware-tools-distrib]#ls
bindocetcFILESINSTALLinstallerlibvmware-install.pl
[root@BCvmware-tools-distrib]#./vmware-install.pl
(
5.2设置XP和LINUX文件共享
点击VM菜单,选择VirtualMachineSettings,点击“options”如下图所示:
双击对话框左侧“SharedFolderEnabled”,然后点击右下方add,选择需要在linux访问的windows下的文件夹。
同时设置操作权限为“alwaysenabled”。
(此处文件夹选择E盘下的2410文件夹:
其中基础实验在exp文件夹下面,编译工具在armv4l-tools文件夹下)需要注意的是此处也要命名linux下的文件夹的名字,我们业取名为2410.
点击OK设置完毕。
(在终端中输入如下命令查看共享是否成功)
[root@BC/]#cd/mnt/
[root@BCmnt]#ls
cdromfloppyhgfs
[root@BCmnt]#cdhgfs/
[root@BChgfs]#ls
2410--------------------------(此处显示的是你共享的文件名称)
[root@BChgfs]#
5.3配置LINUX和目标板的IP
启动后输入:
boot来启动系统,然后配置目标板ip:
[/mnt/yaffs]ifconfigeth0222.248.196.34netmask255.255.255.0
配置linux系统IP:
点击“红帽标志”,选择“系统设置”,点击网络,然后进行设置:
(此处要保证目标板和linux系统ip在同意ip段)
在点击激活按钮,如下图所示,点击是即可:
在终端下执行:
Ping222.248.196.34
如果有响应则代表配置成功。
配置NFS服务器(便于目标板访问linux系统下的文件):
如下图所示:
选择NFS,单击“添加”,出现如下所示:
点击“浏览”,双击”../”,添加所需共享文件夹(在这里我们把2410加载上去)。
选择“2410”,点确定,在接下来的对话框中“主机”一栏中填“*”,基本权限改为“读/写”。
如下图所示:
把常规选项中的第一个打上挑,如下图:
点击确定。
关闭系统防火墙:
[root@BCroot]#setup
出现如上图所示界面,选择firewallconfiguration,然后回车。
通过按上下左右选择nofirewall,然后按空格键。
再按ok键,最后退出。
5.4安装编译器
[root@BC/]#cd/mnt/hgfs/2410/
[root@BC2410]#ls
2410缁忓吀鐗堝揩閫熷紑濮嬫墜鍐?
2.0.pdfgdbrootfs
armv4l-toolsguish
developimguninstall.sh
docinstall.sh瀹為獙琛ュ厖璇存槑
editorkernel缁忓吀2410demo
expreadme.txt缁忓吀2410婕旂ず瑙嗛
(要安装的编译工具在armv4l-tools中,此处文件名显示的为乱码,设置如下:
点击“终端”-》“字符编码”,选择“Unicode“,然后在执行ls命令即可)
[root@BC2410]#ls
2410经典版快速开始手?
?
?
2.0.pdfgdbrootfs
armv4l-toolsguish
developimguninstall.sh
docinstall.sh实验补充说明
editorkernel经典2410demo
expreadme.txt经典2410演示视频
(将文件夹armv4l-tool是拷贝到opt目录下在安装)
[root@BC2410]#cp-rf/mnt/hgfs/2410/armv4l-tools/opt
[root@BC2410]#cd/opt/
[root@BCopt]#ls
armv4l-toolsVMwareTools-6.0.0-45731.tar.gzvmware-tools-distrib
[root@BCopt]#cdarmv4l-tools/
[root@BCarmv4l-tools]#ls
[root@BChost]#cd/opt/
[root@BCopt]#ls
armv4l-toolshosttargetVMwareTools-6.0.0-45731.tar.gzvmware-tools-distrib
[root@BCopt]#cdhost/
[root@BChost]#ls
armv4l
[root@BChost]#cdarmv4l/
[root@BCarmv4l]#ls
armv4l-unknown-linuxbinincludelibsrcssl
[root@BCarmv4l]#pwd
/opt/host/armv4l
[root@BCarmv4l]#gedit/etc/profile
修改如下
#Pathmanipulation
if[`id-u`=0];then
pathmunge/sbin
pathmunge/usr/sbin
pathmunge/usr/local/sbin
pathmunge/opt/host/armv4l/bin//添加如一行。
fi
保存--退出
[root@BCarmv4l]#source/etc/profile
如果生效有如下效果:
输入arm并TAB键自动出现。
[root@BCarmv4l]#armv4l-unknown-linux-
(编译代码,测试编译器)
[root@BC/]#cp-rf/mnt/hgfs/2410/exp//
[root@BC/]#ls
bindevexpinitrdlost+foundmntprocsbintmpvar
bootetchomelibmiscoptroottftpbootusr
[root@BC01_hello]#cd/exp/basic/02_pthread/
[root@BC02_pthread]#ls
Makefilepthread.c
[root@BC02_pthread]#make
armv4l-unknown-linux-gcc-c-opthread.opthread.c
armv4l-unknown-linux-gcc-o../bin/pthreadpthread.o-lpthread
armv4l-unknown-linux-gcc-opthreadpthread.o-lpthread
[root@BC02_pthread]#ls
Makefilepthreadpthread.cpthread.o(可以看到多了两个文件)
[root@BC02_pthread]#
5.5在目标系统上挂在linux下的文件
连接网线,同时执行:
ping222.248.196.33(此处为测试目标板和linux系统是否联通)
在linux里编写代码并用编译器编译后通过NFS运行调试。
结果如下:
虚拟机下:
1.。
。
[root@BC01_hello]#make
armv4l-unknown-linux-gcc-c-ohello.ohello.c
armv4l-unknown-linux-gcc-o../bin/hellohello.o
armv4l-unknown-linux-gcc-ohellohello.o
[root@BC01_hello]#ls
hellohello.chello.oMakefile
[root@BC01_hello]#
挂载:
mount-tnfs-onolock222.248.196.33:
/2410/host
目标板环境下:
[/mnt/yaffs]mount-tnfs-onolock222.248.196.33:
/2410/host
[/mnt/yaffs]ls
CardII2410int_testmplayervideo
Qtopiafingermapirdapc_cfcardweb
adfpgakbd_gpmsdcardyaffs.tar.bz2
bluetoothgps_gprskeyboardsound
caniccardlibtouchscreen
daidelost+foundtube_test
dc-motorinit.shminiprintuart485
[/mnt/yaffs]cd/host/
[/host]ls
2410
[/host]cd2410/exp/basic
[/exp/basic]ls
01_hello05_da09_dcmotorCANkuozhanbin
02_pthread06_can10_ledMakefileexp_camera
03_tty07_httpd11_intMakefile~keyboard
04_ad08_48512_pwmRules.makreadme.txt
[/exp/basic]cd01
cd:
62:
can'tcdto01
[/exp/basic]cd01_hello/
[[/exp/basic/01_hello]ls
Makefilehellohello.chello.o
[/exp/basicr/01_hello]hello直接运行完毕!
!
helloworld
[/exp/basic/01_hello]
实验二Linux程序设计基础—C环境
一、实验目的:
熟悉Linux开发环境。
学习嵌入式开发的基本过程。
了解makefile的基本内容。
二、基础知识
C语言基础知识。
掌握Linux环境下vi编译器的使用方法。
掌握Linux下的程序编译与交叉编译过程。
三、实验环境
为了完成本实验,以下硬件条件是必须的:
UP-TECHS2410P270DVP嵌入式实验平台。
Pc机Pentium500以上,硬盘40GB以上,内存128MB以上。
为了完成本实验,以下软件条件是必须的:
PC机操作系统。
RedHat,Linux9.0。
ARM-Linux开发环境。
四、实验背景知识
1、C程序设计概述
C语言和Linux操作系统之间的关系非常密切。
早在1977年,贝尔实验室的DennisRitchie就为了辅助开发Unix而发表了不依赖于具体机器系统的c语言编译文本,即著名的ANSIC。
从那时候起,C就成为世界上使用最广泛计算机语言。
2、vi编辑器使用简介
vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令。
由于对Unix及Linux系统的任何版本,vi编辑器是完全相同的,因此您可以在其他任何介绍vi的地方进一步了解它。
Vi也是Linux中最基本的文本编辑器,学会它后,您将在Linux的世界里畅行无阻。
(1)、vi的基本概念
基本上vi可以分为三种状态,分别是命令模式(commandmode)、插入模式(Insertmode)和底行模式(lastlinemode),各模式的功能区分如下:
命令行模式(commandmode)
这是执行vi后的缺省模式,此时键盘输入当作命令,且命令有大小写之区分。
该模式可以控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insertmode下,或者到lastlinemode。
插入模式(Insertmode)
命令行模式下使用a、i、o、c、r、s进入插入模式,用户输入的任何字符都被vi当做文件内容保存起来,并将其显示在屏幕上。
只有在Insertmode下,才可以做文字输入,按[ESC]键可回到命令行模式。
底行模式(lastlinemode)
在命令行模式按下:
即可进入该模式。
该模式用来进行保存文件、打开文档或环境的设定,书写有大小写之分。
比如将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号等。
不过一般我们在使用时把vi简化成两个模式,就是将底行模式(lastlinemode)也算入命令行模式commandmode)。
(2)、vi的基本操作
A、进入vi
在系统提示符号输入vi及文件名称后,就进入vi全屏幕编辑画面:
$vimyfile
有一点要特别注意,就是进入vi之后,是处于[命令行模式(commandmode)],必须要切换到[插入模式(Insertmode)]才能够输入文字。
B、切换至插入模式(Insertmode)编辑文件
在[命令行模式(commandmode)]下按一下字母[i]就可以进入[插入模式(Insertmode)],这时候你就可以开始输入文字了。
C、退出vi及保存文件
在[命令行模式(commandmode)]下,按一下[:
]冒号键进入[Lastlinemode],例如:
:
wfilename(输入[wfilename]将文章以指定的文件名filename保存)
:
wq(输入[wq],存盘并退出vi)
:
q!
(输入q!
,不存盘强制退出vi)
(3)、命令行模式(commandmode)功能键
A、插入模式
按[i]:
切换进入插入模式[insertmode],按“i”进入插入模式后是从光标当前位置开始输入文件;
B、从插入模式切换为命令行模式
按[ESC]键。
C、移动光标
vi可以直接用键盘上的光标来上下左右移动,但正规的vi是用小写英文字母[h]、[j]、[k]、[l],分别控制光标左、下、上、右移一格。
(4)、Lastlinemode下命令简介
在使用[lastlinemode]之前,请记住先按[ESC]键确定您已经处于[commandmode]下后,再按[:
]冒号即可进入[lastlinemode]。
(5)、vi命令列表
下表列出命令模式下的一些键的功能:
(略)
下表列出行命令模式下的一些指令
wfilename
储存正在编辑的文件为filename
wqfilename
储存正在编辑的文件为filename,并退出vi
q!
放弃所有修改,退出vi
setnu
显示行号
/或?
查找,在/后输入要查找的内容
n
与/或?
一起使用,如果查找的内容不是想要找的关键字,按n或向后(与/联用)或向前(与?
联用)继续查找,直到找到为止。
对于第一次用vi,有几点注意要提醒一下:
(1)用vi打开文件后,是处于[命令行模式(commandmode)],您要切换到[插入模式(Insertmode)]才能够输入文字。
切换方法:
在[命令行模式(commandmode)]下按一下字母[i]就可以进入[插入模式(Insertmode)],这时候你就可以开始输入文字了。
(2)编辑好后,需从插入模式切换为命令行模式才能对文件进行保存,切换方法:
按[ESC]键。
(3)保存并退出文件:
在命令模式下输入:
wq即可!
(别忘了wq前面的:
)
3、gcc编译器
在Linux下,一般使用GNUC编译器(GCC)进行应用程序的编译。
该编译器建立在自由软件基金会编程许可证的基础上,可以自由发布。
gcc能够编译多种语言:
C、C++和ObjectC等。
利用gcc命令可同时编译并连接C和C++源程序。
也可以对几个C源文件利用gcc编译、连接并生成可执行文件。
gcc可以使程序员灵活地控制编译过程。
编译过程一般可以分为下面四个阶段,每个阶段分别调用不同的工具进行处理
gcc的工作的四个阶段
Linux系统中可执行文件有两种格式。
第一种格式是a.out格式,这种格式用于早期的Linux系统以及Unix系统的原始格式。
a.out来自于UnixC编译程序默认的可执行文件名。
当使用共享库时,a.out格式就会发生问题。
把a.out格式调整为共享库是一种非常复杂的操作。
因此,一种新的文件格式被引入Unix系统5的第四版本和Solaris系统中。
它被称为可执行和连接的格式(ELF)。
这种格式很容易实现共享库。
ELF格式已经被Linux系统作为标准的格式采用。
gcc编译程序产生的所有的二进制文件都是ELF格式的文件(即使可执行文件的默认名仍然是a.out)。
较旧的a.out格式的程序仍然可以运行在支持ELF格式的系统上。
GNUC编译器(GCC)一般存放在/usr/bin目录下;其头文件一般存放在/usr/include及其下级子目录里;而标准的库文件则存放在/1ih或/usr/hb子目录里。
gcc命令的基本用法如下所示:
gcc[options][filenames]
说明:
在gcc后面可以有多个编译选项,同时进行多个编译操作。
很多的gcc选项包括一个以上的字符。
因此必须为每个选项指定各自的连字符。
例如,下面的两个命令是不同的:
gcc-p-gtest1.c
gcc-pgtest1.c
当你不用任何选项编译一个程序时,GCC将会建立(假定编译成功)一个名为a.out的可执行文件。
下表为常用的GCC选项
-o
-o编译选项将产生的可执行文件指定一个文件名来代替a.out。
例:
gcc–ocountcount.c
-c
告诉GCC仅把源代码编译为目标代码而跳过汇编和连接的步骤。
这个选项使用的非常频繁,因为它使得编译多个C程序时速度更快并且更易于管理。
缺省时GCC建立的目标代码文件有一个.o的扩展名。
例:
gcc–ctest2.c
-E
只运行C预编译器。
-S
编译选项告诉gcc在为C代码产生了汇编语言文件后停止编译。
-shared
生成共享目标文件。
通常用在建立共享库时。
-static
禁止使用共享连接。
在gcc中用开关-Wall控制警告信息,使用示例命令如下:
gcc–Wall-otest3_1test3_1.c
-w不生成任何警告信息。
下面为GCC的查找选项:
gcc一般使用默认路径查找头文件和库文件。
如果文件所用的头文件或库文件不在缺省目录下,则编译时要指定它们的查找路径。
-I选项:
指定头文件的搜索目录
例:
gcc–I/export/home/st–otest1test1.c
-L选项:
指定库文件的搜索目录
例:
gcc–L/usr/X11/R6/lib–otest1test1.c
gcc支持多个源文件生成一个可执行文件,方法如下:
方法1:
gcc–Wall–omytesttest1.ctest2.ctest3.c
方法2:
gcc-Wall-ctest1.c
gcc-Wall–ctest2.c
gcc-Wall–ctest3.c
gcc–omytesttest1.otest2.otest3.o
gcc的优化选项可以使GCC在耗费更多编译时间和牺牲易调试性的基础上产生更小更快的可执行文件。
这些选项中最典型的是-O和-O2选项。
-O0不进行优化处理。
-O选项:
告诉GCC对源代码进行基本优化。
这些优化在大多数情况下都会使程序执行的更快。
-O2选项:
告诉GCC产生尽可能小和尽可能快的代码。
-O2选项将使编译的速度比使用-O时慢。
但通常产生的代码执行速度会更快。
-O3选项:
比-O2更进一步优化,包括inline函数。
Gcc可以使用版本选项查看或控制编译器版本。
-v选项:
用户将会得到自己目前正在使用的gcc的版本及与版本相关的一些信息。
gcc-v将得到如下结果:
Readingspecsfrom/usr/lib/gcc-lib/i486-box-linux/2.7.2/specs
gccversion2.7.2
-V选项:
如果安装了多个版本的gcc,并且想强制执行其中的某个版本,可以用命令通知系统用户要使用的版本。
gcc-V2.6.3-v
gcc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ARM与嵌入式技术 ARM与嵌入式技术实验讲义1 ARM 嵌入式 技术 实验 讲义
