嵌入式实验报告.doc_第1页
嵌入式实验报告.doc_第2页
嵌入式实验报告.doc_第3页
嵌入式实验报告.doc_第4页
嵌入式实验报告.doc_第5页
免费预览已结束,剩余18页可下载查看

下载本文档

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

文档简介

嵌入式实验报告姓名: 其他成员;: 学院: 机械与电子工程学院班级: 学号: 指导教师: 实验一 熟悉Linux 开发环境一、实验目的熟悉 Linux 开发环境,学会基于S3C2410 的Linux 开发环境的配置和使用。使用Linux 的armv4l-unknown-linux-gcc 编译,使用基于NFS 方式的下载调试,了解嵌入式开发的基本过程。二、实验内容本次实验使用 Redhat Linux 9.0 操作系统环境,安装ARM-Linux 的开发库及编译器。创建一个新目录,并在其中编写hello.c 和Makefile 文件。学习在Linux 下的编程和编译过程,以及ARM 开发板的使用和开发环境的设置。下载已经编译好的文件到目标开发板上运行。3、 实验步骤1、 编写程序源代码2、 编写Makefile文件3、 下载调试4、 思考题1 Makefile 是如何工作的?其中的宏定义分别是什么意思?答:Makefile 文件定义了一系列的规则,它指明了哪些文件需要编译,哪些文件需要先编译,哪些文件需要重新编译等等更为复杂的命令。使用它带来的好处就是自动编译,你只需要敲一个“make”命令整个工程就可以实现自动编译,CC 指明编译器 ;EXEC 表示编译后生成的执行文件名称;OBJS 目标文件列表;CFLAGS 编译参数;LDFLAGS 连接参数 ;all: 编译主入口;clean: 清除编译结果实验二 A/D 接口实验一、实验目的了解在 linux 环境下对S3C2410 芯片的8 通道10 位A/D 的操作与控制。二、实验内容学习 A/D 接口原理,了解实现A/D 系统对于系统的软件和硬件要求。阅读ARM 芯片文档,掌握ARM 的A/D 相关寄存器的功能,熟悉ARM 系统硬件的A/D 相关接口。利用外部模拟信号编程实现ARM 循环采集全部前4 路通道,并且在超级终端上显示。3、 实验步骤1、 阅读理解源码并编译应用程序2、下载调试程序4、 思考题1. 逐次逼近型的A/D 转换器原理是什么?答:逐次逼近型(也称逐位比较式)的 A/D 转换器,应用比积分型更为广泛,主要由逐次逼近寄存器SAR、D/A 转换器、比较器以及时序和控制逻辑等部分组成。它的实质是逐次把设定的SAR 寄存器中的数字量经D/A 转换后得到电压Vc 与待转换模拟电压V。进行比较。比较时,先从SAR 的最高位开始,逐次确定各位的数码应是“1”还是“0”,其工作过程如下:转换前,先将SAR 寄存器各位清零。转换开始时,控制逻辑电路先设定SAR 寄存器的最高位为“1”,其余位为“0”,此试探值经D/A 转换成电压Vc,然后将Vc 与模拟输入电压Vx 比较。如果VxVc,说明SAR 最高位的“1”应予保留;如果VxVc,说明SAR 该位应予清零。然后再对SAR 寄存器的次高位置“1”,依上述方法进行D/A 转换和比较。如此重复上述过程,直至确定SAR 寄存器的最低位为止。过程结束后,状态线改变状态,表明已完成一次转换。2 A/D 转换的重要指标包括哪些?答:分辨率、精度有绝对精度和相对精度、转换时间、电源灵敏度、量程、工作温度范围3 ARM 的A/D 功能的相关寄存器有哪几个,对应的地址是什么?答:寄存器ADCCON,地址:0x58000000。ADCDAT0:转换结果数据寄存器;地址:0x5800000CADC触摸屏控制寄存器ADCTSC,地址:0x58000004;4 如何启动ARM 开始转换A/D,有几种方式?转换开始时ARM 是如何知道转换哪路通道的?如何判断转换结束答:方式一:软件启动。定义与A/D转换相关的寄存器,初始化寄存器,rADCCON=0x1;启动转换。方式二:硬件启动:复位A/D转换器,外接用高电平触发ADCCON0.通过对ADCCON5:3的赋值来选择通道实验三 D/A 接口实验一、实验目的1、学习 D/A 转换原理2、掌握 MAX504 D/A 转换芯片的使用方法3、掌握不带有 D/A 的CPU 扩展D/A 功能的主要方法4、了解 D/A 驱动程序加入内核的方法二、实验内容学习 D/A 接口原理,了解实现D/A 系统对于系统的软件和硬件要求。阅读MAX504芯片文档,掌握其使用方法3、 实验步骤1、阅读理解源码并编译应用程序2、下载调试程序四、思考题1 D/A 转换器的分类。答:D/A 转换器的内部电路构成无太大差异,一般按输出是电流还是电压、能否作乘法运算等进行分类。可分为:电压输出型(如TLC5620)、电流输出型(如THS5661A)、乘算型(如AD7533)、一位 D/A 转换器2 D/A 转换器的主要技术指标。答:分辩率:指最小模拟输出量(对应数字量仅最低位为“1”)与最大量(对应数字量所有有效位为“1”)之比。建立时间:是将一个数字量转换为稳定模拟信号所需的时间,也可以认为是转换时间。其他指标还有线性度(Linearity),转换精度,温度系数/漂移。3 MAX504 的特点及使用方法。答:、MAX504 10 位D/A 转换器的特点:由单个 5V 电源供电,电压输出缓冲,内部 2.048V 参考电压INL=1/21LSB(MAX)、电压不随温度变化、可变的输出范围:0VVDD,VSSVDD上电复位、串行输出实验四 CAN 总线通讯实验1、 实验目的1、掌握 CAN 总线通讯原理。2、学习 MCP2510 的CAN 总线通讯的驱动开发。3、掌握 Linux 系统中断在CAN 总线通讯程序中使用。二、实验内容学习 CAN 总线通讯原理,了解CAN 总线的结构,阅读CAN 控制器MCP2510 的芯片文档,掌握MCP2510 的相关寄存器的功能和使用方法。编程实现两台CAN 总线控制器之间的通讯。ARM 接收到CAN 总线的数据后会在于终端显示,同时使用CAN 控制器发送的数据也会在终端反显。MCP2510 设置成自回环的模式,CAN 总线数据自发自收。3、 实验步骤1、编译CAN 总线模块2、 编译应用程序3、 下载调试4、 思考题1 CAN 总线通讯最少需要几根线?如果多个节点应该如何连接?答:只有2根线与外部相连。多个节点连接方式如下图所示:2 为什么CAN 总线的可靠性高,传输数率却可以速度比串口快(可达到1Mbps)?答:CAN总线使用串行数据传输方式,可以1Mb/s的速率在40m的双绞线上运行,也可以使用光缆连接,而且在这种总线上总线协议支持多主控制器。CAN与I2C总线的许多细节很类似,但也有一些明显的区别。当CAN总线上的一个节点(站)发送数据时,它以报文形式广播给网络中所有节点。对每个节点来说,无论数据是否是发给自己的,都对其进行接收。每组报文开头的11位字符为标识符,定义了报文的优先级,这种报文格式称为面向内容的编址方案。在同一系统中标识符是唯一的,不可能有两个站发送具有相同标识符的报文。当几个站同时竞争总线读取时,这种配置十分重要。实验五 串行端口程序设计1、 实验目的1、了解在Linux环境下串行程序的基本方法。2、掌握终端的主要属性及设置方法,熟悉终端I/O函数的使用。3、学习使用多线程完成串口的收发处理。2、 实验内容读懂程序源代码,学习终端I/O函数的使用方法,学习将多线程编程应用到串口的接受和发送程序设计中。3、 预备知识1、C语言的基础2、掌握在Linux下常用编辑器的使用。3、掌握Makefile的编写和使用。4、掌握Linux下的程序编译与交叉编译过程。 4、 实验原理异步串行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连接电缆,其连接方式如下:5、 程序分析本实验的代码如下:#include#include#include#include#include#include#define BAUDRATE B115200#define COM1 “/dev/ttyS0”#define COM2 “/dev/ttyS1”#define ENDMINITERM 27 /*ESC to quit miniterm*/#define FAL SE 0#define TRUE 1volatile int STOP=FALSE;volatile int fd;void child_handler(int s)print(“stop!n”);STOP=TRUE;/*_*/Void* keyboard(void* date)Int c;For(;) c=getchar(); if(c=ENDMINITERM) STOP=TURE; Break; Return NULL;/*_*/*modem input handle*/Void* receive(void* date)Int c;Printf(“read modemn”);While(STOP=FALSE)Read(fd,&c,1);/*com port*/Write(1,&c,1);/*stdout*/Printf(“exit form reading modemn”);Return NULL;/*_*/Void* send(void* date)Int =0;Printf(“send daten”);While(STOP=FALSE)/*modem input handler*/C+;C%=255;Write(fd,&c,1);/*stdout*/Usleep(100000);Return NULL;/*_*/Int main (int argc,char*argv)Struct termios oldtio,newtio,oldstdio,newstdio;Struct sigaction sa;Int ok;Pthread_t th_a;th_b,th_c;Void *retval*If(argc1)Fd=open(COM2,O_RDWR);Else Fd=open(COM1,O_RDWR);/|O_NOCTTY|O_NONBLOCK);If(fd0)Error(COM1);Exit(-1);Tcgetattr(0,&oldstdio);Tcgetattr(fd,&oldtio); /*save current modem settings*/Tcgetattr(fd,&newstdio); /*get working stdio*/Newtio.c_cflag=BAUDRATE|CRTSCTS|CS8|CLOCAL|CREAD; /*ctrol flag*/Newtio.c_iflag=IGNPAR; /*input flag*/Newtio.c_oflag=0; /*output flag*/Newtio.c_lfag=0;Newtio.c_ccVMIN=1;Newtio.c_ccVTIME=0;/*now clean the modem line and activate the settings for modem*/Tcflush(fd,TCIFLUSH);Tcsetattr(fd,TCSANOW,&newtio); /*set attrib*/Sa.sa_handler=child_handler;Sa.sa_flags=0;Sigaction(SIGCHLD,&sa,NULL);Pthread_creat(&th_a,NULL,keyboard,0);Pthread_creat(&th_b,NULL,receive,0);Pthread_creat(&th_c,NULL,send,0);Pthread_join(th_a,&retval);Pthread_join(th_b,&retval);Pthread_join(th_c,&retval);Tcsetattr(fd,TCSANOW,&roldtio); /*restore old modem setings*/Tcsetattr(0,TCSANOW,&oldstdio); /*restore old tty setings*/Close(fd);Exit(0);6、 实验步骤1. 阅读理解源码进入expbasic03_tty目录,使用vi编辑器或其他编辑器阅读理解源代码。2. 编译应用程序3. 下载调试切换到minicom终端窗口,使用NFS mount开发主机的/arm2410s到/host目录。进入expbasic03_tty目录,运行term,观察运行结果的正确性。rootzxt root#minicom/mnt/yaffs mount -t nfs -o nolock 6:/arm2410s /host/mnt/ysffscd/host/exp/basic/03-tty/host/exp/basic/03_tty.termRead modem Send date 123456789:;?ABCDEFGHIGHLMNOPQRSTUVWX由于内核已经将串口1作为终端控制台,所以可以看到term发出的数据,却无法看到开发主机发来的数据,可以使用另外一台主机连接串口2进行收发测试。Ctrl+c可使程序强行退出。注意:如果在执行./term时出现下面的错误,可以通过我们前文提到的方法建立一个连接来解决。/dev/ttySO:No such file or directory解决方法:/mnt/yaffscd /dev/dev ln -sf /dev/tts/0 ttySO (注意首字母是1,不是数字1)实验六 无线通信实验1 实验目的1、掌握GPS通讯原理2、学习NMEA0183 ASCII接口协议格式3、学习Linux下对GPS通讯信息采发集的编程方法2 实验内容学习GPS通讯原理,阅读GPS模块的产品说明,了解模块的电气指标、串行接口连接方式、NMEA语句格式。通过软件来设置GPS模块的波特率、输出语句和初始化经纬度等内容。编程实现对GPS通讯信息的采集方法,将接收到的数据进行语义的分析,并在LCD上显示当前的地理位置信息。学习Linux GPS数据的解析过程。GPS(Global Positioning System全球定位系统)是美国从本世纪70年代开始研制,历时20年,耗资200亿美元,具有在海、陆、空进行全方位实时三维导航与定位能力的新一代卫星导航与定位系统。GPS的主要优点包括:(1) 全球、全天候工作:能为用户提供连续,实时的三维位置,三维速度和精密时间。不受天气的影响。(2) 定位精度高:单机定位精度优于10米,采用差分定位,精度可达厘米级和毫米级。(3) 功能多,应用广:目前已广泛的应用于大地测量、工程测量、航空摄影测量、运载工具导航和管制、地壳运动监测、工程变形监测、资源勘察、地球动力学等学科领域。GPS由三个独立的部分组成:空间部分:21颗工作卫星,3颗备用卫星。地面支撑系统:1个主控站,3个注入站,5个监测站。用户设备部分:接收GPS卫星发射信号,以获得必要的导航和定位信息,经数据处理,完成导航和定位工作。GPS接收机硬件一般由主机、天线和电源组成。GPS定位原理:GPS定位的基本原理是根据高速运动的卫星瞬间位置作为已知的起算数据,采用空间距离后方交会的方法,确定待测点的位置。如图所示,假设t时刻在地面待测点上安置GPS接收机,可以测定GPS信号到达接收机的时间,再加上接收机所接收到的卫星星历等其它数据可以确定以下四个方程式:上述四个方程式中待测点坐标x、y、z和为未知参数,其中。di(i=1,2,3,4)分别为卫星1,卫星2,卫星3,卫星4到接收机之间的距离。分别为卫星1,卫星2,卫星3,卫星4的信号到达接收机所经历的时间。C为GPS信号的传播速度(即光速)。四个方程式中各个参数意义如下:x,y,z为待测点坐标的空间直角坐标。Xi,yi,zi(i=1,2,3,4)分别为卫星1,卫星2,卫星3,卫星4在t时刻的空间直角坐标,可由卫星导航电文求得。Vti(i=1,2,3,4)分别为卫星1,卫星2,卫星3,卫星4的卫星钟的的钟差,由卫星星历提供。Vt0为接收机的钟差。由以上四个方程即可解算出待测点的坐标x,y,z和接收机的钟差Vt0.目前GPS系统提供的定位精度是优于10米,而为得到更高的定位精度,通常采用差分GPS技术:将一台GPS接收机安置在基准站上进行观测。根据基准站已知精密坐标,计算出基准站到卫星的距离改正数,并由基准站实时将这一数据发送出去。用户接收机在进行GPS观测的同时,也接收到基准站发出的改正数,并对其定位结果进行改正,从而提高定位精度。3 实验步骤1. 检查跳线确定试验平台扩展槽上方JP1102/JP1103跳线位于2、3之间,跳线位为EXPORT;确定GPS/GPRS模块的JP201/JP202跳线位于模块外侧GPS端。2. 接入设备关闭2410-S平台,将GPS天线连接到GPS/GPRS模块上,天线接收端置放在能良好接收室外信号的地方,比如说窗台,将模块插入2410-S扩展插槽。3. 编译程序rootlocalhost/#cd /arm2410s/exp/basic/07_gps/rootlocalhost 07_gps#makearmv41-unknown-linux-gcc -c -o mian.o mian.carmv41-unknown-linux-gcc -c -o gps.o gps.carmv41-unknown-linux-gcc -o./bin/gps main.o gps.o-lpthread4. 运行程序启动minicom,执行以下指令。/mnt/yaffsmount -t nfs 3:/arm2410s /host /挂载主机目录,IP地址可变。/mnt/yaffscd/host/exp/basic/bin/host/exp/basic/bin./gps此时可直接在minicom中看到试验结果。通讯实验确定试验平台扩展槽上方JP1102/JP1103跳线位于2,3之间,跳线为EXPORT;确定GPS/GPRS模块的JP201/JP202跳线位于模块上,将任意可用GSM手机SIM卡插入模块背面SIMCARD插槽内,将模块插入2410-S扩展插槽编译程序rootlocalhost /# cd /arm2410s/exp/basic/08_gprs/ /进入实验所在目录rootlocalhost 08_gprs#make /编译实验内容生成可执行文件armv41-unknown-linux-gcc -c -o main.o main.carmv41-unknown-linux-gcc -c -o tty.o tty.carmv41-unknown-linux-gcc -c -o gprs.o gprs.carmv41-unknown-linux-gcc -c -o keyshell.o keyshell.carmv41-unknown-linux-gcc -o ./bin/gprs main.o tty.o gprs.o keyshell.o ./keyboard/keyboard.o ./keyboard/get key.o -lpthread5. 观看实验结果1give a call /拨号2respond a call /接电话3hold a call /挂断4send a msg /发送短信(已定)*help menuKeyshell实验七内核与根文件系统实验一、实验目的了解Linux的内核与根文件的概念,学会他们的烧写。二、实验内容结合实验指导书进行内核与根文件系统的烧写。三、实验内容1、烧写Linux内核程序。首先安装驱动程序,需要进行相关驱动的安装,点击添加硬件,如图所示:选择下一步,截图如下:添加Giveio点击下一步安装安装好了截图如图所示:好了之后,需要烧写VIVI使用CMD打开烧写程序在此后出现的三次要求输入参数,第一次是让选择Flash,,选0,然后回车如图所示:第二次是选择jtag对flash的两种功能,也选0,然后回车,如图所示:第三次是让选择起始地址,选0,然后回车,等待大约3-5分钟的烧写时间,如图所示:当VIVI烧写完毕后选择参数2,退出烧写。如图所示:至此内核烧写完毕。2、烧写根文件系统:在vivi状态下,输入烧写根文件的命令为:tftp flash root root.cramfs.如图所示:至此根文件系统烧写完毕!实验八驱动程序设计实验1 实验目的1、学习在LINUX下进行驱动设计的原理;2、掌握使用模块方式进行驱动开发调试的过程。2 实验内容在PC机上编写简单的虚拟硬件驱动程序并进行调试,实验驱动的各个接口函数的实现,分析并理解驱动与应用程序的交互过程。3 实验步骤Linux中的驱动设计是嵌入式Linux开发中十分重要的部分,他要求开发者不仅要熟悉Linux的内核机制、驱动程序与用户级应用程序的接口关系、考虑系统中对设备的并发操作等等,而且还要非常熟悉所开发硬件的工作原理。这对驱动开发者提出了比较高的要求,这个实验主要是给大家进入驱动设计提供一个简单入门的实例,并不需要提供太多与硬件相关的内容,这部分应该是通过仔细阅读芯片厂家提供的资料来解决。驱动程序的作用是应用程序与硬件之间的一个中间软件层,驱动程序应该为应用程序展现硬件的所有功能,不应该强加其他的约束,对于硬件使用的权限和限制应该由应用程序层控制。但是有时驱动程序的设计是跟所开发的项目相关的,这时就可能在驱动层加入一些与应用相关的设计考虑,主要是因为在驱动层的效率比应用层高,同时为了项目的需要可能只强化或优化硬件的某个功能,而弱化或关闭其他的一些功能;到底需要展现硬件的那些功能全都由开发者根据需要而定。驱动程序有时会被多个进程同时使用,这时我们要考虑如何处理并发的问题,就需要调用一些内核的函数使用互斥量和锁等机制。驱动程序主要需要考虑下面三个方面:提供尽量多的选项给用户,提高驱动程序的速度和效率,尽量使驱动程序简单,使之易于维护。Linux的驱动开发调试有两种方法,一种是直接编译到内核,再运行新的内核来测试;二是编译为模块的形式,单独加载运行调试。第一种方法效率

温馨提示

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

评论

0/150

提交评论