嵌入式ARM11

2024-09-28

嵌入式ARM11(共9篇)

嵌入式ARM11 篇1

随着图像处理技术和网络技术的不断发展,视频监控系统大致经历了三个发展阶段,前两代分别以黑白电视为代表的模拟监控系统和以硬盘录像机为代表的半数字化监控系统[1],第三代视频监控系统是指以前端网络视频为代表的全数字视频监控系统,视频从前端的采集、压缩、传输和浏览、存储全部数字化。CCD和CMOS摄像头为数字视频采集提供便利。随着视频压缩算法的发展,高压缩比、还原能力强的压缩算法不断出现,特别是伴随着流媒体技术产生的H.264视频压缩技术,为视频的实时传输和实时浏览提供便捷。

伴随着数字化视频监控系统的到来,对视频监控系统的要求也不断提高,要求实时可靠、操作简单、功能丰富、经济适用等。而嵌入式系统的基本特点恰好满足了以上要求,嵌入式视频监控系统应运而生。目前嵌入式视频系统普遍采用BS架构,虽然实现起来简单方便[2],却不利于显示端功能的升级和改进。本文根据嵌入式视频监控系统的发展现状,在ARM-Linux嵌入式系统上搭建监控系统必须的软件平台,通过CS架构实现视频的采集、编码、发送和显示功能。编码方面采用最新的H.264标准,有效地降低了码率,和MPEG-2和MPEG-4 ASP等标准相比,在同等图像质量下,采用H.264技术压缩后的数据量只有MPEG-2的1/8,MPEG-4的1/3[3]。在视频发送方面,采用协议UDP/RTP/RTCP,既满足视频服务器所需的组播特性,又能通过RTP/RTCP协议保证流媒体的实时传输[4]。

1 系统结构

本文在ARM-Linux嵌入式平台实现远程视频实时监控系统,利用现有的网络设备,满足用户远程监控的目的。需要实现的主要工作包括前端视频采集、网络传输和终端接收播放,主要功能总结如下:

1)监控前端设备通过COMS摄像头实现视频的采集;

2)在ARM-Linux平台对原始视频数据编码;

3)前端服务器与客户端通过局域网或者因特网实现视频数据的组播发送;

4)客户端接受H.264视频数据,实时解码播放。

考虑到视频监控系统需要视频的实时采集、编码和发送,因此,需要集成度高、稳定、实时性好的So C系统。在综合考虑成本的情况下,选择三星公司S3C6410作为主控芯片。S3C6410是以功能强大的ARM11为核心的So C芯片,使用广州友善之臂技术有限公司开发的mini6410嵌入式平台。整体硬件平台如图1所示。

2 视频采集、编码及发送

2.1 视频采集

利用V4L2接口函数获取视频帧数据有3种方式:直接通过read()函数读取视频帧,用户指针方式,mmap内存映射。本文通过内存映射方式采集,采用这种方法读取方便,而且省去了大量的内存拷贝,效率较高,具体操作步骤如图2所示[5]。

2.2 视频编码

本文利用S3C6410提供的MFC硬件编码器对原始视频数据进行H.264格式编码,与V4L2视频采集操作相同,MFC进行编码时,绝大多数操作都是通过I/O control接口函数来完成的,S3C6410已经提供了针对H.264视频编码的I/O control接口的封装API函数。为了减小编程工作量,本文使用这些已经比较稳定的API函数进行视频编码操作,主要步骤如下:

1)初始化编码句柄。在进行编码之前需要初始化一个编码句柄handles,该变量是一个结构体变量,其中存储了视频编码的控制信息,初始化该结构体的API函数是:void*Ssb Sip H.264Encode Init(unsigned int ui Width,unsigned int ui Height,nsigned int ui Framerate,unsigned int ui Bitrate_kbps,unsigned int ui GOPNum)。

2)将编码信息写入MFC驱动层,初始化MFC硬件。完成这一工作的API函数是:int Ssb Sip H.264Encode Exe(void*open Handle)。

3)获取输入缓存地址。通过函数void*Ssb Sip H.264Encode Get In Buf(void*open Handle,long size)获得内核存储原始数据的帧缓存地址。

4)将原始视频大小存入内核缓冲区。通过memcpy函数,将采集到的视频数据发送该内核驱动空间,用于MFC对视频进行编码。

5)对视频数据进行编码。视频编码的API函数是:int Ssb Sip H.264Encode Exe(void*open Handle)。在进行编码时,有些编码器会在每个关键帧前面都添加序列参数集(Sequence Parameter Set,SPS)和图像参数集(Picture Parameter Set,PPS),造成无用的码率增加。MFC只对第一帧H.264码流上添加SPS和PPS。SPS和PPS中含有解码所必须的参数,包括帧频、图像大小等。

6)获取编码后的帧缓存地址和大小。通过API函数Get Out Buf函数获取编码后视频数据在内核中的缓冲区地址。返回的编码数据,除了第一帧图像外,每次缓冲区内保存的都包含并且只包含一个完整的NAL单元;第一帧图像编码完成之后,缓冲区除了第一个NAL单元之外,还有序列参数集和图像参数集2个NAL单元。

7)将编码数据放入环形存储队列。

8)释放资源,关闭编码设备。

2.3 视频发送

本系统采用流媒体最常用的RTP/RTCP协议发送视频数据。编码后的视频数据按照RTP协议打包,并利用UDP协议对局域网组播。RTP协议的定位是应用层协议,这样便于扩展。本文利用RTP的一个C++库JRT-PLIB进行视频发送,该库封装了网络协议的配置,只要调用其中的API函数就可以轻易配置网络,不过JRTPLIB本身不是针对某一种实时数据的开发库,因此,发送不同的数据流需要用户根据相应的协议进行RTP的分包和打包。

1)移植JRTPLIB到ARM平台

本系统使用的JRTPLIB版本是3.7.1。该C++库是根据RTP标准RFC3550写成的,支持Windows和类Linux操作系统,为用户提供了RTP头和网络配置接口,只要将需要传输的数据根据RTP协议进行适当修饰就可以轻易使用RTP协议发送数据。同时,JRTPLIB会自动发送RTCP控制信息到接收端。

2)初始化RTP会话实例

声明三个变量:RTPSession rtpsess,RTPSession Params sessionparams,RTPUDPv4Transmission Params transparams。

通过实例化类RTPSession建立RTP会话,RTP传输的大多数操作都是通过RTPSession对象提供的。同时,用到的2个参数类是RTPSession Params和RTPUDPv4Transmission Params,分别用来设置RTP协议的头信息和传输信息。

3)对H.264视频数据进行RTP打包

S3C6410的MFC对视频进行H.264编码时,为了存储到介质上之后解码器能够区分每一个NAL单元,MFC在每一个NAL单元之前添加起始码0x00000001,这也是H.264标准的建议[6],但是,实时远程播放系统,解码器会根据RTP时间戳区分不同的NAL单元,因此在发送数据之前需要去掉该起始码。为了解码器获取序列信息和图像信息,MFC在第一个NAL单元之前添加序列参数集和图像参数集,这两个参数集分别作为独立的NAL单元与第一个视频NAL单元形成一个数据组。MFC编码后,输出缓冲区内的数据结构如图3所示。

为了将H.264视频数据按照RTP协议传输,并且能够让接收端的解码器能够识别,需要有统一的标准对H.264数据打包和解包。本系统根据标准RFC3984[7]对H.264打包。

4)发送视频数据

JRTPLIB调用RTPSession的成员函数完成发送:int Send Packet(const void*data,size_t len,uint8_t pt,bool mark,uint32_t timestampinc)。其中,data是打包完成的视频数据首地址;len是待发送视频数据长度;pt是发送的数据类型;mark是标示位,本文用来标示一个NAL单元的最后一个分包;timestampinc是时间戳的增量,由于每个NAL单元中的内容都是在同一时刻采集的视频数据,发送同一个NAL单元分包期间,时间戳不变,该值为0。

3 视频的接收和播放

本文在PC机上通过会话描述协议(Session Description Protocol,SDP)[8]文本与发送端通信,并使用VLC播放器解析该协议文本对视频流实时播放。

本系统利用BOA网络服务器将SDP文件发送到接收端,BOA使用http传输协议。接收端的VLC播放器通过http协议接收SDP文件,然后对SDP文件解析,通过RTP协议接收并播放实时视频数据。在PC端,使用VLC播放器通过http协议打开服务器端的SDP文件实时播放视频。接收端PC环境为Intel Core 2 Duo处理器,2.67 GHz,1.75 Gbyte内存,视频采集格式为YUV420,大小480×272,帧频30 f/s(帧/秒)。

图4a是单个VLC播放器实时播放效果图,经测试,播放延迟在0.5 s以内,考虑到传输延时和VLC播放器的缓冲,0.5 s以内的延迟属于正常。在视频监控期间,丢包率在0.3%以内。图4b是单个VLC播放器实时播放效果图。图4b是4个VLC播放器同时播放效果,表1为同时打开4个VLC播放器测得的数据。由于使用组播发送视频数据,同时打开多个播放器同时进行播放,画面清晰流畅,没有明显抖动,丢包率没有没有明显增加。

4 结论

随着社会的发展,视频监控系统成为安防系统中越来越重要的监控工具。近些年,网络技术和视频处理技术的不断进步,视频监控不断向智能化、网络化和集成化发展。基于以上背景,本文设计并实现了一款嵌入式实时视频服务系统。在本文的完成过程中,使用了嵌入式技术、视频压缩编码技术、流媒体实时传输技术、SDP会话描述协议和Web技术,最终实现了基本功能。经过测试,视频播放流畅,支持多用户同时在线播放,丢包率较低,达到了预期的设计目标。

摘要:基于ARM11架构的微控制器S3C6410以及Linux操作系统成功实现数字视频传输。通过采用V4L2提供的接口函数,实现视频的采集;使用S3C6410自带的硬件编码模块实现视频编码;然后对H.264视频流进行RTP格式的打包;采用JRT-PLIB提供的库函数,对编码后的视频数据进行实时发送;最后使用VLC播放器解读SDP文件实现了实时播放,以验证传输系统的实际效果。

关键词:视频传输,Linux,ARM11,RTP/RTCP,SDP

参考文献

[1]浅析视频监控系统发展历程[EB/OL].[2012-07-20].http://wen-ku.baidu.com/view/4de33302e87101f69e3195a9.html.

[2]杨晓姣,黄云霞.嵌入式视频监控系统视频服务器的设计与实现[J].电子设计工程,2011(6):184-186.

[3]胡兴军.视频编码标准H.264的技术革新及应用[J].影像技术,2009(1):24-27.

[4]李长银.基于UDP组播的分布式仿真系统实现[D].成都:电子科技大学,2008.

[5]白长青,陈沛.嵌入式终端基于Linux V4L2的图像采集系统[J].信息技术,2012(2):22-23.

[6]毕厚杰.新一代视频压缩编码标准——H.264/AVC[M].北京:人民邮电出版社,2009.

