苏州理工.docx
- 文档编号:7878321
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:13
- 大小:20.75KB
苏州理工.docx
《苏州理工.docx》由会员分享,可在线阅读,更多相关《苏州理工.docx(13页珍藏版)》请在冰豆网上搜索。
苏州理工
嵌入式系统实验报告
专业:
学号:
姓名:
实验一熟悉嵌入式系统开发环境
一、实验目的
熟悉Linux开发环境,学会基于S3C2410的Linux开发环境的配置和使用。
使用Linux的armv4l-unknown-linux-gcc编译,使用基于NFS方式的下载调试,了解嵌入式开发的基本过程。
二、实验内容
本次实验使用RedhatLinux9.0操作系统环境,安装ARM-Linux的开发库及编译器。
创建一个新目录,并在其中编写hello.c和Makefile文件。
学习在Linux下的编程和编译过程,以及ARM开发板的使用和开发环境的设置。
下载已经编译好的文件到目标开发板上运行。
三、预备知识
C语言的基础知识、程序调试的基础知识和方法,Linux的基本操作。
四、实验设备及工具(包括软件调试工具)
硬件:
UP-TECHS2410/P270DVP嵌入式实验平台、PC机Pentium500以上,硬盘10G
以上。
软件:
PC机操作系统REDHATLINUX9.0+超级终端(或X-shell)+ARM-LINUX开发
环境。
五、实验步骤
连好实验箱,打开“超级终端”界面,令其为终端1,输入
minicom
对实验箱进行操作,用
ipconfig
查看实验箱IP,是192.168.0,121
再打开一个终端界面,令其为终端2,对应主机
用
ipconfig
查看主机IP,是127.0.0.1,要重新配,且要与箱子在同一网络:
ipconfigeth0192.168.0.100
再用“ipconfig”查看IP是否配成功
打开终端1,输入
ping192.168.0.100
查看是否连通,一直跳,按“Ctr+C”停止继续ping下去
打开终端2,输入如下内容新建名为fred的目录
cd/
ls
mkdirfred
ls
并将fred设共享
打开终端1,挂载fred
mount–tnfs192.168.0.100:
/fred/host
ls
cd/host
打开终端1,新建并编译file.c文件
vifile.c
在新弹出的页面输入:
#include“stdio.h”
intmain(void)
{
printf(“Hello!
/n”);
}
注,写入先按Esc键,再按“Shift+i”;保存退出先按Esc,再按“Shift+wq”
然后把file.c编译执行
gcc–omyfile1file.c
ls
./myfile1
将file.c用arm编译
armv4l–unknown—gcc–omyfile2file.c
ls
打开终端1,在箱子上用arm执行file.c
ls
./myfile2
六、实验结果分析
实验的在箱子上用arm执行的结果与箱子上一致,说明file.c文件编写正确、挂载成功以及arm使用成功。
实验三嵌入式软件设计与交叉编译
一、实验目的:
1.掌握嵌入式Linux软件设计方法原理
2.掌握Makefile文件设计方法。
3.熟悉Linux下静态库和共享库的设计
二、实验内容:
(1)编写一个带输入、输出的由5个文件组成的嵌入式软件;
(2)写好makefile文件,并上机调试;
(3)用变量指明两种编译器。
三、实验预备知识
在宿主机(PC)上建立用户开发目录,编写嵌入式程序文件,3个C文件+2个头文件。
编写Makefile文件,指明编写分别为
CC=gcc或
CC=armv4l-unknown-linux-gcc。
编译程序,并下载到实验箱上执行
mount–tnfs主机ip:
/开发目录/host。
四、实验设备及工具
硬件:
UP-NETARM2410-S嵌入式实验仪、PC机pentumn500以上、硬盘40G以上、内存大于256M。
软件:
PC机操作系统REDHATLINUX9.0、MINICOM、AMRLINUX开发环境
五、实验步骤
打开一个超级终端,输入
pwd
查看当前文件
mkdirmyname
ls
cdmyname
ls
cd/arm2410cl
ls
cdexp
ls
cdbasic
ls
cd01-hello/
ls
cd..
cd/
ls
cd/myname
ls
vimyfile.c
对main.c文件进行编译并保存退出
以main.c为主的五个文件分别如下
/*mian.c*/
#include
#include
#include"input.h"
#include"output.h"
intmain()
{
inti=0;
charname[N];
input(name)
for(i=0;i output(name); return0; } /*input.h*/ #defineN10 voidintput(char*s); /*input.c*/ #include #include voidintput(char*s) { printf("inputyourname,please: "); scanf("%s",s); } /*output.h*/ #defineM5 voidoutput(char*s); /*output.c*/ #include #include voidoutput(char*s) {printf("hello%s! \n",s);} ls gcc–cmain.c ls 用gcc对main.c编译 gcc–omyfile.cmyfile.o ls ./myfile -unknown-linux-gcc–omyfile1 打开另一个对应实验箱的终端2,输入 minicom ifconfig ping192.168.0.121 按“Ctr+C”停止ping 对系统进行设置文件共享,并关闭防火墙 对文件myname进行挂载 mount–tnfs192.168.0.121: /myname/host cd/host ls viMakefile 写make文件 cc=armv4l-unknown-linux-gcc 注,上句是用arm编译的,如果make用gcc编译直接将上句改为cc=gcc myapp: mian.oinput.ooutout.o $(cc)-omyappmain.oinput.ooutput.o main.o: main.cinput.houtput.h $(cc)-cmain.c input.o: input.c $(cc)-cinput.c output.o: output.c $(cc)-coutput.c clean: rm–rf*.omyapp 保存并退出make文件 makeclean make ls ./myapp 注上面的文件可以通过先把程序保存在txt文件中,改后缀为.c或.o,再通过虚拟机与主机的相关操作放到虚拟机 六、结果分析 make命令执行后的结果与主机执行结果一致,说明加载、编makefile成功 实验四驱动程序设计 一、实验目的: 1.学习在LINUX下进行驱动设计的原理 2.掌握使用模块方式进行驱动开发调试的过程 二、实验设备及工具: 硬件: UP-NETARM2410-S嵌入式实验仪、PC机pentumn500以上、硬盘40G以上、内存大于256M。 软件: PC机操作系统REDHATLINUX9.0、MINICOM、AMRLINUX开发环境 三、实验内容: 在PC机上编写简单的虚拟硬件驱动程序并进调试,实验驱动的各个接口函数的实现,分析并理解驱动与应用程序的交互过程。 四、所需知识 在PC(宿主机)上编译调试驱动程序。 使用arm编译器在实验箱调试驱动程序。 五、实验步骤 新建一个终端1,输入 cd/ ls cd/arm2410cl/ ls cdexp/ ls cddrivers/ ls cd01_demo/ ls cd… ls cp–rf01_demo//fred cd/fred ls videmo.c vitest ls vitest_demo.c viMakefile make pwd 共享相关文件 新建终端,配实验箱,输入 minicon ls ipconfig mount–tnfs192.168.0.100 ./fred/host/ cd/host/ ls cd01_demo/ ls pwd insmoddemo.o ./test_demo 注: 上面的demo.c额test在系统中早已编辑好 六、实验结果分析 当主机终端成功挂载后,输出的是要求的数组。 但由于部分出错,输出的数组会有部分数字是数字 实验六嵌入式GUI 一、实验目的 1.了解在Linux下安装Qt的基本步骤; 2.学会在Qt环境在X11平台下程序设计的方法; 二、实验内容 1.在本机Linux下编译和使用Qt例程; 2.在本机环境下编译和运行一个程序并显示运行结果; 三、预备知识 1.熟悉使用C++语言程序设计; 2.掌握Linux下常用编辑器的使用; 3.掌握Linux下程序编译; 4.熟悉Qt程序设计; 四、实验室设备和工具 硬件: UP-ARM2410CL、PC机Pentumn500以上,硬盘80G以上。 软件: PC机操作系统RHEL4+超级终端(或X-shell)+ARM-Linux开发环境 qt-x11-opensource-src-4.4.0.tar.gzarm-linux-gcc-3.4.6-glibc-2.3.6 五、实验步骤 编译QT-X11环境 在Trolltech公司的网站上可以下载该公司所提供的Qt/Embedded的免费版本,在安装 产品光盘以后,本次实验目录下已有要下载的文件,在/arm2410cl/gui/src下。 在做实验 前把本次实验用到的qt-x11-opensource-src-4.4.0.tar.gz文件拷贝到 /home/sprife/qt4/for_pc目录下。 实验具体目录可以自行定义,拷贝库文件: #cd/home/ #mkdirsprife #cdsprife #mkdirqt4 #cdqt4 #mkdirfor_pc #cdfor_pc #cp/arm2410cl/gui/Qt/src/qt-x11-opensource-src-4.4.0.tar.gz./ Qt本机环境的搭建需要以下几步: #tarxzvfqt-x11-opensource-src-4.4.0.tar.gz #cdqt-x11-opensource-src-4.4.0 #./configure-prefix/usr/local/Trolltech/Qt-x11-4.4.0//这里自行新建目 录Trolltech/Qt-x11-4.4.0 出现安装提示时选择yes注意大小写 #gmake #gmakeinstall ./configure是对Qt进行配置,它包括很多选项,例如可以通过添加“-no-opengl”等, 上面命令中的-prefix参数指定Qt-x11环境的安装目录。 如果想要进一步了解可以通过键 入./configure--help来获得更多的帮助信息。 gmake与gmakeinsall命令分别是编译与安装QT环境 如果上面各步都能够成功的编译通过,下面就可以通过运行Qt/Embedded自带的demo 来查看运行结果。 #cd/home/sprife/qt4/for_pc/qt-x11-opensource-src-4.4.0/examples/widgets/wiggly/ #./wiggle 将上面的步骤完成后,我们就已经建立好了在本机上开发Qt应用程序的环境,下面我 们通过编写一个“Hello”的程序来了解Qt程序设计。 Hello,Qt! 我们以一个非常简单的Qt程序开始Qt的学习。 我们首先一行行的分析代码,然后我们 将会看到怎样编译和运行这个程序。 1#include 2#include 3intmain(intargc,char*argv[]) 4{ 5QApplicationapp(argc,argv); 6QLabel*label=newQLabel("HelloQt! "); 7label->show(); 8returnapp.exec(); 9} 第1行和第2行包含了两个类的定义: QApplication和QLabel。 对于每一个Qt的类, 都会有一个同名的头文件,头文件里包含了这个类的定义。 因此,你如果在程序中使用了 一个类的对象,那么在程序中就必须包括这个头文件。 第3行是程序的入口。 几乎在使用Qt的所有情况下,main()函数只需要在把控制权转 交给Qt库之前执行一些初始化,然后Qt库通过事件来向程序告知用户的行为。 argc是命 令行变量的数量,argv是命令行变量的数组。 这是一个C/C++特征。 它不是Qt专有的,无 论如何Qt需要处理这些变量 第5行定义了一个QApplication对象App。 QApplication管理了各种各样的应用程序 的广泛资源,比如默认的字体和光标。 App的创建需要argc和argv是因为Qt支持一些自 己的命令行参数。 在每一个使用Qt的应用程序中都必须使用一个QApplication对象,并 且在任何Qt的窗口系统部件被使用之前创建此对象是必须的。 App在这里被创建并且处理 后面的命令行变量(比如在X窗口下的-display)。 请注意,所有被Qt识别的命令行参数 都会从argv中被移除(并且argc也因此而减少)。 第6行创建了一个QLabel窗口部件(widget),用来显示“Hello,Qt! ”。 在Qt和Unix 的术语中,一个窗口部件就是用户界面中一个可见的元素,它相当于Windows术语中的“容 器”加上“控制器”。 按钮(Button)、菜单(menu)、滚动条(scrollbars)和框架(frame) 都是窗口部件的例子。 窗口部件可以包含其它的窗口部件。 例如,一个应用程序界面通常 就是一个包含了QMenuBar,一些QToolBar,一个QStatusBar和其它的一些部件的窗口。 绝 大多数应用程序使用一个QMainWindow或者一个QDialog作为程序界面,但是Qt允许任何 窗口部件成为窗口。 在这个例子中,QLabel窗口部件就是作为应用程序主窗口的。 第7行使我们创建的QLabel可见。 当窗口部件被创建的时候,它总是隐藏的,必须调 用show()来使它可见。 通过这个特点我们可以在显示这些窗口部件之前定制它们,这样就 不会出现闪烁的情况。 第8行就是main()将控制权交给Qt。 在这里,程序进入了事件循环。 事件循环是一种 stand-by的模式,程序会等待用户的动作(比如按下鼠标或者是键盘)。 用户的动作将会产 生程序可以做出反应的事件(也被称为“消息”)。 程序对这些事件的反应通常是执行一个 或几个函数。 为了简单起见,我们没有在main()函数的结尾处调用delete来删除QLabel对象。 这 种内存泄露是无害的,因为像这样的小程序,在结束时操作系统将会释放程序占用的内存 堆。 下面我们来编译这个程序。 建立一个名为hello的目录,在目录下建立一个名为 hello.cpp的c++源文件,将上面的代码写入文件中。 #cd/home/sprife/ #mkdirhello #vihello.c 编辑hello.c源文件,填入上述9行代码 编译程序 #/home/sprife/qt4/for_pc/qt-x11-opensource-src-4.4.0/bin/qmake-project #/home/sprife/qt4/for_pc/qt-x11-opensource-src-4.4.0/bin/qmake #make 运行程序 #./hello Qt也支持XML。 我们可以把程序的第6行替换成下面的语句: QLabel*label=newQLabel("Hello""
");
重新编译程序,我们发现界面拥有了简单的HTML风格。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 苏州 理工
![提示](https://static.bdocx.com/images/bang_tan.gif)