《嵌入式系统开发》实验课教学指导书_第1页
《嵌入式系统开发》实验课教学指导书_第2页
《嵌入式系统开发》实验课教学指导书_第3页
《嵌入式系统开发》实验课教学指导书_第4页
《嵌入式系统开发》实验课教学指导书_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

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

文档简介

《嵌入式系统开发》实验课教学指导书前言《嵌入式系统开发》是本专业的专业素质拓展课程,是实践性较强的一门课程。通过本课程的教学,掌握ARM体系结构,了解ARM汇编,能够熟练使用ARM开发工具,设计ARM启动代码。掌握操作系统基本原理,完成操作系统的移植,达到熟练掌握C语言的目的;掌握Linux原理的开发工具GCC与GDB的使用,通过在Linux下编程的实践,达到熟练掌握Linux下C编程的目的;掌握Linux下设备驱动设计方法,通过在Linux编写驱动程序的实践,达到熟练掌握Linux下驱动编程的目的;掌握嵌入式工程师职业素养和软硬件设计规范,了解嵌入式产品开发流程,为后续项目实践奠定基础。为了高效地利用有限的机时,提高上机效率,保证实验效果,根据以往教学经验,特自己编写这门课的实验指导书。本实验手册是我校嵌入式系统开发课程上机实验指导的主要依据。根据实验大纲要求,共包含7个实验。

