LINUX嵌入式实验报告Word文档格式.docx

上传人:b****1 文档编号:993352 上传时间:2023-04-29 格式:DOCX 页数:40 大小:2.03MB
下载 相关 举报
LINUX嵌入式实验报告Word文档格式.docx_第1页
第1页 / 共40页
LINUX嵌入式实验报告Word文档格式.docx_第2页
第2页 / 共40页
LINUX嵌入式实验报告Word文档格式.docx_第3页
第3页 / 共40页
LINUX嵌入式实验报告Word文档格式.docx_第4页
第4页 / 共40页
LINUX嵌入式实验报告Word文档格式.docx_第5页
第5页 / 共40页
LINUX嵌入式实验报告Word文档格式.docx_第6页
第6页 / 共40页
LINUX嵌入式实验报告Word文档格式.docx_第7页
第7页 / 共40页
LINUX嵌入式实验报告Word文档格式.docx_第8页
第8页 / 共40页
LINUX嵌入式实验报告Word文档格式.docx_第9页
第9页 / 共40页
LINUX嵌入式实验报告Word文档格式.docx_第10页
第10页 / 共40页
LINUX嵌入式实验报告Word文档格式.docx_第11页
第11页 / 共40页
LINUX嵌入式实验报告Word文档格式.docx_第12页
第12页 / 共40页
LINUX嵌入式实验报告Word文档格式.docx_第13页
第13页 / 共40页
LINUX嵌入式实验报告Word文档格式.docx_第14页
第14页 / 共40页
LINUX嵌入式实验报告Word文档格式.docx_第15页
第15页 / 共40页
LINUX嵌入式实验报告Word文档格式.docx_第16页
第16页 / 共40页
LINUX嵌入式实验报告Word文档格式.docx_第17页
第17页 / 共40页
LINUX嵌入式实验报告Word文档格式.docx_第18页
第18页 / 共40页
LINUX嵌入式实验报告Word文档格式.docx_第19页
第19页 / 共40页
LINUX嵌入式实验报告Word文档格式.docx_第20页
第20页 / 共40页
亲,该文档总共40页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

LINUX嵌入式实验报告Word文档格式.docx

《LINUX嵌入式实验报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《LINUX嵌入式实验报告Word文档格式.docx(40页珍藏版)》请在冰点文库上搜索。

LINUX嵌入式实验报告Word文档格式.docx

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

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2