[7]RFC3984,RTP Payload Format for H.264 Video[S].2005.

[8]王荣生.SDP协议在视频点播系统中的应用[J].计算机应用与软件,2005(1):74-76.

嵌入式ARM11 篇2

第一章

1.嵌入式微处理器的分类。

a)什么是嵌入式微处理器?

1.嵌入式微处理器是嵌入式系统硬件层的核心,嵌入式微处理器将通用CPU中许多由板卡完成的任务集成到芯片内部,从而有利于系统设计趋于小型化、高效率和高可靠性。嵌入式微处理器大多工作在为特定用户群所专门设计的系统中。

2.嵌入式微处理器的体系结构可以采用冯·诺依曼体系结构或哈佛体系结构,指令系统可以选用精简指令系统(Reduced Instruction Set Computer,RISC)和复杂指令集系统CISC(Complex Instruction Set Computer, CISC)。b)嵌入式微处理器分类

1.按照系列分:ARM系列、MIPS系列、PowerPC系列。2.按照指令复杂程度分:CISC和RISC两类

2.微处理器划分:

a)嵌入式微控制器 b)嵌入式微处理器 c)DSP处理器

d)嵌入式片上系统 e)多核处理器

3.嵌入式操作系统(EOS)的特性

EOS除具备了一般操作系统最基本的任务调度、同步机制、中断处理、文件处理等功能外,还具有如下特点:强实时性;支持开放性和可伸缩性的体系结构,具有可裁减性;提供统一的设备驱动接口;提供操作方便、简单、友好的图形GUI和图形界面;支持TCP/IP协议及其他协议,提供TCP/UDP/IP/PPP协议支持及统一的MAC访问层接口,提供强大的网络功能。

第二章

1.ARM7TDMI命名

2.3级流水线与总线架构 三级流水线:

流水线使用3个阶段,因此指令分为3个阶段执行 1.取指:从程序存储器中读取指令,放入流水线中

2.译码:操作码和操作数被译码,决定执行什么功能,为下一个始终周期准备数据路

径所需要的控制信号。

3.执行:执行已译码的指令

注:程序计数器(PC)指向被取指的指令,而不是指向正在执行的指令 在正常操作的过程中,在执行一条指令的同时对下一条指令进行译码,并将第三条指令从存储器中取出

3.ARM的两种状态与7种工作模式

a)两种状态。

i.ARM状态:32位,这种状态下执行的是字方式的ARM指令; ii.Thumb状态:16位,这种状态下执行半字方式的Thumb指令。注:两个状态之间的切换并不影响处理器模式或寄存器内容,可以使用BX指令切换两种状态.状态寄存器CPSR的T位反应了处理器运行不同指令的当前状态.b)7种工作模式。

注:除用户模式外,其它模式均为特权模式。ARM内部寄存器和一些片内外设在硬件设计上只允许(或者可选为只允许)特权模式下访问。此外,特权模式可以自由的切换处理器模式,而用户模式不能直接切换到别的模式。

题目:ARM微处理器复位后,PC的地址通常是 0x0,初始的工作模式是Supervisor 4.ARM常用几个寄存器功能

在ARM7TDMI处理器内部有37个用户可见的寄存器。31个通用32位寄存器,6个状态寄存器。

a.堆栈寄存器(SP):R13,在ARM指令集当中,没有以特殊方式使用R13的指令或其它

功能,只是习惯上都这样使用。但是在Thumb指令集中存在使用R13的指令。

b.链接寄存器(LR):R14,在结构上有两个特殊功能:

1.在每种模式下,模式自身的R14版本用于保存子程序返回地址; 2.当发生异常时,将R14对应的异常模式版本设置为异常返回地址(有些异常有一

个小的固定偏移量)。c.程序计数器(PC):R15,在ARM状态,位[1:0]为0,位[31:2]保存PC。在Thumb状

态,位[0]为0,位[31:1]保存PC。对于ARM指令集而言,PC总是指向当前指令的下

两条指令的地址,即PC的值为当前指令的地址值加8字节。

d.程序状态寄存器(CPSR):R16,在所有处理器模式下都可以访问CPSR。每种异常模

式都有一个程序状态保存寄存器(SPSR),在异常发生时,SPSR用于保存CPSR的状

态。5.条件代码标志

N 运算结果的最高位反映在该标志位。对于有符号二进制补码,结果为负数时N=1,结果为正数或零时N=0;

Z 指令结果为0时Z=1(通常表示比较结果“相等”),否则Z=0;

C 当进行加法运算(包括CMN指令),并且最高位产生进位时C=1,否则C=0。当进行

减法运算(包括CMP 指令),并且最高位产生借位时C=0,否则C=1。对于结合移位

操作的非加法/减法指令,C为从最高位最后移出的值,其它指令C通常不变;

V 当进行加法/减法运算,并且发生有符号溢出时V=1,否则V=0,其它指令V通常不

变。

附:控制位

I、F中断控制位——控制允许和禁止中断 T控制(标志)位——反映处理器的运行状态 M控制位——决定了处理器的运行模式 6.中断号、中断向量与优先级。(7种异常)7.存储器格式。

a)ARM体系结构使用232个字节的单

一、线性地址空间。将字节地址做为无符号数看待,范围为0~232-1 b)对于字对齐的地址A,地址空间规则要求如下:

● 地址位于A的字由地址为A、A+

1、A+2和A+3的字节组成; ● 地址位于A的半字由地址为A和A+1的字节组成;

● 地址位于A+2的半字由地址为A+2和A+3的字节组成; ● 地址位于A的字由地址为A和A+2的半字组成。注:这样并不能完全定义字,半字和字节之间的映射。存储器采用下列映射机制中的一种。

大端存储:字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中

小端存储:低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节

例如,假设一个32位字长的微处理器上定义一个int类型的常量a,其内存地址位 于0x6000处,其值用十六进制表示为0x23456789。如图1.2.2(a)所示,如果按小端法存储,则其最低字节数据0x89存放在内存低地址0x6000处,最高字 节数据0x23存放在内存高地址0x6003处。如图1.2.2(b)所示,如果按大端法存储,则其最高字节数据0x23存放在内存的低地址0x6000处,而最低字节数据0x89存放在内存的高地址0x6003处。

第三章

一:寻址方式。1.寄存器寻址

操作数的值在寄存器中,指令中的地址码字段给出的是寄存器编号,寄存器的内容是操作数,指令执行时直接取出寄存器值操作。

例如指令:

MOV R1,R2 ;R1←R2 SUB R0,R1,R2 ;R0←R1-R2 2.立即寻址

在立即寻址指令中数据就包含在指令当中,立即寻址指令的操作码字段后面的地址码部分就是操作数本身,取出指令也就取出了可以立即使用的操作数(也称为立即数)。立即数要以“#”为前缀,表示16进制数值时以“0x”表示。

SUBS R0,R0,#1;R0减1,结果放入R0,并且影响标志位 MOV R0,#0xFF000;将立即数0xFF000装入R0寄存器 3.寄存器移位寻址。

寄存器移位寻址是ARM指令集特有的寻址方式。当第2个操作数是寄存器移位方式时,第2个寄存器操作数在与第1个操作数结合之前,选择进行移位操作。寄存器移位寻址指令举例如下:

MOV R0,R2,LSL #3;R2的值左移3位,结果放入R0,即是R0=R2×8 ANDS R1,R1,R2,LSL R3;R2的值左移R3位,然后和R1相“与”操作,结果放入R1 4.寄存器间接寻址

寄存器间接寻址指令中的地址码给出的是一个通用寄存器的编号,所需的操作数保存在寄存器指定地址的存储单元中,即寄存器为操作数的地址指针。寄存器间接寻址指令举例如下:

LDR R1,[R2];将R2指向的存储单元的数据读出保存在R1中

SWP R1,R1,[R2];将寄存器R1的值和R2指定的存储单元的内容交换 5.基址寻址

基址寻址就是将基址寄存器的内容与指令中给出的偏移量相加,形成操作数的有效地址。基址寻址用于访问基址附近的存储单元,常用于查表、数组操作、功能部件寄存器访问等。基址寻址指令举例如下:

LDR R2,[R3,#0x0C];读取R3+0x0C地址上的存储单元的内容,放入R2 STR R1,[R0,#-4]!;先R0=R0-4,然后把R1的值寄存到保存到R0指定的存储单元

6.多寄存器寻址

多寄存器寻址一次可传送几个寄存器值,允许一条指令传送16个寄存器的任何子集或所有寄存器。多寄存器寻址指令举例如下:

LDMIA R1!,{R2-R7,R12};将R1指向的单元中的数据读出到R2~R7、R12中(R1自

动加1)STMIA R0!,{R2-R7,R12};将寄存器R2~R7、R12的值保存到R0指向的存储单元中

R0自动加1 7.堆栈寻址

堆栈是一个按特定顺序进行存取的存储区,操作顺序为“后进先出”。堆栈寻址是隐含的,它使用一个专门的寄存器(堆栈指针)指向一块存储区域(堆栈),指针所指向的存储单元即是堆栈的栈顶。存储器堆栈可分为两种:

向上生长:向高地址方向生长,称为递增堆栈 向下生长:向低地址方向生长,称为递减堆栈 8.块拷贝寻址

多寄存器传送指令用于将一块数据从存储器的某一位置拷贝到另一位置。如: STMIA R0!,{R1-R7};将R1~R7的数据保存到存储器中。

;存储指针在保存第一个值之后增加,;增长方向为向上增长。STMIB R0!,{R1-R7};将R1~R7的数据保存到存储器中。

;存储指针在保存第一个值之前增加,;增长方向为向上增长。9.相对寻址

相对寻址是基址寻址的一种变通。由程序计数器PC提供基准地址,指令中的地址码字段作为偏移量,两者相加后得到的地址即为操作数的有效地址。相对寻址指令举例如下:

BL SUBR1;调用到SUBR1子程序

BEQ LOOP;条件跳转到LOOP标号处

...LOOP MOV R6,#1...SUBR1...二:指令集(LDR STR MOV ADD SUB)

1.ARM指令集 2.Thumb指令集 3.常用指令

a)LDR:加载字数据 b)STR:存储字数据

