版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验报告(2011/2012学年第二学期)课程名称ARM嵌入式系统原理与开发实验名称嵌入式Linux交叉开发环境建立与程序开发实验时间2012年6月21日指导单位计算机学院指导教师王诚学生姓名颜泽鑫班级学号B09011027学院(系)通信与信息工程专业电子信息工程实验一、熟悉Linux开发环境实验目的:熟悉Linux开发环境,学会基于S3C2410的Linux开发环境的配置和使用,学习使用Linux操作系统的常用命令。使用Linux的armv4l-unknown-linux-gcc编译,使用基于NFS方式的下载调试,了解嵌入式开发的基本过程。实验内容与要求:使用RedhatLinux9.0操作系统环境,安装ARM-Linux的开发库及编译器。创建一个新目录,并在其中编写hello.c和Makefile文件。学习在Linux下的编程和编译过程,以及ARM开发板的使用和开发环境的设置。下载已经编译好的文件到目标开发板上运行。学会集成环境的安装与开发。实验设备及工具(包括软件调试工具):硬件:UP-NETARM2410-S嵌入式实验平台、PC机Pentium500以上,硬盘10GB以上。软件:PC机操作系统REDHATLINUX9.0+MINICOM+ARM-LINUX开发环境。实验过程:运行PC机上的Linux系统,进入系统后,建立工作目录,所用语句如下:[root@zxtsmile]#mkdirhello[root@zxtsmile]#cdhello编写的hello.c如下:#include<stdio.h>main(){printf(“helloworld\n”);}要使上面的hello.c程序能够运行,必须要编写一个Makefile文件,Makefile文件定义了一系列的规则,它指明了哪些文件需要编译,哪些文件需要先编译,哪些文件需要重新编译等等更为复杂的命令。本次实验所用的Makefile文件如下:CC=armv4l-unknown-linux-gccEXEC=helloOBJS=hello.oCFLAGS+=LDFLAGS+=–staticall:$(EXEC)$(EXEC):$(OBJS)$(CC)$(LDFLAGS)-o$@$(OBJS)clean:-rm-f$(EXEC)*.elf*.gdb*.o使用如下语句来创建Makefile文件:[root@zxthello]#viMakefile接下来,进行hello.c的编译,使用以下语句:[root@zxthello]#makeclean[root@zxthello]#make在宿主PC计算机上启动NFS服务,并设置好共享的目录,进入MINICOM中建立开发板与宿主PC机之间的通讯。[root@zxthello]#minicom[/mnt/yaffs]mount-tnfs-onolock6:/arm2410s/host实验小结:通过此次的实验,对于Linux操作系统有了初步的认识。通过实验,感到理论课上的不少知识所学甚浅,在实际运用中会遇到一些意想不到的问题。但是,通过进一步学习与交流,我较好的完成了这次试验。这很好的补充了我在理论课上所学到的知识,同时让我有了很好的认识。由于我的水平有限和实验的时间较为紧张,有些细节还是了解的十分不是十分详细,对于较为复杂的编程以及Linux下的很多技巧任然知之甚少,希望能多一些这样的实践性的教学环节,让我们更好的了解书本中知识的应用。实验二、串行端口程序设计实验目的:通过该配套实验环节,巩固和加强对《嵌入式系统B》理论课的学习和培养实践动手能力。实验内容与要求:了解在Linux环境下串行程序设计的基本方法。掌握终端的主要属性及设置方法,熟悉终端I/O函数的使用。学习使用多线程来完成串口的收发处理。读懂程序源代码,学习终端I/O函数的使用方法,学习将多线程编程应用到串口的接收和发送程序设计中。实验设备:硬件:UP-NETARM2410-S嵌入式实验平台、PC机Pentium500以上,硬盘10GB以上。软件:PC机操作系统REDHATLINUX9.0+MINICOM+ARM-LINUX开发环境。实验过程:异步串行I/O方式是将传输数据的每个字符一位接一位(例如先低位、后高位)地传送。数据的各不同位可以分时使用同一传输通道,因此串行I/O可以减少信号连线,最少用一对线即可进行。接收方对于同一根线上一连串的数字信号,首先要分割成位,再按位组成字符。为了恢复发送的信息,双方必须协调工作。在微型计算机中大量使用异步串行I/O方式,双方使用各自的时钟信号,而且允许时钟频率有一定误差,因此实现较容易。但是由于每个字符都要独立确定起始和结束(即每个字符都要重新同步),字符和字符间还可能有长度不定的空闲时间,因此效率较低。上图给出异步串行通信中一个字符的传送格式。开始前,线路处于空闲状态,送出连续“1”。传送开始时首先发一个“0”作为起始位,然后出现在通信线上的是字符的二进制编码数据。每个字符的数据位长可以约定为5位、6位、7位或8位,一般采用ASCII编码。后面是奇偶校验位,最后是表示停止位的“1”信号,这个停止位可以约定持续1位、1.5位或2位的时间宽度。至此一个字符传送完毕,线路又进入空闲,持续为“1”。Linux操作系统从一开始就对串行口提供了很好的支持,为进行串行通讯提供了大量的函数,本次实验主要使用在Linux中进行串行通讯编程的基本方法。程序流程图如下:主程序接收线程发送线程程序如下:#include<termios.h>#include<stdio.h>#include<unistd.h>#include<fcntl.h>#include<sys/signal.h>#include<pthread.h>#defineBAUDRATEB115200#defineCOM1"/dev/ttyS0"#defineCOM2"/dev/ttyS1"#defineENDMINITERM27/*ESCtoquitminiterm*/#defineFALSE0#defineTRUE1volatileintSTOP=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);elsefd=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);}程序中对于串口的部分主要有:打开串口,串口设置:波特率设置、校验位和停止位的设置、设置停止位
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 前沿技术创新对新质生产力形成机制的深度分析
- 企业盈利能力多维度评价框架构建与应用
- 生成式人工智能技术扩散对产业形态的重构影响
- 数字化与绿色化协同转型对新质生产力的影响研究
- 新一代大学英语(第二版)视听说教程2(思政智慧版)课件 B2U6 Culture and tradition
- 豆包AI搜索优化代运营服务商选择指南:企业如何在字节生态中构建可持续的AI搜索竞争力
- 应用实践风险防控措施
- 在线拦截服务指南
- 阿达马不等式在行列式乘积极限中的应用
- 新疆胡杨河 2026 产业监管岗公务员招录理论考卷 招聘 3 人
- 公路工程施工安全技术与管理课件 第07讲 临时用电
- 配速员培训课件
- 蓄滞洪区运用监管实施规范
- 2025年黎明职业大学辅导员考试笔试题库附答案
- 医疗康复科操作礼仪要点
- 照顾孩子委托协议书
- 2025-2026学年统编版语文二年级上册第一单元早读课件
- 2025-2030中国石墨烯导热膜产业化进程与消费电子散热需求增长预测
- 挡墙重点难点施工方案
- 2025年贵州省初、中级专业技术资格考试(给排水)历年参考题库含答案详解(5卷)
- 2025年秋季小学六年级上册语文教学计划及教学进度表
评论
0/150
提交评论