嵌入式系统实验串行端口程序设计.docx

上传人:b****5 文档编号:6734351 上传时间:2023-01-09 格式:DOCX 页数:7 大小:26.34KB
下载 相关 举报
嵌入式系统实验串行端口程序设计.docx_第1页
第1页 / 共7页
嵌入式系统实验串行端口程序设计.docx_第2页
第2页 / 共7页
嵌入式系统实验串行端口程序设计.docx_第3页
第3页 / 共7页
嵌入式系统实验串行端口程序设计.docx_第4页
第4页 / 共7页
嵌入式系统实验串行端口程序设计.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

嵌入式系统实验串行端口程序设计.docx

《嵌入式系统实验串行端口程序设计.docx》由会员分享,可在线阅读,更多相关《嵌入式系统实验串行端口程序设计.docx(7页珍藏版)》请在冰豆网上搜索。

嵌入式系统实验串行端口程序设计.docx

嵌入式系统实验串行端口程序设计

 

实验报告

(2011/2012学年第2学期)

 

课程名称

嵌入式系统B

实验名称

串行端口程序设计

实验时间

2012

6

18

指导单位

通信与信息工程学院

指导教师

王诚

 

学生姓名

班级学号

学院(系)

通信与信息工程学院

专业

电子信息工程

实验名称

串行端口程序设计

指导教师

王诚

实验类型

验证试验

实验学时

4

实验时间

2012.6.18

一、实验目的和要求

目的:

了解在linux环境下串行程序设计的基本方法,掌握终端的主要属性及设置方法,熟悉终端I/O函数的使用,学习使用多线程来完成串口的收发处理。

要求:

读懂程序源代码,学习终端I/O函数的使用方法,学习将多线程编程应用到串口的接收和发送程序设计中

二、实验环境(实验设备)

硬件:

UP-NETARM2410-S嵌入式实验平台、PC机Pentium500以上,硬盘10G以上。

软件:

PC机操作系统REDHATLINUX9.0+MINICOM+ARM-LINUX开发环境

三、实验原理及内容

实验内容:

了解在linux环境下串行程序设计的基本方法。

掌握终端的主要属性及设置方法,熟悉终端I/O函数的使用。

学习使用多线程来完成串口的收发处理要求

实验步骤:

1、阅读理解源码

进入exp\basic\03_tty目录,使用vi编辑器阅读理解源代码。

源代码如下:

#include

#include

#include

#include

#include

#include

#defineBAUDRATEB115200

#defineCOM1"/dev/ttyS0"

#defineCOM2"/dev/ttyS1"

#defineENDMINITERM27/*ESCtoquitminiterm*/

#defineFALSE0

#defineTRUE1

volatileintSTOP=FALSE;

volatileintfd;

voidchild_handler(ints)

{

printf("stop!

!

!

\n");

STOP=TRUE;

}

/*--------------------------------------------------------*/

void*keyboard(void*data)

{

intc;

for(;;){

c=getchar();

if(c==ENDMINITERM){

STOP=TRUE;

break;

}

}

returnNULL;

}

/*--------------------------------------------------------*/

/*modeminputhandler*/

void*receive(void*data)

{

intc;

printf("readmodem\n");

while(STOP==FALSE)

{

read(fd,&c,1);/*comport*/

write(1,&c,1);/*stdout*/

}

printf("exitfromreadingmodem\n");

returnNULL;

}

/*--------------------------------------------------------*/

void*send(void*data)

{

intc='0';

printf("senddata\n");

while(STOP==FALSE)/*modeminputhandler*/

{

c++;

c%=255;

write(fd,&c,1);/*stdout*/

usleep(100000);

}

returnNULL;}

/*--------------------------------------------------------*/

intmain(intargc,char**argv)

{

structtermiosoldtio,newtio,oldstdtio,newstdtio;

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,&oldstdtio);

tcgetattr(fd,&oldtio);/*savecurrentmodemsettings*/

tcgetattr(fd,&newstdtio);/*getworkingstdtio*/

newtio.c_cflag=BAUDRATE|CRTSCTS|CS8|CLOCAL|CREAD;/*ctrolflag*/

newtio.c_iflag=IGNPAR;/*inputflag*/

newtio.c_oflag=0;/*outputflag*/

newtio.c_lflag=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);/*handledyingchild*/

pthread_create(&th_a,NULL,keyboard,0);

pthread_create(&th_b,NULL,receive,0);

pthread_create(&th_c,NULL,send,0);

pthread_join(th_a,&retval);

pthread_join(th_b,&retval);

pthread_join(th_c,&retval);

tcsetattr(fd,TCSANOW,&oldtio);/*restoreoldmodemsetings*/

tcsetattr(0,TCSANOW,&oldstdtio);/*restoreoldttysetings*/

close(fd);

exit(0);

}

2、编译应用程序

运行make产生term可执行文件

[root@zxtroot]#cd/arm2410s/exp/basic/03_tty/

[root@zxt03_tty]#make

armv4l-unknown-linux-gcc-c-oterm.oterm.c

armv4l-unknown-linux-gcc-o../bin/termterm.o-lpthread

armv4l-unknown-linux-gcc-otermterm.o-lpthread

[root@zxt03_tty]#ls

MakefileMakefile.baktermterm.cterm.otty.c

3、下载调试

切换到minicom终端窗口,使用NFSmount开发主机的/arm2410s到/host目录。

进入exp\basic\03_tty目录,运行term,观察运行结果的正确性。

[root@zxtroot]#minicom

[/mnt/yaffs]mount-tnfs-onolock192.168.0.56:

/arm2410s/host

[/mnt/yaffs]cd/host/exp/basic/03_tty/

[/host/exp/basic/03_tty]./term

readmodem

senddata

123456789:

;<=>?

@ABCDEFGHIJKLMNOPQRSTUVWX

由于内核已经将串口1作为终端控制台,所以可以看到term发出的数据,却无法看到开发主机发来的数据,可以使用另外一台主机连接串口2进行收发测试。

Ctrl+c可使程序强行退出。

四、实验小结(包括问题和解决方法、心得体会、意见与建议等)

本次实验,对串行口在嵌入式系统中的应用有了初步的了解。

在源程序的阅读理解中有一定的困难,由于对嵌入式实验平台和Linux的不熟悉,具体操作步骤操作起来有些困难和不理解。

五、指导教师评语

成绩

批阅人

日期

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

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1