LDR/STR指令寻址非常灵活,它由两部分组成,其中一部分为一个基址寄存器,可以为任一个通用寄存器;另一部分为一个地址偏移量。地址偏移量有以下3种格式: 立即数。立即数可以是一个无符号的数值。这个数据可以加到基址寄存器,也可以从基址寄存器中减去这个数值。如:LDR R1,[R0,#0x12] 寄存器。寄存器中的数值可以加到基址寄存器,也可以从基址寄存器中减去这个数值。如:LDR R1,[R0,R2] 寄存器及移位常数。寄存器移位后的值可以加到基址寄存器,也可以从基址寄存器中减去这个数值。

如:LDR R1,[R0,R2,LSL #2]

从寻址方式的地址计算方法分,加载/存储指令有以下4种格式: 零偏移。如:LDR Rd,[Rn] 前索引偏移。如:LDR Rd,[Rn,#0x04]!程序相对偏移。如:LDR Rd,labe1 后索引偏移。如:LDR Rd,[Rn],#0x04 c)MOV:数据传送指令

d)ADD:加法运算指令

e)SUB:减法运算指令

第四章

一:最小系统一个嵌入式处理器自己是不能独立工作的,必须给它供电、加上时钟信号、提供复位信号,如果芯片没有片内程序存储器,则还要加上存储器系统,然后嵌入式处理器芯片才可能工作。这些提供嵌入式处理器运行所必须的条件的电路与嵌入式处理器共同构成了这个嵌入式处理器的最小系统。而大多数基于ARM7处理器核的微控制器都有调试接口,这部分在芯片实际工作时不是必需的,但因为这部分在开发时很重要,所以也把这部分也归入最小系统中。

二:时钟产生单元

目前所有的微控制器均为时序电路,需要一个时钟信号才能工作,大多数微控制器具有晶体振荡器。简单的方法是利用微控制器内部的晶体振荡器,但有些场合(如减少功耗、需要严格同步等情况)需要使用外部振荡源提供时钟信号。

三:I2C的概念与应用

I2C BUS(Inter Integrated Circuit BUS,内部集成电路总线)是由Philips公司推出的二线制串行扩展总线,用于连接微控制器及其外围设备。I2C总线是具备总线仲裁和高低速设备同步等功能的高性能多主机总线,直接用导线连接设备,通信时无需片选信号。

如图6.2.1所示,在I2C总线上,只需要两条线—串行数据SDA线和串行时钟SCL线,它们用于总线上器件之间的信息传递。SDA和SCL都是双向的。每个器件都有一个唯一的地址以供识别,而且各器件都可以作为一个发送器或接收器(由器件的功能决定)。2C总线有如下操作模式:主发送模式、主接收模式、从发送模式、从接收模式。下面介绍其通用传输过程、信号及数据格式。

*数据有效:在传输数据的时候,SDA线必须在时钟的高电平周期保持稳定,SDA的高或低电平状态只有在SCL线的时钟信号是低电平时才能改变.*起始停止

当I2C接口处于从模式时,要想数据传输,必须检测SDA线上的启动信号,启动信号由主器件产生。如图6.2.2所示,在SCL信号为高时,SDA产生一个由高变低的电平变化,即产生一个启动信号。当I2C总线上产生了启动信号后,那么这条总线就被发出启动信号的主器件占用了,变成“忙”状态;如图6.2.2所示,在SCL信号为高时,SDA产生一个由低变高的电平变化,产生停止信号。停止信号也由主器件产生,作用是停止与某个从器件之间的数据传输。当I2C总线上产生了一个停止信号后,那么在几个时钟周期之后总线就被释放,变成“闲”状态。主器件产生一个启动信号后,它还会立即送出一个从地址,用来通知将与它进行数据通信的从器件。1个字节的地址包括7位的地址信息和1位的传输方向指示位,如果第7位为“0”,表示马上要进行一个写操作;如果为“1”,表示马上要进行一个读操作。

*传输格式 SDA线上传输的每个字节长度都是8位,每次传输中字节的数量是没有限制的。在起始条件后面的第一个字节是地址域,之后每个传输的字节后面都有一个应答(ACK)位。传输中串行数据的MSB(字节的高位)首先发送。

*应答信号

为了完成1个字节的传输操作,接收器应该在接收完1个字节之后发送ACK位到发送器,告诉发送器,已经收到了这个字节。ACK脉冲信号在SCL线上第9个时钟处发出(前面8个时钟完成1个字节的数据传输,SCL上的时钟都是由主器件产生的)。当发送器要接收ACK脉冲时,应该释放SDA信号线,即将SDA置高。接收器在接收完前面8位数据后,将SDA拉低。发送器探测到SDA为低,就认为接收器成功接收了前面的8位数据。

*I2C总线的数据传输过程

① 开始:主设备产生启动信号,表明数据传输开始。

② 地址:主设备发送地址信息,包含7位的从设备地址和1位的数据方向指示位(读或写位,表示数据流的方向)。

③ 数据:根据指示位,数据在主设备和从设备之间进行传输。数据一般以8位传输,最重要的位放在前面;具体能传输多少量的数据并没有限制。接收器产生1位的ACK(应答信号)表明收到了每个字节。传输过程可以被中止和重新开始。

④ 停止:主设备产生停止信号,结束数据传输。

第五章

一:串口的概念(串行接口)常用的数据通信方式有并行通信和串行通信两种。当两台数字设备之间传输距离较远时,数据往往以串行方式传输。串行通信的数据是一位一位地进行传输的,在传输中每一位数据都占据一个固定的时间长度。与并行通信相比,如果n位并行接口传送n位数据需时间T,则串行传送的时间最少为nT。串行通信具有传输线少、成本低等优点,特别适合远距离传送。

① 串行数据通信模式

串行数据通信模式有单工通信、半双工通信和全双工通信3种基本的通信模式。● 单工通信:数据仅能从设备A到设备B进行单一方向的传输。● 半双工通信:数据可以从设备A到设备B进行传输,也可以从设备B到设备A进行传输,但不能在同一时刻进行双向传输。

● 全双工通信:数据可以在同一时刻从设备A传输到设备B,或从设备B传输到设备A,即可以同时双向传输。

② 串行通信方式 a.异步通信方式

异步通信时数据是一帧一帧传送的,每帧数据包含有起始位(”0”)、数据位、奇偶校验位和停止位(”1”),每帧数据的传送靠起始位来同步。一帧数据的各位代码间的时间间隔是固定的,而相邻两帧的数据其时间间隔是不固定的。在异步通信的数据传送中,传输线上允许空字符。

异步通信对字符的格式、波特率、校验位有确定的要求。● 字符的格式

每个字符传送时,必须前面加一起始位,后面加上1、1.5或2位停止位。例如ASCII码传送时,一帧数据的组成是:前面1个起始位,接着7位ASCII编码,再接着一位奇偶校验位,最后一位停止位,共10位。

● 波特率

传送数据位的速率称为波特率,用位/秒(bit/s)来表示,称之为波特。例如,数据传送的速率为120字符/秒,每帧包括10个数据位,则传送波特率为:

10×120=1200b/s=1200波特

每一位的传送时间是波特的倒数,如1/1200=0.833ms。异步通信的波特率的数值通常为:150、300、600、1200、2400、4800、9600、14400、28800等,数值成倍数变化。

● 校验位

在一个有8位的字节(byte)中,其中必有奇数个或偶数个的“1”状态位。对于偶校验就是要使字符加上校验位有偶数个“1”;奇校验就是要使字符加上校验位有奇数个“1”。例如数据“00010011”,共有奇数个“1”,所以当接收器要接收偶数个“1”时(即偶校验时),则校验位就置为“1”,反之,接收器要接收奇数个“1”时(即奇校验时),则校验位就置为“0”。

一般校验位的产生和检查是由串行通信控制器内部自动产生,除了加上校验位以外,通信控制器还自动加上停止位,用来指明欲传送字符的结束。停止位通常取1、1.5或2个位。对接收器而言,若未能检测到停止位则意味着传送过程发生了错误。

在异步通信方式中,在发送的数据中含有起始位和停止位这两个与实际需要传送的数据毫无相关的位。如果在传送1个8位的字符时,其校验位、起始位和停止位都为1个位,则相当于要传送11个位信号,传送效率只有约80%。

(2)同步通信方式

为了提高通信效率可以采用同步通信方式。同步传输采用字符块的方式,减少每一个字符的控制和错误检测数据位,因而可以具有较高的传输速率。

与异步方式不同的是,同步通信方式不仅在字符的本身之间是同步的,而且在字符与字符之间的时序仍然是同步的,即同步方式是将许多的字符聚集成一字符块后,在每块信息(常常称之为信息帧)之前要加上1~2个同步字符,字符块之后再加入适当的错误检测数据才传送出去。在同步通信时必须连续传输,不允许有间隙,在传输线上没有字符传输时,要发送专用的”空闲”字符或同步字符。

在同步方式中产生一种所谓“冗余”字符,防止错误传送。假设欲传送的数据位当作一被除数,而发送器本身产生一固定的除数,将前者除以后者所得的余数即为该“冗余”字符。当数据位和“冗余”字符位一起被传送到接收器时,接收器产生和发送器相同的除数,如此即可检查出数据在传送过程中是否发生了错误。统计数据表明采用”冗余”字符方法错误防止率可达99%以上。

二:NAND FLASH与NOR FLASH异同.答:不同:

1)NOR Flash把整个存储区分成若干个扇区(Sector),而NAND Flash把整个存储区 分成若干个块(Block),可以对以块或扇区为单位的内存单元进行擦写和再编程。

2)NAND Flash执行擦除操作是十分简单的,而NOR型内存则要求在进行擦除前先 要将目标块内所有的位都写为0。由于擦除NOR Flash时是以64~128KB为单位的块进行的,执行一个写入/擦除操作的时间为5s,与此相反,擦除NAND Flash是以8~32KB的块进行的,执行相同的操作最多只需要4ms。

3)NOR Flash的读速度比NAND Flash稍快一些,NAND Flash的写入速度比NOR Flash 快很多。NAND Flash的随机读取能力差,适合大量数据的连续读取。

4)NOR Flash容量通常在1 MB~8MB之间。而NAND Flash用在8MB以上的产品当 中。NOR Flash主要应用在代码存储介质中,NAND Flash适用于资料存储。

5)在NOR Flash上运行代码不需要任何的软件支持。在NAND Flash上进行同样操作 时,通常需要驱动程序,也就是内存技术驱动程序(MTD)。NAND Flash和NOR Flash在进行写入和擦除操作时都需要MTD。

6)在NAND Flash中每个块的最大擦写次数是一百万次,而NOR Flash的擦写次数是 十万次。

区别:两者工艺不一样,NOR读取速度快,成本高,容量不易做大,NAND读取慢,成本低,容量很容易作大。

相同点:都是采用FLASH技术生产

功能:NOR适合作为芯片程序存储的ROM使用,NAND适合作为非易失性数据存储器 第八章

一:Linux的最常用的命令

答:1)adduser 示例:创建pdr帐户 adduser pdr 2)cat 示例:

cat text 在屏幕上显示文件text的内容;

cat-n textfile1 > textfile2 把 textfile1 的文件内容加上行号后输入 textfile2 这个文件里; 3)cd 示例:假设用户当前目录是 /home/xu 现需要更换到/home/xu/pro 目录中 $ cd pro 4)cp 示例:

$ cp-r /usr/xu/ /usr/liu/ 表示将/usr/xu 目录中的所有文件及其子目录拷贝到目录 /usr/liu中。

5)export 示例:显示当前所有环境变量的设置情况 #export 6)Fdisk 示例:查看当前系统中磁盘的分区状况,包括硬盘、U盘等fdisk-l 7)Ln: 类似windows下的快捷方式

