第一篇:基于嵌入式ARM9的USB设计与实现
基于嵌入式ARM9的USB设计与实现
引 言
USB(Universal Serial Bus)是通用串行总线的缩写,因其具有方便易用,动态分配带宽,容错性优越和高性价比等特点,现已成为计算机的主流接口。
随着嵌入式系统的广泛应用,各种小型终端需要开发出与外界联系的USB接口。目前,常用的技术有两种。基于单片机的USB接口,特点是需要外置芯片,电路复杂,留下的CPU资源不多;基于ARM的USB接口,特点是资源丰富,但ARM系列产品较多,如果选型不当,还需要搭接较多的外围电路,且不能很好地发挥CPU性能。USB 接口原理
USB1.1 规范[1]将USB 分为5 部分:控制器、控制器驱动程序、USB 芯片驱动程序、USB设备以及针对不同USB 设备的客户端驱动程序。
(1)控制器(Host Controller)主要负责执行由控制器驱动程序发出的命令。
(2)控制器驱动程序(Host Controller Driver), 在控制器与USB 设备间建立通信
管道(Pipe)。
(3)USB 驱动程序(USB Driver),提供对不同USB 设备及芯片的支持。(4)USB 设备(USB Device), 有两类USB 设备:一类称为功能设备(Function),另
一类是称为USB 集线器(HUB),可以连接多个USB 设备。
(5)USB 设备驱动程序(Client Driver Software)及特定应用程序。主控制器的驱动软件由操作系统支持,USB 设备开发人员一般只需编写客户驱动程序,实现特定功能,设备端所有功能软件需要全面设计。USB 的四种数据传输模式分别是:控制型传输、中断型传输、批量型传输、实时型传输。第一种在缺省通道中传输USB 接口本身的配置等控制信息,后面三种用于功能部件传输数据。中断型用于键盘等的异步输入输出少量数据传输,批量传输主要用于象硬盘等块设备的数据传输,在中断和批量的传输过程中要传递交互握手信号,确保数据准确无误。实时传输对带宽有严格要求,但允许有一定误码,省去了交互握手信号的传递,常用于音视频码流数据传输。四种类型数据都按带宽要求分配在1ms 一帧的数据帧内进行传输,连到端点(EndPoint)通道.1.1嵌入式系统USB 接口设计
要满足高性能ARM嵌入式系统的要求,扩展USB接口必须选择高性能USB控制器芯片,Philips公司的PDISUBD12 USB器件,是与微处理器配合使用的高性能USB接口器件,性价比很高[2][4]。PDIUSBD12主要特性有:
(1)符合USB 1.1 技术规范;
(2)USB控制器并行接口与处理器间的数据传输速度高达2M 字节/秒;(3)在批量模式和同步模式下均可实现1M 字节/秒的数据传输速率;(4)集成了FIFO存储收发器,支持DMA 操作;(5)内置时钟倍频PLL电路,可编程时钟频率输出;(6)多中断模式实现批量和同步传输;
1.2音频码流USB 设备驱动程序
Windows2000 中各种USB 设备客户驱动程序结构框架基本相同,可以从Windows2000 DDK 中获得USB 设备驱动程序范例代码,对范例代码作少量修改就可以满足特定功能需要。图1 显示了驱动程序各层间的数据传递关系,底层USB 主控制器驱动程序(USB Host Driver)由操作系统提供支持,设备驱动程序只需要对USB Host Driver 上传的I/O 数据包IRP 作出响应,并把要输出数据以IRP 形式下传给USB Host Driver 即可[5] [6]。在ISO(实时型)模式下传输音频码流,USB 客户程序除了WDM(Windows Driver Model)驱动常规处理外,必须计算好带宽,并为驱动程序在非分页存储区内分配好环行缓冲区(Ringbuffer),以便USB 主控制器可以不间断输出实时数据。RingBuffer 的大小按下式 计算:
每帧字节数 × 每缓冲帧数 × 缓冲区数 ; 每传完一缓冲区,USB Host Driver 回调(CallBack)一次客户驱动程序,USB 带宽
按每1ms 传送1 帧数据来分配,要实现8kHz 采样频率、8bits 编码的音频PCM 码流传输,帧数据包大小必须设为8Bytes,若设置4 个缓冲区交替工作,每缓冲区分20 帧传送, 则RingBuffer 的大小为640Bytes,那么USB 主控制器每20ms 的频率中断回调一次客户驱动程序是合适的。驱动程序通过IoSetCompletionRoutine()函数给每个IRP 设置回调函数入口地址[6],每完成一个IRP 缓冲区数据传送操作,回调一次该地址指向的函数,以便把下一缓冲包数据压入到IRP 栈,直到全部数据流传送完毕或人为终止传送。S3C2440A特点
S3C2440A的CPU部分主要集成了电源模块、复位和时钟模块、触摸屏和小键盘模块、程序存储器和数据存储器模块。同时提供如下丰富的外围接口:同步存储器(SDRAM)和NAND FLASH控制接口,可扩展到1 GB的存储的空间;4个DMA通道和24个中断端口;能控制STN LCD和TFT液晶屏显示,支持触摸屏功;USB接口A型和B型各一个;3个串行口、I2C,SPI,I2S等接口;带AC97音频接口;具备SD卡、数码相机接口和网络接口。
S3C2440A还具备多种工作模式,管脚为17×17方型分布,横向从左1到右17编号,纵向从下A到上U编号,分类为A1~A17,B1~B17,C1~C17依此类推到U1~U17。这些管脚所对应的功能并不是惟一的,通常只要使能变化,S3C2440A就能实现不同的控制功能。该设计涉及到的 S3C2440A,其管脚如表1所示分为3类。
串口电路
串口在该设计中的作用是通过计算机加载USB驱动程序,原理如图2所示。
3.1电源电路
由于S3C2440A芯片的管脚对电压提出了不同要求,所以需要完成电源的变压,其原理 如图3所示。驱动程序的研究
按USB接口,其设备结构可分为USB Host(主机)和USB Device(外部设备)。USB主机控制USB设备进行通信,而主机与主机之间,或USB设备与USB设备之间是不能通信的。
4.1 USB主机
USB主机的功能通常包含以下几个部分:验证USB设备是否安插好或拔除;控制USB主机与设备两者中的数据流;返回USB主机的所显状态。
USB系统软件由以下3个部分组成:主机控制器驱动(HCD)、USB驱动(USBD)、主机软件(Host Software)。主机控制器所具备的功能如表2所示。HCD和USBD包含基于不同抽象层次的软件接口,两者以一定的方式协同完成任务,用以实现 USB系统的功能。它们的任务差别没有具体定义,然而HCD要具备的一项功能就是必须支持多种不同主机控制器芯片。在一些操作系统中,当系统必须实现某些基本功能时,可由Host Software实现。
4.2 USB传输类型
USB定义了4种传送类型:控制传送、同步传送、中断传送、批传送。其中,控制传送是指可靠的、非周期性的、突发的,并由主机客户软件所发起的通信,主要应用于控制命令和状态信息的传送;同步传送是指在主机和设备之间周期性的、连续的通信,一般用于传送时实信息,这种类型保留了将时间概念包含于数据的能力,但传送并不一定很紧急;中断传送是指少量数据的、低速的、周期的传送;批传送是指非周期的、大量的、可靠的传送,其典型应用在于传送那些可以利用带宽的数据。
4.3 USB设备请求
USB设备应通过缺省控制管道(Default Control Pipe)响应来自主机的请求命令。这些请求是通过使用控制传输来完成的。请求及请求的参数通过Setup包发向设备,由主机负责设置Setup包内的每个域的值。USB设备请求包含的请求类型有三种:标准、厂商和设备类。标准请求用来完成设备的枚举过程;厂商请求用来完成使用者自己定义的请求;设备类请求指的是某些特定的USB设备类所传输出的请求,例如打印机类就属于这一类。设备请求要求有严格的定义,包含的内容有类型、设备请求、值、索引和长度。
4.4 USB驱动程序结构 S3C2440A芯片支持USB1.1协议和USB 2.0协议。该设计是针对USB Host(主机,A型),并基于USB 1.1协议编写的。程序结构和数据传输的流向如图4所示。
驱动程序的编写主要分为以下几个部分考虑:硬件提取层、中断服务程序、标准设备请求和主循环。硬件提取层实现的是S3C2440A对I/O端口直接的读写操作;中断服务程序处理各种中断,包括总线任务上的请求;标准设备请求完成主机送来的各种标准请求,用于完成各种枚举请求;而主循环则负责完成前台的数据采集等工作,所有的任务结束后都要回到主循环上去。
5结 语
该设计采用三星公司ARM9的S3C2440A芯片作为CPU,比原来基于单片机的模式,外围电路简单,容易可靠地实现嵌入式终端的USB接口功能。在调试中,用到的嵌入式开发板GEC2440A套件还提供了串口工具DNW。用这一工具可以检测驱动程序的正确与否,如:程序编写无误,则DNW串口会提示 “USB IS CONNECT”。由于S3C2440A芯片功能丰富,如处理器可提高运算速度,LCD可人机交互,网口可连接因特网,所以开发出的嵌入式终端不但可提升整体性能,还为日后的应用奠定了基础。
第二篇:一种基于MODBUS的嵌入式人机界面的设计与实现 电子技术
欢迎到访我的豆丁主页:http://www.xiexiebang.com/hechaoscut(文档精灵)本文格式为WORD,能编辑和复制,感谢您的阅读。
一种基于MODBUS的嵌入式人机界面的设计与实现
错误检测主程序 ">
现场总线是一种用于底层工业控制和测量仪表之间的总线,人机界面设备就是作为现场总线中,控制器和操作者之间的通信员它可以完成现场控制器与操作者之间数据的接收和发送。本设计使用Atmel单片机89C52作为主要控制芯片,用以东芝丁6963C为控制芯片的128*64液晶比O作为显示界面,采用工业标准通信协议MOOBUS作为数据信息交互的介质,主要功能是完成对工业网络中现场控制器数据的采集显示,根据需要设定数据并发送到现场控制器完成控制任务,实现人机之间控制信息的交互传送。文章分别介绍了硬件设计电路和软件的设计过程,并介绍了一种好用和简单的MOOBUS从设备调试工具 Modbus slave。
系统硬件电路框图如图2。
电路部分十分简单,包括看门狗电路、4个按键的直接连接、程序扩展电路、RS232电平转换部分、液晶点阵连接部分。
MAX7OS的功能是:上电复位程序监视。89C52正常工作,执行喂狗程序时,不断从P17输出脉冲信号至MAX705的WDI脚,当单片机程序跑飞后,Pl.7不再输出脉冲信号MAX705的WDI脚在1.6S内收不到脉冲信号,将在MAX70S的RESTE端产生高电平,产生复位信号,将单片机复位,迫使程序复位到入口处。
针对AT89C52硬件资源比较丰富,考虑采用直接方式设计键盘电路,而且可以简化电路。键盘采用4个开关直接控制。开关的一段通过电阻连接电源和 欢迎到访我的豆丁主页:http://www.xiexiebang.com/hechaoscut(文档精灵)本文格式为WORD,能编辑和复制,感谢您的阅读。
AT89C52的P10~P13管脚,而另一端接地。由于P10~P13是低电平工作,当不同的开关接通时,根据采集到不同端口是高还是低电平,来执行相应的按键子程序。
考虑到使用LCD具有较强的表现能力和丰富的表现方式,所以扩展了32K的EPROM27256。是为实现产品升级,完成丰富菜单,强大功能,表现动画准备的。
128*64液晶显示器LCO采用直接访问方式,直接访问方式是把内置T6963C控制器的液晶显示模块作为存储器或I/O设备直接挂在单片机的总线上。模块的数据线接单片机的数据总线上,片选及寄存器选择信号线由单片机的地址总线提供,读和写操作由单片机的读写操作信号控制。按口电路如图2所示,在图中使用了地址线AS作为模块的寄存器选择线C/D,使用地址线A15作为模块操作的片选线;模块的VO端所接的电位器是作为液晶驱动电源的调节器,调节显示的对比度。使用该种连接方式,不用考虑T6963C的时序图,不用对LCD的管脚进行单独的操作来满足时序,就像读写外部RAM一样,笔者认为比采用要在程序中实现时序的间接访问连接方式方便。
考虑到在常温下,LCD的额定电流为0。4ma所需的功率很小,再加上RS232串口集成电路MAX232有两路发送器、两路转换器,使用其中一套完成电平转换用来通信,另一套正好用来产生-10V,该电压由MAX232的14端供LCD显示画面使用。
下面介绍软件部分,主要完成一下功能按键的查询和响应、画面的显示和刷新通过MOOBUS协议完成数据的接收和传输通信。
软件结构清晰,按模块分为三大块主程序部分、T0定时中断、串口中断部分。
(1)主程序部分
主程序流程图如图3所示,主要完成一些初始参数的设定,其中LCD的初始化包括:液晶屏的尺寸光标的位置和形状等这部分程序在购买LCD时厂家会附带的,根据需要修改一下即可满足要求;还有就是将需要显示的汉字进行编码。定时器使用的是T0选择方式1,采用50ms中断查询按键,考虑到还有串口中断,使用了默认的中断优先级,即T0中断高于串口中断。这种安排已通过试验调试。在等待中断部分安排了循环执行喂狗程序目的是在程序正常执行时起到看门狗的作用,在等待中断过程中系统又不认为是死机。
欢迎到访我的豆丁主页:http://www.xiexiebang.com/hechaoscut(文档精灵)本文格式为WORD,能编辑和复制,感谢您的阅读。
main: Icall clearmemory;清内存 Icall initlcd;初始化Icd mov sp,#stackpointer;堆栈为65h mov tmod.#21h:t0方式1,t1方式2 mov radixcursor.#10h mov currentpagenumber,#01h;指定初始 页号为1 mov page number,currehtpagenumber setb es setb ea mov th1,#Ofdh;设定波特率9600bps mov tl1.#Ofdh setb tr1;启动定时器t1 mov scoh.#Od0h mov 2ch,用来辅助发送 mov 2bh.#10h Icall setuptimer0;初始化定时器t0,并启动t0 setb ren Icall chaxuhsj;发送查询命令 Icall showpage;显示页面 dieloop: 欢迎到访我的豆丁主页:http://www.xiexiebang.com/hechaoscut(文档精灵)本文格式为WORD,能编辑和复制,感谢您的阅读。
nop Icall feeddog;执行喂狗程序
jmp dieloop;循环等待中断
(2)T0定时中断部分
流程图如图4所示,这部分主要功能是完成按键的查询,并转去执行相应的子程序本系统中一共有四个编程键,依次可实现修改数据、增加值、减少值和翻页功能。当我们按下修改键后(即光标被激活)修改键可以用来移动光标位置此时按增加键和减少键可以分别增加和减少数值。其中翻页键是一个复用键如果直接按翻页键(不激活光标),那么它的功能就是在不同的页面之间切换,并从现场收集各页数据并显示到LCD上:而当光标处在被激活状态下时,按下翻页键就可以向现场控制器(如DSP)发送数据达到控制目的这种一键复用的设计,在电子商品中特别常见通过软件的设计减少了按键的数量,是一个比较有实际价值的设计已被广泛使用。键盘采用50ms定时中断设计,一般人手按键的起落时差远大于50ms所以可以满足设计要求而且在后面软件部分进行了去抖动,等待按键抬起功能的设计。timer0int: pushdph pushdpl pushacc pushpsw movthi0。#4bh 欢迎到访我的豆丁主页:http://www.xiexiebang.com/hechaoscut(文档精灵)本文格式为WORD,能编辑和复制,感谢您的阅读。
movtl0。#Dfdh clrtr0;关定时器
movp1,#Offh;置p1口为输入状态
mova,p1;读按键
epla anda,#00001111b;屏蔽高4位
jzgoret00;无键按下
movpgbkey,a Icalldelay;有键按下delay10ms去抖动
Icallwait;等待按键抬起
Icallseankey;转去执行相应的按键子程序
goret00: setbtr0;开定时器
poppsw popacc popdpl popdph ren(3)串口中断部分
这部分的主要功能是通过MODBUS协议完成数据的查询和发送。先对MODBUS做个简单的介绍该协议通信使用主从技术,即仅主设备能初始化传输(查询)其它设备(从设备),根据主设备查询提供的数据作出相应反应。按传输模式分为ASCII和RTU方式。本设计采用RTU方式。这种方式的主要优点是:在同样的波特率下,可比ASCII方式传送更多的数据。每个消息必须以连续流的方式传输。
MODBUS协议建立了主设备查询的格式设备地址、功能代码、所有要发送的数据、错误检测域从设备回应消息也由MODBUS协议构成,包括确认要行动的域、任何要返回的数据和错误检测域。如果在消息接收过程中发生错误或从设备不能执行其命令,从设备将建立错误消息并把它作为回应发送出去。
查询查询消息中的功能代码告之被选中的从设备要执行何种功能数据段包含了从设备要执行功能的任何附加信息例如功能代码03是要求从设备读保持寄存器并返回它们的内容。数据段必须包含要告之从设备的信息:从何寄存器开始读及要读的寄存器数量错误检测域为从设备提供了一种验证消息内容是否正确的方法。
回应:如果从设备产生正常的回应,在回应消息中的功能代码是在查询消息中的功能代码的回应数据段包括了从设备收集的数据:像寄存器值或状态。如果有错误发生功能代码将被修改以用于指出回应消息是错误的,同时数据段包含了描述此错误信息的代码。
举一个关于功能码03H的例子。
主站询问报文格式:
从站应答格式:
serialportint: 欢迎到访我的豆丁主页:http://www.xiexiebang.com/hechaoscut(文档精灵)本文格式为WORD,能编辑和复制,感谢您的阅读。
push dph push dpl push acc push psw jbc ri, receive Icall chaxunsj;发送查询命令
sjmp return receive: mov r0 ,2bh;指定用来存接收数据的地址指针
mov a,sbufall clr riall mov @r0 ,a inc 2bh mov a,2bh Icall crc;进行crc校验
Icall showpage return: pop psw pop acc pop dpl pop dph reti
欢迎到访我的豆丁主页:http://www.xiexiebang.com/hechaoscut(文档精灵)本文格式为WORD,能编辑和复制,感谢您的阅读。
笔者使用了Modbusslave软件仿真下位机,模拟MOD-BUS的从设备。通过该软件,用所设计人机界面可以读取具体设备的具体各类寄存器的数据,同样可以写数据到指定设备中指定的各类寄存器中,这样就完成了数据的接收和传送。
重要提示: 文档由由 文档精灵 上传,但版权归原作者所有。涉及版权问题请联系原作者。
第三篇:基于ARM-Linux的嵌入式HTTPS服务器与实现.
基于ARM-Linux的嵌入式HTTPS服务器与实现
随着计算机技术和微电子技术的发展,嵌入式系统在工业控制、信息家电、通信设备、智能仪器等领域得到了越来越广泛的应用。在这些领域,网络化、信息化的要求也随着Internet的迅猛发展而逐渐突出,越来越多的嵌入式设备有接入网络实现远程控制的需求,其基本的方法是在嵌入式设备上实现HTTP服务器,通过万维网在客户端用浏览器对设备进行访问。同时,这种方法不可避免地带来互联网上的安全问题,而HTTPS(安全超文本传输协议)是由Netscape公司提出的以SSL(安全套接层)为基础的安全HTTP方法,因此构建嵌入式HTTPS服务器,将有效地为嵌入式设备的网络化提供安全保障。本文对HTTP传输协议和SSL安全协议以及基于ARM的嵌入式技术等关键技术进行了深入的研究。首先分析了HTTPS这个安全传输设施的实现方法,即在标准的TCP/IP参考模型中在HTTP标准协议层和下面的TCP/IP传输协议层之间额外附加一层SSL安全层,紧接着对基于请求/响应模式的HTTP协议的信息交换的基本过程和SSL握手协议的安全加密的详细过程进行了分析与研究。然后,设计了系统的整体架构,硬件采用了应用广泛的32位ARM920T处理器S3C2410,操作系统采用了开源的嵌入式Linux操作系统,应用层的实现以Linux系统调用和OpenSSL开源库为基础。其次,建立了HTTPS服务器的支撑环境,在宿主机上通过Vmware虚拟机技术建立了Linux操作系统并通过一系列的服务配置建立起交叉编译环境;在硬件平台上烧写了系统引导程序bootloader,并以此为基础进行了嵌入式Linux和根文件系统的配置、编译和移植。最后,在深入研究了相关理论后,设计了服务器的基本结构和功能模块,在利用Linux的系统调用和OpenSSL API的基础上,使用C语言实现了基于ARM-Linux的嵌入式HTTPS服务器。实验结果表明,该服务器实现了与客户端浏览器的HTTPS的交互过程,能正确解析浏览器发出的HTTP请求,并根据请求资源和请求方法的不同做出不同的响应,返回给浏览器静态资源或者CGI程序的处理结果。同主题文章
【关键词相关文档搜索】: 信号与信息处理;ARM;Linux;HTTP;SSL 【作者相关信息搜索】: 武汉理工大学;信号与信息处理;王虹;戴帅;
第四篇:嵌入式系统设计与实现试验教学大纲专业方向课
《微型计算机系统与接口技术》实验教学大纲
计算机科学与技术专业(专业基础课)第七学期
一、嵌入式系统教学实验平台配置 1.平台的硬件配置
MICETEK EV44B0II是一个适用于手持设备和一般应用的S3C44B0X处理器的教学开发平台。它包括采用ARM7TDMI的S3C44B0X处理器、8位LCD连接器和触摸屏接口、10MHz外部时钟、1M×16位的FLASH、4M×16位的SDRAM,2个RS232串行口、一个JTAG接口、1个并行调试接口、1个RTC、1个I²C E²PROM、1个10/100MB网络接口、1个USB接口、1个具有扬声器和麦克的音频接口、一位8段码显示器、1个4×4键盘、特殊功能引脚和总线扩展接口。2. 软件开发环境
操作系统和图形界面API采用开源的μCLinux和MicroWindows(GUI)等。开发工具采用上海祥佑数码公司提供的LinuxView软件。它是在WINDOWS环境下用于嵌入式Linux内核调试和应用程序调试的集成开发环境。试和调试硬件和BSP。
二、实验目的
《嵌入式系统设计与实现(实验课)》的实验内容分为2个层次。基本部分目的是让学生了解(认识)嵌入式软件和硬件的一般开发环境与流程;让学生熟悉实验开发工具;掌握实验开发工具的操作方法及使用,熟悉软件编程环境,根据《实验指导书》的内容进行基本的嵌入式程序开发。综合应用部分目的是让学生综合运用前面所学到的知识,按照指定的题目,自行设计开发嵌入式应用程序。
三、基本型和研究性实验
(一)基本实验
实验一
Hitools for uClinux开发环境 1. 实验目的及意义:
熟悉Hitools for uClinux开发环境,学会JEDI仿真器的使用。了解使用Hitools for uClinux进行uClinux开发的基本过程。2.实验要求:
必修
3.实验步骤:
(1)安装 Hitool for ARM supporting uClinux
(2)建立开发环境
(3)配置内核和必要的应用程序
(4)编译内核和根文件系统
(5)调试内核
4.试验类型:
设计
5.需开实验组数:
30组
6.消耗材料金额
实验二
44B0 初始化 1. 实验目的及意义:
完成S3C44B0的初试化配置,顺利进入C程序。2.实验要求:
必修
3.实验步骤:
(1)连接EV44B0-II 和PC(JTAG或并口,),超级终端也可连上。
(2)运行Hitool for ARM, 建立项目并加入四个源文件,编译。
(3)加载目标文件,运行。
4.试验类型:
设计
5.需开实验组数:
30组
6.消耗材料金额
实验三
JTAG调试和MDB调试 1. 实验目的及意义:
学会使用 Hitools for uClinux进行系统级调试和任务级调试。2.实验要求:
必修
3.实验步骤:
(1)创建一个新工程,添加源文件hello.c,编译。(2)使用JTAG调试应用。
(3)使用MDB 调试应用程序。
4.试验类型:
设计
5.需开实验组数:
30组 6.消耗材料金额
实验四
Timer调试 1. 实验目的及意义:
用中断方式,定时改变8-SEG的某段的显示时间。2.实验要求:
必修
3.实验步骤:
(1)连接EV44B0-II 和PC(JTAG或并口,),超级终端也可连上。(2)运行Hitool for ARM, 建立项目并加入四个源文件,编译。(3)加载目标文件,运行。
4.试验类型:
设计
5.需开实验组数:
30组
6.消耗材料金额
实验五
FLASH操作调试 1. 实验目的及意义:
熟悉Flash的基本操作方法,完成对BOOT Flash的擦除及烧入。2.实验要求:
必修
3.实验步骤:
(1)连接EV44B0-II 和PC(JTAG或并口),超级终端和EV44B0-II的UART0 相连。
(2)运行Hitool for ARM, 建立项目并加入四个源文件,编译。(3)把要烧入的文件下载到SDRAM(注意不要和你所建项目的地址重合)。
(4)加载目标文件,运行。
4.试验类型:
设计
5.需开实验组数:
30组
6.消耗材料金额
实验六
Keyboard调试 1. 实验目的及意义: 利用其I/O口和外部中断,构成一个键盘扫描电路。2.实验要求:
必修
3.实验步骤:
(1)连接EV44B0-II 和PC(JTAG或并口,),超级终端也可连上。(2)运行Hitool for ARM, 建立项目并加入四个源文件,编译。(3)加载目标文件,运行。
4.试验类型:
设计
5.需开实验组数:
30组
6.消耗材料金额
实验七
UART调试 1. 实验目的及意义:
用中断和BDMA方式,在UART0输出一串字符,然后把在键盘上键入的在超级终端上显示出来。2.实验要求:
必修
3.实验步骤:
(1)连接EV44B0-II 和PC(JTAG或并口,),超级终端也可连上。(2)运行Hitool for ARM, 建立项目并加入四个源文件,编译。(3)加载目标文件,运行。
4.试验类型:
设计
5.需开实验组数:
30组
6.消耗材料金额
实验八
RTC & WDT调试 1. 实验目的及意义:
用RTC功能,在超级终端和LCD上显示小时,分,秒,就象一个时钟,还结合WDT的RESET功能,当在超级终端键入一时,系统重启。2.实验要求:
必修
3.实验步骤:
(1)连接EV44B0-II 和PC(JTAG或并口),依附录连接超级终端和UART0。(2)运行Hitool for ARM, 建立项目并加入五个源文件,编译。
(3)加载目标文件,运行,在超级终端上会要求依次输入年,月,日,星期,小时,分和秒。然后在超级终端显示全部,并在LCD显示小时,分和秒,并实时更新。(4)在PC键盘摁“1”,评估板进入WDT测试,在超级终端上显示0~10,然后在2秒种后重起。
4.试验类型:
设计
5.需开实验组数:
30组
6.消耗材料金额
实验九
ADC & TOUCH PANEL调试 1. 实验目的及意义:
利用S3C44B0的I/O和ADC,做一个触摸屏的实验。2.实验要求:
必修
3.实验步骤:
(1)连接EV44B0-II 和PC(JTAG或并口,),超级终端也可连上。(2)运行Hitool for ARM, 建立项目并加入四个源文件,编译。(3)加载目标文件,运行。
4.试验类型:
设计
5.需开实验组数:
30组
6.消耗材料金额
实验十
LCD调试 1. 实验目的及意义:
EV44B0-II现配有160*240的黑白的显示屏,本实验就是在其上面显示一个160*240的图片出来,是4bit单扫描的。2.实验要求:
必修
3.实验步骤:
(1)连接EV44B0-II 和PC(JTAG或并口,),超级终端也可连上。(2)运行Hitool for ARM, 建立项目并加入四个源文件,编译。(3)加载目标文件,运行。
4.试验类型:
设计
5.需开实验组数:
30组
6.消耗材料金额
实验十一
IIS调试 1. 实验目的及意义:
EV44B0-II利用IIS接口和PHILIPS的UDA1341TS,完成音频的线路,并结合S3C44B0的BDMA,实现声音的录放。2.实验要求:
必修
3.实验步骤:
(1)连接EV44B0-II 和PC(JTAG或并口),超级终端和EV44B0-II的UART0相连。
(2)运行Hitool for ARM, 建立项目并加入四个源文件,编译。(3)加载目标文件,运行,在超级终端会依次提示。
4.试验类型:
设计
5.需开实验组数:
30组
6.消耗材料金额
实验十二
uClinux下串口设备的使用 1. 实验目的及意义:
学习在uClinux系统中使用串口设备,通过读写该设备对应的设备文件与其他设备通信;同时了解uClinux系统中设备文件与设备驱动程序的关系,以及系统读写调用与驱动程序读写函数的关系。2.实验要求:
必修
3.实验步骤:
(1)将44b0上的uClinux系统启动,在超级终端上运行。
(2)按照MDB的起动步骤,使Hitool For uCinux ARM在MDB方式下调试。(3)用另一条串口线将44b0评估板的com2与计算机的com2连接。新建一超级终端。(4)启动Hitool For uClinux ARM 将编译好的elf文件down下去。
(5)运行程序。
4.试验类型:
设计
5.需开实验组数:
30组
6.消耗材料金额
(二)综合应用实验 实验一
USB调试 1. 实验目的及意义:
利用EV44B0-II上的USB的线路,进行基本的操作,以此来熟悉USB和S3C44BO。2.实验要求:
必修
3.实验步骤:
(1)连接EV44B0-II 和PC(JTAG或并口,),超级终端和EV44B0的UART0相连(见附录)。
(2)运行Hitool for ARM, 建立项目并加入四个源文件,编译。(3)加载目标文件,运行,在超级终端出现下图。
4.试验类型:
设计
5.需开实验组数:
30组
6.消耗材料金额
实验二
ETHERNET调试 1. 实验目的及意义:
利用EV44B0-II上的乙太网的线路,进行基本的操作,以此来熟悉以太网和S3C44BO。2.实验要求:
必修
3.实验步骤:
(1)连接EV44B0-II 和PC(JTAG或并口,),超级终端和EV44B0的UART0相连(见附录)。
(2)运行Hitool for ARM, 建立项目并加入四个源文件,编译。(3)加载目标文件,运行,在超级终端出现下图。
4.试验类型:
设计
5.需开实验组数:
30组
6.消耗材料金额
实验三
TCP/IP网络 1. 实验目的及意义:
熟悉uClinux环境下TCP/IP协议栈的使用,学习如何实现TCP/IP操作,编写CS(client-server)结构的程序,掌握uClinux下TCP/IP编程,学会在Hitools for uClinux环境下使用MDB调试TCP/IP程序。2.实验要求:
必修
3.实验步骤:
(1)编译好一个带MDB的uClinux内核,将linux_bootrom.bin通过Hitools烧录到评估板。(2)查看系统的路由信息。
(3)在Hitools环境下创建一个新工程,添加nettime.c文件,编译。
(4)配置Hitools的调试协议为MDB,启动主机的Target Server。(5)启动服务端程序,选择Hitools菜单Project下的Init Debugger。(6)启动客户端程序,在超级终端中,进入目录/var/tmp ,键入./nettime –c 10.10.16.220 –o 8888 回车。
4.试验类型:
设计
5.需开实验组数:
30组
6.消耗材料金额
实验四
文件系统操作 1. 实验目的及意义:
熟悉uClinux环境下文件系统,了解uClinux中文件系统的体系结构,编写文件系统处理程序。知道如何添加文件系统到内核中。
2.实验要求:
必修
3.实验步骤:(1)编译好一个带MDB的uClinux内核,将linux_bootrom.bin通过Hitools烧录到评估板。(2)配置启动评估板,利用ifconfig命令配置以太网口,启动MDB。(3)在Hitools环境下创建一个新工程,添加fileop.c文件,编译,配置Hitools的调试协议为MDB,启动主机的Target Server。(4)下载程序,并指定参数/etc/test.tmp。(5)开始调试,观察console中的操作结果。(6)重复1-4,并指定参数为/tmp/test.tmp(7)开始调试,观察console中的操作结果。
4.试验类型:
设计
5.需开实验组数:
30组
6.消耗材料金额
实验五
uClinux下的web服务器 1. 实验目的及意义:
熟悉Web服务器的工作原理,了解uClinux环境下的Web技术,添加一个Web服务器到uClinux系统中。
2.实验要求:
必修
3.实验步骤:
(1)在按实验内容对程序进行修改后,重新编译uClinux内核,使用HITOOLS中的编程工具,将linux_bootrom.bin通过JEDI烧写到EV44B0II评估板。
(2)使用ifconfig命令,确认EV44B0II的IP地址。(3)运行boa-c /tmp/ &,启动web服务器。
(4)打开PC上的浏览器(如IE6或Netscape)输入EV44B0II的IP作为网址,例如http://192.168.1.125/,这时就可以看到要测试的网页内容。网页内容是/tmp/index.html文件。(5)在lamp number 文本框中,写入“1”,然后点击 “display”。(6)在浏览器上显示“Demo Web Page”。
4.试验类型:
设计
5.需开实验组数:
30组
6.消耗材料金额
实验六
uClinux下的声音设备的使用 1. 实验目的及意义:
了解S3C44B0提供的IIS总线接口的功能特性,熟悉IIS总线标准,熟悉WAV文件的格式和EV44B0II实验板声音部分的原理,最后通过一个实验程序了解uClinux下声音设备的使用。
2.实验要求:
必修
3.实验步骤:
(1)首先配置Hitool for ARM uClinux,使其以MDB方式调试。(2)运行Hitool。选择Project菜单下的New,新建一工程。(3)增加源文件到新建的sound工程。(4)对工程进行编译。
(5)将程序下载到实验版上进行调试。
(6)本例程序首先将同一目录下的Test.wav播放出来,然后进行3秒的录音。
4.试验类型:
设计
5.需开实验组数:
30组
6.消耗材料金额
实验七 uClinux下的LCD显示 1. 实验目的及意义:
了解LCD显示原理,学习S3C44B0的LCD控制器特性,熟悉LCD控制器与LCD驱动器的连接接口,了解uClinux下framebuffer显示驱动的使用。
2.实验要求:
必修
3.实验步骤:
(1)首先配置Hitool for ARM uClinux,使其以MDB方式调试。(2)运行Hitool。选择Project菜单下的New,新建一工程。(3)在workspace中我们可以看到一个名为lcd的Project已经建立。下面需要将源程序加入到source files中。鼠标右健点击source files文件夹,选择Add source Files。(4)对工程进行编译。
(5)将程序下载到实验版上进行调试。
4.试验类型:
设计
5.需开实验组数:
30组
6.消耗材料金额
第五篇:嵌入式远程视频采集系统的设计与实现(基于S3C2410)
嵌入式远程视频采集系统的设计与实现(基于S3C2410)
发 布 时 间 : 2008-11-19 来 源 : 中电网 作 者 : 张永强,赵永勇,李崇德 浏 览 :
984
多媒体通信技术的发展为信息的获取和传输提供了丰富的手段,视频采集是其中不可缺少的重要组成部分,该系统基于S3C2410的ARM9芯片和嵌入式Linux操作系统,采用USB摄像头捕捉视频,经MPEG-4算法压缩编码,系统直接与网络相连,用户使用标准的网络浏览器和流媒体播放程序即可查看远程视频影像。硬件系统
系统硬件平台选用基于ARM9架构嵌入式芯片S3C2410,稳定工作在202MHz主频,板载64MB SDRAM 64MB FLASH,主板资源包括:主USB口、从USB口、10M/100M以太网口,触摸屏、彩色LCD、键盘、8个用户自定义LED数码管,A/D,RTC电路,2个串口、1个JTAG通用接口,音频模块,支持MPEG4,MP3编解码,3个168PIN的扩展插座,32位的数据总线,保留充分扩展空间。
其中标配模块包括:IC卡+PS2模块、IDE硬盘+CF卡模块、PCMCIA+SD/MMC模块。另外可选配模块有:GPS模块,GPRS模块,FPGA模块,CAN+AD+DA模块、红外模块、蓝牙模块、摄像头模块。软件系统
2.1 内核配置与USB摄像头驱动
假定已经搭建好嵌入式Linux的开发环境,下面第一步工作就是USB摄像头的安装与驱动。首先检查Linux Kernel中是否已经添加了USB模块的支持,并且加入Video4Linux支持。
Multimedia devices→Video For Linux
Video For Linux→[*]V4L information in proc filesystem
在主菜单的USB Support下还有各种摄像头的驱动,选中将要使用的摄像头芯片类型。
<>USB IBM(Xirlink)C-it Camera support<*>USB OV511 Camera support<>USB Philips Cameras <>USB SE401 Camera support<>USB STV680(Pencam)Camera support<>USB 3com HomeConnect(akavicam)support 在USB摄像头选购时,优先考虑Linux内核公开支持的摄像头芯片,不然要额外编写相应的USB摄像头驱动程序,然后进行编译、安装。在此选用网眼公司的V3000产品,他采用了OV511的芯片。
确定USB摄像头被正常驱动后,下一步就是使用Video4Linux提供的API函数集来编写视频采集程序。
2.2 基于V4L设计的视频采集模块
在Linux下,所有外设都被看成是一种特殊的文件,称为设备文件。系统调用是内核和应用程序之间的接口,而设备驱动程序则是内核和外设之间的接口。他完成设备的初始化和释放、对设备文件的各种操作和中断处理等功能,为应用程序屏蔽了外设硬件的细节,使得应用程序可以像普通文件一样对外设进行操作。
Linux系统中的视频子系统Video4Linux为视频应用程序提供了一套统一的API,视频应用程序通过标准的系统调用即可操作各种不同的视频捕获设备。Video4Linux向虚拟文件系统注册视频设备文件,应用程序通过操作视频设备文件实现对视频设备的访问。
Linux下与Video4Linux相关设备及用途如表1所示。
这里主要针对设备文件/dev/video进行视频捕捉方面的程序设计。
Linux下视频采集流程如图2所示。
其中用到的主要函数有:
Camera_open():用来开启视频设备文件,使用前需要首先声明一个video_device类型的设备文件。
Camera_get_capability():通过调用ioctl()函数取得设备文件的相关信息,并存放到video_capability结构里。
Camera_get_picture():通过调用ioctl()函数取得图像的相关信息,并且存放到video_picture结构里。
Camera_close():用来关闭设备文件。Camera_grab_image():用来抓取图像,采用mmap方式,直接将设备文件/dev/video0映射到内存,加速文件I/O操作,还可以使多个线程共享数据。
剩下的还有设备初始化、参数设备等相关函数,不再详述。
2.3 视频压缩编码模块
获取图像数据后,可以直接输出到FrameBuffer进行显示,由于本系统要将采集到的视频影响通过网络传输出去,所以在传输之前要对原始的图像数据进行压缩编码,在此选用MPEG-4视频编解码方案。和其他标准相比,MPEG-4压缩比更高,节省存储空间,图像质量更好,特别适合在低带宽条件下传输视频,并能保持图像的质量。
MPEG-4中基于对象的视频编码过程可以分为3步进行:
(1)从原始视频流中分割视频对象。
(2)对视频对象进行编码,对不同视频对象的运动信息、形状信息、纹理信息分配不同的码字。对输入的任意形状的VOP序列,用基于块的混合编码技术编码,处理顺序是先IVOP后PVOP,BVOP。在对VOP的形状信息编码后,取得任意形状VOP的采样,每个VOP划分为不相交的宏块,每个宏块含有4个8×8象素块进行运动补偿以及纹理编码,已编码的VOP帧保存在帧存中,在当前VOP帧和已编码VOP帧之间的计算运动矢量;对将编码的块和宏块,计算他们的运动补偿预测误差;运动补偿预测后的IVOP及误差用8×8块DCT变换,并进行DCT系数的量化,然后是游程编码和熵编码。
(3)对各个视频对象的码流进行复合,每个视频对象的形状、运动纹理信息复合成VOL比特流,各视频对象视频流复合成统一的码流输出。对视频流进行压缩编码以后,接下来就要实现网络传输部分的功能。
2.4 JRTPLIB网络传输模块
流媒体指的是在网络中使用流技术传输的连续时基媒体,RTP是目前解决流媒体实时传输问题的好办法,JRTPLIB是一个面向对象的RTP库,他完全遵循RFC1889设计,下面讲述如何在Linux平台上运用RTP协议进行实时流媒体编程。
2.4.1 初始化 在使用JRTPLIB进行实时流媒体数据传输之前,首先应该生成RTPSession类的一个实例来表示此次RTP会话,然后调用Create()方法来对其进行初始化操作。RTPSession类的Create()方法只有一个参数,用来指明此次RTP会话所采用的端口号。
2.4.2 数据发送
当RTP会话成功建立起来之后,接下来就可以开始进行流媒体数据的实时传输了。首先需要设置好数据发送的目标地址,RTP协议允许同一会话存在多个目标地址,这可以通过调用RTPSession类的AddDestination()、DeleteDestination()和ClearDestinations()方法来完成。目标地址全部指定之后,接着就可以调用RTPSession类的SendPacket()方法,向所有的目标地址发送流媒体数据。
2.4.3 数据接收
对于流媒体数据的接收端,首先需要调用PollData()方法来接收发送过来的RTP或者RTCP数据报。由于同一个RTP会话中允许有多个参与者(源),因此既可以通过调用GotoFirstSource()和GotoNextSource()方法来遍历所有的源,也可以通过调用GotoFisstSourceWithDat()和GotoNextSourceWithData()方法来遍历那些携带有数据的源。在从RTP会话中检测出有效的数据源之后,接下去就可以调用RTPSession类的GetNextPacket()方法从中抽取RTP数据报,当接收到的RTP数据报处理完之后,要及时释放。
JRTPLIB为RTP数据报定义了3种接收模块,通过调用RTPSession类的SetReceiveMode()方法可以设置下列这些接收模式:
RECEIVEMODE_ALL:缺省的接收模式,所有到达的RTP数据报都将被接受;RECEIVEMODE_IGNORESOME:除了某些特定的发送者之外,所有到达的RTP数据报都将被接受,而被拒绝的发送者列表可以通过调用AddToIgnoreList(),DeleteFromIgnoreList()和ClearIgnoreList()方法来进行设置;RECEIVEMODE_ACCEPTSOME:除了某些特定的发送者之外,所有到达的RTP数据报都将被拒绝,而被接受的发送者列表可以通过调用AddToAcceptList(),DeleteFromAcceptList和ClearAcceptList()方法来进行设置。
2.4.4 控制信息 JRTPLIB是一个高度封装后的RTP库,只要PollData()或者SendPacket()方法被成功调用,JRTPLIB就能够自动对达到的RTCP数据报进行处理,并且还会需在要的时候发送RTCP数据报,从而能够确保整个RTP会话过程的正确性。
在本系统中,使用RTPSession JRTPLIB类库提供的方法来实现底层的RTP/RTCP操作,并且把他封装在CrtpTransmitter类中,该类从Media Sink类继承而来,接收到相应的媒体帧数据,使用RTPSession类库的操作把数据发送到网络上。结语
本系统基于S3C2410平台和Linux操作系统,利用Video4Linux设计采集程序,使用MPEG-4压缩编码算法,通过实时流媒体传输技术实现了网络传输,整个系统具有稳定可靠、安装简便、成本低廉等特点,可扩展应用在工业控制、视频会议系统、可视电话、远程监控系统等诸多领域。