嵌入式实验报告 (2).doc_第1页
嵌入式实验报告 (2).doc_第2页
嵌入式实验报告 (2).doc_第3页
嵌入式实验报告 (2).doc_第4页
嵌入式实验报告 (2).doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

嵌入式实验报告武汉大学计算机学院嵌入式实验报告题 目: UART接口实验 专业(班): 计算机科学与技术 (03 班) 项目组成员:组长:王威 2008301500084 成员:张力 2008301500084 王亚科 2008301500081 饶雨城 2008301500083 吴桐 2008301500101 课程名称: 嵌入式系统实验设计 任课教师: 刘树波 2011 年 11 月 23 日一、 实验目的1掌握UART0各个控制器的设置,并能使用UART0接收PC发过来的数据,并将数据送回PC进行显示。2熟悉在Linux环境下用C语言进行编程,实现UP-NETARM2410-S实验台上对串行接口设备(tts0/1/2)的设置和读写操作。二、 实验环境ARM2410S嵌入式实验平台:2个RS-232,1个RS-485,1个IrDA。与嵌入式平台连接的PC机:运行红帽子Linux系统,内核版本2.4。三、实验内容在一台PC机和实验台上进行实验,为模仿两台机子串口之间的通信,程序中使用多线程控制方法,一个线程负责往COM口发送数据,另一个线程负责接收。还有一个键盘监控线程负责程序的中断退出。比如写线程往串口写字符串“Hello UP-NetARM2410-S!”,接收线程接收后送回上位机终端的数据接收窗口进行显示。UART0设置为通讯波特率115200,8位数据位,1位停止位,无奇偶校验。四、实验步骤1根据实验内容,编写代码予以实现。(注:源代码见附件)2交叉编译源代码,生成可在嵌入式平台上运行的程序,并把程序考到共享目录下。命令如下:armv4l-unknown-linux-gcc serial.c o serial lpthreadcp serial /arm2410s/share3在终端启动 minicom,并挂载共享目录:mount -t nfs 1:/arm2410s/share /host4为设备文件建立软链接:ln -sf /dev/tts/0 /dev/ttyS05运行程序:./serial6观测并记录实验结果。五、实验结果在PC终端输出从COM口读出的字符串,圆满完成了实验要求。结果如下图所示:六、实验总结通过URAT接口实验,我们掌握了UART0各个控制寄存器的设置。熟悉了在Linux环境下用C语言进行编程,对UP-NETARM2410-S实验台上串行接口设备(tts0/1/2)的设置和读写操作。此次实验,让我们对Linux下嵌入式平台的开发工作有了初步的了解,增强了我们动手编码和通过实践解决实际问题的能力。附件:#include /标准输入/输出定义 #include #include /文件控制定义 #include /线程库 #include /PPSIX终端控制定义 #include /UNIX标准函数定义 #define BAUDERATE B115200#define COM1 /dev/ttyS0 #define COM2 /dev/ttyS1#define ENDMINITERM 27 /按ESC键退出#define FALSE 0#define TRUE 1volatile int STOP = FALSE;volatile int fd; /设备号/*-*/void* keyboard(void* data) /键盘输入,按ESC退出 int c; for(;) c = getchar(); if(c = ENDMINITERM) STOP = TRUE; break; return NULL;/*-*/void* receive(void* data) /接收线程 int c; printf(n read moden); while (STOP = FALSE) read(fd,&c,1); /COM端口 /printf(%c,&c); write(1,&c,1); /stdout printf(n exit from reading modemn); return NULL; /*-*/void* send(void* data) /发送线程 int c = 0; printf(nsend datan); while(STOP = FALSE) c = c +1; c = c%256; write(fd,&c,1); fflush(stdout); usleep(10000); /延迟 return NULL; /等待子进程消亡 /*-*/int main(int argc, char* argv) struct termios oldtio, newtio, oldstdtio, newstdtio; int ok; pthread_t th_a, th_b, th_c; /定义线程a,b,c void* retval; /定义错误 if(argc1) fd = open(COM2,O_RDWR); /以读写方式打开串口 else fd = open(COM1,O_RDWR); if(fdoldstdio tcgetattr(fd,&oldtio); /* save current modem settings */ tcgetattr(fd,&newstdtio); /* get working stdtio ,准备更改属性*/ newtio.c_cflag = BAUDERATE | CRTSCTS | CS8 | CLOCAL | CREAD;/*ctrol flag*/ /B115200速率,8位数据位,本地,接受使能 newtio.c_iflag = IGNPAR; /*input flag*/ newtio.c_oflag &= (ICANON | ECHO | ECHOE | ISIG); /*output flag*/ newtio.c_lflag &= OPOST; /*local flag*/ newtio.c_ccVMIN=1; /指定最少读取字符数为1 newtio.c_ccVTIME=0; /指定读取每个字符等待时间为0 /开始清空modem线,并且设置modem属性 tcflush(fd, TCIFLUSH); /丢弃所有输入/输出队列上还没有读取或发送的数据 tcsetattr(fd,TCSANOW,&newtio); /*set attrib */ 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); /等待线程a结束 pthread_joi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论