示例:要为当前目录下的file文件建立一个硬链接,名为/home/lbt/doc/file/, 可用如下命令: ln file /home/lbt/doc/file 8)locate 示例:locate filename: 寻找系统中所有叫filename的文件

9)Ls 示例:将 /bin 目录以下所有目录及文件详细资料列出 : ls-lR /bin 10)minicom 示例:开启minicom的配置界面 minicom –s 11)Mkdir 示例:在当前目录中创建嵌套的目录层次inin 和inin下的mail目录权限设置为只有文件拥有者有读、写和执行权限。mkdir-p-m 700./inin/mail/ 12)Mount 示例:挂载ntfs格式的hda7分区到/mnt/cdrom文件夹mount-o iocharset=cp936 /dev/hda7 /mnt/cdrom 13)mv 示例:$ mv /usr/xu/ *.表示将/usr/xu 中的所有文件移到当前目录 用.表示

14)Passwd:passwd 作为普通用户和超级权限用户都可以运行,但作为普通用户只能 更改自己的用户密码,但前提是没有被root用户锁定;如果root用户运 行passwd,可以设置或修改任何用户的密码;passwd 命令后面不接任何参数或用户名,则表示修改当前用户的密码

示例:passwd pengdr 15)ping 示例:ping 16)pwd:查看”当前工作目录“的完整路径 示例:

[root@localhost ~]# pwd /root 17)reboot:执行reboot指令可让系统停止运作,并重新开机。示例:做个重开机的模拟(只有纪录并不会真的重开机)。reboot –w 18)rmdir 示例:在工作目录下的 BBB 目录中,删除名为 Test 的子目录。若 Test 删 除后,BBB 目录成为空目录,则 BBB 亦予删除。

rmdir-p BBB/Tes [root@localhost ~]# 19)setup 功能说明:设置程序,类似windows控制面板 语法:setup 20)su功能说明:变更用户身份。示例:变更账号为超级用户,并在执行df命令后 还原使用者。su-c df root 21)tar 功能说明:备份或解压文件。示例:压缩目录/etc为tar.gz后缀。# tar cvf backup.tar /etc 解压#tar –zxvf file.tar.gz #tar –jxvf file.tar.bz2 22)umount 功能:卸除文件系统。示例:卸载 /mnt区: umount /mnt/cdrom 23)whereis 功能:查询某个二进制命令文件、帮助文件等所在目录.比如:查找“ls” 这个二进制命令文件所在的目录 whereis ls

第九章

一:ADS编译环境的设置

二:系统启动代码bootloader概念

在嵌入式系统中,通常没有像BIOS那样的固件程序,因此整个系统的加载启动任务就完全由BootLoader来完成。比如在一个基于 ARM7TDMI core的嵌入式系统中,系统在上电或复位时都从地址 0x00000000开始执行。而在这个地址处安排的通常就是系统的BootLoader程序。

BootLoader就是在操作系统运行之前运行的一段小程序。通过它可以初始化硬件设备,从而将系统的软硬件环境设置到一个合适的状态,以便为最终调用操作系统做好准备。Bootloader是在嵌入式系统内核运行之前运行的一段引导加载程序。

作用:将内核映像从硬盘上读到RAM中,然后跳转到内核的入口点去运行,即开始启动操作系统。

嵌入式系统常见的Bootloader有vivi和U-Boot,RedBoot

题目一:简述Bootloader启动过程。

1、第一阶段

(1)、基本的硬件设备初始化(2)、为阶段2代码准备RAM空间(3)、拷贝阶段2代码到RAM空间(4)、设置好堆栈

(5)、跳转到阶段2的C程序入口点

2、第二阶段

(1)、初始化本阶段要使用到的硬件(2)、检测系统内存映射(memory map)(3)、将kernel和根文件系统映像从flash读到RAM空间(4)、为kernel设置启动参数(5)、调用内核

题目二:请简述嵌入式软件Bootloader的两种工作模式。

启动加载模式:启动加载模式称为“自举”(Autonomous)模式。即Bootloader从目标机上的某个固态存储设备上将操作系统加载到 RAM 中运行,整个过程并没有用户的介入。启动加载模式是 Bootloader的正常工作模式,在嵌入式产品发布的时侯,Bootloader必须工作在这种模式下。

下载模式:在这种模式下,目标机上的Bootloader将通过串口连接或网络连接等通信手段从主机下载文件。下载内容及存储:主要是下载内核映像和根文件系统映像等。从主机下载的文件通常首先被Bootloader保存到目标机的RAM中,然后再被 Bootloader写到目标机上的FLASH 类固态存储设备中

三:Makefile文件的用途与写法

1.用途:makefile关系到了整个工程的编译规则。一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。2.写法: 1)需要由make工具创建的目标体(target),通常是目标文件右可执行文件;2)要创建的目标体所依赖的文件(dependency_file);3)创建每个目标体进需要运行的命令(command)格式:target:dependency_files command 例如,有两个文件分别为hello.c和hello.h,创建的目标体为hello.o,执行的命令为gcc编译指令:gcc –c hello.c,那么,对应的Makefile就可以写为:

#The simplest example hello.o:hello.c hello.h gcc –c hello.c –o hello.o 接着就可以make了。使用make的格式为:#make target,这样make就会自动读入Makefile(也可以是首写字母小写makefile)并执行对应target的commank语句,并会找到相应的依赖文件。如下所示:

[root @localhost makefile] # make hello.o Gcc –c hello.c –o hello.o [root @localhost makefile] # ls Hello,c hello.h hello.o Makefile 可以看到,Makefile执行了”hello.o”对应的命令语句,并生成了”hello.o”的目标体.附:makefile的自动变量:

$* 不包括扩展名的目标文件名称

$+ 所以的依赖文件,以空格分开,并以出现的先后为序,可能包含重复的依赖文件 $< 第一个依赖文件

$? 所以时间戳比目标文件晚的依赖文件,并以空格分开 $@ 目标文件的完整名称

$^ 所有不重复的依赖文件,以空格分开

$% 如果目标是归档成员,则该变量表示目标的归档成员名称

题目一:Makefile和Make各实现什么功能?

Makefile文件内容 按照规则,对系统中本目录下的文件(.c、.s、.o、.h、.lib等)根据相互关系和要求进行组织,设定各自的编译方法,指定所生成的目标。Makefile是一种文本格式文件。

Make是Makefile文件的解释器

Make对Makefile文件解释后,生成Linux的shell命令和gcc编译命令,接着对命令执行,最终生成目标文件。

Makefile是工程系统编译批处理文件。

第十章

一:嵌入式编译环境的概念、建立方法以及步骤

第十一章

一:Linux驱动设备的分类与常用的数据结构

1.Linux系统设备分为三类:字符设备、块设备和网络设备 2.数据结构: 用户应用程序调用设备的功能都是在设备驱动程序中定义的,也就是设备驱动程序中所定义的功能入口点函数(或称为功能接口函数)。这些设备的功能接口函数都被定义在 中的数据结构体里面。

struct file_operations{ };

struct inode{ };

嵌入式ARM11 篇3

ARM11主频为533 MHz,最高可达667 MHz,较ARM7主频提高了10倍,且拥有更丰富的片上资源,处理速度更快,功能更强[1]。基于上述特点,ARM11可完全适应实时性较强的网络终端的设计。

在以ARM11为核心的网络终端设计中,需要LCD 在终端实时显示网络通信的各项参数和设备工作状态,LCD 的显示内容依靠网络传输数据中的指令来控制,而网络终端的操作数据也要通过网络传输到计算机,因此网络通信和LCD显示需要很强的实时性才能合理使用计算机和ARM11的资源,从而提高系统的运行效率[2]。

该文以ARM11处理器S3C6410为平台,基于Linux操作系统设计了一种在ARM11内核直接控制LCD显示的方法,并采用TCP/IP协议设计了一种同时作客户端和服务器的终端工作模式。

1 ARM11网络终端实时通信特性分析

1.1 数据流分析

在计算机与ARM11 通信的系统中,计算机的处理速度比ARM11 快很多,如将数据处理等工作量大的任务分配给计算机去处理,则可大大减少ARM11 的资源消耗,ARM11就可以更快地去响应其他操作,因此为了减少ARM11 显示任务的时间,可以将ARM11要显示图片的数据处理交给计算机,计算机按照ARM11显示的数据要求处理好数据后再通过网络传到ARM11 再完成LCD 的显示。此外,ARM11网络终端还要向计算机传输设备工作状态信息,计算机则还要向网络终端传输一些控制命令。

1.2 通信协议分析

网络通信必然涉及到通信协议的问题,目前普遍采用的网络协议有UDP协议和TCP/IP协议[3]。在实时性要求较高的网络通信中希望能做到想发就发,有数据就收。两个协议中UDP比较符合这个要求,但是它不能保证数据传输的有效性,当数据较多时很可能会发生严重的丢包现象,尤其是像LCD显示的图片数据这类数据较大而且传输频繁的数据,可能会严重影响液晶显示这是不能被接受的。相比之下TCP/IP协议能够保证数据传输的有效性。

在TCP/IP协议ARM11网络终端作为服务器或者客户端是不能做到随时想发就发,有数据就收的,比如作为服务器接收完来自计算机的数据后,如果计算机断开了连接,那么网络终端再想向计算机发送数据,就必须等到计算机再次作为客户端向终端发起连接才行。为了解决TCP/IP协议的这种问题,本文设计了网络终端和计算机既作客户端又作服务器的双线程工作模式,在这种工作模式下终端和计算机随时能发起和断开连接,从而做到随时想发就发,有数据就收。

2 LCD显示的软件设计

2.1 LCD的显示方法分析

(1) 基于Framebuffer驱动方式[4]。

在Linux下有完善的Framebuffer驱动程序,所以可以利用ARM11集成的LCD控制器[5]采用Framebuffer控制LCD,Framebuffer是显示设备抽象为帧缓冲区,用户通过内存映射将其映射到进程地址空间之后,就可以直接进行读写操作,而操作可以直接反应到屏幕上。该方法反应速度快、执行效率高,应用程序简单,但是底层硬件驱动复杂,硬件变更后编写难度大,不易实现。不带控制器的LCD通常采用这种方法。

(2) 直接读写GPIO驱动方式。

目前有很多类型的液晶屏自带LCD 控制器,ARM向控制器写控制指令和数据就可以完成对LCD 的初始化和内容的显示。这种显示方法软件设计相对简单,占用的代码空间小,可以通过简单的控制芯片进行驱动。针对自带控制器的LCD,本文设计了直接读写GPIO驱动LCD的方法。该方法在底层驱动[6]向LCD控制器和LCD的应用程序提供接口[7] ,LCD控制器的读写时序全部在底层驱动中完成,底层驱动向应用程序提供初始化接口和显示数据接口。该方法应用程序和内核的交互少,程序执行效率高。

2.2 LCD显示的实现

通过上述分析,本文设计直接读写GPIO驱动带LCD控制器的液晶屏,该方法的程序结构如图1所示。

在底层驱动中主要包括以下几个函数:

