linux嵌入式实验指导书.docx

上传人:b****5 文档编号:5026821 上传时间:2022-12-12 格式:DOCX 页数:36 大小:3.67MB
下载 相关 举报
linux嵌入式实验指导书.docx_第1页
第1页 / 共36页
linux嵌入式实验指导书.docx_第2页
第2页 / 共36页
linux嵌入式实验指导书.docx_第3页
第3页 / 共36页
linux嵌入式实验指导书.docx_第4页
第4页 / 共36页
linux嵌入式实验指导书.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

linux嵌入式实验指导书.docx

《linux嵌入式实验指导书.docx》由会员分享,可在线阅读,更多相关《linux嵌入式实验指导书.docx(36页珍藏版)》请在冰豆网上搜索。

linux嵌入式实验指导书.docx

linux嵌入式实验指导书

作者:

张俊文

2014-3-10

实验一、嵌入式Linux开发环境的建立

试验目的

1、掌握如何在WINDOWS下安装虚拟机,

2、在虚拟机中安装LINXUX操作系统;

3、熟悉linux基本行命令

预备知识

绝大多数Linux软件开发都是以native方式进行的,即本机(HOST)开发、调试,本机运行的方式。

这种方式通常不适合于嵌入式系统的软件开发,因为对于嵌入式系统的开发,没有足够的资源在本机(即板子上系统)运行开发工具和调试工具。

通常的嵌入式系统的软件开发采用一种交叉编译调试的方式。

交叉编译调试环境建立在宿主机(即一台PC机)上,对应的开发板叫做目标板。

运行Linux的PC【宿主机】开发时使用宿主机上的交叉编译、汇编及连接工具形成可执行的二进制代码(这种可执行代码并不能在宿主机上执行,而只能在目标板上执行),然后把可执行文件下载到目标机上运行。

调试时的方法很多,可以使用串口,以太网口等,具体使用哪种调试方法可以根据目标机处理器提供的支持作出选择。

宿主机和目标板的处理器一般不相同,宿主机为Intel处理器,而目标板如UP-NetARM2410-S开发板为三星S3c2410.GNU编译器提供这样的功能,在编译器编译时可以选择开发所需的宿主机和目标

实验步骤:

一预备知识

Mware虚拟机安装Linux系统

VMware软件安装

使用VMware虚拟机可以在Windows系统下面再安装其他的操作系统,而不会对原有的操作系统造成任何影响。

本小节将讲述在WindowsXP上安装VMware虚拟软件。

安装好VMvare软件以后,可以使用VMware建立一个虚拟计算机。

在建立虚拟机时,需要注意虚拟硬件的设置。

下面的步骤可以建立一个虚拟机

新建了虚拟机以后,需要注意VMware使用方法。

本小节将介绍VMware中常用工具的使用方法。

常用工具提供了虚拟机的管理功能。

启动虚拟机系统以后,在虚拟机中的操作与本地计算机的操作是相似的。

在VMware安装Linux系统时,对硬盘的分区、格式化操作,都是在虚拟硬盘上进行的。

对硬盘上的数据没有任何影响。

在学习Linux安装时,可以使用VMware虚拟机进行练习。

本小节将在VMware虚拟机上安装RedHatLinux9.0系统。

完成光盘完整性检查以后,RedHatLinux9.0的图形安装界面如图

选择软件包组

完成安装

是RedHatLinux9.0的用户桌面

 

3、熟悉linux基本行命令

常用LINUX命令的使用

以下均以REDHATLINUX为例说明。

一、基本命令

ls:

显示当前目录下的所有文件和目录。

ls-a:

可以看到隐藏的文件,如以.开头的文件。

pwd:

显示当前目录路径。

ps:

列举当前TTY下所有进程

ps-A:

列举所有

cd目录名:

进入目录

mkdir目录名:

创建目录

rmdir目录名:

删除空目录

rm-rf目录名:

强行删除整个目录内容(无法恢复),其中f表示强制不进行提示,

r表示目录递归。

注:

LINUX下的文件和目录是区分大小写的。

二、TAB文件目录匹配搜索的使用

例如/usr/arm2410s,假设/目录下没有其它以arm字符开头的其它目录和文件,则要

进入这个目录,只需敲入:

cd/usr/arm

然后按下TAB键,则SHELL会自动匹配找到/usr/arm2410s目录,这样就不必完全

键入剩余的2410s字符,这个功能在访问名字很长的文件和目录时非常有效,可以大大提

供键盘输入的速度,极为方便。