目录实验一嵌入式系统实验平台简介 1实验目的 1实验内容 1预备知识 1实验设备及工具(包括软件调试工具) 1实验内容介绍 1实验二Linux的安装和基本操作实验 8实验目的 8实验内容 8实验三交叉编译环境的建立和bootloader的使用 11实验目的 11实验内容 11开发工具软件的安装与配置 12实验四多线程应用程序设计 23实验目的: 23实验内容: 23预备知识: 23实验设备及工具 23实验原理及代码分析 23实验步骤 33思考题 35实验五A/D接口实验 36实验目的 36实验内容 36实验设备及工具 36实验原理 36程序分析 41实验步骤 44思考题 45实验六在2410-S上的移植 46实验目的 46实验内容 46预备知识 46实验设备及工具 46实验原理 46思考题 49实验七无线通讯实验 50实验目的 50实验内容 50预备知识 50实验设备及工具 50实验原理 50实验步骤 54思考题 55附录一实验要求 56附录二实验成绩的考核与评定办法 57附录三实验项目设置与内容 58实验一嵌入式系统实验平台简介实验目的1.熟悉嵌入式系统实验平台组成。2.了解嵌入式系统实验平台安装、使用方法。实验内容用给定的嵌入式系统实验平台,演示常用功能。预备知识C语言的基础知识、linux开发基础知识。实验设备及工具(包括软件调试工具)硬件:ARM9嵌入式开发板、JTAG仿真器、PC机Pentiumn4,512MB以上内存。软件:PC机操作系统winxp、linux集成开发环境、仿真器驱动程序、实验内容介绍Linux价格低廉、功能强大,可以运行在X86,Alpha,Sparc,MIPS,MOTOROLA,PPC,NEC,ARM等硬件平台上,而且开放源代码,可以定制。我们所介绍的硬件平台是基于ARM体系结构,由北京博创兴业科技开发的UP-NetARM3000和UP-NetARM2410-S实验仪器。UP-NetARM3000的CPU为ARM7TDMI内核的三星S3C44B0X01芯片,由于没有MMU(内存管理单元)只能运行uClinux,UP-NetARM2410-S的CPU为ARM920T内核的三星S3c2410芯片,由于有MMU可以运行标准的ARM-LINUX内核。通过这两个平台,我们可以学习嵌入式LINUX中的针对有MMU和无MMU的不同开发过程。UP-NetARM3000及相关产品的资料可以访问博创公司的网站up-tech获得。本书以UP-NetARM2410-S为例,详细介绍嵌入式Linux的开发过程。UP-NetARM2410-S实验仪器介绍硬件配置UP-NetARM2410-S的硬件配置如表1所示,实物如图1-1所示:配置名称型号说明CPUARM920T结构芯片三星S3c2410X工作频率203MHzFLASHSAMSUNGK9F120864MNANDSDRAMHY57V561620AT-H32M×2=64MEtherNet网卡AX88796两片,10/100M自适应LCDLQ080V3DG018寸16bitTFT触摸屏SX-080-W4R-FBFM7843驱动LEDZLG7290四个共阴极LEDUSB接口4个HOST/1个DEVICE由AT43301构成USBHUBUART/IrDA2个RS232,1个RS485,1个IrDA从处理器的UART2引出AD由S3C2410芯片引出3个电位器控制输入AUDIOIIS总线,UDA1341芯片44.1KHz音频扩展卡插槽168PinEXPORT总线直接扩展GPS_GPRS扩展板SIMCOM的SIM100-E模块支持双道语音通信IDE/CF卡插座笔记本硬盘,CF卡PCMCIA和SD卡插座PCMCIA型号为DWL-650PS2PC键盘和鼠标由ATMEGA8单片机控制IC卡座AT24CXX系列由ATMEGA8单片机控制DC/STEP电机DC由PWM控制,STEP由74HC573控制CANBUS由MCP2510和TJA1050构成DoubleDAMAX504两个10位DAC端口调试接口JTAG14针、20针表1-1UP-NetARM2410-S的硬件配置图1-1UP-NetARM2410-SS3c2410芯片介绍S3c2410X芯片集成了大量的功能单元,包括:1.内部,存储器,外部,16KB数据CACH,16KB指令CACH,MMU;2.内置外部存储器控制器(SDRAM控制和芯片选择逻辑);3.LCD控制器(最高4K色STN和256K彩色TFT),一个LCD专用DMA;4.4路带外部请求线的DMA;5.三个通用异步串行端口(IrDA1.0,16-ByteTxFIFO,and16-ByteRxFIFO),2通道SPI;6.一个多主IIC总线,一个IIS总线控制器;7.SD主接口版本1.0和多媒体卡协议版本2.11兼容;8.2个USBHOST,一个USBDEVICE();9.4个PWM定时器和一个内部定时器;10.看门狗定时器;11.117个通用IO;12.24个外部中断;13.电源控制模式:标准、慢速、休眠、掉电;14.8通道10位ADC和触摸屏接口;15.带日历功能的实时时钟;16.芯片内置PLL;17.设计用于手持设备和通用嵌入式系统;18.16/32位RISC体系结构,使用ARM920TCPU核的强大指令集;19.ARM带MMU的先进的体系结构支持WINCE、EPOC32、LINUX;20.指令缓存(catch)、数据缓冲、写缓冲和物理地址TAGRAM,减小了对主存储器带宽和性能的影响;21.ARM920TCPU核支持ARM调试的体系结构;22.内部先进的位控制器总线(AMBA2.0,AHB/APB).其结构图如图1-2所示:图1-2S3c2410X芯片系统管理:1.小端/大端支持;2.地址空间:每个BANK128MB(全部1G字节);3.每个BANK可编程为8/16/32位数据总线;4.bank0到bank6为固定起始地址;5.bank7可编程BANK起始地址和大小;6.一共8个存储器BANK;7.6个存储器BANK用于ROM,SRAM和其他;8.2个存储器BANK用于ROM,SRAM和同步DRAM;9.每个存储器BANK可编程存取周期;10.支持等待信号用以扩展总线周期;11.支持SDRAM掉电模式下的自刷新;12.支持不同类型的ROM用于启动NOR/NANDFlash,EEPROM和其他。芯片封装:272-FBGA封装图如图1-3所示:图1-3272-FBGA封装嵌入式Linux开发流程嵌入式linux开发,根据应用需求的不同有不同的配置开发方法,但是一般都要经过以下过程:建立开发环境。操作系统一般使用REDHAT-LINUX,版本7到9都可以,选择定制安装或全部安装,通过网络下载相应的GCC交叉编译器进行安装(比如arm-linux-gcc、arm-uclibc-gcc),或者安装产品厂家提供的交叉编译器。配置开发主机。配置MINICOM,一般参数为波特率115200,数据位8位,停止位1,无奇偶校验,软硬件控制流设为无。在WINDOWS下的超级终端的配置也是这样。MINICOM软件的作用是作为调试嵌入式开发板信息输出的监视器和键盘输入的工具;配置网络,主要是配置NFS网络文件系统,需要关闭防火墙,简化嵌入式网络调试环境设置过程。建立引导装载程序BOOTLOADER,从网络上下载一些公开源代码的BOOTLOADER,如U-BOOT、BLOB、VIVI、LILO、ARM-BOOT、RED-BOOT等,根据自己具体芯片进行移植修改。有些芯片没有内置引导装载程序,比如三星的ARM7、ARM9系列芯片,这样就需要编写烧写开发板上flash的烧写程序,网络上有免费下载的WINDOWS下通过JTAG并口简易仿真器烧写ARM外围flash芯片的程序。也有LINUX下公开源代码的J-FLASH程序。如果不能烧写自己的开发板,就需要根据自己的具体电路进行源代码修改。这是让系统可以正常运行的第一步。如果你购买了厂家的仿真器当然比较容易烧写flash了,但是其中的核心技术是无法了解的。这对于需要迅速开发应用的人来说可以极大地提高开发速度。下载别人已经移植好的LINUX操作系统,如UCLINUX、ARM-LINUX、PPC-LINUX等,如果有专门针对你所使用的CPU移植好的LINUX操作系统那是再好不过,下载后再添加自己的特定硬件的驱动程序,进行调试修改,对于带MMU的CPU可以使用模块方式调试驱动,对于UCLINUX这样的系统好像只能编译进内核进行调试。建立根文件系统,从下载使用BUSYBOX软件进行功能裁减,产生一个最基本的根文件系统,再根据自己的应用需要添加其他的程序。默认的启动脚本一般都不会符合应用的需要,所以就要修改根文件系统中的启动脚本,它的存放位置位于/etc目录下,包括:、/etc/profile、/etc/.profile等,自动挂装文件系统的配置文件/etc/fstab,具体情况会随系统不同而不同。根文件系统在嵌入式系统中一般设为只读,需要使用mkcramfs、genromfs等工具产生烧写映象文件。建立应用程序的flash磁盘分区,一般使用JFFS2或YAFFS文件系统,这需要在内核中提供这些文件系统的驱动,有的系统使用一个线性flash(NOR型)512K-32M,有的系统使用非线性flash(NAND型)8-512M,有的两个同时使用,需要根据应用规划flash的分区方案。开发应用程序,可以下载到根文件系统中,也可以放入YAFFS、JFFS2文件系统中,有的应用程序不使用根文件系统,而是直接将应用程序和内核设计在一起,这有点类似于UCOS-II的方式。烧写内核、根文件系统、应用程序。发布产品。实验二Linux的安装和基本操作实验实验目的1.在PC机上安装Linux(Redhat9.0版本)操作系统2.熟悉简单的Linux指令和操作实验内容1.进行硬盘分区:如果使用单独硬盘安装RedHatLinux,可以在安装时使用它自带的图形界面分区工具——DiskDruid来进行分区,在下文中我们将介绍使用方法。如果在硬盘里已经安装了Windows操作系统,如何在保留原有操作系统的前提下,再安装一套Linux呢?我们建议使用PartitionMagic(分区大师)先分出一个空闲区,以备在安装RedHatLinux时,再使用DiskDruid来建立Linux分区使用。请注意:建议该分区的大小为10G。2.光盘安装:RedHatLinux提供了网络安装、硬盘安装以及光盘安装等多种安装方式,我们使用光盘安装。在光驱中放入光盘,并将BIOS里的电脑启动方式改为光盘启动方式保存退出,重启电脑。此时,光盘会自动启动Linux的安装程序,随即显示欢迎信息,此时按下回车键开始安装。(1)语言、键盘以及鼠标RedHatLinux支持包括法语、德语、西班牙语以及日语在内的世界大多数语言,并支持中文,所以我们在这里选择中文。接下来就是键盘和鼠标的选择,安装程序都能够自动识别键盘的类型,不需用户更改键盘的类型。一般的PS/2或串口鼠标不需要进行额外设置。(2)安装模式RedHatLinux提供了Workstation(工作站)、Server(服务器)、Laptop(笔记本电脑)、Custom(用户自定义)以及UpgradeExisting(从RedHatLinux老版本升级)5种安装模式,我们建议初学用户选择Custom(用户自定义)安装模式,同时以下的安装步骤我们也将以用户自定义安装模式来说明。(3)硬盘分区RedHatLinux提供了三种分区方式:自动分区、文本界面(Fdisk)、图形分区(DiskDruid)。这里要提醒大家,谨慎使用自动分区模式,自动分区如果使用不当,就会破坏硬盘中所有的数据。我们建议用户使用图形界面分区工具DiskDruid,在DiskDruid界面中点击“Add(增加)”按钮,会出现一个对话框,在这里需要进行一些设置。先设置这个分区的安装点(mountpoint),如果创建的是根文件系统,应该加载为“/”;如果创建的是交换分区(swap),就不需要选择安装点;如果创建的是除根文件系统和交换分区以外的分区,应该根据实际的情况选择安装点。接下来设置分区的大小,交换分区的大小应该为物理内存的两倍。根文件系统分区是系统安装所在的分区,如果你需要完全安装RedHatLinux,根文件系统分区就需要较大的空间(建议>9G)。随后还要为分区选择适当的分区类型。最后如果对分区设置满意,点击OK按钮完成创建分区。(这里建议只创建“/”和swap两个分区)(4)配置启动引导程序LILO有两种方法来配置LILO(注:RedHatLinux默认的引导程序是GRUB),分别是安装在系统的主引导记录(MBR)或者Linux根分区的第一个扇区中(例如:/dev/hda1)。我们建议把LILO安装在主引导记录中,即选择MasterBootRecord(MBR)选项。这样在系统启动过程中,会显示“boot:”提示符,在提示符下输入要启动的操作系统,回车后即可进入该操作系统。(5)网络设置、防火墙设置、时区设置如果读者没有安装网卡设备就不会出现网络配置界面,也不会出现防火墙配置界面,此时可直接跳到时区设置界面。如果你是局域网用户,可以从网络管理员那里获得网卡参数、主机名称以及DNS主机信息等,在本实验中,我们直接启用DHCP。对于一般用户,防火墙设置直接使用默认就可以了。然后,RedHatLinux会让你选择所在的时区,我们可以选择上海。(6)账号配置root口令非常重要,口令长度至少为六个字符。好的口令包括数字和大小写字母,特别需要注意的是口令是大小写区分的。(7)软件包选择在这一步我们将选择所需要的软件包,RedHatLinux提供流行的桌面环境GNOME和KDE,它们各自都有独特之处,建议初级用户选择全部软件包(everything);或者除缺省安装的组件外,在SelectPackage时添加上KernelDevelopment、SoftwareDevelopment、Emacs、Utilities。(8)X环境的设置X环境的设置包括两部分,第一部分是显卡设置,大多数显卡Linux都能自动识别并安装驱动程序。第二部分是显示器设置,如果Linux不能认出你的显示器,在定制显示器时要特别注意,不能扩大显卡的显存、水平和垂直刷新频率。如果你不能确定你的显卡和显示器是否支持设定的分辨率,可以点击“TestSetting”按钮对XWindow进行测试。(9)制作启动盘在安装过程中会提示用户制作启动盘,我们强烈建议用户创建一个Linux引导盘。如果你先安装Linux,后安装或者以后重装Windows9x/2k/xp,都会破坏GRUB或LILO。以后计算机每次启动,就直接进入windows,而不能引导Linux。这时候你创建的Linux启动盘就派上用场了。经过以上步骤,安装工作已经全部完成。你可以取出光驱中的RedHatLinux安装光盘和软驱中的软盘,重新引导系统,选择进入Linux系统,熟悉系统环境。开启终端,参照附录,练习Linux常用基本指令的使用。