(1) 初始化函数s3c6410_inti。该函数包括2部分的初始化:一是对ARM11用于同LCD控制器相连GPIO口控制寄存器的初始化,核心语句是writel(tmp, S3C64XX_GPICON),其中writel是驱动层的写函数,tmp是写入控制寄存器的数据,S3C64XX_GPICON是S3C6410中第I组GPIO口的控制寄存器,如果采用别的GPIO口就改用别的控制寄存器宏定义[8];二是对LCD控制器初始化。

(2) 写数据函数s3c6410_WRData和写命令函数s3c6410_WRCommand。这2个函数按照具体LCD控制寄存器的写数据时序和写命令时序[9],完成对LCD控制器的写数据和写命令,向GPIO写数据的函数是writel(tmp, S3C64XX_GPIDAT),writel和tmp与上述相同,S3C64XX_GPIDAT是S3C6410中第I组GPIO口的数据寄存器。

(3) 显示函数s3c6410_LCDdisplay。 该函数通过调用写命令函数和写数据函数到达在液晶屏上具体位置显示具体图片或文字的效果。

(4) 系统调用接口函数s3c64xx_ioctl(struct file *file,int cmd,long int data)。该函数定义s3c6410_inti和s3c6410_LCDdisplay2个函数接口通过系统调用iotcl(fd,1,xx)和iotcl(fd,2,xx),以供应用程序调用,应用程序使用iotcl(fd,1,xx)就可初始化结晶屏,只需要向s3c6410_LCDdisplay的接口iotcl(fd,2,xx)中写数据就实现了数据的LCD显示。

3 网络通信和LCD显示的整体设计

在网络通信和LCD显示的整体设计上,从LCD显示数据的有效性和网络系统工作的实时性角度出发,本文拟采用TCP/IP协议设计服务器和客户端双线程工作模式,液晶显示用直接读写GPIO的驱动方法,显示数据由计算机处理好后发送给ARM11客户端来实现。程序设计的流程图如图2所示。软件首先通过系统调用iotcl(fd,1,xx)调用函数底层驱动的液晶屏初始化函数初始化结晶屏,然后使用pthread_create()[10]创建服务器线程和客户端线程。当线程建立后ARM11网络终端同时进入两个线程:服务器线程将一直等待客户端发起连接,当客户端有数据要发送时只要发起连接就能保证和它连接上,接收到客户端数据后用于LCD显示或者其他处理,处理完成后再回到等待客户端连接;客户端线程则一直扫描终端状态,一旦有数据需要发送给服务器就马上发起连接发送数据,数据发送完成后继续扫描。

主程序核心代码如下:

4 系统运行效果分析

在系统中网络终端和计算机的服务器线程一直处于工作状态,这样就保证了任何一端随时能作为客户端发起链接并链接成功,换个角度任何一端也能够随时收到客户端发送过来的数据,这样就实现了想发就发,有数据就收,达到了实时网络通信的实时性要求。

ARM11网络终端上,将液晶显示的图片数据交由计算机处理,大大减少ARM11的处理时间,使得响应按键、开关等的速度更为迅速。LCD显示上采用直接读写GPIO,LCD控制器的读写时序全部在底层驱动中完成,应用程序和内核的交互少,试验证明内核的执行速度在数量级上大于应用程序的执行速度,程序运行效率高。

5 结 语

ARM11嵌入式系统以其体积小、处理速度快、功能强的特点,能实现实时性要求较高的网络组网和网络通信,从而进一步开拓了嵌入式系统的应用前景。本文通过设计TCP/IP协议服务器客户端双线程工作模式和直接读写GPIO驱动LCD,并将显示图片由网络交给计算机处理,提高了实时网络通信的可靠性和实时性,充分利用了计算机和ARM11的资源。同时该设计可移植性强,可应用到其他网络终端的工作,对ARM11嵌入式系统的应用具有借鉴意义。

摘要:通过对ARM11嵌入式系统Linux下的实时网络通信和LCD显示进行研究,分析了网络通信协议和LCD驱动方式。在ARM11嵌入式系统下设计了直接读写GPIO的LCD显示程序,并实现网络终端服务器和客户端双线程的工作模式,解决了网络通信实时性和可靠性的问题。实际应用表明:该方法LCD显示速度快、网络通信实时性强可靠性好、ARM11和计算机的资源利用率高。

关键词:ARM11,实时网络通信,LCD,Linux

参考文献

[1]佚名.Mini6410用户手-册20100814[S].广州:广州友善之比计算机科技有限公司,2010.

[2]杨海清,周安栋,罗勇,等.嵌入式系统实时网络通信中的LCD显示设计方法[J].计算机与数字工程,2010(2):155-157.

[3]张思民.嵌入式系统设计与应用[M].北京:清华大学出版社,2008.

[4]张策,孙绪刚.基于Framebuffer的LCD驱动设计[J].计算机工程与设计,2009,30(23):5372-5375.

[5]李春燕.Linux内核的嵌入式系统裁减以及LCD驱动的实现[J].电脑知识与技术,2008,25(1):29-37.

[6]冯国进.嵌入式Linux驱动程序设计从入门到精通[M].北京:清华大学出版社,2008.

[7]苏哲欣,刘鸿飞,薛晓.基于嵌入式Linux的LCD驱动分析与实现[J].工业控制计算机,2009,22(2):29-30.

[8]佚名.S3C6410X用户手册[M].北京:Samsung公司,2008.

[9]孙俊喜.LCD驱动电路、驱动程序设计及典型应用[M].北京:人民邮电出版社,2009.

嵌入式ARM11 篇4

ARM嵌入式linux复习心得总结1:

一、Linux定制安装:

从新安装配置了一遍Linux,我使用的是Vmware7.0安装RHEL5.5,对于Linux的安装主要是要选择定制安装也就是Vmware7.0(下面简称Vm)中新建虚拟机开始部分选择”Custom(advanced)”,因为这里我所使用的FTP、sumba等服务器是需要定制加上的一开始没有注意结果悲剧了…(以后一定要仔细的选择!),在next后面应该选择最后一个选项这样自定义的选项会更加多,同样可以选择定制安装的一些选项,在这里同样有个地方要注意:

1、最好使用默认的内存分配方式

2、*(重要)选择bridged networking 的网络连接方式(这里要注意,第一次安装的时候没有注意使用的是默认值也就是NET模式,最后在设置NFS和sumba服务器的时候(也可能是其他的操作错误)无法与PC机ping通讯这里花费了大量的时间研究!后面就是Linux系统的安装了,这里我使用的是图形化界面的安装(以前大一的时候用命令行安过一次自己英语太垃圾了,安了整整一上午…)

3、在最后配置的时候防火墙要禁用,因为这里防火墙会阻止一切自发的与本机联网的事件,在后面使用NFS以及sumba服务器的时候是不能打开的,第一次安装的时候吃过这方面的亏以后要注意!

4、禁用SELinux,这个也是与安全有关的,现在暂时禁用就可以了。

二、再次回顾了一下Linux的命令,这里比较熟悉,跟走路一样这里必须专业起来!总的来说有一下几个命令必须灵活运用:

1、useradd(添加用户名,后面使用sumba服务器的时候需要用到,使用率较低)

2、passwd(添加用户密码,一般配合useradd使用,使用率较低)

3、su(切换用户,经常用)

4、shutdown(关机命令,用法有多种,我一般不用,虚拟机直接断电就行了)

5、cp(拷贝,不解释)

6、mv(移动或更名,不解释)

7、rm(删除,不解释)

8、mkdir(创建目录)

9、cd(改变工作目录,经常用)

10、pwd(显示当前目录)

11、ls(查看目录)

12、tar(针对tar.gz打包和解压,这里主要记住 tar cvzf * 和tar xvzf * 一个是压缩,一个是解压)

13、tar(针对tar打包和解压,这里主要记住 tar cvf * 和tar xvf * 一个是压缩,一个是解压)

14、unzip(解压zip文件)

15、chmod(更改权限)

16、df(查看磁盘使用情况)

17、ifconfig(查看网络配置、查看ip等)

18、netstat(查看网络状态)

19、grep(查找字符串,这个其实很重要,但自己总是忘记可能是一般不用的原因)20、rpm(用于软件安装)

21、mount(挂载,很重要用语挂载CDROM、硬盘以及共享文件等)

22、find(找到*文件存在路径)

三、vi编辑器的使用,使用比较熟练好像加“!”的都是强制执行的。

四、安装tftp服务器:

常用命令:*netstat –a | grep tftp 这里检测当前tftp的情况,在资料上是说检测安装情况,我觉得不是应该是检测启动情况,当然这个也是包括安装与否的,这里要注意!有的时候他是安装上的但是没有打开,查看配置文件是就会发现disable 默认是 = yes 意思是默认是关闭的我们有几种方法将他打开:

1、使用setup命令启动tftp

2、配置 #vi /etc/xinetd.d/tftp 中把disable中的yes改为no

3、使用命令启动 #/etc/init.d/xinetd start

五、安装NFS服务器: 这个功能是共享Linux与Linux之间文件的,后面开发ARM的时候联通内核与文件系统使用

六、安装samba服务器

首先是要配置samba服务器的配置文件位置在:#vi /etc/samba/smb.conf 在Share Definitions中添加 【root】

Comment

= Root Ditectories

Browseable

= yes

Writable

= yes

Path

= /

valid users

=

smb

valid users

=

MYDOMAIN%s 其中可以在【home】前在命令模式下输入“6yy”(复制这六行!)然后再输入“p”(粘贴)然后再修改,这样修改起来比较方便,也是绝大多数教程都使用的方法,其中要注意几点:

1、要是使用复制方法然后修改的话要注意看清楚Comment这行后面Root Ditectories 这行的Root是不要忘了修改【homes】中式Home而【root】中是Root切记!(这里自己在前一次安装的时候没有留意导致后面Samba 服务器不能使用!!)

2、smb 这是用户名这里引用一下教材的语言:添加用户,注意添加用户的用户与修改配置文件部分valid users = smb相同,如果smb用户存在则不需要添加!

配置完毕要重新启动samba服务器 #/etc/init.d/smb restart

最后在windows中运行即可。

七、Samba、NFS等PC与虚拟机的网络配置(重点)这里着重总结一下这次网络的配置,虚拟机的网络配置非常重要,即使Linux不需要上网可是他们之间的数据传送也是十分必要的,例如Vmtools这个工具,smb、NFS、tftp等,我在这里的网络配置花费了大量的时间研究,主要是samba服务器总不能配置成功,网上也有许多的方法不过讲的都很细许多功能的实现都比较抽象,我之所以总是没有成功在上面的几个方面上已经详细的解释了,这里不再次做总结,其中有几点与老师或查资料得到的几点信息在这里要总结一下:

1、在所有的服务器等联网活动之前一定要把网络通信配置好!在PC中首先要ipconfig一下查询一下PC机网络配置情况(ip、网关等)然后再在虚拟机中使用命令setup打开网络配置去掉自动分配IP选用静态ip然后将ip等项目输入进去,这里要输入的一共三项,后两项是相同的只有ip是需要改变的,切记要分配在同一个网段!这样才能实现局域网功能

2、我问了问教授Linux的一位老师他曾经因为更改了本地连接的IP导致虚拟机上的网络服务器不能用了,当更改回原来的ip才能使用,这里我并没有出现这种情况因为我在设置ip的时候使用的是动态分配地址的ip路由器,在设置完成后并没有出现服务器失效的情况所以我认为这里老师可能使用了某个ip绑定了吧。

八、Vmtools的安装使用

这个工具很好用在XP中安装比较方便,但在Linux中有点儿复杂,当然只是有点儿而已,使用Vmware自动下载就可以完成后Linux自动加载了一个cdrom里面就有一个vmtools的tar 解压包(有时需要自己加载)他在文件中找到安装文件安装即可。这里引用一下网络同仁的资源我觉得他写的吧、简单明了(http://tl.h> void create_file(char *filename){ If(create(filename,0666)<0)

//创建文件函数判断创建是否成功 后面的是文件的权限:可读可写不可执行!

{ printf(“create file %s failure!n”,filename);

exit(EXIT_FAILURE);} Else { Printf(“create file %s success!”,filename);} }

Int main(int argc,char *argv[])// 这里的argc是程序参数个数(如ls –a 这就是两个参数,也就是说是两个字符串,而argv【】表示的是参数名字 argv【0】=ls argv【1】=-a 后面应该还有一个参数char *env 代表的是环境变量的字符串(各种路径)){

If(argc<2)

//判断文件是否符合要求,这个一般小于0就行 { Perror(“you haven’t input the filename,please try again!n”);

Exit(EXIT_FAILURE);//这个最后等于1 其实就是个return 1; } Create_file(argv[1]);Exit(EXIT_SUCCESS);

//这个最后等于0 其实就是个return 0;

}