三、编程时获取帮助man

man,即manunal,是UNIX系统手册的电子版本。

根据习惯,UNIX系统手册通常

分为不同的部分(或小节,即section),每个小节阐述不同的系统内容。

目前的小节划分

如下:

命令:

普通用户命令

系统调用:

内核接口

函数库调用:

普通函数库中的函数

特殊文件:

/dev目录中的特殊文件

文件格式和约定:

/etc/passwd等文件的格式

游戏。

杂项和约定:

标准文件系统布局、手册页结构等杂项内容

系统管理命令。

内核例程:

非标准的手册小节。

手册页一般保存在/usr/man目录下,其中每个子目录(如man1,man2,...,manl,mann)

包含不同的手册小节。

使用man命令查看手册页。

man命令行例子:

manrpm

四、压缩/解压缩

LINUX的软件一般是以.gz或.tar或者.tar.gz结尾的。

前者是由gzip压缩的,后者

是先用tar归档,在用gzip压缩而成的。

1、以.gz结尾的为压缩文件,用命令:

gzip-dfilename来解压,得到的文件在当前目

录中,但已没有了.gz。

2、以.tar结尾的为归档文件,用命令:

tar-xvffilename来展开,生成的文件与源文

件在同一目录中,只是少了.tar。

3、以.tar.gz结尾的文件最常见,可直接用命令:

gzip-cdfilename|tarxfv来解开。

tar的用法:

解压:

x参数表示解压

tarxzflinux-2.4.x.tgz

把一个目录linux-2.4.x压缩成一个文件:

linux-2.4.x.tgz

tarczflinux-2.4.x.tgzlinux-2.4.x

c参数表示压缩。

解压缩bz2格式压缩包

tar-xjflinux.bz2

建立bz2格式压缩包

tar-cjflinux-2.4.x.tar.bz2/develop/linux-2.4.x

软、硬盘及光驱的使用

在Linux中对其他硬盘逻辑分区、软盘,光盘的使用与我们通常在DOS与Windows中

的使用方法是不一样的,不能直接访问,因为在Linux中它们都被视为文件,因此在访问

使用前必须使用装载命令mount将它们装载到系统的/mnt目录中来,使用结束,必须进

行卸载。

命令格式如下:

mount-t文件系统类型设备名装载目录

设备名是指要装载的设备的名称,如软盘、硬盘、光盘等,软盘一般为/dev/fd0fd1,

硬盘一般为/dev/hdahdb,硬盘逻辑分区一般为期hda1hda2等等,光盘一般为/dev/hdc。

在装载前一般要在/dev/mnt目录下建立一个空的目录,如软盘为floppy,硬盘分区为其盘

符如c、d等等,光盘为cd-rom,使用命令:

mount-tmsdos/dev/fd0/mnt/floppy

装载一个mddos格式的软盘

mount-text2/dev/fd0/mnt/floppy

装载一个Linux格式的软盘

mount-tvfat/dev/hda1/mnt/c

装载Windows98格式的硬盘分区

mount-tiso9660/dev/hdc/mnt/cd-rom

装载一个光盘

装载完成之后便可对该目录进行操作,在使用新的软盘及光盘前必须退出该目录,使

用卸载命令进行卸载,方可使用新的软盘及光盘,否则系统不会承认该软盘的,光盘在卸

载前是不能用光驱面板前的弹出键退出的。

实验二、LinuxC程序设计

实验目的

1、Vi编辑器的使用

2、gcc编译器的使用,编译LinuxC程序

实验内容

一:

设计一个程序,要求在屏幕上输出“这是第一个Linuxc程序!

”。

操作步骤:

步骤1:

设计编辑源程序代码

此程序中主函数体内只有一个输出语句,printf是c语言中的输出函数。

双引号内的字条串原样输出。

“\n”是换行符。

即在输出“这是第一个Linuxc程序!

”后回车换行。

语句最后用分号结束。

编辑程序只需要用文本编辑器,Linux下最常用的文本编辑器是vim,编辑程序在终端中输出如下。

[root@localhostroot]#vimtest.c

接着依次按ESC键→i键→输入文字内容,输入程序代码如下:

/*1-1.c程序:

在屏幕上输出“这是第一个Linuxc程序!

”*/

#include/*文件预处理,包含标准输入输出库*/

intmain()/*C程序的主函数,开始入口*/

