嵌入式Linux系统开发教程实验报告.docx
- 文档编号:10573031
- 上传时间:2023-02-21
- 格式:DOCX
- 页数:37
- 大小:2.45MB
嵌入式Linux系统开发教程实验报告.docx
《嵌入式Linux系统开发教程实验报告.docx》由会员分享,可在线阅读,更多相关《嵌入式Linux系统开发教程实验报告.docx(37页珍藏版)》请在冰豆网上搜索。
嵌入式Linux系统开发教程实验报告
嵌入式实验报告
姓名:
学号:
学院:
日期:
实验一熟悉嵌入式系统开发环境
一、实验目的
熟悉Linux开发环境,学会基于S3C2410的Linux开发环境的配置和使用。
使用Linux的armv4l-unknown-linux-gcc编译,使用基于NFS方式的下载调试,了解嵌入式开发的基本过程。
二、实验内容
本次实验使用RedhatLinux9.0操作系统环境,安装ARM-Linux的开发库及编译器。
创建一个新目录,并在其中编写hello.c和Makefile文件。
学习在Linux下的编程和编译过程,以及ARM开发板的使用和开发环境的设置。
下载已经编译好的文件到目标开发板上运行。
三、实验设备及工具
硬件:
:
UP-TECHS2410/P270DVP嵌入式实验平台、PC机Pentium500以上,硬盘10G以上。
软件:
PC机操作系统REDHATLINUX9.0+超级终端(或X-shell)+AMR-LINUX开发环境。
四、实验步骤
1、建立工作目录
[root@localhostroot]#mkdirhello
[root@localhostroot]#cdhello
2、编写程序源代码
我们可以是用下面的命令来编写hello.c的源代码,进入hello目录使用vi命令来编辑代码:
[root@localhosthello]#vihello.c
按“i”或者“a”进入编辑模式,将上面的代码录入进去,完成后按Esc键进入命令状态,再用命令“:
wq!
”保存并退出。
这样我们便在当前目录下建立了一个名为hello.c的文件。
hello.c源程序:
#include
intmain(){
charname[20];
scanf(“%s”,name);
printf(“hello%s”,name);
return0;
}
3、编写Makefile
要使上面的hello.c程序能够运行,我们必须要编写一个Makefile文件,Makefile文件定义了一系列的规则,它指明了哪些文件需要编译,哪些文件需要先编译,哪些文件需要重新编译等等更为复杂的命令。
使用它带来的好处就是自动编译,你只需要敲一个“make”命令整个工程就可以实现自动编译。
Makefile源程序:
CC=armv4l-unknown-linux-gcc
EXEC=hello
OBJS=hello.o
CFLAGS+=
LDFLAGS+=–static
all:
$(EXEC)
$(EXEC):
$(OBJS)
$(CC)$(LDFLAGS)-o$@$(OBJS)
clean:
-rm-f$(EXEC)*.elf*.gdb*.o
下面我们来简单介绍这个Makefile文件的几个主要部分:
CC指明编译器
EXEC表示编译后生成的执行文件名称
OBJS目标文件列表
CFLAGS编译参数
LDFLAGS连接参数
all:
编译主入口
clean:
清除编译结果
注意:
“$(CC)$(LDFLAGS)-o$@$(OBJS)”和“-rm-f$(EXEC)*.elf*.gdb*.o”前空白由一个Tab制表符生成,不能单纯由空格来代替。
与上面编写hello.c的过程类似,用vi来创建一个Makefile文件并将代码录入其中。
[root@localhosthello]#viMakefile
4、编译应用程序
在上面的步骤完成后,我们就可以在hello目录下运行“make”来编译我们的程序了。
如果进行了修改,重新编译则运行:
[root@localhosthello]#makeclean//编译应用程序
[root@localhosthello]#make//下载调试
注意:
编译、修改程序都是在宿主机(本地PC机)上进行,不能在超级终端下进行。
5、下载调试
在宿主PC计算机上启动NFS服务,并设置好共享的目录,(这里将刚生成的根目录/arm2410cl作为共享目录,以下实验同理)具体配置请参照前面第一章第四节中关于嵌入式Linux环境开发环境的建立。
在建立好NFS共享目录以后,我们就可以进入超级终端中建立开发板与宿主PC机之间的通讯了。
[/mnt/yaffs]mount-tnfs-onolock192.168.0.56:
/arm2410cl/host//超级终端中执行
如果不想使用我们提供的源码的话,可以再建立一个NFS共享文件夹。
如/root/share,
我们把我们自己编译生成的可执行文件复制到该文件夹下,并通过超级终端挂载到开发板上。
[root@localhosthello]#cphello/root/share//虚拟机中
[/mnt/yaffs]mount-tnfs-onolock192.168.0.56:
/root/share/host//超级终端中
再进入/host目录运行刚刚编译好的hello程序,查看运行结果。
[/mnt/yaffs]cd/host//超级终端中
[/host]./hello
helloworld
(1)在PC计算机上启动NFS服务,并设置好共享的目录。
启动RedHatLinux–>点击“主菜单”->选择“系统设置”->“服务器设置”->“NFS服务器”->“增加”->“基本”下:
点击“浏览”选择“/”下的“arm2410cl/”;“确定”;“主机:
192.168.0.*”;“基本权限”选择“读/写”;“确定”。
->“常规选项”下:
选择:
“允许来自高于1024的端口的连接”,其他不选;确定。
(2)在建立好NFS共享目录以后,进入minicom中建立开发板与宿主PC机之间的通讯
新建终端
[root@localhostroot]#minicom//服务器
新建终端
[root@localhostroot]#ifconfigeth0192.168.0.10//设置主机地址
[root@localhostroot]#ifconfig//查看地址
在服务器下:
[/mnt/yaffs]mount-tnfs–onolock192.168.0.56:
/arm2410cl/var
注意:
开发板挂接宿主计算机目录只需要挂接一次便可,只要开发板没有重起,就可以一直保持连接。
这样可以反复修改、编译、调试,不需要下载到开发板。
6、实验截图
7、测试结果
测试挂载成功,用mplayerxyz.avi命令播放视频
[root@localhost/]#cd/mnt/yaffs/mm
[root@localhost/]#mplayerxyz.avi
五、实验心得
本次实验比较简单,旨在让我们熟悉Linux开发环境,学会基于S3C2410的Linux开发环境的配置和使用。
实验中我们创建了一个新目录,并在其中编写hello.c和Makefile文件。
我们学习在Linux下的编程和编译过程,以及ARM开发板的使用和开发环境的设置,下载已经编译好的文件到目标开发板上运行。
学会使用Linux的armv4l-unknown-linux-gcc编译和基于NFS方式的下载调试,了解嵌入式开发的基本过程。
实验二S3C2410处理器A/D模块硬件设计
一、实验目的
1.熟悉硬件电路设计
2.掌握简单的S3c2410处理器的电路设计。
3.掌握protel软件的使用。
二、实验内容
使用protel99se做s3c2410处理器最小系统电路设计,A/D数据采集模块电路设计。
三、实验设备及工具
硬件:
UP-TECHS2410/P270DVP嵌入式实验平台、PC机Pentium500以上,硬盘10G以上。
软件:
PC机操作系统REDHATLINUX9.0、超级终端(或X-shell)、ARM-LINUX开发环境
五、实验原理
1、A/D转换器
A/D转换器是模拟信号源和CPU之间联系的接口,它的任务是将连续变化的模拟信号转换为数字信号,以便计算机和数字系统进行处理、存储、控制和显示。
在工业控制和数据采集及许多其他领域中,A/D转换是不可缺少的。
A/D转换器有以下类型:
逐位比较型、积分型、计数型、并行比较型、电压-频率型,主要应根据使用场合的具体要求,按照转换速度、精度、价格、功能以及接口条件等因素来决定选择何种类型。
常用的有以下两种:
(1)双积分型的A/D转换器;
(2)逐次逼近型的A/D转换器。
2、A/D转换的重要指标
(1)分辨率(Resolution)
(2)精度(Accuracy)
(3)ARM自带的十位A/D转换器
(4)A/D转换器在扩展板的连接(A/D转换器在扩展板的接法如图2.4.2所示,前三路通过电位器接到3.3v电源上。
)
图2.4.2A/D转换器在扩展板上的接法
六、实验步骤
1、阅读理解源码
进入/arm2410cl/exp/basic/04_ad目录,使用vi编辑器或其他编辑器阅读理解源代码。
2、编译应用程序
运行make产生ad可执行文件
[root@localhost/]#cd/arm2410cl/exp/basic/04_ad/
[root@localhost04_ad]#make
armv4l-unknown-linux-gcc-c-omain.omain.c
armv4l-unknown-linux-gcc-o../bin/admain.o-lpthread
armv4l-unknown-linux-gcc-oadmain.o-lpthread
[root@localhost04_ad]#ls
adhardware.hmain.oMakefile.baks3c2410-adc.h
binmain.cMakefilereadme.txtsrc
3、下载调试
到超级终端窗口,使用NFSmount开发主机的/arm2410cl到/host目录。
[/mnt/yaffs]mount-tnfs-onolock192.168.0.56:
/arm2410cl/host
[/mnt/yaffs]insmodad/s3c2410-adc.o
[/mnt/yaffs]cd/host/exp/basic/04_ad
[/host/exp/basic/04_ad]./ad
PressEnterkeyexit!
a0=0.0032a1=3.2968a2=3.2968
我们可以通过调节开发板上的三个黄色的电位器,来查看a0、a1、a2的变化。
4、原理图
5、实验截图
七、实验心得
通过本次试验,我学会了A/D接口原理,了解实现A/D系统对于硬件要求。
阅读ARM芯片文档,掌握ARM的A/D相关寄存器的功能,熟悉ARM系统硬件的A/D相关接口,还了解在Linux环境下对S3C2410芯片的8通道10位A/D模块的硬件设计。
实验三Kernel与root的设计和烧写
一、实验目的
1.掌握Linux内核配置与裁剪的方法
2.理解根文件系统配置。
3.掌握嵌入式系统内核和根文件系统的烧写的过程。
二、实验内容
对嵌入式Linux系统进行裁剪、配置和编译,生成自己需要的操作系统映像文件,并将其烧写到flash中。
三、实验设备及工具
硬件:
UP-NETARM2410-S嵌入式实验仪、PC机pentumn500以上、硬盘40G以上、内存大于256M。
软件:
PC机操作系统REDHATLINUX9.0、MINICOM、AMRLINUX开发环境.
四、实验步骤
1、设计过程:
2、烧写过程:
(一)、超级终端设置
1、运行Windows系统下开始→所有程序→附件→通讯→超级终端(HyperTerminal),新建一个通信终端。
如果要求输入区号、电话号码等信息请随意输入,出现如图1.5.1所示对话框时,为所建超级终端取名为arm,可以为其选一个图标。
单击“确定”按钮。
2、在接下来的对话框中选择ARM开发平台实际连接的PC机串口(如COM1),按确定后出现如图1.5.2所示的属性对话框,设置通信的格式和协议。
这里波特率为115200,数据位8,无奇偶校验,停止位1,无数据流控制。
按确定完成设置。
3、完成新建超级终端的设置以后,可以选择超级终端文件菜单中的另存为,把设置好的超级终端保存在桌面上,以备后用。
用串口线将PC机串口和平台UART0正确连接后,就可以在超级终端上看到程序输出的信息了。
(二)、串口下载烧写
在Windowsxp平台下通过超级终端烧写vivi(bootloader)、内核(Kernel)、根文件系
统(root)的步骤如下:
1、格式化flash
打开超级终端,先按住PC机键盘的BackSpace键,然后启动2410-S,进入vivi,按照以下命令格式化flash,重新分区。
vivi>bonpart0128k192k1216k4288k:
m64704k回车
2、烧写vivi
这时已格式化flash,运行的是SDRAM中的vivi.
vivi>loadflashvivix回车
此时超级终端提示:
Readyfordownloadingusingxmodem...
Waiting...
点击超级终端任务栏上“传送”下拉菜单中的“发送文件”,选择协议为Xmodem,选择
镜像文件vivi,点击“发送”,10秒左右vivi就烧写到flash里了.
这时要复位2410-S,重新进入vivi>来烧写kernel,root.
3、烧写内核映象zImage
vivi>loadflashkernelx回车
出现提示:
Readyfordownloadingusingxmodem...
Waiting...
点击超级终端任务栏上“传送”下拉菜单中的“发送文件”,选择镜像文件zImage,协议
为Xmodem,点击“发送”,4分钟左右zImage传输完毕,zImage先传输到SDRAM中,再把数据从SDRAM复制到flash里,请等待这一过程结束到出现vivi>,再烧写root,否则会导致烧写kernel失败。
4、烧写根文件系统(root)
vivi>loadflashrootx回车
Readyfordownloadingusingxmodem...
Waiting...
点击超级终端任务栏上“传送”下拉菜单中的“发送文件”,选择镜像文件root.cramfs,
协议为Xmodem,点击“发送”,8分钟左右root.cramfs烧写完毕;
5、烧写应用程序
用2410-S实验箱配套网线连接好2410-S的NIC-1网口和PC机的网口,重启2410-S进
入linux操作系统的[/mnt/yaffs]下,注意配置IP在同一网段,执行以下指令:
[/mnt/yaffs]ifconfig--查看IP
[/mnt/yaffs]ifconfigeth0192.168.0.111--配置eth0IP
[/mnt/yaffs]inetd--启动ftp
打开ftp软件FlashFXP(在光盘中/img/flashvivi目录中提供),点击界面中上部黄色闪
电符号,建立快速连接,输入地址192.168.0.111,用户名:
root,密码:
无。
连接进入ftp
服务,上传“yaffs.tar.bz2”到2410-S的/var文件夹下,3分钟左右上传完毕。
这时不能重启2410-S,否则上传过程白费。
接下来在超级终端中输入:
[/mnt/yaffs]cd..--转换到/mnt下
[/mnt]rm-rf/yaffs/*--删除/yaffs下文件
[/mnt]cd/var--转到var目录下
[/var]tarxjvfyaffs.tar.bz2–C/mnt/yaffs--解压yaffs.tar.bz2到mnt/yaffs目录下
如图1.5.9所示,注意大小写(C为大写),需5分钟左右
解压缩结束,整个烧写实验就完成了。
五、实验心得
了解了Linux内核与root的知识,能够利用串口通讯下载方式完成它们的烧写过程。
实验四嵌入式软件设计与交叉编译
一、实验目的
1.掌握嵌入式Linux软件设计方法原理
2.掌握Makefile文件设计方法。
3.熟悉Linux下静态库和共享库的设计。
二、实验内容
(1)编写一个带输入、输出的由5个文件组成的嵌入式软件;
(2)写好makefile文件,并上机调试;
(3)用变量指明两种编译器。
三、实验设备及工具
硬件:
UP-NETARM2410-S嵌入式实验仪、PC机pentumn500以上、硬盘40G以上、内存大于256M。
软件:
PC机操作系统REDHATLINUX9.0、MINICOM、AMRLINUX开发环境.
四、程序分析
input.h:
#defineN10
voidinput(char*s);
input.c:
#include
#include
Voidinput(char*s)
{
Printf(“inputyournameplease:
”);
Scanf(“%s”,s);
}
output.h
#defineM5
Voidoutput(char*s)
output.c
#include
#include
Voidoutput(char*s)
{
Printf(“hello%s!
\n”,s);
}
main.c
#include
#include
#include“input.h”
#include“output.h”
intmain()
{
inti=0;
charname[N];
input(name);
for(i=0;i output(name); return0; } Makefile: CC=armv4l-unknown-linux-gcc EXEC=zc OBJS=main.oinput.ooutput.o $(EXEC): $(OBJS) $(CC)-o$(EXEC)$(OBJS) install: $(EXP_INSTALL)$(EXEC)$(INSTALL_DIR) clean: -rm-f$(EXEC)&.o 五、实验结果 pc机上执行时#make//若已执行过,则用#makeclean清除后再执行#make #./zc 结果: [/mnt/yaffs]cd/host/exp/basic/zc/ [/host/exp/basic/zc]./zc inputyourname,please: zc hellozc! hellozc! hellozc! hellozc! hellozc! 六、实验心得 初步了解了交叉编译原理,GUN开发套件包括一系列开发测试工具,主要组件为Gcc。 实验详细说明了基于ARM和Linux的嵌入式系统的交叉编译环境的建立方法,并给出了具体的步骤。 实验结果表明,可以在x86平台编译调试ARM平台上运行的程序。 并通过实验认识嵌入式系统上C语言编程与普通PC机上C语言编程的不同点,掌握使用交叉编译环境编译嵌入式系统程序的方法。 实验五嵌入式驱动程序设计 一、实验目的 1.学习在LINUX下进行驱动设计的原理。 2.掌握使用模块方式进行驱动开发调试的过程。 二、实验内容 在PC机上编写简单的虚拟硬件驱动程序并进调试,实验驱动的各个接口函数的实现,分析并理解驱动与应用程序的交互过程。 三、实验设备及工具 硬件: UP-NETARM2410-S嵌入式实验仪、PC机pentumn500以上、硬盘40G以上、内存大于256M。 软件: PC机操作系统REDHATLINUX9.0、MINICOM、AMRLINUX开发环境 四、实验步骤 1、在PC(宿主机)上编译调试驱动程序。 (1)阅读和理解源代码 进入/arm2410cl/exp/drivers/01_demo,使用vi编辑器或其他编辑器阅读理解源代码。 (2)编译驱动模块及测试程序 上面介绍了在Makefile中有两种编译方法,可以在本机上使用gcc也可以使用交叉编 •确定 •#KERNELDIR=/arm2410cl/kernel/linux-2.4.18-2410cl •KERNELDIR=/usr/src/linux (3)测试驱动程序 如果使用gcc编译的话,需要通过下面的命令来建立设备节点,如果使用交叉编译器的话,不需要建立设备节点。 #mknod/dev/democ2540 首先要插入驱动模块demo.o,然后可以用lsmod命令来查看模块是否已经被插入,在不使用该模块的时候还可以用rmmod命令来将模块卸载。 •insmoddemo.o •lsmoddemo.o •./test_demo 2、使用arm编译器在实验箱调试驱动程序。 五、实验结果分析 1.编译demo.c为demo.o;编译test_demo.c为test_demo。 gcc-cdemo.cgcc-otest_demotest_demo.c 2.若编译器选择的是gcc(请查看Makefile文件),需要用以下命令建立节点: #mknod/dev/democ2540 若编译器选择的是armv4l-unknown-linux-gcc则不需要mknod命令建立节点。 3.使用insmoddemo.o插入模块,使用lsmod列出所有插入的模块。 查看demo的插入情况: #insmoddemo.o 6.运行test程序测试驱动的各个接口运行情况。 #./test_demo 结果: PC机上的运行结果: 实验箱上的运行结果: 7.运行ad程序测试驱动的各个接口运行情况 六、实验心得 掌握了在Linux下常用编译器的使用,进一步掌握了Makefile的编写和使用以及Linux下的程序编译与交叉编译的过程。 实验六触摸屏驱动程序设计 一、实验目的 1、了解在UP-TECHS2410/P270DVP平台上实现触摸屏Linux驱动程序的基本原理。 2、了解Linux驱动开发的基本过程。 二、实验内容 以一个简单字符设备驱动程序为原型,剖析其基本结构。 进行部分改写之后并编译实现其相应功能。 三、预备知识 1、掌握在Linux集成
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 Linux 系统 开发 教程 实验 报告