实验三交叉编译环境的建立和bootloader的使用实验目的1.建立嵌入式软件的交叉编译环境。2.下载和使用bootloader。实验内容1.安装串口支持文件。2.安装编译器。3.安装bootloader。4.下载内核并运行。嵌入式LINUX开发环境有几个方案:1.基于PC机WINDOWS操作系统下的CYGWIN;2.在WINDOWS下安装虚拟机后,再在虚拟机中安装LINXUX操作系统;3.直接安装LINUX操作系统。基于WINDOWS的环境要么有兼容性问题,要么速度有影响,所以我推荐大家使用纯LINUX操作系统开发环境。我们实际的开发环境为REDHAT9,它已经支持中文,并且包含了绝大部分的开发工具,不用担心装了LINUX就不能使用WINDOWS的问题。一般的情况都是用户已经有了WINDOWS操作系统,再安装LINUX,LINUX会自动安装一个叫作GRUB的启动引导软件,可以选择引导多个操作系统。绝大多数Linux软件开发都是以native方式进行的,即本机(HOST)开发、调试,本机运行的方式。这种方式通常不适合于嵌入式系统的软件开发,因为对于嵌入式系统的开发,没有足够的资源在本机(即板子上系统)运行开发工具和调试工具。通常的嵌入式系统的软件开发采用一种交叉编译调试的方式。交叉编译调试环境建立在宿主机(即一台PC机)上,对应的开发板叫做目标板。运行Linux的PC【宿主机】开发时使用宿主机上的交叉编译、汇编及连接工具形成可执行的二进制代码(这种可执行代码并不能在宿主机上执行,而只能在目标板上执行),然后把可执行文件下载到目标机上运行。调试时的方法很多,可以使用串口,以太网口等,具体使用哪种调试方法可以根据目标机处理器提供的支持做出选择。宿主机和目标板的处理器一般不相同,宿主机为Intel处理器,而目标板如UP-NetARM2410-S开发板为三星S3c2410.GNU编译器提供这样的功能,在编译器编译时可以选择开发所需的宿主机和目标机从而建立开发环境。所以在进行嵌入式开发前第一步的工作就是要安装一台装有指定操作系统的PC机作宿主开发机,对于嵌入式LINUX,宿主机上的操作系统一般要求为REDHATLINUX。嵌入式开发通常要求宿主机配置有网络,支持NFS(为交叉开发时mount所用)。然后要在宿主机上建立交叉编译调试的开发环境。环境的建立需要许多的软件模块协同工作,这将是一个比较繁杂的工作,但现在已通过博创嵌入式教学套件中光盘的安装而自动完成了。对开发PC机的性能要求由于Redhat9.0安装后占用空间约为-5G之间,还要安装ARM-LINUX开发软件,因此对开发计算机的硬盘空间要求较大。硬件要求:CPU:高于奔腾500M,推荐高于赛扬;内存:大于128M,推荐256M;硬盘:大于10G,推荐高于40G。开发工具软件的安装与配置1.REDHATLINUX9.0的安装在一台PC上安装,选择Custom定制安装,在选择软件Package时最好将所有包都安装,需要空间约,如果选择最后一项:everything,即完全安装,将安装3张光盘的全部软件,需要磁盘空间大约5G。因此建议提前为REDHATLINUX的安装预留大约5-15G的空间,具体视用户的硬盘空间大小来确定,在安装完Redhat后还要安装Linux的编译器和开发库以及ARM-Linux的所有源代码,这些包安装后的总共需要空间大约为800M。2.开发工具软件的安装将博创兴业科技提供的附带开发工具光盘插入CDROM,然后执行以下命令:若系统不识别/dev/cdrom的话,可以用如下命令,假设CDROM为从盘,即为/dev/hdb,则:安装脚本程序将自动建立/arm2410s目录,并将所有开发软件包安装到/arm2410s目录下,同时自动配置编译环境,建立合适的符号连接。注意:安装完成后看一下主编译器Armv4l-unknown-linux-gcc是否在/opt/host/armv4l/bin/,如果不是这个路径,请使用vi修改/root/.bash_profile文件中PATH变量为PATH=$PATH:$HOME/bin:/opt/host/armv4l/bin/,存盘后执行:source/root/.bash_profile,则以后armv4l-unknown-linux-gcc会自动搜索到,可以在终端上输入armv,然后按tab键,会自动显示armv4l-unknown-linux-3.开发环境配置配置网络,包括配置IP地址、NFS服务、防火墙。网络配置主要是要安装好以太网卡,对于一般常见的RTL8139网卡,REDHAT9.0可以自动识别并自动安装好,完全不要用户参与,因此建议使用该网卡。然后配置宿主机IP为。如果是在有多台计算机使用的局域网环境使用此开发设备,IP地址可以根据具体情况设置。如图3-1所示:图3-1网络配置双击设备eth0的蓝色区域,进入以太网设置界面,如图3-2,3-3所示:图3-2以太网常规设置界面图3-3以太网路由设置界面对于,它默认的是打开了防火墙,因此对于外来的IP访问它全部拒绝,这样其它网络设备根本无法访问它,即无法用NFSmount它,许多网络功能都将无法使用。因此网络安装完毕后,应立即关闭防火墙。操作如下:点击红帽子开始菜单,选择安全级别设置,选中无防火墙。如图3-4所示:图3-4安全级别设置在系统设置菜单中选择服务器设置菜单,再选中服务菜单,将iptables服务的勾去掉,并确保nfs选项选中。配置NFS:点击主菜单运行系统设置->服务器设置->NFS服务器(英文为:SETUP->SYSTEMSERVICE->NFS),点击增加出现如下在界面,在目录(Drictory):中填入需要共享的路径,在主机(Hosts):中填入允许进行连接的主机IP地址。并选择允许客户对共享目录的操作为只读(Read-only)或读写(Read/write)。如图3-5所示:图3-5NFS基本设置图3-6是对客户端存取服务器的一些其他设置,一般不需要设置,取默认值。图3-6NFS用户访问设置当将远程根用户当作本地根用户时,对于操作比较方便,但是安全性较差。最后退出时则完成NFS配置。配置好后,界面应显示如图3-7所示:图3-7远程根用户当作本地根用户图3-8配置好的NFS我们也可以手工编写/etc/exports文件,其格式如下:共享目录可以连接的主机(读写权限,其他参数)例如:表示将本机的/arm2410s目录共享给ip地址为-的所有计算机,可以读取和写入。配置完成后,可用如下办法简单测试一下NFS是否配置好了:在宿主机上自己mount自己,看是否成功就可以判断NFS是否配好了。例如在宿主机/目录下执行:其中应为主机的IP地址。然后到/mnt/目录下看是否可以列出/arm2410s目录下的所有文件和目录,可以则说明mount成功,NFS配置成功。配置MINICOM:1.在linux操作系统Xwindow界面下建立终端(在桌面上点击右键——>新建终端),在终端的命令行提示符后输入minicom,回车,你就会看到minicom的启动画面(见图3-9)。若没有启动Xwindow则在命令行提示符后直接输入minicom即可。图3-9minicom启动画面2.minicom启动后,先按Ctrl+A键,再按Z键(注意不是连续按,Ctrl+A松开后才按Z),进入主配置界面(见图3-10)。图3-10主配置界面按“O”进入配置界面,如图3-11配置界面图3-11配置界面按上下键选择Serialportsetup,进入端口设置界面,这里有几个重要选项改为如下值(见图):(在Changewhichsetting后按哪个字母就进入哪项的配置,如按A进行端口号配置。)A————SerialDevice:/dev/ttyS0(端口号使用串口1)E————BPS/par/bits:/1152008N1(波特率)F,E硬件流,软件流都改为NO,若要使用PC机的串口2来接板子的串口1做监控,改为:/dev/ttyS1即可。3.选好后按ESC键退出到图3-11所示画面,选择Savesetupasdf1保存退出,以后只要启动minicom就是该配置,无需再做改动。4.配置完成后,用串口线连接好pc机和2410-S,启动2410-S,即可在minicom上看到启动信息,并可以执行操作控制。图3-12端口设置界面Linux开发软件的安装目录结构表格3-1均以/arm2410s目录为起点:表3-1/arm2410s下的文件说明目录名说明busybox-1.00-pre10Busybox-1.00源代码docarm2410-Slinux使用说明书QtQt应用程序和库的源代码insight-6.0Linux下源代码查看器root2410-S平台根文件系统kernel-2410s2410-S平台linux内核源代码demos所有实验演示程序imgvivi系统引导程序zImageARMLINUX-2.4内核压缩映象文件root.cramfs根文件系统映象文件yaffs.tar.bz2demos演示程序的压缩文件exp实验例程源码shmount-dos.shlinux下挂装windows的分区示例脚本mnt_udisk.shMOUNTU盘mkroot.sh制作根文件系统的脚本编译器安装路径说明如表3-2所示:表3-2编译器安装路径说明编译器安装目录说明arm-elf-gcc-2.95.3/opt/host/armv4l应用开发库和头文件Armv4l-unknown-linux-gcc/opt/host/armv4l/bin主编译器上述诸多程序的源代码都在光盘中提供.在安装完成LINUX后,就是对LINUX的网络环境的配置,最主要是配置NFS服务器。

