当前位置:首页 > 商业/管理/HR > 信息化管理 > 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字符,这个功能在访问名字很长的文件和目录时非常有效,可以大大提供键盘输入的速度,极为方便。三、编程时获取帮助manman,即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.tgztarczflinux-2.4.x.tgzlinux-2.4.xc参数表示压缩。解压缩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程序!”*/#includestdio.h/*文件预处理,包含标准输入输出库*/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)break21Gdb会做出如下响应:再执行run将产生如下结果可以通过设置一个观察string2[size-i]变量值的观察点来找出错误的产生原因,做法是键入如下语句:watchstring2[size-i]Gdb将做出如下反映现在可以用netx命令一步步的执行循环语句:(gdb)next经过第一次循环后,gdb告诉我们string2[size-i]的值是‘h’gdb显示的信息如下:这个值是正确的,后来的数次循环的结果也都是正确的,当i=10时,表达式等于‘e’Size–i的值等于1,最后一个字符已经拷贝到新字符串去了,如果再执行下去,会看到已经没有值分配给string2
本文标题:linux嵌入式实验指导书
链接地址:https://www.777doc.com/doc-5860393 .html