基于嵌入式ARM系统的应用分析 篇5

一、ARM嵌入式开发工具

ARM应用软件的开发工具根据功能的不同, 分别有编译软件、汇编软件、链接软件、调试软件、嵌入式实时操作系统、函数库、评估板、JTAG仿真器、在线仿真器等, 目前世界上约有四十多家公司提供以上不同类别的产品。

ARM SDT可在Windows95、98、NT以及Solaris 2.5/2.6、HP-UX 10上运行, 支持最高到ARM9 (含ARM9) 的所有ARM处理器芯片的开发, 包括Strong ARM。ADS对汇编、C/C++、java支持的均很好, 是目前最成熟的ARM开发工具。很多ARM开发软件 (例如Keil) 也是借用的ADS的编译器。ADS在2006年版本已经发布到2.2。但国内大部分开发者使用的均是1.2版本。Real View MDK开发工具源自德国Keil公司, 被全球超过10万的嵌入式开发工程师验证和使用, 是ARM公司目前最新推出的针对各种嵌入式处理器的软件开发工具。Real View MDK集成了业内最领先的技术, 包括µVision3集成开发环境与Real View编译器。支持ARM7、ARM9和最新的Cortex-M3核处理器, 自动配置启动代码, 集成Flash烧写模块, 强大的Simulation设备模拟, 性能分析等功能, 与ARM之前的工具包ADS等相比, Real View编译器的最新版本可将性能改善超过20%。

JEENI仿真器支持ARM/THUMB指令, 支持汇编/高级语言调试。用户应用程序通过JEENI仿真器下载到目标RAM中。通过JEENI仿真器, 用户可以观察/修改ARM7的寄存器和存储器的内容, 用户可以在所下载的程序上设置断点, 用户可以以汇编/高级语言单步执行程序, 也可以全速运行程序, 用户可以观察高级语言变量的数据结构及内容并对变量的内容在线修改。

JEENI内部使用了一片带有高速缓存的ARM处理器, 支持对调试操作的快速响应, 比如:单步、读写存储器、读写寄存器和下载应用程序到目标板。JEENI的这种结构, 允许以太网接口在处理器执行JTAG指令的同时访问存储器。这种设计极大的提高了下载速度。JEENI仿真器能够很好地与SDT2.5工具连接, 用户可使用SDT的编译器和调试界面。JEENI对那些正在使用ARM Black ICE Embedded ICE JTAG接口的用户来说是即插即用的替代品。JEEN可用于ARM SDT 2.11a或SDT 2.5, 另外大多数第三方的调试器也都支持JEENI。

二、Real View MDK优点

启动代码和系统硬件结合紧密, 必须用汇编语言编写, 因而成为许多工程师难以跨越多门槛。Real View MDK的µVision3工具可以帮您自动生成完善的启动代码, 并提供图形化的窗口, 随您轻松修改。无论对于初学者还是有经验的开发工程师, 都能大大节省时间, 提高开发效率。Real View MDK的设备模拟器可以仿真整个目标硬件, 包括快速指令集仿真、外部信号和I/O仿真、中断过程仿真、片内所有外围设备仿真等。开发工程师在无硬件的情况下即可开始软件开发和调试, 使软硬件开发同步进行, 大大缩短开发周期。而一般的ARM开发工具仅提供指令集模拟器, 只能支持ARM内核模拟调试。

Real View MDK的Real View编译器与ADS 1.2比较:

代码密度:比ADS 1.2编译的代码尺寸小10%;代码性能:比ADS1.2编译的代码性能高20%。Real View MDK无需寻求第三方编程软件与硬件支持, 通过配套的ULINK2仿真器与Flash编程工具, 轻松实现CPU片内FLASH、外扩FLASH烧写, 并支持用户自行添加FLASH编程算法;而且能支持FLASH整片删除、扇区删除、编程前自动删除以及编程后自动校验等功能, 轻松方便。

三、ARM嵌入式造作系统

操作系统是一管理电脑硬件与软件资源的程序, 同时也是计算机系统的内核与基石。操作系统是一个庞大的管理控制程序, 大致包括5个方面的管理功能:进程与处理机管理、作业管理、存储管理、设备管理、文件管理。目前微机上常见的操作系统有DOS、OS/2、UNIX、XENIX、LINUX、Windows、Netware等。

μC/OS-II是一种基于优先级的抢占式多任务实时操作系统, 包含了实时内核、任务管理、时间管理、任务间通信同步和内存管理等功能。它可以使各个任务独立工作, 互不干涉, 很容易实现准时而且无误执行, 使实时应用程序的设计和扩展变得容易, 使应用程序的设计过程大为减化。Vx Works提供了一个快速灵活的与ANSI C兼容的I/O系统, 包括UNIX标准的Basic I/O (creat () , remove () , open () , close () , read () , write () , and ioctl () .) , Buffer I/O (fopen () , fclose () , fread () , fwrite () , getc () , putc () ) 以及POSIX标准的异步I/O。Vx Works包括以下驱动程序:网络驱动、管道驱动、RAM盘驱动、SCSI驱动、键盘驱动、显示驱动、磁盘驱动、并口驱动等。

摘要:ARM是微处理器行业的一家知名企业, 设计了大量高性能、廉价、耗能低的RISC处理器、相关技术及软件。文章总结了各种具有性能高、成本低和能耗省的技术, 列举了适用领域, 比如嵌入控制、消费/教育类多媒体、DSP和移动式应用等。

关键词:嵌入式系统,ARM软件开发

参考文献

[1]王学龙:嵌入式ARM系统设计与应用[M].北京:清华大学出版社, 2007

浅谈基于ARM的嵌入式系统 篇6

日常生活中, 各种使用嵌入式技术的电子产品已经得到了广泛的应用, 如MP3、PDA、手机、智能玩具、智能家电、车载电子设备等。在工业和服务领域中嵌入式技术也已经大量应用于数控机床、智能工具、机器人等行业, 正在逐渐改变着传统的工业生产和服务方式。而嵌入式的应用更是涉及金融、航天、电信、网络、信息家电、医疗、工业控制和军事等各个领域, 以至一些学者断言嵌入式技术将成为后PC时代的主宰。

二、嵌入式系统介绍

1. 嵌入式系统的概念:

嵌入式系统是嵌入式计算机系统的简称, 国际电气与电子工程师协会 (IEEE) 对嵌入式系统的定义为:"嵌入式系统是用来控制或监视机器、装置或工厂等大规模系统的设备"。国内对嵌入式系统的一般定义为:"嵌入式系统是以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应于应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统"。按照历史性、本质性、普遍性的要求, 嵌入式系统应定义为:"嵌入到对象体系中的专用计算机系统"。对象系统则是指嵌入式系统所嵌入的宿主系统。

2. 嵌入式系统特点:

以ARM为代表的嵌入式系统与以PC机为代表的通用计算机系统相比有以下几个特点:

1) 嵌入式系统通常是面向特定应用的。

2) 嵌入式系统是一门综合技术学科。

3) 嵌入式系统有实时性和可靠性的要求。

4) 嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中, 而不是存储于磁盘等载体中。

5) 嵌入式系统本身不具备开发能力, 必须有一套专门的开发工具和环境才能进行开发。

6) 嵌入式系统具有较长的生命周期。

7) 嵌入式系统须满足环境的要求。

3. 嵌入式系统的基本结构:

嵌入式系统包括嵌入式软件和嵌入式硬件两部分。硬件是支撑, 软件是灵魂, 从硬件来讲, 嵌入式系统的核心部件是嵌入式微处理器。从软件来讲, 嵌入式系统的软件一般由嵌入式操作系统和应用软件组成。具体而言, 整个嵌入式系统的体系结构可以分成四个部分:嵌入式处理器、嵌入式外围设备、嵌入式操作系统和嵌入式应用软件, 其层次关系如图1-1所示。

3.1嵌入式处理器

嵌入式系统的核心是各种类型的嵌入式处理器, 嵌入式CPU大多工作在为特定用户群所专门设计的系统中, 它将通用CPU中许多由板卡完成的任务集成到芯片内部, 从而有利于嵌入式系统在设计时趋于小型化, 同时还具有很高的效率和可靠性。

嵌入式处理器一般可以分为微控制器、嵌入式微处理器、DSP处理器和片上系统四大类。

本课题所用的ARM系列微处理器就是属于微处理器。本文主要介绍基于ARM的嵌入式系统。因此我们来了解一下ARM。3.1.1 ARM简介

ARM (Advanced RISC Machines) , 既可认为是一个公司的名字, 也可认为是对一类微处理器的通称, 还可认为是一种技术的名字。1990年ARM公司成立于英国剑桥, 主要出售芯片设计技术的授权。而它的前身是20世纪80年代早期主要开发处理器的Acorn Computers公司。目前, 采用ARM技术知识产权IP核的微处理器, 即通常所说的ARM微处理器, 己遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统、军用系统等各类产品市场。

3.1.2 ARM处理器的特点及应用领域3.1.2.1 ARM处理器具备以下特点:

(1) 处理速度快 (2) 超低功耗 (3) 价格低廉 (4) 应用前景广泛3.1.2.2 ARM处理器的应用领域

ARM具有广泛的应用领域。到目前为止, ARM微处理器及技术的应用几乎己经深入到各个领域:工业控制领域、无线通讯领域、网络应用、消费类电子产品、成像和安全产品

