杭电嵌入式实验报告.docx
《杭电嵌入式实验报告.docx》由会员分享,可在线阅读,更多相关《杭电嵌入式实验报告.docx(13页珍藏版)》请在冰豆网上搜索。
杭电嵌入式实验报告
嵌入式系统
实验一Linux的安装、Shell命令以及X窗口系统的使用
一、实验目的:
1.掌握Linux的安装
2.熟练使用Linux字符界面的常用命令
3.熟练运用Linux的在线求助系统
4.练习X窗口系统中常用的应用工具
二、实验内容:
1.Linux的安装
2.一般用户命令的使用
3.vi编辑器的使用
4.man在线帮助系统
三、实验指导与步骤:
VMWare虚拟机上安装好Linux
登录系统:
$login:
用户名
password:
不回显的密码
退出系统:
$logout,exit(注销登录)
$halt(关机)
$reboot(重新启动)
$init0(以runlevel0启动及重新启动)
1.练习Linux的常用命令主要包括:
文件处理命令、文件权限管理命令、文件查找命令、磁盘管理命令、程序管理命令、显示文本文件与字符串查找命令、压缩与解压缩命令等;
2.练习vi编辑器的使用,试试X窗口系统的Gedit文件编辑器。
GNOMEgedit文本编辑器与Windows的notepad文本编辑器功能相似,快捷键也大部分相同,又有Windows的wordpad写字板的风格,比之notepad和wordpad,gedit功能更全面,操作更便利。
3.熟练掌握man在线帮助系统,开发和编程离不开在线帮助系统。
man命令可以号称为“命令杀手”。
任何命令或重要文件都可以使用man来查询使用方法,这也是Linux最可爱之处和最完整的在线查询系统。
当遇到任何疑难杂症时,稍微“man”一下就可轻松解决问题。
RedhatLinux的X窗口系统还有更方便的在线帮助系统,只要打开“开始”菜单就能看到RedhatLinux的在线帮助系统。
RedhatLinux的在线帮助系统与MicrosoftWindows的在线帮助系统一样简单易用,甚至更胜一筹。
4.X窗口系统下的常见应用工具有文件管理器,磁盘管理器(文件系统挂接工具),设备(硬件)管理器,控制中心,网络配置工具,服务器配置工具,软件包安装卸载工具,还有集成开发环境,DDD调试器等,这些工具都容易上手。
熟悉这些工具,对你解决学习编程、开发、调试过程中经常碰到各种问题会起到事半功倍的效果。
四、实验过程
(一)文件处理命令
1、ls命令
1)$ls–a用于显示所有文件包括隐藏文件
2)$ls–l使用longformat长格式进行显示
3)$ls–F附加文件类别符号在文件名最后
4)$ls–R显示目录及其下的子目录内容
2、pwd命令
3、cp,rm,mv,mkdir命令
1)$cp复制
2)$rm删除
3)$mv–if移动文件
4)$mkdir创建目录
4、1n命令
1)$ln–s产生连接文件
(2)文件查找命令
$whereis显示文件或目录的所在位置
5、实验技巧和心得体会
遇到的问题:
1、在实验的时候,有很多代码打出来显示的都是未发现该文件之类的,结果显示不出来;
2、输入代码不灵活,在是否需要空格上经常出错,在这个软件上输入文本,也不像在其它软件上一样可以直接复制和黏贴,需要我们按部就班地输入代码;
3、由于刚开始接触嵌入式系统,对Linux的使用不灵活,对代码的掌握以及应用有待提高,比如,在刚进入界面时,就不知道该从哪里启动主界面;
解决问题:
对于Linux的使用不灵活需要我们以后每次上课以及在课外时间去多加练习,提高我们的应用能力,很多在实验过程中显示不出来结果的代码我们可以通过$manls来获得帮助,在实验过程中显示不出结果有时候是由于我们只是在熟悉代码的使用,并没有真正建立一个文件来使用代码命令,这会造成程序找不到目标文件,因此结果会出不了,我们可以尝试在一个既有的文件中操作命令代码,就可以解决这个问题。
心得:
这次实验帮助我们初步掌握了Linux的使用,熟悉了Linux界面以及代码的使用,我是在了解了基础知识之后,开始进行上机操作,其中遇到很多的难题,很多东西都是第一次接触,凭借自己去摸索练习。
其中的困难可想而知。
然而坚持就是胜利,牙一咬眼一闭坚持做下去,而通过本次实验,我感觉收获还是蛮多的。
它让我学会了如何通过自己的努力去认知一个新事物,更重要的是端正自己的学习态度,只有真正下功夫去学习,才能有收获,正所谓¡°一份耕耘,一份收获。
¡±没有付出,何谈回报呢?
再者,通过本次实验,我也学会了如何去分析问题,如何找出自己的不足,继而去排除解决问题,这就是一个自我学习的过程。
当我们通过实验去学习理论知识时,自己动手得出的结论,不仅能加深我们对嵌入式的理解,更能加深我们对此的记忆。
实验二简单程序的编译、链接、调试
一、实验目的
1.熟悉GNUgcc编译器的使用方法和常用的编译选项
2.熟悉gdb调试器的各个命令,学习如何有效的调试程序
二、实验内容
1.使用vi编辑器编写一个简单程序,输出“hello,world!
”字符串;
2.用gcc编译器编译所写的程序,练习编译器各个参数的用法;
3.用ld连接器把程序连接成可执行程序,练习连接器各个参数的用法;
4.学习用gdb调试器调试程序,练习使用断点来跟踪程序的运行,查看变量的值或地址,查看寄存器的内容,练习的调试器的各个常用命令;
三、实验指导与步骤
1.登录Linux,在终端控制台提示符下键入vi启动编辑器(或键入startx启动XWindow,通过程序组启动vi编辑器);也可以使用Gedit编辑器;
2.新建一个文件,将文件保存到您的HOME目录,文件扩展名取为*.c,vi编辑器的编辑格式将自动转换成C格式;
3.按实验内容要求,编写源代码,将代码输入刚刚新建的文件,保存;
4.提示符下键入cd$HOME,看主目录是什么;再键入ls命令查看有没有你新建的文件;
5.在提示符下键入gcc–h,查看gcc编译器的帮助信息;
6.键入gcc-c–Wallhello.c;如果编译不通过,要理解这些错误,并改正过来;警告一般无关紧要,但也要重视,警告也可能造成运行时错误;常见编译错误一般有:
函数找不到原型,符号不能解释(可能没有定义或没有包含必要的头文件),语法错误:
“””,“’”,“}”“)”,“;”等边界符不匹配,函数调用的参数类型不匹配或参数个数不对等等;
7.如果编译成功,再键入ls命令查看生成了什么文件;
8.提示符下键入ld–h,看ld连接器帮助信息。
目标文件(*.o)一般不用单独连接,所以ld连接器一般也不单独调用。
如果源代码没有任何错误,gcc不带任何编译选项,就可以把源代码编译、连接成可执行程序;
9.键入gcc–ghello.c–ohello_g,-g选项保证编译后的程序中包含了大量标准调试信息,以方便调试过程;-o选项指定了输出文件名,如果不指定文件名,默认的输出文件名就是a.out。
10.键入gdbhello_g,,调试程序。
练习查变量或寄存器的值,设断点、单步跟踪程序运行。
四、实验流程
1、vi编辑器中编译ad.c文件;
提示符下键入cd$HOME,看主目录是什么;再键入ls命令查看生成的文件;
3、由于vi编辑界面程序有误,因此在vi编辑界面将intmain()改为intmain(void),以及在程序最后的部分加上return0;再进行vi文件重新建立;
4、输入gcc–gad.c–oad,生成文件ad;并执行ls,查看生成的文件;
4、执行文件ad,显示主程序。
五、实验技巧及心得
遇到的问题:
1、刚开界面时不了解vi的用法,不知如何进入编译界面;
2、在编译状态输入代码时,经常遇到输入错误,而且,在命令方式与编译状态的切换还是无法灵活使用,在切换的时候,经常导致输入文本错误;
3、在文本编译准确输入后,程序运行出现错误,在正常情况下,程序应为正确,可是软件仍然编译不通过;
解决问题:
由于我对Linux使用掌握不足,不了解vi的用法,所以我一方面寻求老师的帮助,另一方面通过老师给我们的ppt上的内容学习,ppt上的内容非常详细,对掌握Linux很有利。
进入vi时,会首先进入命令方式(编辑方式),按下i就进入插入方式,用户输入的可视字符都添加到文件中,显示在屏幕上。
按下ESC就可以回到命令状态。
在命令方式下,所有命令都要以“:
”开始,对输入的字符,系统均作为命令来处理,如:
q代表退出,:
w表示存盘。
在编辑模式下按下“:
”就进入命令方式。
掌握了这一点,就可以在编辑方式,插入方式和命令方式三种状态下相互切换。
对程序出错,我把voidmain()改为main(),以及在程序最后的部分加上return0;
心得:
因为用惯了Windows中的Word等编辑器,在刚刚接触时总是或多或少感觉到不适应,相信经过需要一段时间的习惯之后,就能慢慢地适应它。
这次实验之所以顺利完成,很大一部分是仰赖于上节课,也就是实验一对代码的掌握以及老师的实验指导书的内容详细。
不过,也需要感谢同学和老师的及时帮助。
这次实验,我深刻地感觉到我对Linux的掌握仍然远不如其他同学,这点上我还是需要改进的,我相信如果我循序渐进,跟着老师的指导书学习,对Linux的掌握也会越来越好。
实验三makefile文件的编写
一、实验目的
1.了解Makefile的基本概念和基本结构
2.初步掌握编写简单Makefile的方法
3.初步掌握利用GNUMake编译应用程序的方法
二、实验内容
采用两种方法编写简单程序的makefile文件,并使用make命令生成可执行文件。
三、实验指导与步骤
用make命令生成可执行文件,并执行该程序。
GNUmake工作时的执行步骤如下:
1.读入所有的Makefile。
2.读入被include的其它Makefile。
3.初始化文件中的变量。
4.推导隐晦规则,并分析所有规则。
5.为所有的目标文件创建依赖关系链。
6.根据依赖关系,决定哪些目标要重新生成。
7.执行生成命令。
Makefile的基本结构
Makefile的一般结构:
target……:
dependency……
command……
结构中各部分的含义:
1)target(目标):
一个目标文件,可以是Object文件,也可以是执行文件。
还可以是一个标签(Label)。
2)dependency(依赖):
要生成目标文件(target)所依赖哪些文件
3)command(命令):
创建项目时需要运行的shell命令(注:
命令(command)部分的每行的缩进必须要使用Tab而不能使用多个空格)。
Makefile实际上是一个文件的依赖关系,也就是说,target这一个或多个的目标文件依赖于dependency中的文件,其生成规则定义在命令command中。
如果依赖文件(dependency)中有一个以上的文件比目标(target)文件要新的话,shell命令(command)所定义的命令就会被执行。
这就是Makefile的规则。
也就是Makefile中最核心的内容。
4、实验流程
1、在终端主目录下创建locating文件夹,创建init.c、sort_a.c、find.c、find_bin.c、print.c、main.c、locating.h、func.h和makefile;
2、init.c文件
3、sort_a.c文件
4、find.c文件
5、find_bin.c文件
6、print.c文件
7、main.c文件
8、locating.h文件
9、func.h文件
10、makefile文件
11、直接在终端的locating文件目录下执行make命令,生成文件
遇到的问题:
1、实验过程中遇到的一个主要问题是时间问题,由于代码较多,消耗了我两节课时间才输完代码;
2、实验的另外一个问题是经常遇到代码输错问题,这个问题细心点即可避免;
解决问题:
实验操作的时间影响我们上机实验的结果,我们一方面需要加快书写代码的速度,另一方面需要每完成一个文件就立即截图保存,除此之外,我们可以寻求便捷的方法输入代码,将代码文档拷贝在U盘中,在软件中导入U盘中的代码文档,便可以直接复制,复制的时候需要注意代码是否正确,以免出错,难以排除错误
心得:
经过几次的实验,对Linux的基础运用已经掌握更加好,但是代码输入的速度还是比较慢的,寻求到便捷的方法输入代码是我这节课比较大的一个收获。
另外,通过上机实验,我初步掌握编写简单Makefile的方法和初步掌握利用GNUMake编译应用程序的方法,编写Makefile有利于编写包含十几个甚至几百个单独模板的大程序,GNUmake可以根据Makefile中指定的规则进行工作,只要编译那些需要重新编译的文件就可以了,并且生成新的可执行代码。
由Makefile自动维护,使程序员从繁杂的维护工作中解脱出来。
这个是Makefile的一个优势所在。