实验四多线程应用程序设计实验目的:1.了解多线程应用程序设计的基本原理。2.学习pthread库函数的使用。实验内容:的源代码,熟悉几个重要的PTHREAD库函数的使用。2.掌握共享锁和信号量的使用方法。/arm2410s/exp/basic/02_pthread目录,运行make产生pthread程序,使用NFS方式连接开发主机进行运行实验。预备知识:C语言基础Linux下常用编辑器的使用Makefile的编写和使用Linux下的程序编译与交叉编译过程实验设备及工具硬件:UP-NETARM2410-S嵌入式实验平台,PC机Pentium500以上,硬盘40G以上,内存大于128M。软件:PC机操作系统REDHATLINUX9.0+MINICOM+ARM-LINUX开发环境实验原理及代码分析1.多线程程序的优缺点多线程程序作为一种多任务、并发的工作方式,有以下的优点:1)提高应用程序响应。这对图形界面的程序尤其有意义,当一个操作耗时很长时,整个系统都会等待这个操作,此时程序不会响应键盘、鼠标、菜单的操作,而使用多线程技术,将耗时长的操作(timeconsuming)置于一个新的线程,可以避免这种尴尬的情况。2)使多CPU系统更加有效。操作系统会保证当线程数不大于CPU数目时,不同的线程运行于不同的CPU上。3)改善程序结构。一个既长又复杂的进程可以考虑分为多个线程,成为几个独立或半独立的运行部分,这样的程序会利于理解和修改。LIBC中的pthread库提供了大量的API函数,为用户编写应用程序提供支持。2.实验源代码与结构流程图本实验为著名的生产者-消费者问题模型的实现,主程序中分别启动生产者线程和消费者线程。生产者线程不断顺序地将0到1000的数字写入共享的循环缓冲区,同时消费者线程不断地从共享的循环缓冲区读取数据。流程图如图4-1所示:图4-1生产者-消费者实验源代码结构流程图本实验具体代码如下:3.主要函数分析:下面我们来看一下,生产者写入缓冲区和消费者从缓冲区读数的具体流程,生产者首先要获得互斥锁,并且判断写指针+1后是否等于读指针,如果相等则进入等待状态,等候条件变量notfull;如果不等则向缓冲区中写一个整数,并且设置条件变量为notempty,最后释放互斥锁。消费者线程与生产者线程类似,这里就不再过多介绍了。流程图如下:图4-2生产消费流程图生产者写入共享的循环缓冲区函数PUT消费者读取共享的循环缓冲区函数GET4.主要的多线程API在本程序的代码中大量的使用了线程函数,如pthread_cond_signal、pthread_mutex_init、pthread_mutex_lock等等,这些函数的作用是什么,在哪里定义的,我们将在下面的内容中为大家做一个简单的介绍,并且为其中比较重要的函数做一些详细的说明。¾线程创建函数:获得父进程ID:¾测试两个线程号是否相同:¾线程退出:¾等待指定的线程结束:¾互斥量初始化:销毁互斥量:¾再试一次获得对互斥量的锁定(非阻塞):¾锁定互斥量(阻塞):¾解锁互斥量:¾条件变量初始化:销毁条件变量COND:¾唤醒线程等待条件变量:¾等待条件变量(阻塞):¾在指定的时间到达前等待条件变量:PTHREAD库中还有大量的API函数,用户可以参考其他相关书籍。下面我们对几个比较重要的函数做一下详细的说明:pthread_create线程创建函数线程创建函数第一个参数为指向线程标识符的指针,第二个参数用来设置线程属性,第三个参数是线程运行函数的起始地址,最后一个参数是运行函数的参数。这里,我们的函数thread不需要参数,所以最后一个参数设为空指针。第二个参数我们也设为空指针,这样将生成默认属性的线程。当创建线程成功时,函数返回0,若不为0则说明创建线程失败,常见的错误返回代码为EAGAIN和EINVAL。前者表示系统限制创建新的线程,例如线程数目过多了;后者表示第二个参数代表的线程属性值非法。创建线程成功后,新创建的线程则运行参数三和参数四确定的函数,原来的线程则继续运行下一行代码。pthread_join函数用来等待一个线程的结束。函数原型为:第一个参数为被等待的线程标识符,第二个参数为一个用户定义的指针,它可以用来存储被等待线程的返回值。这个函数是一个线程阻塞的函数,调用它的函数将一直等待到被等待的线程结束为止,当函数返回时,被等待线程的资源被收回。pthread_exit函数一个线程的结束有两种途径,一种是象我们上面的例子一样,函数结束了,调用它的线程也就结束了;另一种方式是通过函数pthread_exit来实现。它的函数原型为:唯一的参数是函数的返回代码,只要pthread_join中的第二个参数thread_return不是NULL,这个值将被传递给thread_return。最后要说明的是,一个线程不能被多个线程等待,否则第一个接收到信号的线程成功返回,其余调用pthread_join的线程则返回错误代码ESRCH。下面我们来介绍有关条件变量的内容。使用互斥锁来可实现线程间数据的共享和通信,互斥锁一个明显的缺点是它只有两种状态:锁定和非锁定。而条件变量通过允许线程阻塞和等待另一个线程发送信号的方法弥补了互斥锁的不足,它常和互斥锁一起使用。使用时,条件变量被用来阻塞一个线程,当条件不满足时,线程往往解开相应的互斥锁并等待条件发生变化。一旦其它的某个线程改变了条件变量,它将通知相应的条件变量唤醒一个或多个正被此条件变量阻塞的线程。这些线程将重新锁定互斥锁并重新测试条件是否满足。一般说来,条件变量被用来进行线线程间的同步。pthread_cond_init函数条件变量的结构为pthread_cond_t,函数pthread_cond_init()被用来初始化一个条件变量。它的原型为:其中cond是一个指向结构pthread_cond_t的指针,cond_attr是一个指向结构pthread_condattr_t的指针。结构pthread_condattr_t是条件变量的属性结构,和互斥锁一样我们可以用它来设置条件变量是进程内可用还是进程间可用,默认值是PTHREAD_PROCESS_PRIVATE,即此条件变量被同一进程内的各个线程使用。注意初始化条件变量只有未被使用时才能重新初始化或被释放。释放一个条件变量的函数为pthread_cond_destroy(pthread_cond_tcond)。pthread_cond_wait函数使线程阻塞在一个条件变量上。它的函数原型为:线程解开mutex指向的锁并被条件变量cond阻塞。线程可以被函数pthread_cond_signal和函数pthread_cond_broadcast唤醒,但是要注意的是,条件变量只是起阻塞和唤醒线程的作用,具体的判断条件还需用户给出,例如一个变量是否为0等等,这一点我们从后面的例子中可以看到。线程被唤醒后,它将重新检查判断条件是否满足,如果还不满足,一般说来线程应该仍阻塞在这里,被等待被下一次唤醒。这个过程一般用while语句实现。pthread_cond_timedwait函数另一个用来阻塞线程的函数是pthread_cond_timedwait(),它的原型为:它比函数pthread_cond_wait()多了一个时间参数,经历abstime段时间后,即使条件变量不满足,阻塞也被解除。pthread_cond_signal函数它的函数原型为:它用来释放被阻塞在条件变量cond上的一个线程。多个线程阻塞在此条件变量上时,哪一个线程被唤醒是由线程的调度策略所决定的。要注意的是,必须用保护条件变量的互斥锁来保护这个函数,否则条件满足信号又可能在测试条件和调用pthread_cond_wait函数之间被发出,从而造成无限制的等待。实验步骤1.阅读源代码及编译应用程序进入exp/basic/02_pthread目录,使用vi编辑器或其他编辑器阅读理解源代码。运行make产生pthread可执行文件。2.下载和调试切换到minicom终端窗口,使用NFSmount开发主机的/arm2410s到/host目录。进入/host/exp/basic/pthread目录,运行pthread,观察运行结果的正确性。运行程序最后一部分结果如下:思考题 加入一个新的线程用于处理键盘的输入,并在按键为ESC时终止所有线程。线程的优先级的控制。