{

printf("thisismyfirstlinuxcprogram!

\n");/*在屏幕上打印输出*/

}

其中/*、*/之间的内容为注释,凡是介于/*和*/之间的文字,c的编译程序均会忽略,不予编译。

设计程序时,最好养成写注释的习惯,便于他人或自己以后阅读。

其中“#include”指定程序中用到的系统函数包含的库文件,“stdio.h”是标准输入输出库。

Main表示“主函数”,每人个c程序都必须有一个main函数,函数主体用大括弧{}括起来,语句都用分号“;”结束。

输入完Linuxc程序后的界面如图1.1所示。

图1.1输入完Linuxc程序后的界面

特别提示:

输入完成后存盘:

按ESC键→输入“:

wq”回车,输入后如果不想存盘:

按ESC键→输入“:

q!

”回车。

注意:

若读者的终端不能正常输入或显示中文,而要在vim中编辑和正确显示中文,请先设置一下终端的字体,点击终端的菜单“编辑”→“当前配置文件(U)……”,打开“编辑配置文件”对话框,勾选“与其他应用程序使用相同的字体大小”即可。

如果显示中文还有问题,点击对话框“常规”选项卡中的字体处的按钮,弹出“选择终端字体”对话框,选择“ARPLKaitiMGB”字体,设置好字体后,点击“确定”就可以在vim中正常显示和输入简体中文了。

步骤2:

编译程序

编译程序前,最好请确认c源程序文件的存在,打开Linux终端输入“ls”命令,查看当前目录下是否有test.c文件,界面如图1.2所示。

图1.2查看当前目录下的文件

接着输入如下命令,将1-1.c程序编译成可执行文件。

[root@localhostroot]#gcc1-1.c

若编译时没有出现错误信息,说明程序编译成功,界面如图1.3所示。

图1.3用gcc编译程序

步骤3:

运行程序

编译好1-1.c程序后,默认生成的可执行文件是a.out,可以看到当前目录下就新生成了a.out,若要执行这个可执行文件,输入如下:

[root@localhostroot]#./a.out

此时系统会出现运行结果,输出“这是第一个Linuxc程序!

”,终端中的显示如图1.4所示。

图1.4运行程序

由第一个简单的Linuxc程序可知,在Linux环境下的c程序设计,主要用到的工具是文本编辑器和编译器软件。

Linux下的文本编辑器软件主要有vim、gedit和Emacs,Linux下的c编译器中,gcc是功能最强大、使用最广泛的软件。

二、GDB调试例程

用gcc编译它:

gcc–ogreetgreeting.c

程序显示示结果如下:

从结果可以看出。

输出的第一行是正确的,但第二行打印出的东西并不是我们所期望的,我们期望的结果是:

thestringprintedbackwardiserehtolleh

毫无疑问,my_print2函数没有正常工作。

现在,让我们用gdb看看问题究竟出在哪能,先输入如下命令:

再输入gdbgreeting

如果输入命令时忘记了把要调试的程序作为参数传给gdb,可以在gdb提示符下用file命令加载它:

(gdb)filegreeting

现在我们可以用gdb的run命令来运行greeting,当它运行在gdb中时,结果大约会像这样:

(gdb)run

这时输出的结果与外面运行的结果一样,可是,为什么没有反序打印呢?

为找出问题所在,我们可以在my_pring2函数的for语句后没一个断点。

具体的做法是在gdb提示符下执行三次list命令,列出源程序

(gdb)list

(gdb)list

(gdb)list

第一次执行list命令的输出如下所示

第二次

第三次

根据列出的源程序,可设断点在21行,在gdb命令行提示符下输入如下命令。

设置断点:

(gdb)break21

Gdb会做出如下响应:

再执行run将产生如下结果

可以通过设置一个观察string2[size-i]变量值的观察点来找出错误的产生原因,做法是键入如下语句:

watchstring2[size-i]

Gdb将做出如下反映

现在可以用netx命令一步步的执行循环语句:

(gdb)next

经过第一次循环后,gdb告诉我们string2[size-i]的值是‘h’gdb显示的信息如下:

这个值是正确的,后来的数次循环的结果也都是正确的,当i=10时,表达式等于‘e’

Size–i的值等于1,最后一个字符已经拷贝到新字符串去了,

如果再执行下去,会看到已经没有值分配给string2[0]了,而它是新字符串的第一个字符,因为malloc函数在分配内存时把它们初始化为空字符。

这就是为什么string2没有任何输出的原因。

找出问题所在,修正这个错误也就会变得更容易,可以在代码里写入string2的第一个字符的偏移量为size-1而不是size,这是因为string2的大小为12,但起始偏移量为0,串内的字符从偏移量10,偏移量11为空字符保留。

实验三、熟悉Linux交叉开发环境配置和使用

试验目的:

1挂载光盘文件

2linux网络配置

3linux串口配置

预备知识

对于嵌入式LINUX,宿主机上的操作系统一般要求为REDHATLINUX。

嵌入式开发通常要求宿主机配置有网络,支持NFS(为交叉开发时mount所用)。

然后要在宿主机上建立交叉编译调试的开发环境。

环境的建立需要许多的软件模块协同工作,这将是一个比较繁杂的工作,但现在已通过博创嵌入式教学套件中光盘的安装而自动完成了。

开发工具软件的安装与配置

实验步骤:

1.开发工具软件的安装

将博创兴业科技有限公司提供的附带开发工具光盘插入CDROM,然后执行以下命令:

mount/dev/cdrom/mnt

若系统不识别/dev/cdrom的话,可以用如下命令,假设CDROM为从盘,即为/dev/hdb,则:

mount–tiso9660/dev/hdb/mnt

安装脚本程序将自动建立/arm2410s目录,并将所有开发软件包安装到/arm2410s目录下,

同时自动配置编译环境,建立合适的符号连接。

2.开发环境配置

配置网络,包括配置IP地址、NFS服务、防火墙。

网络配置主要是要安装好以太网卡,对于一般常见的RTL8139网卡,REDHAT9.0可以自动识别并自动安装好,完全不要用户参与,因此建议使用该网卡。

然后配置宿主机IP为192.168.0.121。

如果是在有多台计算机使用的局域网环境使用此开发设备,IP地址可以根据具体情况设置。

如图1.4.1所示:

图1.4.1网络配置

双击设备eth0的蓝色区域,进入以太网设置界面,如图1.4.2,1.4.3所示:

图1.4.2以太网常规设置界面

图1.4.3以太网路由设置界面

对于REDHAT9.0,它默认的是打开了防火墙,因此对于外来的IP访问它全部拒绝,这样其它网络设备根本无法访问它,即无法用NFSmount它,许多网络功能都将无法使用。

因此网络安装完毕后,应立即关闭防火墙。

操作如下:

点击红帽子开始菜单,选择安全级别设置,选中无防火墙。

如图1.4.4所示:

图1.4.4安全级别设置

在系统设置菜单中选择服务器设置菜单,再选中服务菜单,将iptables服务的勾去掉,并确保nfs选项选中。

配置NFS:

点击主菜单运行系统设置->服务器设置->NFS服务器(英文为:

SETUP->SYSTEM

SERVICE->NFS),点击增加出现如下在界面,在目录(Drictory):

中填入需要共享的路径,在主机(Hosts):

中填入允许进行连接的主机IP地址。

并选择允许客户对共享目录的操作为只读(Read-only)或读写(Read/write)。

如图1.4.5所示:

图1.4.5NFS基本设置

图1.4.6是对客户端存取服务器的一些其他设置,一般不需要设置,取默认值。

图1.4.6NFS用户访问设置

当将远程根用户当作本地根用户时,对于操作比较方便,但是安全性较差。

最后退出时则完成NFS配置。

配置好后,界面应显示如图1.4.7所示:

图1.4.7远程根用户当作本地根用户

图1.4.8配置好的NFS

我们也可以手工编写/etc/exports文件,其格式如下:

共享目录可以连接的主机(读写权限,其他参数)

例如:

表示将本机的/arm2410s目录共享给ip地址为192.168.0.1-192.168.0.254的所有计算

机,可以读取和写入。

配置完成后,可用如下办法简单测试一下NFS是否配置好了:

在宿主机上自己mount自己,看是否成功就可以判断NFS是否配好了。

例如在宿主机/目录下执行:

其中192.168.0.10应为主机的IP地址。

然后到/mnt/目录下看是否可以列出/arm2410s目录下的所有文件和目录,可以则说明

mount成功,NFS配置成功。

3.配置MINICOM:

1.在linux操作系统Xwindow界面下建立终端(在桌面上点击右键——>新建终端),在终端的命令行提示符后输入minicom,回车,你就会看到minicom的启动画面(见图1.4.9)

若没有启动Xwindow则在命令行提示符后直接输入minicom即可。

图1.4.9minicom启动画面

2.minicom启动后,先按Ctrl+A键,再按Z键(注意不是连续按,Ctrl+A松开后才按Z),

进入主配置界面(见图1.4.10)。

图1.4.10主配置界面

按“O”进入配置界面,如图1.4.11配置界面

图1.4.11配置界面

按上下键选择Serialportsetup,进入端口设置界面,这里有几个重要选项改为如下值(见

图1.4.12):

(在Changewhichsetting后按哪个字母就进入哪项的配置,如按A进行端口号配置。

A————SerialDevice:

/dev/ttyS0(端口号使用串口1)

E————BPS/par/bits:

/1152008N1(波特率)

F,E硬件流,软件流都改为NO,若要使用PC机的串口2来接板子的串口1做监

控,改为:

/dev/ttyS1即可。

3.选好后按ESC键退出到图1.4.11所示画面,选择Savesetupasdf1保存退出,以后只要

启动minicom就是该配置,无需再做改动。

4.配置完成后,用串口线连接好pc机和2410-S,启动2410-S,即可在minicom上看到启

动信息,并可以执行操作控制。

图1.4.12端口设置界面

Linux开发软件的安装目录结构

表格1.4.1均以/arm2410s目录为起点:

编译器安装路径说明如表1.4.2所示:

上述诸多程序的源代码都在光盘中提供.

在安装完成LINUX后,就是对LINUX的网络环境的配置,最主要是配置NFS服务器。

如果我们仔细看的话,就会发现在VMware软件界面的左下角处显示着“youdon'thaveVMwareToolsinstalled”,即我们还没安装VMwareTools。

VMwareTools有什么用呢?

VMwareTools 其实就是虚拟的显卡的驱动程序,安装以后,虚拟系统屏幕的显示效果会更好,除此之外,我在网上还发现有人说,安装以后,鼠标就可以在主、客系统之间自如地移动,而不需ctrl+alt组合键来切换(这确实有点麻烦)。

当然咯,肯定还有别的用途,小莫才疏学浅哪!

接下来就简单介绍一下怎么安装VMwareTools。

1、鼠标右击VMware界面左侧中的虚拟系统,选择“InstallVMwareTools”

注意:

虚拟机必须处在开机状态,关机时无效。

如下图:

此时会发现在Linux的桌面上出现一个光盘的图标,

这只是系统将VMwareTools的安装镜像文件加载到了虚拟光驱中,

而并不是真正地安装了VMwareTools。

如下图:

2、找到VMwareTools安装包

键点击Linux桌面,打开终端,依次输入以下命令(注意有空格):

cd/mnt/cdrom(注:

进入到虚拟光驱的文件夹里)

ls(注:

查看文件夹里的文件和子文件夹)这个时候出现的“VMwareTools-5.5.3-34685.tar.gz”即安装包名字,记住它,稍后将会用到。

如下图:

2、移动安装包,然后解压安装

在刚刚的终端中,继续输入一下命令:

cd/(注:

回到根目录)

cp/mnt/cdrom/VMwareTools-5.5.3-34685.tar.gz/tmp(注:

将安装包复制到tmp文件夹)

cd/tmp(注:

进入tmp文件夹里)

tarzxfVMwareTools-5.5.3-34685.tar.gz(注:

解压安装包)

cdvmware-tools-distrib(注:

进入解压出来的文件夹里)

./vmware-install.pl(注:

执行安装文件)

如下图:

如果你的Linux中已经安装了所有的X窗口环境和开发工具,

上述的安装过程应该比较顺利,

在安装过程中,会遇到诸如“Inwhichdirectorydoyouwanttoinstallyourbinaryfiles”这类的问题,

直接按回车就行了;

如遇到诸如带有[yes]的询问时,输入yes后按回车即可。

如下图:

安装完成以后,还会让我们配置分辨率:

DoyouwanttochangeyourguestXresolution?

[1]640x480

[2]800x600

[3]1024x768

......

我的机器能支持1280x1024,选择的是7,

自己根据自己机器的情况来决定。

设置分辨率,能使得屏幕在全屏显示下更清晰漂亮

注意,这的分辨率适用于全屏显示,

很多人可能习惯用窗口模式来操作虚拟系统(比如我),

那么就应该把分辨率设置得小些,比如800x600。

至此,VMwareTools就安装成功了,

需要重启一下虚拟机,使配置生效。

实验四Makefile文件的编写

实验目的

1、正确理解Makefile文件

2、学会使用Vi编写Makefile文件

实验内容

本次实验使用RedhatLinux9.0操作系统环境,安装ARM-Linux的开发库及编译器。

创建

一个新目录,并在其中编写hello.c和Makefile文件。

学习在Linux下的编

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 军事

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1