3.2嵌入式外围设备

在嵌入系统硬件系统中, 除了中心控制部件以外, 用于完成存储、通信、调试、显示等辅助功能的其他部件, 事实上都可以算作嵌入式外围设备。目前常用的嵌入式外围设备按功能可以分为存储设备、通信设备和显示设备三类。

存储设备主要用于各类数据的存储, 常用的有静态易失型存储器 (RAM、SRAM) 、动态存储器 (DRAM) 和非易失型存储器 (ROM、EPROM、EEPROM、Flash) 三种。

目前存在的绝大多数通信设备都可以直接在嵌入式系统中应用, 包括RS-232接口 (串行通信接口) 、SPI (串行外围设备接口) 、Ir DA (红外线接口) 、I2C (现场总线) 、USB (通用串行总线接口) 、Ethernet (以太网接口) 等。

由于嵌入式应用场合的特殊性, 通常使用的是阴极射线管 (CRT) 、液晶显示器 (LCD) 和触摸板 (Touch Panel) 等外围显示设备。

3.3嵌入式操作系统

为了使嵌入式系统的开发更加方便和快捷, 需要有专门负责管理存储器分配、中断处理、任务调度等功能的软件模块, 这就是嵌入式操作系统。它是集软硬件为一体的可以独立完成某具体工作的计算机系统。目前许多嵌入式操作系统已经被广泛应用, 如windows CE、Vxworks、uc/os-Ⅱ、Linux等等。

4.4嵌入式应用软件

嵌入式应用软件是针对特定应用领域, 基于某一固定的硬件平台, 用来达到用户预期目标的计算机软件, 由于用户任务可能有时间和精度上的要求, 因此有些嵌入式应用软件需要特定嵌入式操作系统的支持。嵌入式应用软件和普通应用软件有一定的区别, 它不仅要求其准确性、安全性和稳定性等方面能够满足实际应用的需要, 而且还要尽可能地进行优化, 以减少对系统资源的消耗, 降低硬件成本。

三、嵌入式系统的发展现状

嵌入式系统是软件和硬件的综合体, 事实上, 在很早以前, 嵌入式这个概念就已经存在了。它最早于六十年代晚期在通信中被用于控制电话交换机中的电子机械交换的控制, 当时被称为"存储式程序控制系统" (Stored Program Control) 。

随着应用的发展, 其涵盖范围和领域也越来越广泛, 几乎包括了我们周围的所有电器设备, 如电视机顶盒、掌上PDA、多媒体设备、医疗仪器乃至路由器、交换机等。进入20世纪90年代, 随着信息化、智能化、网络化的发展, 嵌入式系统技术也获得了更为广阔的发展空间, 嵌入式技术全面展开, 目前已成为通信和消费类产品的共同发展方向。在自动控制领域, 嵌入式系统不仅应用于ATM机、自动售货机、工业控制等专用设备, 它还与移动通信设备、GPS、娱乐、PDA设备等相结合, 发挥出巨大作用。目前, 嵌入式系统己经广泛应用到工业、交通、能源、通信、科研、医疗卫生、国防以及日常生活等领域。

四、嵌入式系统的发展趋势

信息时代、数字时代使得嵌入式产品获得了巨大的发展机遇, 为嵌入式市场展现了美好的前景, 同时市场需求也向嵌入式产品提出了新的挑战。这主要包括:支持日趋增长的功能密度、灵活的网络联接、轻便的移动应用和多媒体的信息处理, 此外, 当然还需对付更加激烈的市场竞争。目前大多数嵌入式系统还孤立于Internet之外, 但随着Internet的发展以及Internet技术在信息家电、工业控制技术等领域的应用, 嵌入式系统与Internet的结合将代表着嵌入式技术的真正未来。

参考文献

[1]涂启志ARM嵌入式系统浅论科技资讯SCIENCE&TECHNOLO-GY INFORMATION 2007 NO.22

[2]张治国ARM嵌入式系统综述科技资讯SCIENCE&TECHNOLOGYINFORMATION 2007 NO.21

[3]李宇丽基于ARM的嵌入式Linux系统的研究与应用西安电子科技大学2007

嵌入式ARM11 篇7

多媒体数字信息发布系统(国外称Digital Signage,数字标牌系统)经过多年的推广与发展,已经被广大用户所接受。它不仅能够提供及时、全面、优质、高效的信息服务,还能营造多彩的文化氛围,提升企业形象,它已经成为建筑智能化建设的标准配置之一。

目前数字信息发布系统产品非常多,从播放器的技术路线分类看,主要两种:一种是基于X86架构,另一种是基于ARM架构。X86架构的播放器实质上是一台小型化的PC机,其优点是性能高、平台成熟、开发简易,能够实现炫丽的展示特效和丰富的管理功能,但也存在不少缺点:功耗大,不利节能环保;发热量大,散热问题、噪音问题不好解决;板卡尺寸大,会导致一些设备安装的难题。X86架构产品目前主要用于政府企事业单位办公楼和公共场所的信息发布。ARM架构的播放器是采用ARM处理器的系统,主要的优点有:低功耗;SOC (System on a Chip)架构,板卡尺寸小;原生的工控设计,稳定性高。而主要的缺点是:性能不高,不足以支撑炫丽的展示效果;平台不够成熟,应用开发有门槛,复杂的管理功能实现不易,目前大部分该类产品依然是单机离线模式,依靠人工向SD存储卡拷贝数据实现信息发布。ARM架构产品目前主要用于商业楼宇和住宅的广告信息发布。

近两年低功耗计算技术发展迅猛,ARM处理器在性能上有了质的飞跃,有追赶X86处理器的势头。在这个技术背景下,我们融合两种架构产品的优点,把基于X86架构信息发布系统优秀的展示和管理功能移植到ARM的平台系统下,推出了ARM架构嵌入式信息发布系统。下面就对这个产品的架构、实现原理和特点做简单介绍。

2 产品简介

2.1 系统架构

本系统是基于网络传输的信息发布系统,它由服务器、传输网络、播放器、显示屏组成。

服务器负责数据存储和系统管理。传输网络可以支持有线网络、无线网络和移动网络。播放器是低功耗的ARM架构嵌入式计算系统,播放器负责节目内容播放,把画面输出至显示屏。播放器与显示屏连接支持VGA、DVI、HDMI、SDI等多种方式,如果距离过长,可以使用信号延长器通过双绞线或光纤传输视频信号。由于播放器板卡很小,播放器和显示屏也可以做到一起,做成一体机。

系统的拓扑结构图如图1所示。

2.2 软件原理

系统包含两部分软件:服务器软件和播放器软件。服务器软件在服务器上运行,由交互服务程序、中心调度程序、监控程序以及数据库构成。播放器软件是Android操作系统APP应用,运行在播放器上,由传输程序、监控程序和播放程序构成。

发布者通过客户端软件或Web浏览器进行信息发布,发布的数据内容全部上传到服务器中暂存起来。数据内容经审核后,中心调度程序才会把它分发到各个播放器。播放器收到数据要对数据内容进行数据签名认证,确认数据合法后,播放程序再依据播放列表和版面设置的编排绘制出画面输出到显示屏幕。

系统管理员可通过服务器将各种控制命令(如开关机、重启、音量调节等)传递给播放器,播放器接收命令后由监控程序分析并执行这些由服务器传递过来的命令,实现远程控制各播放器的效果。此外,播放器监控程序还会不断发信号给服务器的监控程序,告知播放器的运行状况,这样管理员就能随时监控系统的运行状况。

图2是软件的实现原理图。

2.3 功能简介

ARM架构嵌入式信息发布系统的主要功能有:

(1)多媒体资源库管理。系统接受多媒体文件上传,并对这些文件进行分类管理。用户可复用这些多媒体文件,提高信息发布效率。

(2)版面设计工具。该工具支持多种媒体格式内容的混合编排播放。可支持多个分屏区域,可以对各类信息实现分屏管理,各区域播放内容独立,并且可以根据客户需要对分屏方式任意组合,分屏区域可实现透明堆叠。

(3)节目编排工具。用户通过该工具进行编目编排,形成播放列表。该工具可针对每个分屏区域编排节目资源,节目编排以天为单位,可预先定义一年以上的节目排期,编排的时间精度可以到秒。该工具为图形界面,支持全程鼠标操作,操作简单快捷。

(4)发布管理模块。用户通过此模块指定每台播放器的播放任务列表。该模块支持组策略管理,可一次向多台播放器发布多天的节目内容。内容发布支持多级审批,未经审批的内容不会播出。

(5)传输管理模块。系统内置高效的数据传输机制,支持断点续传、P2P、多级分发、数据校验等技术,可保证数据快速安全地分发到播放器。还支持优先级控制机制,让紧急信息以最快速度传递。

(6)实时动态数据发布。系统支持如直播视频、股市、汇率、交通、天气、排队叫号等实时信息的发布。

(7)远程管理模块。系统支持远程调整屏幕分辨率、调整音量、校准时间、唤醒、关闭、重启播放器,支持远程设置定时开关机、远程配置变更、软件自动升级,支持远程获取播放器的日志文件等。

(8)播放器支持多种特效,如基础的走马灯、百叶窗、淡入淡出、三维旋转等特效,还有高端的多屏拼接、不规则拼接、多屏联动等特效。

2.4 产品特点

(1)低功耗系统。播放器采用ARM架构,整体功耗不超过10W,可采用无风扇散热设计做到运行无噪音。

(2)纤巧化设计。播放器是SOC设计,CPU、内存、存储、控制器都在一块电路板上,电路板尺寸很小很薄,可以和屏幕做成一体。

(3)工业级可靠性设计。播放器采用了看门狗、网络唤醒、定时器电源开关等工业级的可靠性设计,可实现系统的无人值守自动化运行。

(4)混网支持。系统同时支持有线网(Ethernet)、无线网(Wi-Fi)、移动网(3G、4G)多种网络。

(5)强大管理功能。系统支持资源管理、版面管理、节目管理、任务管理、多级审核、远程管理等高级管理功能。

3 结束语

基于ARM9嵌入式网关的设计 篇8

在工业控制和通讯设备中, 更多的是符合RS-232标准的串行口设备。因此这些设备都是通过RS-232或RS-485总线与PC机进行数据通行和数据管理的。这种方式不仅需要很大的人力和物力, 而且传输的距离有限, 不能实现远程控制, 可以在设备中嵌人TCP/IP协议栈, 通过工业网关自动分配IP地址, 实现对各个设备的远程监视和远程控制。

近些年, 互联网以其便捷、高速传输数据的特点越来越受到人们的青睐。以太网/互联网等网络架构逐渐在通信、自动化控制领域被广泛的采用, 以TCP/IP网络传输通信协议为代表, 成熟度较高的开放式网络通信技术, 正向各种自动化系统进行渗透, 连接并控制所有设备。而32位处理器ARM的出现, 使得嵌入式监控设备实现TCP/IP协议成为现实。