实验五A/D接口实验实验目的了解在linux环境下对S3C2410芯片的8通道10位A/D的操作与控制。实验内容A/D接口原理,了解实现A/D系统对于系统的软件和硬件要求。ARM芯片文档,掌握ARM的A/D相关寄存器的功能,熟悉ARM系统硬件的A/D相关接口。ARM循环采集全部前4路通道,并且在超级终端上显示。预备知识C语言基础。Linux下常用编辑器的使用。Makefile的编写和使用。Linux下的程序编译与交叉编译过程。实验设备及工具硬件:UP-NETARM2410-S嵌入式实验平台、PC机Pentium500以上,硬盘10G以上。软件:PC机操作系统+MINICOM+ARM-LINUX开发环境实验原理1.A/D转换器A/D转换器是模拟信号源和CPU之间联系的接口,它的任务是将连续变化的模拟信号转换为数字信号,以便计算机和数字系统进行处理、存储、控制和显示。在工业控制和数据采集及许多其他领域中,A/D转换是不可缺少的。A/D转换器有以下类型:逐位比较型、积分型、计数型、并行比较型、电压-频率型,主要应根据使用场合的具体要求,按照转换速度、精度、价格、功能以及接口条件等因素来决定选择何种类型。常用的有以下两种:双积分型的A/D转换器双积分式也称二重积分式,其实质是测量和比较两个积分的时间,一个是对模拟输入电压积分的时间T0,此时间往往是固定的;另一个是以充电后的电压为初值,对参考电源Vref反向积分,积分电容被放电至零所需的时间T1。模拟输入电压Vi与参考电压VRef之比,等于上述两个时间之比。由于VRef、T0固定,而放电时间T1可以测出,因而可计算出模拟输入电压的大小(VRef与Vi符号相反)。由于T0、VRef为已知的固定常数,因此反向积分时间T1与输入模拟电压Vi在T0时间内的平均值成正比。输入电压Vi愈高,VA愈大,T1就愈长。在T1开始时刻,控制逻辑同时打开计数器的控制门开始计数,直到积分器恢复到零电平时,计数停止。则计数器所计出的数字即正比于输入电压Vi在T0时间内的平均值,于是完成了一次A/D转换。由于双积分型A/D转换是测量输入电压Vi在T0时间内的平均值,所以对常态干扰(串摸干扰)有很强的抑制作用,尤其对正负波形对称的干扰信号,抑制效果更好。双积分型的A/D转换器电路简单,抗干扰能力强,精度高,这是突出的优点。但转换速度比较慢,常用的A/D转换芯片的转换时间为毫秒级。例如12位的积分型A/D芯片ADCETl2BC,其转换时间为lms。因此适用于模拟信号变化缓慢,采样速率要求较低,而对精度要求较高,或现场干扰较严重的场合。例如在数字电压表中常被采用。逐次逼近型的A/D转换器逐次逼近型(也称逐位比较式)的A/D转换器,应用比积分型更为广泛,其原理框图如图5-1所示,主要由逐次逼近寄存器SAR、D/A转换器、比较器以及时序和控制逻辑等部分组成。它的实质是逐次把设定的SAR寄存器中的数字量经D/A转换后得到电压Vc与待转换模拟电压V。进行比较。比较时,先从SAR的最高位开始,逐次确定各位的数码应是“1”还是“0”,其工作过程如下:转换前,先将SAR寄存器各位清零。转换开始时,控制逻辑电路先设定SAR寄存器的最高位为“1”,其余位为“0”,此试探值经D/A转换成电压Vc,然后将Vc与模拟输入电压Vx比较。如果Vx≥Vc,说明SAR最高位的“1”应予保留;如果Vx<Vc,说明SAR该位应予清零。然后再对SAR寄存器的次高位置“1”,依上述方法进行D/A转换和比较。如此重复上述过程,直至确定SAR寄存器的最低位为止。过程结束后,状态线改变状态,表明已完成一次转换。最后,逐次逼近寄存器SAR中的内容就是与输入模拟量V相对应的二进制数字量。显然A/D转换器的位数N决定于SAR的位数和D/A的位数。图(b)表示四位A/D转换器的逐次逼近过程。转换结果能否准确逼近模拟信号,主要取决于SAR和D/A的位数。位数越多,越能准确逼近模拟量,但转换所需的时间也越长。逐次逼近式的A/D转换器的主要特点是:转换速度较快,在1—100/µs以内,分辨率可以达18位,特别适用于工业控制系统。转换时间固定,不随输入信号的变化而变化。抗干扰能力相对积分型的差。例如,对模拟输入信号采样过程中,若在采样时刻有一个干扰脉冲迭加在模拟信号上,则采样时,包括干扰信号在内,都被采样和转换为数字量,这就会造成较大的误差,所以有必要采取适当的滤波措施。图5-1逐次逼近式A/D转换器2.A/D转换的重要指标1、分辨率(Resolution)分辨率反映A/D转换器对输入微小变化响应的能力,通常用数字输出最低位(LSB)所对应的模拟输入的电平值表示。n位A/D能反应1/2n满量程的模拟输入电平。由于分辨率直接与转换器的位数有关,所以一般也可简单地用数字量的位数来表示分辨率,即n位二进制数,最低位所具有的权值,就是它的分辨率。值得注意的是,分辨率与精度是两个不同的概念,不要把两者相混淆。即使分辨率很高,也可能由于温度漂移、线性度等原因,而使其精度不够高。2、精度(Accuracy)精度有绝对精度(AbsoluteAccuracy)和相对精度(RelativeAccuracy)两种表示方法。绝对误差:在一个转换器中,对应于一个数字量的实际模拟输入电压和理想的模拟输入电压之差并非是一个常数。我们把它们之间的差的最大值,定义为“绝对误差”。通常以数字量的最小有效位(LSB)的分数值来表示绝对误差,例如:±1LSB等。绝对误差包括量化误差和其它所有误差。相对误差是指整个转换范围内,任一数字量所对应的模拟输入量的实际值与理论值之差,用模拟电压满量程的百分比表示。例如,满量程为10V,10位A/D芯片,若其绝对精度为±1/2LSB,则其最小有效位的量化单位:,其绝对精度为=,其相对精度为0.048%。3、转换时间(ConversionTime)转换时间是指完成一次A/D转换所需的时间,即由发出启动转换命令信号到转换结束信号开始有效的时间间隔。转换时间的倒数称为转换速率。例如AD570的转换时间为25us,其转换速率为40KHz。4、电源灵敏度(powersupplysensitivity)电源灵敏度是指A/D转换芯片的供电电源的电压发生变化时,产生的转换误差。一般用电源电压变化1%时相当的模拟量变化的百分数来表示。5、量程量程是指所能转换的模拟输入电压范围,分单极性、双极性两种类型。例如,单极性量程为0~+5V,0~+10V,0~+20V;双极性量程为-5~+5V,-10~+10V。6、输出逻辑电平多数A/D转换器的输出逻辑电平与TTL电平兼容。在考虑数字量输出与微处理的数据总线接口时,应注意是否要三态逻辑输出,是否要对数据进行锁存等。7、工作温度范围由于温度会对比较器、运算放大器、电阻网络等产生影响,故只在一定的温度范围内才能保证额定精度指标。一般A/D转换器的工作温度范围为(0~700C),军用品的工作温度范围为(-55~+1250C)ARM自带的十位A/D转换器ARMS3C2410芯片自带一个8路10位A/D转换器,并且支持触摸屏功能。ARM2410开发板只用作3路A/D转换器,其最大转换率为500K,非线性度为正负1.5位,其转换时间可以通过下式计算:如果系统时钟为50MHz,比例值为49,则为A/D转换器频率=50MHz/(49+1)=1MHz转换时间=1/(1MHz/5cycles)=1/200kHz(相当于5us)=5us表5-1采样控制寄存器的设置寄存器地址读/写描述复位值ADCCON0x58000000R/WADC控制寄存器0x3FC4表5-2采样控制寄存器的位描述ADCCON位描述初始设置ECFLG[15]Endofconversionflag(readonly).0=A/Dconversioninprocess1=EndofA/Dconversion0PRSCEN[14]A/Dconverterprescalerenable.0=Disable1=Enable0PRSCVL[13:6]A/Dconverterprescalervalue.Datavalue:1~255Notethatdivisionfactoris(N+1)whentheprescalervalueisN.0xFFSEL_MUX[5:3]Analoginputchannelselect.000=AIN0001=AIN1010=AIN2011=AIN3100=AIN4101=AIN5110=AIN6111=AIN7(XP)0STDBM[2]Standbymodeselect.0=Normaloperationmode1=Standbymode1READ_START[1]A/Dconversionstartbyread.0=Disablestartbyreadoperation1=Enablestartbyreadoperation0ENABLE_START[0]A/Dconversionstartsbysettingthisbit.IfREAD_STARTisenabled,thisvalueisnotvalid.0=Nooperation1=A/Dconversionstartsandthisbitisclearedafterthestart-up.0该寄存器的0位是转换使能位,写1表示转换开始。1位是读操作使能转换,写1表示转换在读操作时开始。3、4、5位是通道号。[13:6]位为AD转换比例因子。14位为比例因子有效位,15位为转换标志位(只读)。表5-3寄存器地址读/写描述复位值ADCDAT00x5800000CRADC转换数据寄存器-ADCDAT0:转换结果数据寄存器。该寄存器的十位表示转换后的结果,全为1时为满量程伏。A/D转换器在扩展板的连接A/D转换器在扩展板的接法如图5-2所示,前三路通过电位器接到电源上。图5-2A/D转换器在扩展板上的接法程序分析1.关键代码分析由于编译开发板内核时直接把ad驱动加入到内核里面,对用户的只是下面的一个文件结构。在用户程序里只需要用到open、read、write、release等内核函数即可。下面我们对驱动部分重要函数进行说明。ad驱动在内核里的代码我们放到了本次实验的src文件下,s3c里为arm2410头文件s3c初始化ADC的部分。所有代码也可以到内核里面去阅读。关于驱动知识的基本介绍请见第4章第一小节,本节只作为应用实验的简单例子。的代码如下:实验步骤1.阅读理解源码进入/arm2410s/exp/basic/04_ad目录,使用vi编辑器或其他编辑器阅读理解源代码。2.编译应用程序运行make产生ad可执行文件[root@zxt/]#cd/arm2410s/exp/basic/04_ad/[root@zxt04_ad]#makearmv4l-unknown-linux-gcc-c-omain.omain.carmv4l-unknown-linux-gcc-o../bin/admain.o-lpthreadarmv4l-unknown-linux-gcc-oadmain.o-lpthread[root@zxt04_ad]#lsadhardware.hmain.oMakefile.baks3c2410-adc.hbinmain.cMakefilesrc3.下载调试换到minicom终端窗口,使用NFSmount开发主机的/arm2410s到/host目录。[root@zxtroot]#minicom[/mnt/yaffs]mount-tnfs-onolock6:/arm2410s/host[/mnt/yaffs]cd/host/exp/basic/04_ad/[/host/exp/basic/04_ad]./adPressEnterkeyexit!a0=0.0032a1=3.2968a2=3.2968我们可以通过调节开发板上的三个黄色的电位器,来查看a0、a1、a2的变化。思考题1.逐次逼近型的A/D转换器原理是什么?2.A/D转换的重要指标包括哪些?3.ARM的A/D功能的相关寄存器有哪几个,对应的地址是什么?4.如何启动ARM开始转换A/D,有几种方式?转换开始时ARM是如何知道转换哪路通道的?如何判断转换结束?

