LINUX嵌入式实验报告Word文档格式.docx
- 文档编号:993352
- 上传时间:2023-04-29
- 格式:DOCX
- 页数:40
- 大小:2.03MB
LINUX嵌入式实验报告Word文档格式.docx
《LINUX嵌入式实验报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《LINUX嵌入式实验报告Word文档格式.docx(40页珍藏版)》请在冰点文库上搜索。
3.开发环境配置
配置网络,包括配置IP地址、NFS服务、防火墙。
网络配置主要是要安装好以太网卡,对于一般常见的RTL8139网卡,READHAT9.0可以自动识别并自动安装好,完全不要用户参与,因此建议使用该网卡。
然后配置宿主机IP为192.168.0.121。
如果是在有多台计算机使用的局域网环境使用此开发设备,IP地址可以根据具体情况设置,如图所示:
双击设备eth0的蓝色区域,进入以太网设置界面
对于REDHAT9.0,它默认的是打开了防火墙,因此对于外来的IP访问它全部拒绝,这样其它网络设备根本无法访问它,即无法用NFSmount它,许多网络功能都将无法使用,因此网络安装完毕后,应立即关闭防火墙。
Minicom的配置如下:
四、实验总结
通过本次实验我学会了关于Linux配置的一些基本的应用,感觉收获特别大,这就算入门了。
实验三:
串行端口程序设计
了解在Linux环境下串行程序的基本方法。
掌握终端的主要属性与设置方法,熟悉终端I/O函数的使用。
学习使用多线程完成串口的收发处理。
读懂程序源代码,学习终端I/O函数的使用方法,学习将多线程编程应用到串口的接受和发送程序设计中。
三、预备知识
有C语言的基础
掌握在Linux下常用编辑器的使用。
掌握Makefile的编写和使用。
掌握Linux下的程序编译与交叉编译过程。
四、实验原理
异步串行I/O方式是将传输数据的每个字符一位接一位(例如先低位、后高位)地传送。
数据的各不同位可以分时使用同一传输通道,因此串行I/O可以减少信号连接线,最后用一对线即可进行。
接收方对于同一根线上一连串的数字信号,首先要分割成位,再按位组成字符。
为了恢复发送的信息,双方必须协调工作。
在微型计算机中大量使用异步串行I/O方式,双方使用各自的时钟信号,而且允许时钟频率有一定误差,因此实现较容易。
但是由于每个字符都要独立确定起始和结束(即每个字符都要重新同步),字符和字符间还可能有长度不定的空闲时间,因此效率较低。
上图给出异步串行通信中一个字符的传送格式。
开始前,线路处于空闲状态,送出连续“1”。
传送开始时首先发一个“0”作为起始位,然后出现在通信线上的是字符的二进制编码数据。
每个字符的数据位长可以约定为5位、6位、7位或8位,一般采用ASCII编码。
后面是奇偶校验位,根据约定,用奇偶检验位将所传字符中“1”的位数凑成奇数个数或偶数个数。
也可以也可以约定不要奇偶校验位,这样就取消奇偶校验位。
最后是表示停止位的“1”信号,这个停止位可以约定持续1位、1.5位或2位的时间宽度。
至此一个字符传送完毕,线路又进入空闲,持续为“1”。
经过一段随机的时间后,下一个字符开始传送才有发出起始位。
每一个数据位的宽度等于传送波特率的倒数。
微机异步串行通信中,常用的波特率为50.95,110,150,300,600,1200,2400,4800,9600等。
接收方按约定的格式接收数据,并进行检查,可以查出以下三种错误:
奇偶错:
在约定奇偶检查的情况下,接收到的字符奇偶状态和约定不符。
帧格式错:
一个字符从起始位到停止位的总尾数不对。
溢出错:
若先接收的字符尚未被微机读取,后面的字符又传送过来,则产生溢出错。
每一种错误都会给出相应的出错信息,提示用户处理。
一般串口调试都使用空的MODEM连接电缆,其连接方式如下:
五、程序分析
本实验的代码如下:
#include<
termios.h>
stdio.h>
unistd.h>
fcntl.h>
sys/signal.h>
pthread.h>
#defineBAUDRATEB115200
#defineCOM1“/dev/ttyS0”
#defineCOM2“/dev/ttyS1”
#defineENDMINITERM27/*ESCtoquitminiterm*/
#defineFALSE0
#defineTRUE1
volatileintSTOP=FALSE;
volatileintfd;
voidchild_handler(ints)
{
print(“stop!
!
\n”);
STOP=TRUE;
}
/*__________________________________________*/
Void*keyboard(void*date)
Intc;
For(;
;
){
c=getchar();
if(c=ENDMINITERM){
STOP=TURE;
Break;
}
ReturnNULL;
/*____________________________________________*/
/*modeminputhandle*/
Void*receive(void*date)
Printf(“readmodem\n”);
While(STOP==FALSE)
Read(fd,&
c,1);
/*comport*/
Write(1,&
/*stdout*/
Printf(“exitformreadingmodem\n”);
ReturnNULL;
/*__________________________________________________*/
Void*send(void*date)
Int=’0’;
Printf(“senddate\n”);
While(STOP==FALSE)/*modeminputhandler*/
C++;
C%=255;
Write(fd,&
Usleep(100000);
/*_______________________________________________________*/
Intmain(intargc,char**argv)
Structtermiosoldtio,newtio,oldstdio,newstdio;
Structsigactionsa;
Intok;
Pthread_tth_a;
th_b,th_c;
Void*retval*
If(argc>
1)
Fd=open(COM2,O_RDWR);
Else
Fd=open(COM1,O_RDWR);
//|O_NOCTTY|O_NONBLOCK);
If(fd<
0){
Error(COM1);
Exit(-1);
Tcgetattr(0,&
oldstdio);
Tcgetattr(fd,&
oldtio);
/*savecurrentmodemsettings*/
newstdio);
/*getworkingstdio*/
Newtio.c_cflag=BAUDRATE|CRTSCTS|CS8|CLOCAL|CREAD;
/*ctrolflag*/
Newtio.c_iflag=IGNPAR;
/*inputflag*/
Newtio.c_oflag=0;
/*outputflag*/
Newtio.c_lfag=0;
Newtio.c_cc[VMIN]=1;
Newtio.c_cc[VTIME]=0;
/*nowcleanthemodemlineandactivatethesettingsformodem*/
Tcflush(fd,TCIFLUSH);
Tcsetattr(fd,TCSANOW,&
newtio);
/*setattrib*/
Sa.sa_handler=child_handler;
Sa.sa_flags=0;
Sigaction(SIGCHLD,&
sa,NULL);
Pthread_creat(&
th_a,NULL,keyboard,0);
th_b,NULL,receive,0);
th_c,NULL,send,0);
Pthread_join(th_a,&
retval);
Pthread_join(th_b,&
Pthread_join(th_c,&
roldtio);
/*restoreoldmodemsetings*/
Tcsetattr(0,TCSANOW,&
/*restoreoldttysetings*/
Close(fd);
Exit(0);
六、实验步骤
1.阅读理解源码
进入exp\basic\03_tty目录,使用vi编辑器或其他编辑器阅读理解源代码。
2.编译应用程序
3.下载调试
切换到minicom终端窗口,使用NFSmount开发主机的/arm2410s到/host目录。
进入exp\basic\03_tty目录,运行term,观察运行结果的正确性。
[rootzxtroot]#minicom
[/mnt/yaffs]mount-tnfs-onolock192.168.0.56:
/arm2410s/host
[/mnt/ysffs]cd/host/exp/basic/03-tty/
[/host/exp/basic/03_tty].term
Readmodem
Senddate
123456789:
<
=>
?
ABCDEFGHIGHLMNOPQRSTUVWX
由于内核已经将串口1作为终端控制台,所以可以看到term发出的数据,却无法看到开发主机发来的数据,可以使用另外一台主机连接串口2进行收发测试。
Ctrl+c可使程序强行退出。
注意:
如果在执行./term时出现下面的错误,可以通过我们前文提到的方法建立一个连接来解决。
/dev/ttySO:
Nosuchfileordirectory
解决方法:
[/mnt/yaffs]cd/dev
[/dev]ln-sf/dev/tts/0ttySO(注意首字母是1,不是数字1)
实验四:
A/DD/A接口实验
AD部分
一实验目的
了解在LINUX环境下对S3C2410芯片的8通道10位A/D的操作与控制
二实验内容
学习AD接口远离,了解实现AD系统对于系统的软件和硬件要求,阅读ARM芯片文件,掌握ARM的AD相关寄存器的功能,熟悉ARM系统硬件的AD相关接口uliyong外部模拟信号编程实现ARM循环采集全部前4路通道,并且在超级终端上显示。
三实验步骤
1.进入/arm2410s/exp/basic/04_ad目录,使用vi编辑器或者其他编辑器悦读理解源代码。
2.变异应用程序
运行make产生ad可执行文件
[rootzxt/]#cd/arm2410s/exp/basic/04_ad/
[rootzxt04_ad]#make
armv41-unknown-linus-gcc-c-omain.omain.c
armv41-unknown-linux-gcc-o../bin/admain.o-lpthread
armv41-unknown-linux-gcc-oadmain.o-lpthread
[rootzxt04_ad]#1s
Adhardware.hmain.oMakefile.baks3c2410-adc.h
Binmain.cMakefilereadme.cxtsrc
3下载调试
换到minicom终端窗口,使用NFSmount开发主机的/arm2410s到/host目录
[rootzxtroot]#minicom
[/mnt/yaffs]mount-tnfs-onolock192.168.0.56:
/arm2410s/host
[/mnt/yaffs]cd/host/esp/basic/04_ad/
[/host/exp/basic/04_ad]./ad
PressEnterkeyexit!
a0=0.0032a1=3.2968a2=3.2968
我们可以通过调节开发板上的三个黄色的电位器,来看a0,a1,a2,的变化
DA部分
一实验目的
学习DA转换原理
掌握MAX504DA转换芯片的使用方法
掌握不带有DA的CPU扩展DA功能的主要方法
了解DA驱动程序加入内核的方法
学生DA接口原理,了解实现DA系统对于系统的软件和硬件的要求
1阅读理解源码
进入/arm2410s/exp/basic/05_da目录,使用vi编辑器或者其他编辑器阅读理解源代码
2.编译应用程序
运行make产生da可执行文件da_main
[rootzxt/]#cd/arm2410s/exp/basic/05_ad/
armv41-unknown-linux-gccda_main.o-oda_main
[rootzxt05_da]#1s
da_mainda_main.cda_main.odocdriversMakefiles3c44b0-spi.h
切换到minicom终端窗口,使用NFSmount开发主机的/arm2410s到/host目录然后进入
/host/exp/05_da/drivers目录,用insmodexio.o命令插入DA驱动,并且用1smod命令
查看是否已经插入
[/mnt/yaffs]cd/host/esp/basic/05_ad/
[/host/exp/basic/05_ad]cddrivers/
[/host/exp/basic/05_ad、drivers]insmodexio.o
Usingexio.o
[/host/exp/basic/05_ad/drivers]1smod
ModuleSiveUsedbuNottainted
Exio23840(unused)
I2c-tops2141040(unused)
进入/host/exp/basic/05_da目录,运行./da_main观察运行结果的正确性,
在输入./da_main后会出现下面的提示信息
[/host/exp/basic/05_da]./da_main
Errorparameter
Inputas:
[~]./ad_mainda_idnum
da_id:
selectbetween0and1
num:
range0.0~4.096
这是由于我们没有制定参数造成的,他的格式为./da_main[da的id号][数字],我们可以通过选择0或1来决定输出到开发板上的哪个DA接口,同时还需要在0.0~4.096V之间来选择一个输出电压,下面的例子是用了开发板上的DA0且输出1V的电压,我们可以使用万用表对其进行测量。
[/host/exp/basic/05_ad]./da_main01
CurrentVoltageis1.000000v
四.实验总结
通过本次实验我了解到一些关于DAAD的相关知识。
实验五:
图形界面应用程序设计
1.了解在Linux下安装Qt以与Qt/Embedded的基本步骤;
2.学会在Qt/E平台下使用Virtualframebuffer显示程序结果。
1.在Linnux下编译和使用Qt/E平台;
2.在Qt/E平台下编译和运行一个程序使用Virtualframebuffer显示运行结果。
该在Trolltech公司的上可以下载该公司所提供的Qt/Embedded的免费版本,在安装产品光盘以后,本次实验目录下已有要下载的文件,在/arm2410s/gui/Qt/src下。
在做实验钱吧本次实验用到的三个文件拷贝到/root/2410sQt目录下。
[rootBCroot]#cd/root/
[rootBCroot]#mkdir2410sQt
[rootBCroot]#cd/arm2410sQt/gui/Qt/src
Q
安装编译器arm-linux-gcc-3.4.1:
[rootBCsrc]#cd/arm2410s/gui/Qt/tools
[rootBCtools]#tarxjvfarm-linux-gcc-3.4.1.tar.bz2-C./
[rootBCtools]#vi/root/.bashprofile//打开文件,将该文件中的PATH变亮改为PATH=$PATH:
$HOME/bin:
/arm2410s/gui/Qt/tools/usr/local/arm/3.4.1/bin/,存盘后退出。
[rootBCtools]#source/root/.bashprofile
如果要正确安装的话,在任意路径下输入ar后按Tab键即可列出编译器文件。
Qt/Embedded平台的搭建需要以下几步:
1、安装Tmake
cd~/2410Qt—tar-xzftmake-1.13.tar.gz---exportTMAKEDIR=$PWD/tmake-1.13
cd~/2410sQt—
3、安装Qt/Embedded
环境变量的设置是非常重要的,它关系到能否正确的安装与编译这些安装包,下面介绍一下这些环境变亮:
TMAKEDIR:
只想用于编译Qt/Embedded的Tmake工具
QT2DIR:
:
指向qt-2.3.2的文件夹
QTEDIR:
指向qt-2.3.10的文件夹
第二步,编译Qt/Embedded
cd$QT2DIR
exportTMAKEPATH=4TMAKEDIR/lib/linux-g++
exportQTDIR=$QT2DIR
exportPATH=$QTDIR/bin:
$PATH
exportLD_LIBbin/RARY_PATH=$QTDIR/lib:
$LD_LIBRARY_PATH/configure-no-xft//出现选项时都要输入yes
make
cp-artbin/uic$QTEDIR/bin/./configure是对Qt进行配置,它包括很多选项,例如可以通过添加“-no-opengl”等,如果想要进一步了解可以通过键入。
/configure—help来获得更多的帮助信息。
编译完成后需要将生成的/bin/uic复制到¥QTEDIR下创建的目录bin,因为在随后的编译Qt/Embedded的时候会用到这个工具。
2、BuildQvfb
exportTMAKEPATH=$TMAKEDIR/lib/linux-g++
exportQTDIR=$QT2DIR
exportLD_LIBRARY_PATH=$QTDIR/lib:
$LD_LIBRARY_PATH
cd$QTESIR/tools/qvfb/root/2410s/tmake-1.13/bin/tmake-oMakefileqvfb.pro
mvqvfb$QTEDIR/bin/
这一步buildqvfb并建立了从Qt/Embedded2.3.10到Qt/Embedded2.3.2的静态的。
其中qvfb工具用来生成Virtualframebuffer,这是一个非常有用的工具,它可以模拟在开发板上的显示情况,如果在Virtualframebuffer中运行没有问题的话,可以直接通过交叉编译在开发板上运行。
3.BuildQt/Embedded
cd$QTEDIR
exportTMAKEPATH=$TMAKEDIR/lib/qws/linux-x86-g++
exportQTDIR=$QTEDIR
./CONFIGURE-NO-XFT-QVFB-DEPTHS4.8,16,32
YES
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- LINUX 嵌入式 实验 报告