LINUX作为一种开源免费的操作系统由于它集成了TCP/IP协议栈, 所以网络编程模块就变的很容易了, 用SOCKET编程就变的灵活容易了。而LINUX又能很好的在ARM上进行移植, 所以本设计用了LINUX操作系统。

本设计就是通过移植了LINUX操作系统的ARM9来读取串口、并口、USB等传送过来的数据, 并且通过移植Boa web服务器使ARM上的数据可以通过以太网很好的传送到任何地方的宿主机上。这样就可以通过一台宿主机控制多太工业设备, 并且能过在很远的地方对设备进行控制, 大大的减轻了在工业领域中人力和物力的消耗。

(二) 系统硬件平台设计

1. 系统总体结构的设计

系统的工作原理是就是通过移植了LINUX操作系统的ARM9来读取串口、并口、USB等传送过来的数据, 并且通过移植Boa web服务器使ARM上的数据可以通过以太网很好的传送到任何地方的宿主机上。这样就可以通过一台宿主机控制多太工业设备, 并且能过在很远的地方对设备进行控制, 大大的减轻了在工业领域中人力和物力的消耗。, 系统的结构框图1所示。

2. 通信模块的设计

用RTL8019芯片设计的以太网控制器, 可以通过RJ-45连上以太网, 从而实现把工业设备上的数据传送到远程监控端得浏览器上。如图2所示为网络通信部分的结构框图。

RTL8019AS芯片的引脚SA0~SA19为地址总线;SD0~SD15为数据总线;引脚INT0接S32C410芯片的外部中断信号;引脚AEN是地址使能脚, 作为芯片的选通信信号, 将中断接到CPU的n GCS3地址映射到bank3。

引脚TPIN+, TPIN-、TPOUT+, TPOUT-作为媒体接口管脚, 是接收IP数据报所需要用到的管脚, 在设计网卡芯片电路时通过一个隔离变压器和RJ-45的网络外接口相连, 外部主机通过以太网网线与RJ-45接口进行连接, 实现数据交换。

隔离变压器的TD+管脚连接网卡芯片的TPOUT+引脚;TD-连接TPOUT-;RD+连接TPIN+;RD-连接TPIN-。8019通过隔离变压器与RJ-45连接, 实现与主机进行接收和发送IP数据报等工作。

3. 串口部分的设计

串口部分设计使用了2路UART, 其中, 一路通过电平转换芯片MAX232, 把3.3V的逻辑电平转换为RS-232-C的逻辑电平进行传输, 实现ARM与PC机之间的通信, 通过超级终端可在PC机上进行调试;另一路串行接口使用MAX1485进行电平转换, 实现从RS-485上接收现场总线发送的信息。

(三) 系统软件部分设计

1. 操作系统的移植

Linux操作系统可应用于多种硬件平台, 具有良好的移植性、高的可靠性、优秀的网络功能、完备的文件系统以及丰富的API, 为嵌入式网关提供了强大的软件支持。因此, 本文选择Linux作为嵌入式网关的操作系统。操作系统的移植过程如下:

制作Linux映像文件

(1) 在linux系统下安装arm-linux-gcc交叉编译软件, 这里采用cross-2.95.3.tar.gz工具包。

(2) 将linux-jx2410.tar.gz拷贝到/home/cvtech/目录下, 执行下面命令

(3) 将生成的内核映像文件z Image复制到/tftpboot目录下

往ARM9上移植linux操作系统

(1) 配置linux系统的tftp服务。

(2) 将文件系统映像文件拷贝到/tftpboot下。

(3) 将硬件电路连接好, 下载ramdiak.gz和z Image映像文件通过网线下载到ARM9中。 (tftp 30800000 ramdiak.gz, tftp 30008000 z Image) 。

(4) go 30008000, 就进入了arm9的linux系统。这样就将linux内核下载到了ARM9上了, 通过LCD可以看到linux操作系统的界面。

2. Boa Web服务器的移植

Boa Webserver是一个运行在类UNIX系统中的高性能网络服务器。可以接收来自客户机的POST和GET方法, 支持CGI后台服务程序。移植过程如下:

4. 动态Web页面的CGI技术

通用网关接口 (CGI) 是Web服务器与外部应用扩展程序交互的一种标准接口, 规定了Web服务器调用调用其它可执行程序的接口标准, 提供了WEB服务器执行外部程序的通道。CGI程序是独立于Web Server的一个外部程序, 经编译成可执行文件在服务端运行。

本系统中, CGI程序主要是将以太网传送过来的数据动态的显示在浏览器上, 并且具有, 配置设备的IP地址、网关地址、子网掩码等设置。

5. 串口通信模块的设计

在linux下, 串口被当做文件对待, 每个串口都赋予了一个文件描述符。因此, 从串口读写数据, 就像读写文件一样简单。在linux中打开和预置一个串行设备的基本步骤:

(1) 用open打开设备文件。此时需要使用O_NONBLOCK和O_NOCTTY打开标志。O_NONBLOCK标志使得open不等待并立即返回, O_NOCTTY指明串行设备不是控制终端。

(2) 使用tcgetattr获取当前设备方式。

(3) 设置termios成员c_iflag、c_oflag、c_cflag、c_lflag。

(4) 使用cfsetispeed和sfserospeed通信设置波特率。

(5) 使用tcsetattr设置设备工作方式。

(6) 使用read和write读写串口终端。

(7) 输入输出处理完毕, 用close关闭串口。

串口通信的流程图如图3所示。

(四) 结束语

本文介绍了以S3C2410处理器为核心、用RTL8019AS作为网络接口芯片的嵌入式网关的软、硬件设计方法。本系统可用于对工业设备的远程监控控制, 具有很好的应用前景。

摘要:系统是一种以S3C2410处理器为核心, 结合RTL8019AS网络接口芯片开发硬件系统, 并在此系统上移植了Linux操作系统和Boa Web服务器的嵌入式工业网关, 实现了对工业设备的远程监控和控制。

关键词:ARM9,Linux,Boa Web服务器,CGI

参考文献

[1]王进德.嵌入式Linux程序设计与应用案例[M].北京:中国电力出版社, 2007.

[2]郑慕德.嵌入式微型计算机系统实例教程——ARM与Linux[M].北京:科学出版社, 2006.

[3]张思民.嵌入式系统设计与应用[M].清华大学出版社, 2008.

[4]刘洪涛, 孙天泽.嵌入式系统技术与设计[M].北京:人民邮电出版社, 2009.

嵌入式ARM11 篇9

物联网是一种新兴科技革命的产物, 它是物物相连的互联网 (1) , 其核心与及基础是互联网, 并在互联网基础上不断的延伸拓展, 运用智能仪器与网络连接, 实现了任何物品与物品之间的信息数据的通信与交换。本文服务器的设计是基于ARMDE嵌入式Linux下的串口服务器而进行的, 能有效完成数据转换与传输, 功耗小, 效率高。

串口服务器软硬件结构体系

1串口服务器硬件结构体系

本文基于ARM平台的进行嵌入式串口服务器相关设计。其核心为32位的RISC处理结构, 存储模块、网络模块、USB模块、电源等属于外围部分 (如图1) 。本系统中所有的信息被存储在SD卡, 或交给处理模块进行数据处理, 将数据信息发送到以太网。核心处理模块在网口模块与串口信息的相互推送中起着连接作用, 推送中可依据各种数据流程进行传送, 并具有纠错排错的作用。

2串口服务器软件结构体系

Linux是一种开源性操作系统, 为了使ARM处理器有序运转需要对Linux系统加以移植、裁剪, 相关数据将存储于U盘、SD卡上, 通常选择与本次实验相关的模块进行裁剪。Boot Loader主要负责嵌入式系统中的加载启动功能, 可将内存空间映射图、初始化硬件设备达到合理的配置 (2) , 以实现操作系统内核所处环境的准确性。Linux能将多个体系结构的属性划分为多分子系统, 在完成各部门的基本服务。USB驱动与网卡驱动是本文主要驱动, 用户状态各软件运行遵循多线程串口处理程序。

串口服务器程序运转设计流程

1串口服务器运转流程

Linux是整个系统的数据处理中心, 若是轮询状态持续运行, 会造成资源极大消耗, 因而select机制对消息处理线程的检测必不可少, 超时方式的设置能降低硬件的负荷, 同时对多个文件描述符的状态变化时时的监控, timeout是select的参数, 用于阻塞时间, 等待文件描述符在规定时间内的变化, 超时会执行不同的语句。fd-zero会将待检测的文件描述集合清零, 检测后以fd-set的描述符加入集合里, 最终实现select对检测描述符集合的监控 (3) 。

2串口服务器串口数据处理流程

通常Linux系统启动后, 相关的设备驱动、驱动程序会在/dev目录下进行创建各自的文件, 并进行相应程序的访问, 命令、函数的操作能保障数据的有序运行。串口操作流程如图4。open-serial执行可读写为方式的打开串口的操作;set-speed执行串口的输出速度的设置即波特率;set-parity对停止位、数据位、校验位加以设置。本文试验中串口传输中数据位8, 波特率设置为116000, 无流控。如图2

3串口服务器网络数据处理流程

通常以太网传输层的不同传输协议 (TCP、UDP) 中数据转换的顺利传送, 使得串口数据转换为以太网数据。TCP多应用于可靠性要求高的用户, 为IP提供可靠的数据传输, 服务内容多样:全双工操作、数据流传送、多路复用等, 使用端到端、面向连接、数据包的可靠发送等途径进行数据传输;UDP多应用于传输经济、可靠性要求低的用户, 没有接入机制, 可以使物理传输设备告诉发送, 因而数据的重复、丢失、连接失败现象不可避免。两种传输协议的格式各有差别, 相应的检测与转化输是需要进行不同格式的转化与检测是重要的组成部分。

网口与多线程串口的高效传输在数据处理中, 需要Linux下使用Socket套接字口。Socket是一种文件描述符, 也是一种进程之间通信机制, 系统接通电源后, 嵌入式服务器进入Linux系统运行串口服务器程序, 程序运行时时的每一个串口建立相应的独立线程, 收的到连接请求、监测命令会立刻启动相应程序进行数据处理如图3。

实验结果

本文基于ARM平台运用Linux开源操作系统的, 串口转换以太网服务器系统, 硬件平台使用S3C2416微处理器, 网卡模块、多串口外接模块, 运用多线程网络套接子编写串口服务程序, 串口服务器能既能实现不同传输协议的以太网数据转换, 也能精确分析数据, 减少硬件的修改, 显著提高利用率, 同时此串口服务器操作简单, 高效的进行远程传输与监控, 更新换代快, 能满足多种领域的不同需求。

注释

11 王海勇.基于ARM9的嵌入式多串口服务器设计[J].化工自动化及仪表, 2013, 40 (3) :372-376.

22 吴杰, 杨卫民.基于ARM的嵌入式串口服务器设计与实现[J].计算机与现代化, 2014, (6) :40-43, 48.

上一篇:信息化人才评价研究下一篇:空间使用效益