实验六Qtopia在2410-S上的移植实验目的1.将Qtopia移植到2410-S板所使用的linux-上。2.了解如何在pc机(x86)上为xscale(arm)编译、移植应用程序。实验内容1.了解Qtopia在2410-s上的移植过程。2.交叉编译Qtopia所需要的资源文件和环境,交叉编译Qtopia源代码。3.下载生成的Qtopia系统到开发板。4.在Linux下编译和使用Qtopia平台。5.在Qtopia平台上发布一个简单程序。预备知识1.有C语言基础。2.会使用LINUX下常用的编辑器。3.掌握Makefile的编写和使用。4.了解Linux下的编译程序与交叉编译的过程。实验设备及工具硬件:UP-NETARM2410-S嵌入式开发板、PC机Pentumn500以上,硬盘10G以上软件:PC机操作系统REDHATLINUX9.0+MINICOM+ARM-LINUX开发环境实验原理Qtopia概述Qtopia是Trolltech面向嵌入式Linux的综合应用平台。Qtopia包含完整的应用层、灵活的用户界面、窗口操作系统、应用程序启动程序以及开发框架。Qtopia的组件:表6-1窗口操作系统游戏和多媒体工作辅助应用程序同步框架PIM应用程序Internet应用程序开发环境输入法Java集成本地化支持个性化选项无线支持目前在sitsnag平台上使用的qtopia版本为free,是面向PDA的一个版本,当然它也有面向的版本。QtopiaPDA版是一个强大的平台,专用于基于Linux操作系统的PDA(个人数字助理设备)。许多PDA都已采用了Qtopia,QtopiaPDA版已经成了事实上的Linux标准,它代表了可行的“第三种”PDA设计方案。QtopiaPDA版具有可定制的用户界面,支持更大的屏幕尺寸以及横向和纵向布局。实验步骤1.实验可以分为以下几个步骤进行:(1)在装有linux的pc机上安装交叉编译环境。安装光盘时所安装的编译器版本较低,不能正常编译QT程序,所以编译前需要安装Qt/tools/arm-linux-gcc-.tar.bz2,并在/root/.bash_profile中修改编译器搜索路径。(2)编译库文件:(3)编译qt-x11-:(4)编译安装qt-embedded-(5)编译安装QTOPIA(6)将需要拷贝到开发板上的文件整理到一个单独的文件夹里面在本次实验中,buildqtopia.sh文件已为大家做好了以上几步,我们可以直接运行该文件进图6-1Qtopia层次结构行编译。大家可以分析buildqtopia.sh内容,掌握编译的步骤。2.编译步骤:cdsrc./buildqtopia.sh当编译完成后,在src/qtopia-free-/image/opt/Qtopia下是编译完成的Qtopia桌面环境。说明:在编译完成后,src下的各个目录对应如下软件包:e2fsprogs-libs-1.37ext2文件系统工具包,Qtopia用到了其中的libuuide2fs-installext2工具包编译结果jpeg-6bjpeg解码库jpeg-installjpeg编译结果tslib触摸屏工具包tslib-install触摸屏工具包编译结果tmake-1.13tmake工具,编译Qtopia时需要使用qt-2.Qt/X11-2.3.2及编译结果,编译Qtopiaqt-x11-free-3.Qt/X11-3.3.4及编译结果,编译Qtopiaqt-2.Qt/Embedded2.3.10qtopia-free-Qtopia2.1.1及编译结果3.安装步骤:Qtopiacdqtopia-free-/image/opt/tarcvjf/root/share/qtopia-install.tar.bz2Qtopia将/temp/qtopia-install.tar.bz2下载到目标机,并解压缩到/mnt/yaffs下。相关文件将src/qtopia.sh下载到目标机的/use/bin目录下.将src/e2fs-install/lib/libuuid.so*下载到目标机的/lib目录下将src/jpeg-install/lib/libjpeg.so*下载到目标机的/lib目录下目标机上的处理在目标机上执行:cd/usrln-s/mnt/yaffs/Qtopiaqpe4运行:插上USB鼠标,在目标机上执行qtopia.sh即可运行qtopia桌面环境。注意:(1)如果运行./qtopia.sh后提示找不到库文件,请从编译器目录下查找,并拷贝到开发板/mnt/yaffs/lib中。openframebufferdevice/dev/fb0可以执行:ln–sf/dev/fb/0/dev/fb0(2)如果提示:Qt/Embeddeddatadirectoryisnotownedbyuser0:/tmp/qtembedded-0运行:chownroot:root/tmp/qtembedded-0(3)如果提示:Qtopiadatadirectoryisnotownedbyuser0:/tmp/qtopia-0运行:chownroot:root/tmp/qtopia-0思考题1.请思考Qtopia的framebuffer的机制。

实验七无线通讯实验实验目的1.了解掌握GPS、GPRS、红外、蓝牙无线通讯原理。2.学习Linux下对GPS、GPRS、红外、蓝牙通讯信息采集的编程方法。3.掌握Linux嵌入式开发平台上蓝牙设备的使用等。实验内容1.学习GPS、GPRS、红外、蓝牙设备通讯原理,了解GPS、GPRS、蓝牙、红外通讯的结构。在PC机与开发板之间实现GPS、GPRS、蓝牙、红外无线通讯。2.熟练ARM系统硬件的UART使用方法。Linux下配置红外设备实现红外模块和pc机端进行通信,并且可以收发文件。3.掌握在Linux下常用编辑器的使用。掌握Makefile的编写和使用。掌握Linux下的程序编译与交叉编译过程4.通过软件来设置模块的波特率、输出语句等内容。编程实现对通讯信息的采集方法,将接收到的数据进行语义的解析,并在LCD上显示。学习Linux数据的解析过程。预备知识1.熟练使用C语言。2.掌握在LINUX下常用编辑器的使用。3.了解GPS通讯原理。实验设备及工具硬件:UP-NETARM2410-S嵌入式实验仪、PC机Pentumn500以上,硬盘10G以上。软件:PC机操作系统REDHATLINUX9.0+MINICOM+ARMLINUX开发环境实验原理1.SIM100-EGPRS模块硬件ARM嵌入式开发平台的GPRS扩展板采用的GPRS模块型号为SIM100-E,是SIMCOM公司推出的GSM/GPRS双频模块,主要为语音传输、短消息和数据业务提供无线接口。SIM100-E集成了完整的射频电路和GSM的基带处理器,适合于开发一些GSM/GPRS的无线应用产品,如移动、PCMCIA无线MODEM卡、无线POS机、无线抄表系统以及无线数据传输业务,应用范围十分广泛。SIM100-E模块的详细技术指标请参阅扩展板说明文档。SIM100-E模块为用户提供了功能完备的系统接口。60Pin系统连接器是SIM100-E模块与应用系统的连接接口,主要提供外部电源、RS-232串口、SIM卡接口和音频接口。SIM100-E模块使用锂电池、镍氢电池或者其他外部直流电源供电,电源电压范围为:,电源应该具有至少2A的峰值电流输出能力。注意SIM100-E的下列引脚:VANA为模拟输出电压,可提供的电压和50mA的电流输出,用于给音频电路提供电源。VEXT为数字输出电压,可提供的电压和50mA的电流输出。VRTC为时钟供电输入,当模块断电后为内部RTC提供电源,可接一个2.0V的钮扣充电电池。本扩展板需要单独的5V2A的直流电源供电,经过芯片MIC29302稳压后得到电压供给GPRS模块使用。SIM100-E提供标准的RS-232串行接口,用户可以通过串行口使用AT命令完成对模块的操作。串行口支持以下通信速率:300,1200,2400,4800,9600,19200,38400,57600,115200(起始默认)当模块上电启动并报出RDY后,用户才可以和模块进行通信,用户可以首先使用模块默认速率115200与模块通信,并可通过AT+IPR=<rate>命令自由切换至其它通信速率。在应用设计中,当MCU需要通过串口与模块进行通讯时,可以只用三个引脚:TXD,RXD和GND。其他引脚悬空,建议RTS和DTR置低。本扩展板上采用MAX3232芯片完成GPRS模块的TTL电平到RS232电平的转换,以能和ARM开发平台的RS232串口连接。SIM100-E模块提供了完整的音频接口,应用设计只需增加少量外围辅助元器件,主要是为MIC提供工作电压和射频旁路。音频分为主通道和辅助通道两部分。可以通过AT+CHFA命令切换主副音频通道。音频设计应该尽量远离模块的射频部分,以降低射频对音频的干扰。本扩展板硬件支持两个语音通道,主

温馨提示

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

评论

0/150

提交评论