《嵌入式通信系统课件完整版》由会员分享,可在线阅读,更多相关《嵌入式通信系统课件完整版(474页珍藏版)》请在金锄头文库上搜索。
1、第1章 嵌入式通信系统概述目目 录录 1.1嵌入式通信系统的定义1.2嵌入式通信系统的发展1.3嵌入式系统的种类1.4嵌入式通信系统的特点1.5嵌入式通信系统的组成结构1.6嵌入式通信系统的开发与应用1.1嵌入式通信系统的定义嵌入式通信系统的定义 3 嵌入式系统为控制、监视或辅助设备、机器或用于工厂运作的设备。嵌入式系统是以嵌入式应用为目的的计算机系统,并分为系统级、板级、片级,系统级包括各类工控器、PC104模块等板级包括各类带CPU的主板和OEM产品;片级包括各种以单片机、DSP、微处理器为核心的产品。 嵌入式系统是以应用为中心,以计算机技术为基础,软、硬件 可裁剪,适应应用系统对功能、可
2、靠性、成本、体积和功耗等 严格要求的专用计算机系统。1.2嵌入式通信系统的发展嵌入式通信系统的发展4从20世纪70年代单片机的出现到今天各式各样的嵌入式微处理器、微控制器的大规模应用,嵌入式系统已经有了近40年的发展历史。嵌入式系统是一种具有特定功能的专用计算机系统。它与通信和网络技术的结合可以极大地增强网络的智能性与灵活性,拓展通信功能,实现各种通信系统之间的互联互通。随着信息技术的不断发展和用户需求的不断增长,嵌入式技术在通信领域中的应用日益广泛,嵌入式通信系统的发展也日益成熟。1.2嵌入式通信系统的发展嵌入式通信系统的发展 5嵌入式系统的产生和历史嵌入式系统的产生和历史起源于微型机时代,
3、近几年网络、通信、多媒体技术的发展为嵌入式系统应用开辟了广阔的天地,使嵌入式系统成为继PC和Internet之后,IT界新的技术热点。20世纪70年代发展起来的微型计算机,由于体积小、功耗低、结构简单、可靠性高、使用方便、性能价格比高等一系列优点,得到了广泛的应用和迅速的普及。1976年,Intel公司推出了MCS-48单片机,开创了将微处理机系统的各种CPU外的资源集成到CPU硅片上的时代。1980年,Intel公司对MCS-48单片机进行了全面完善,推出了8位MCS-51单片机,奠定了嵌入式系统的单片机应用模式。嵌入式系统的全面发展是从20世纪90年代开始的,主要受到了分布式控制、数字化通
4、信、信息家电、网络应用等强烈的应用需求所牵引。6嵌入式通信系统的发展现状嵌入式通信系统的发展现状从20世纪90年代起,嵌入式技术全面展开,已经成为通信和消费类产品的共同发展方向。在通信领域,数字技术正在全面取代模拟技术。目前一些先进的PDA在显示屏幕上已经实现汉字写入、短消息语音发布,应用范围也将日益广阔。硬件方面,不仅有各大公司的微处理器芯片,还有用于学习和研发的各种配套开发包。目前低层系统和硬件平台经过若干年的研究,已经相对比较成熟,实现各种功能的芯片应有尽有。从软件方面讲,也有相当部分的成熟软件系统。国外商品化的嵌入式实时操作系统,已进入我国市场的有WindRiver、Microsoft
5、、QNX和Nuclear等产品。随着因特网的迅速普及和电信业务的持续增长,通信设备的重要性也不断提升。这些设备用于网络的各个部分,从手持的PDA、寻呼机,到复杂的中心局交换机。绝大多数的通信设备都有健全的通信软件功能,用于和其它设备及网络管理器等控制实体通信。1.2嵌入式通信系统的发展嵌入式通信系统的发展 7嵌入式通信系统的发展趋势嵌入式通信系统的发展趋势1.2嵌入式通信系统的发展嵌入式通信系统的发展 强大的开发工具支持和操作系统支持网络互联成为必然趋势低功耗、低成本要求丰富多样的多媒体人机界面无线网络操作系统初见端倪8按所嵌入的处理器分类按所嵌入的处理器分类1.3嵌入式通信系统的种类嵌入式通
6、信系统的种类 单个微处理器嵌入式处理器可扩展的系统复杂的嵌入式系统在制造或过程控制中使用的计算机系统按嵌入式系统软件复杂程度分类按嵌入式系统软件复杂程度分类循环轮询系统前后台系统单处理器多任务系统9按实时性分类按实时性分类1.3嵌入式通信系统的种类嵌入式通信系统的种类 嵌入式非实时系统嵌入式实时系统一个实时系统(Real-timesystem,RTS)是指计算的正确性不仅取决于程序的逻辑正确性,也取决于结果产生的时间,如果系统的时间约束条件得不到满足,将会发生系统出错。也就是说,实时系统是对响应时间有严格要求的。根据嵌入式系统是否具有实时性,可将其分为嵌入式实时系统和嵌入式非实时系统。软实时系
7、统硬实时系统10按应用领域分类按应用领域分类1.3嵌入式通信系统的种类嵌入式通信系统的种类 消费电子类嵌入式产品:便携音频视频播放器、数码相机、掌上游戏机等。智能仪器仪表类嵌入式产品:网络分析仪、数字示波器、热成像仪等通信设备类嵌入式产品:网关(Gateway)、关守(Gatekeeper)、计费系统、路由器、VOIP终端等国防武器类嵌入式产品:雷达识别、军用数传电台、电台对抗设备等。医疗仪器类嵌入式产品:X光机、超声诊断仪、计算机断层成像系统、心脏起搏器、监护仪、辅助诊断系统和专家系统等嵌入式系统有着非常广阔的应用前景,按照应用领域分类,嵌入式系统可分为信息家电类、消费电子类、智能仪器仪表类
8、、通信设备类、国防武器类、医疗仪器类、生物电子类、航空电子类等。11嵌入式系统的特点嵌入式系统的特点1.4嵌入式通信系统的特点嵌入式通信系统的特点 专用的计算机系统规模可变、扩展灵活实时性和可靠性操作系统内核比较小具有专门的开发工具和开发环境知识集成系统嵌入式系统是多个学科的交叉融合,它的应用也越来越广泛。嵌入式系统是面向专业领域、工作在特定环境下的应用系统,不同于通用计算机系统的多样性和普遍适应性,嵌入式系统是专用的计算机系统,功能是特定的,它还具有规模可变、扩展灵活、有一定的实时性和可靠性、操作系统内核比较小、具有专门的开发工具和环境等特点。12嵌入式通信系统的技术特点嵌入式通信系统的技术
9、特点1.4嵌入式通信系统的特点嵌入式通信系统的特点 实时操作系统控制设备软硬件划分快速路径与慢速路径硬件加速功能平面当今各厂商基本上都采用专用的嵌入式系统开发通信设备。这类专用系统具有以下特征:操作系统具有实时响应能力,计算资源有限,磁盘空间有限或无磁盘,通过终端或以太网口控制,有硬件加速能力。131.5嵌入式通信系统的组成结构嵌入式通信系统的组成结构 图1-1嵌入式通信系统的组成结构14硬件层嵌入式通信系统的硬件层是以嵌入式微处理器为核心的,由嵌嵌入入式式微微处处理理器器、存存储储器器、I/O设设备备、通通信信模模块块以及电电源源等必要的辅助接口组成。嵌入式系统的硬件层以嵌入式微处理器为核心
10、,在嵌入式微处理器基础上增加电源电路、时钟电路、和存储器电路(RAM和ROM等),这就构成了一个嵌入式核心控制模块,操作系统和应用程序都可以固化在ROM中。嵌入式系统外设是指为了实现系统功能而设计或提供的接口或设备。这些设备通过串行或并行总线与处理器进行数据交换。通常包括:扩展存储器、输入输出端口、人机交互设备、通信总线及接口、数/模转换设备、控制驱动设备等。1.5嵌入式通信系统的组成结构嵌入式通信系统的组成结构 15中间层硬 件 层 与 软 件 层 之 间 为 中 间 层 , 也 称 为 硬 件 抽 象 层 或 者 板 级 支 持 包(BoardSupportPackage,BSP),它半系
11、统上层软件与底层硬件分离开来,使系统的底层驱动程序与硬件无关,上层软件开发人员无需关心底层硬件的具体情况,根据BSP层提供的接口即可进行开发。该层一般包含相关底层硬件的初始化、数据的输入/输出操作和硬件设备的配置功能。BSP是介于主板硬件和操作系统中驱动层程序之间的一层,一般认为它属于操作系统一部分,主要是实现对操作系统的支持,为上层的驱动程序提供访问硬件设备寄存器的函数包,使之能够更好的运行于硬件主板。1.5嵌入式通信系统的组成结构嵌入式通信系统的组成结构 16系统软件层系统软件主要包括实时操作系统、文件系统、图形用户接口等部分,主要用于提供标准编程接口,屏蔽底层硬件特性,降低应用程序开发难
12、度,缩短应用程序开发周期。系统软件层由实实时时多多任任务务操操作作系系统统(Real-timeOperationSystem,RTOS)文文件件系系统统(FileSystem,FS)、图图形形用用户户界界面面(GraphicUserInterface,GUI)、网网络络组件组件组成。RTOS是嵌入式应用软件的基础和开发平台。文文件件系系统统是操作系统用于明确存储设备(常见的是磁盘,也有基于NANDFlash的固态硬盘)或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。图图形形用用户户界界面面是一种人与计算机通信的界面显示格式,允许用户使用鼠标等输入设备操纵屏幕上的图标或菜单选项,以
13、选择命令、调用文件、启动程序或执行其它一些日常任务。1.5嵌入式通信系统的组成结构嵌入式通信系统的组成结构 17应用层嵌入式应用层是由应用软件构成的,主要针对特定应用领域,基于某一固定的硬件平台,用来达到用户预期目标的计算机软件。由于用户任务功能的复杂性和可靠性要求,有些嵌入式应用软件需要特定嵌入式操作系统的支持。嵌入式应用软件和普通应用软件有一定的却别,它不仅要求其准确性、安全性和稳定性等方面能够满足实际应用的需要,而且还要尽可能地进行优化,以减少对系统资源的消耗,降低硬件成本。应用层是基于系统软件开发的应用软件程序组成的,它是整个嵌入式通信系统的核心,用来完成对被控对象的控制功能。目前我国
14、市场上已经出现了各种各样的嵌入式系统应用软件,包括浏览器、Email软件、文字处理软件、通信软件、多媒体软件、个人信息处理软件、智能人机交互软件、各种行业应用软件等。1.5嵌入式通信系统的组成结构嵌入式通信系统的组成结构 18嵌入式通信系统开发相关技术1.6嵌入式通信系统的开发与应用嵌入式通信系统的开发与应用开发过程编译连接定址相对于在Windows环境下的开发应用程序,嵌入式系统开发有着很多的不同。不同的硬件平台和操作系统带来了许多附加的开发复杂性。向嵌入式平台移植软件在PC机上编写软件时,要注意软件的可移植性,选用具有较高移植性的编程语言(如C语言),尽量少调用操作系统函数,注意屏蔽不同硬
15、件平台带来的字节顺序字节顺序、字节对齐字节对齐等问题。19嵌入式通信系统的广泛应用1.6嵌入式通信系统的开发与应用嵌入式通信系统的开发与应用嵌入式移动数据库嵌入式系统在智能家居网络中的应用嵌入式语音芯片基于短距无线通信协议的嵌入式产品嵌入式系统的应用前景从家里的洗衣机、电冰箱,到作为交通工具的自行车、小汽车,到办公室里的远程会议系统等等。可能会同时使用数十片嵌入式无线电芯片,可以实现远程办公、远程遥控,真正实现网络无处不在。小结小结20本章主要介绍了嵌入式通信系统的基础知识。通过本章的学习,读者可以了解嵌入式系统和嵌入式通信系统的定义、特点、发展现状和发展趋势、不同的分类方式、组成结构及开发相
16、关技术和应用。第2章 嵌入式通信系统的设计与开发目目 录录 2.1概述2.2系统设计技术2.3嵌入式通信系统的开发工具2.4嵌入式通信系统的调试方法2.1概述概述 23嵌入式通信系统的开发过程一般为:在通用PC机上的集成开发环境中编程交叉编译和链接通过嵌入式调试系统调试正确将程序下载到目标平台上运行因此,选择合适的开发工具和调试工具,对整个嵌入式系统的开发都非常重要。2.2系统设计技术系统设计技术 24嵌入式通信系统的开发过程图2-1嵌入式系统开发的一般过程嵌入式系统设计过程一般由5个阶段构成:需求分析、体系总体设计、硬件/软件设计、系统集成和系统测试。2.2系统设计技术系统设计技术 25需求
17、分析与规格说明需求分析阶段需要确定设计任务和设计目标,并提炼出设计规格说明书,作为正确设计指导和验收的标准。需求可分为功能部分和非功能部分。功能性需求是指系统必须要有哪些功能;非功能性需求则是指其他因素,比如大小、价格、设计时间等。2.2系统设计技术系统设计技术 26需求分析与规格说明对一个大型的系统进行需求分析是一件繁琐的工作,可以从先获取相对少量的、简单的信息入手,下图是一个简易需求表,可以利用它来思考系统的基本特性,并且整理成列表。名称目的输入输出功能性能生产成本功耗物理尺寸和重量表2-1需求表格样本2.2系统设计技术系统设计技术 27需求分析与规格说明这些需求的内容是不是有相互冲突的状
18、况,例如模块之间的接口不兼容或是系统操作的不合理状况。综合来说,一个好的需求文件应该具有以下几项特性:2.2系统设计技术系统设计技术 28体系结构设计阶段体系结构设计阶段描述系统如何实现所述的功能性和非功能性需求,体系结构描述必须同时满足功能上和非功能上的需求。判断是否符合速度成本方面的限制:(1)必须有某种方式估算框图中的构件,如移动地图系统中的搜索和绘制功能的特性。(2)精确估算源于经验,既有一般的设计经验也有类似系统的特定经验。软件设计阶段可以直接使用一些标准构件,构件通常包括硬件和软件两部分。嵌入式系统的设计还要求有较高的设计技能,在设计软件时要非常小心地读/写存储器以减小功耗。由于存
19、储器访问是主要的功耗来源,因此存储器事务必须精心安排以避免多次读取同样的数据2.2系统设计技术系统设计技术 29系统集成阶段把系统的软件、硬件和执行装置集成在一起,进行调试,发现并改进单元设计过程中的错误。系统集成一般是指硬件与软件的集成,实际上集成的对象应包括:嵌入式操作系统、板级支持包(BSP)、硬件、软件和实时特性。实时特性对嵌入式系统来说是相当重要的,硬件可以像设计所要求的一样操作,软件也可以像编写及调试所要求的一样运行,而产品却可能会由于实时性问题依然无法运行。系统软件测试阶段软件测试是软件生存期中一个重要阶段,是保证软件质量保证关键步骤。软件测试的目的是为了检验软件系统是否满足需求
20、。软件测试是在软件投入运行前,对软件需求分析、设计规格说明和编码进行最终复审的活动。2.2系统设计技术系统设计技术 30系统设计的形式化方法UML简介统一建模语言(UnifiedModelingLanguage,UML)是面向对象软件的标准化建模语言。(1)UML基本元素:UML最基本的元素是对象和类,对象是类的实例。(2)主要内容:UML从考虑系统的不同角度出发,定义了用例图、类图、对象图、状态图、活动图、序列图、协作图、构件图、部署图等9种图。UML特点(1)UML统一了各种方法对不同类型的系统、不同开发阶段以及不同内部概念的不同观点,从而有效的消除了各种建模语言之间不必要的差异。(2)U
21、ML建模能力比其它面向对象建模方法更强。(3)UML是一种建模语言,而不是一个开发过程。 2.2系统设计技术系统设计技术 31系统设计的形式化方法UML的应用领域UML的目标是以面向对象图的方式来描述任何类型的系统,具有很宽的应用领域。其中最常用的是建立软件系统的模型,但它同样可以用于描述非软件领域的系统,如机械系统、企业机构或业务过程,以及处理复杂数据的信息系统、具有实时要求的工业系统或工业过程等。总之,UML是一个通用的标准建模语言,可以对任何具有静态结构和动态行为的系统进行建模。此外,UML适用于系统开发过程中从需求规格描述到系统完成后测试的不同阶段。2.2系统设计技术系统设计技术 32
22、嵌入式通信软件设计嵌入式通信软件的组成(1)嵌入式通信软件构建类型广义地划分,通信系统有两类软件构件:协议软件(应用软件)和系统软件。协议软件实现协议规范;而系统软件(含基础软件)通常包括一个实时操作系统和管理硬件的基础软件。(2)嵌入式通信软件设计考虑硬件体系结构;RTOS是否选定;需要什么样的性能;需要实现那些协议;实现时要使用哪些全局数据结构和表;需要什么样的缓冲区管理和定时器管理;告警、统计处理机制;系统测试方法。2.2系统设计技术系统设计技术 33嵌入式通信软件设计通信软件结构模型图2-2 通信系统软件结构模型2.2系统设计技术系统设计技术 34嵌入式通信软件设计通信系统协议软件实现
23、(1)状态机协议是通信系统功能的核心,而协议实现的核心是状态机。(2)协议数据单元处理(3)协议接口协议任务并非孤立存在或执行,需要和系统环境中的其他成分接口和交互包括:PDU预处理给状态机的事件PDU传输实时操作系统存储管理缓冲区管理时间管理事件管理进程间通信驱动程序接口配置与控制2.2系统设计技术系统设计技术 35嵌入式通信软件设计通信系统协议软件实现(4)协议软件数据结构表:主要有配置、控制、状态、统计四类。其他数据结构:进程控制块和接口控制块实现:在协议软件中使用的数据结构表、进程控制块、接口控制块,通常使用数组、链表、树结构等方式实现。(5)配置与控制协议的配置与控制是指协议的管理。
24、开启和关断协议开启和关断特定端口的协议特定接口的编址设定最大帧尺寸协议消息超时管理对等实体的超时处理鉴别安全信息流量参数管理封装信息2.2系统设计技术系统设计技术 36嵌入式通信软件设计通信系统协议软件实现(6)系统启动对各种表的大小参数进行初始化为动态数据结构和状态表分配内存状态表变量初始化缓冲区和定时器接口初始化从本地源读入配置,并对配置初始化高层和低层接口初始化,包括向高层和/或低层注册需要时创建和启动其它的协议任务在无限循环中等待2.2系统设计技术系统设计技术 37嵌入式通信软件设计多板通信软件的设计(1)板件通信协议及实现板间通信协议(ICCP或ICP)解决各主控板之间的通信问题和主
25、控板和硬件插板的通信问题。目前使用的通信方式:TCP、UDP、HDLC等。板间通信协议的实现:对底层通信方式进行封装,提供两个统一的接口,分别对应基本传输服务(A类服务)和带差错控制的服务(B类服务)。(2)多板系统中的故障与容错多板系统和单板系统都会受到硬件故障的影响。但多板系统能够通过切换到另一块板对故障进行处理。这就是多板系统的容错。目前,电信级设备普遍要求具有容错功能。单控制板+多线板结构是通信应用中经常使用的多板系统实现。2.2系统设计技术系统设计技术 38嵌入式通信软件设计u通信系统管理软件SNMP管理公共管理信息协议(CMIP)公共对象请求代理结构(CORBA)事务语言1(TL1
26、)命令行接口(CLI、MML)2.3嵌入式通信系统的开发工具嵌入式通信系统的开发工具39在进行嵌入式系统开发时需要特殊的开发工具,程序员才能调试运行在目录系统中的程序。这些工具最少必须具有以下三种关键能力:(1)可方便地控制目标处理器的运行;(2)可方便地更新目标系统中的程序代码;(3)提供对目标系统无干扰的、实时的运行监控。嵌入式系统的开发工具种类繁多,可以是纯软件的,如指令集模拟器(InstruetionSetSimulator,ISS)、调试器;也可以为软硬件结合的,如集成开发环境与在线仿真器。除了指令集模拟器,嵌入式系统的开发工具由两个部分组成:调试器前段调试器前段(DebuggerF
27、rontEnd,DFE)和目标代理目标代理(TargetAgent)。目标代理的作用是控制目标机的运行和搜索目标机的运行状态和运行数据。调试器前段通过通信信道与目标代理进行通信,可控制目标代理进而控制目标机。40开发嵌入式通信系统的高级语言开发嵌入式系统使用的高级程序语言与开发通用计算机软件使用的高级程序语言相比,主要在于编译器的不同。嵌入式系统的处理器通常与调试主机(通用计算机)的处理器为非同类处理器,它们的指令系统是不同的,此类编译器成为交叉编译器。选择交叉编译器一般主要考虑以下的因素。2.3嵌入式通信系统的开发工具嵌入式通信系统的开发工具41嵌入式操作系统嵌入式操作系统(Embedded
28、OperatingSystem,简称:EOS)是指用于嵌入式系统的操作系统。嵌入式操作系统是一种用途广泛的系统软件,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等。嵌入式操作系统负责嵌入式系统的全部软、硬件资源的分配、任务调度,控制、协调并发活动。它必须体现其所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能。目前在嵌入式领域广泛使用的操作系统有:嵌入式实时操作系统C/OS-II、嵌入式Linux、Windows、VxWorks等,以及应用在智能手机和平板电脑的Android、iOS等。2.3嵌入式通信系统的开发工具嵌入式通信系统的开发工具
29、ADS简介ADS(ARMDeveloperSuite)是ARM处理器下最主要的开发工具。是ARM公司提供的专门用于ARM相关的应用开发和调试的综合性软件工具。ADS是全套的实时开发软件工具,包编译器生成的代码密度和执行速度优异。可快速低价地创建ARM结构应用。42指令集模拟器若代码是使用汇编语言编写的(或者是继承来的汇编语言代码库),可在通用计算机上使用指令集模拟器。指令集模拟器(Instruetion Set Simulator)是用来在一种体系结构的计算机上执行另一种体系结构计算机软件的程序。它用软件模拟目标机指令集体系结构的所有指令执行的功能,从而达到和在目标机上执行同样的功能和结果。2
30、.3嵌入式通信系统的开发工具嵌入式通信系统的开发工具43嵌入式调试系统简介调试是嵌入式系统开发过程中必不可少的重要环节,通用计算机应用系统与嵌入式系统的调试环境存在明显差异。通用计算机一般采用桌面操作系统,调试器与被调试的程序常常位于同一台计算机上,操作系统也相同。目前,在嵌入式调试系统中有两种调试方式,即monitor方式和片上调试方式。monitor方式是在目标操作系统与调试器内分别内置专用功能模块,用于相互通信从而实现调试功能。片上调试方式是在CPU内部嵌入额外的硬件控制模块,主机通信端口与目标板调试通信接口通过一块简单的信号转换电路板连接。2.4嵌入式通信系统的调试方法嵌入式通信系统的
31、调试方法44基于Angel的调试方法基本原理:位于目标板上的CPU已经固化了一个完整的调试监控程序,这个监控程序可以接受来自调试主机的调试命令,并执行这些命令,如设置断点、单步运行、读写存储器等;同时,这个监控程序也可以把数据传送到调试主机。Angel系统有如下特点:2.4嵌入式通信系统的调试方法嵌入式通信系统的调试方法支持调试支持C库半主机支持通信支持任务管理支持异常处理45基于JTAG的调试方法JTAG(JointTestActionGroup;联合测试工作组)是一种国际标准测试协议(IEEE1149.1兼容),主要用于芯片内部测试。现在多数的高级器件都支持JTAG协议,如DSP、FPGA
32、器件等。标准的JTAG接口是4线:TMS、TCK、TDI、TDO,分别为模式选择、时钟、数据输入和数据输出线。在ARM开发调试时,首先要通过一定的方式使目标系统进入调试状态,然后在调试状态下完成各种调试功能。例如查看处理器状态、查看和修改存储内容等。ARM7TDMI可以通过三种格式进入调试状态:(1)通过设置程序断点(breakpoint);(2)通过设置数据断点(watchpoint);(3)相应的外部请求进入调试状态;2.4嵌入式通信系统的调试方法嵌入式通信系统的调试方法小结小结46本章主要介绍了嵌入式通信系统的设计与开发技术。通过对本章的学习,希望读者可以掌握一定的系统设计方面的技术,对
33、嵌入式通信软件的开发有一定的了解,掌握常用的嵌入式开发工具和嵌入式系统调试方法。第3章 嵌入式通信系统的硬件平台目目 录录 3.1概述3.2嵌入式通信系统的硬件结构3.3嵌入式处理器3.4嵌入式通信系统的通信模块3.5嵌入式通信系统的I/O设备3.1概述概述 49嵌入式通信系统的核心部件是各种类型的嵌入式处理器,嵌入式系统硬件平台是随着嵌入式处理器芯片的发展而发展的。嵌入式通信系统的硬件平台以嵌入式处理器为核心,在嵌入式处理器基础上增加电源电路、时钟电路、存储器电路(RAM和ROM等)和通信接口,这就构成了一个嵌入式核心控制模块,操作系统和应用程序都可以固化在ROM中。嵌入式处理器是整个嵌入式
34、通信系统的基础,决定着整个平台的性能。3.2嵌入式通信系统的硬件结构嵌入式通信系统的硬件结构50图3-1 嵌入式通信系统的硬件结构3.3嵌入式处理器嵌入式处理器51嵌入式处理器的分类嵌入式处理器的分类常用嵌入式处理器可以分为:嵌入式微处理器(MPU)、嵌入式微控制器(MCU)、嵌入式DSP处理器、嵌入式片上系统、FPGA处理器等几大类,其中更档次的8/16/32/64位微控制器应用最为广泛。微微处处理理器器:嵌入式微处理器(MicroProcessorUnit,MPU)是由通用计算机中的CPU演变而来的。微控制器微控制器:嵌入式微控制器(MicrocontrollerUnit,MCU)的典型代
35、表是单片机。嵌嵌入入式式数数字字信信号号处处理理器器:是专门用于信号处理方面的处理器,其在系统结构和指令算法方面进行了特殊设计,具有很高的编译效率和指令的执行速度。片片上上系系统统:指的是在单个芯片上集成一个完整的系统,对所有或部分必要的电子电路进行包分组的技术。3.3嵌入式处理器嵌入式处理器52嵌入式处理器的特点嵌入式处理器的特点作为嵌入式系统的核心,嵌入式处理器担负着控制、系统工作的重要任务,使宿主设备功能智能化、灵活设计和操作简便。相对通用处理器,嵌入式处理器有5个特点:体积小、集成度高、价格较低可扩展的处理器结构功耗很低对实时多任务有很强的支持能力具有功能很强的存储区保护功能3.3嵌入
36、式处理器嵌入式处理器53嵌入式处理器的选择原则嵌入式处理器的选择原则嵌入式通信系统通常是为专门执行某项任务而设计开发的,其功能范围比较狭窄。设计师需要进行高度优化,必须为这些设计选择合适的处理器。选择恰当的处理器是个复杂的工作,一般需考虑以下问题:3.3嵌入式处理器嵌入式处理器54嵌入式处理器的发展历程嵌入式处理器的发展历程嵌入式微处理器诞生于20世纪70年代末,其间经历了SCM、MCU、网络化、软件硬化四大发展阶段。SCMMCU网络化软件硬化单片微型计算机阶段嵌入式微控制器大发展阶段3.4嵌入式通信系统的存储器嵌入式通信系统的存储器55存储器用来存放计算机工作所必须的数据和程序,在嵌入式系统
37、中普遍使用。嵌入式微处理器在运行时,大部分总线周期都是用于对存储器的读/写访问。因此存储器性能的好坏将在很大程度上影响系统的性能。为了追求存储器的高性能,一方面要从存储单元设计、制造上研究改进;另一方面要从存储器系统的结构上探索、优化。本节主要在介绍存储器结构的基础上分析基本存储单元的特性。在嵌入式通信系统中由于其应用特点,采用最多的是半导体存储器,如SDRAM、EEPROM、Flash等。常用的半导体存储器主要包括随机存储器和只读储器两类。本节主要介绍这两类存储器。3.4嵌入式通信系统的存储器嵌入式通信系统的存储器56存储系统的层次结构存储系统的层次结构图3-2 存储器层次结构图3.4嵌入式
38、通信系统的存储器嵌入式通信系统的存储器57随机存储器随机存储器随机存储器(random access memory,RAM)是与CPU直接交换数据的内部存储器,也叫主存(内存)。它可以随时读写,而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储媒介。在嵌入式系统中主要用于:(1) 存放当前正在执行的程序和数据。(2) 作为I/O数据缓冲存储器。(3) 作为中断服务程序中保护CPU现场信息的堆栈。3.4嵌入式通信系统的存储器嵌入式通信系统的存储器58随机存储器随机存储器组成:RAM电路由地址译码器、存储矩阵和读写控制电路三部分组成。分类:按照存储单元的工作原理,随机存储器又分为静
39、态随机存储器(Static RAM,SRAM)和动态随机存储器(Dynamic RAM,DRAM)。特点:RAM主要有以下几个特点随机存取易失性对静电敏感访问速度快需要刷新(再生)3.4嵌入式通信系统的存储器嵌入式通信系统的存储器59随机存储器随机存储器RAM的选择在设计嵌入式系统时,随机存储器的选择一般有两种:SRAM和DRAM。一般按一下原则:如果系统的随机存储器的容量不是很大,则一般采用SRAM;。对速度有较高要求,使用SRAM;对功耗敏感,可使用SRAM;如果已经集成了DRAM控制器,可选择DRAM;32位嵌入式处理器一般使用DRAM;复杂的嵌入式系统可以采用SRAM和DRAM混合设计
40、的方案,如关键数据通道上的一小块SRAM和其他所有地方的大容量DRAM。3.4嵌入式通信系统的存储器嵌入式通信系统的存储器60只读存储器只读存储器只读存储器(Read-OnlyMemory,ROM)。ROM所存数据,一般是装入整机前事先写好的,整机工作过程中只能读出,而不像随机存储器那样能快速地、方便地加以改写。ROM中的内容一经写入,在工作过程中就只能读出不能重写,即使掉电,写入的内容也不会丢失。只读存储器种类很多,有掩模ROM、PROM(可编程ROM)、EPROM(光可擦除的可编程ROM)、EEPROM(电可擦除的可编程ROM)、Flash等。可可编编程程可可擦擦除除存存储储器器(Eras
41、ableProgrammableReadOnlyMemory,EPROM)是一种具有可擦除功能,擦除后即可进行再编程的ROM内存,写入前必须先把里面的内容用紫外线照射它的IC卡上的透明视窗的方式来清除掉。电电可可擦擦除除的的可可编编程程只只读读存存储储器器(ElectricallyErasableProgrammableRead-OnlyMemory,EEPROM)是一种掉电后数据不丢失的存储芯片。快快闪闪存存储储器器(flashEPROM)是电子可擦除可编程只读存储器(electricallyerasableprogrammableread-onlymemory,EEPROM)的一种形式。3
42、.5嵌入式通信系统的通信模块嵌入式通信系统的通信模块61以太网以太网以太网(Ethernet)指的是由Xerox公司创建并由Xerox、Intel和DEC公司联合开发的基带局域网规范,是当今现有局域网采用的最通用的通信协议标准。以太网主要分为 标准以太网、快速以太网、千兆以太网和万兆以太网。以太网的数据传输有以下特点:(1) 所有数据位的传输由低位开始,传输的位流采用曼彻斯特编码。(2) 以太网传输的数据段长度最小为60字节,最大为1514字节。(3) 通常以太网卡可以接收来自三种地址的数据,即广播地址、多播地址(在嵌入式系统中很少使用)和它自己的地址。但有时用于网络分析和监控,网卡也可以设置
43、为接收任何数据包。(4) 任何两个网卡的物理地址都是不一样的。网卡地址由专门结构分配,不同厂家使用不同地址段,同一厂家的任意两个网卡的地址也是唯一的。3.5嵌入式通信系统的通信模块嵌入式通信系统的通信模块62以太网以太网嵌入式以太网接口的两种实现方法:这种方法对嵌入式处理器没有特殊要求,只需要把以太网芯片连接到嵌入式处理器的总线上即可。该方法通用性强,不受处理器的限制,但是,处理器和网络数据交换通过外部总线(通常是并行总线)实现,速度慢、可靠性不高并且电路板布线复杂这种方法要求嵌入式处理器有通用的网络接口。通常这种处理器是为面向网络应用而设计的。处理器和网络数据交换通过内部总线实现,因此速度快
44、,实现简单。3.5嵌入式通信系统的通信模块嵌入式通信系统的通信模块63以太网以太网嵌入式以太网控制器LAN91C111LAN91C111芯片是专门用于嵌入式产品的10M/100M第三代快速以太网控制器。该以太网控制器的主要功能如下:自适应地选传输速率,支持10Mb/s/100Mb/s;充分支持全双工交换式以太网;支持突发数据传输;8k字节的内部存储器用作接收发送的FIFO缓存;增强式能量管理功能支持总线8位、16位、32位的CPU访问;提前发送和接收。3.5嵌入式通信系统的通信模块嵌入式通信系统的通信模块64CAN控制器局域网络(Controller Area Network, CAN)是由以
45、研发和生产汽车电子产品著称的德国BOSCH公司开发的,并最终成为国际标准(ISO 11898),是国际上应用最广泛的现场总线之一。CAN通信协议主要描述设备之间的信息传递方式。CAN技术规范定义了模型的最下面两层:数据链路层和物理层,是设计CAN应用系统的基本依据。基于CAN总线的分布式控制系统在以下方面具有明显的优越性:网络各节点之间的数据通信实时性强开发周期短网络内节点个数在理论上不受限制3.5嵌入式通信系统的通信模块嵌入式通信系统的通信模块65LON(LonWorks协议协议)LON,即LonWorks协议,能够为设计、创建、安装和维护设备网络方面的许多问题提供解决方案。LonWorks
46、网络中设备的通信是采用一种称为LonTalk的网络标准语言实现的。LonTalk协议是为LON总线设计的专用协议,它具有以下特点:发送的报文都是很短的数据(通常几个到几十个字节);通信带宽不高(2Kbps到2Mbps);网络上的节点往往是低成本、低维护的单片机;多节点,多通信介质;可靠性高;实时性高。3.5嵌入式通信系统的通信模块嵌入式通信系统的通信模块66LON(LonWorks协议协议)LonTalk物理层协议适应不同的通信介质,如:双绞线(twisted-pair)、电力线(powerline)、无线电(radio-frequency)、红外线(infrared)、同轴电缆(coaxia
47、lcable)、光纤(fiber)甚至是用户自定义的通信介质。支持不同的数据解码和编码,如:通常双绞线使用差分曼彻斯特编码、电力线使用扩频、无线通信使用移频键控)(FSK)。3.5嵌入式通信系统的通信模块嵌入式通信系统的通信模块67无线通信无线通信ZigBee :ZigBee是基于IEEE802.15.4标准的低功耗局域网协议。RFID:射频识别,RFID(Radio Frequency Identification)技术,又称无线射频识别,是一种通信技术,可通过无线电讯号识别特定目标并读写相关数据,而无需识别系统与特定目标之间建立机械或光学接触。蓝蓝牙牙( Bluetooth ):是一种无线
48、技术标准,可实现固定设备、移动设备和楼宇个人域网之间的短距离数据交换(使用2.42.485GHz的ISM波段的UHF无线电波)。IrDA:红外数据组织(Infrared Data Association)的简称。IrDA已经制订出物理介质和协议层规格,以及2个支持IrDA标准的设备可以相互监测对方并交换数据。3.6嵌入式通信系统的嵌入式通信系统的I/O设备设备68一个实用的嵌入式通信系统常常配有一定的外部设备,构成一个以嵌入式微处理器为核心的计算机系统。这些外部设备包括输入设备,如键盘、触摸屏等;输出设备,如显示器等;完成数据控制和转换的设备,如定时器、计数器、模/数转换器、数/模转换器等。这
49、些外部设备中,一部分以微控制器的形式集成为片上设备,其他的通常是单独实现。本节主要介绍广泛应用于嵌入式通信系统的I/O设备。3.6嵌入式通信系统的嵌入式通信系统的I/O设备设备69输入设备输入设备键盘:键盘是最常用的人机输入设备。键盘主要由一个开关阵列组成,此外还包括一些逻辑电路来简化它到微处理器的接口。嵌入式系统中所用到的键盘中的按键通常是由机械开关组成的,通过机械开关中的簧片是否接触来断开或者接通电路。当开关打开时,通过处理器I/O接口的一个上拉电阻提供逻辑1;当开关闭合时,处理器I/O接口的输入被拉到逻辑0。触摸屏:触摸屏是覆盖在输出设备上的输入设备,用来记录触摸位置。当前的触摸屏输入技
50、术主要有红外式、电阻式、电容式及表面声波式四种。其中电阻式触摸屏在低成本嵌入式系统中应用较广。电阻式触摸屏用二维电压表来探测位置。3.6嵌入式通信系统的嵌入式通信系统的I/O设备设备70输出设备输出设备LCD(液晶)显示器是嵌入式系统中最主要的输出设备。一般情况下,显示器可以直接驱动,也可以通过帧缓冲区驱动。显示元素较少的显示器直接由逻辑电路驱动,而显示元素较多的显示器用RAM帧缓冲区驱动。直接驱动:多个数字阵列是直接驱动显示的简单例子。单数字显示器通常有七段,每段可以是发光二极管,也可以是液晶显示器。帧缓冲区:帧缓冲区是一个连到系统总线上的随机存取存储区。微处理器可以以任意所需次序将值写入帧
51、缓冲区。液晶控制板:大平面显示器通常由LCD构成。其中每个像素都由一个液晶体构成。LCD显示器到系统的接口独具特点,这主要因为LCD像素阵列能够被随机访问。早期的液晶显示控制板被称为被动矩阵,它依靠一个二维的电线网络来编址像素。现代液晶显示控制板显示器使用一种主动矩阵系统,它给每个像素配置转发器,以此来控制、访问LCD显示器。主动矩阵显示器提供了更高的对比度和显示质量。小结小结71本章在简要介绍嵌入式通信系统的硬件平台的基础上,分析了嵌入式通信系统的核心嵌入式处理器,介绍了它的分类、特点、选择原则以及发展历程。通过引入嵌入式存储器的层次结构,介绍了两类存储器。详细介绍了通信模块的各种通信协议,
52、包括以太网、CAN、LON以及各种无线通信协议。最后主要介绍了嵌入式通信系统的各种I/O设备。第4章 嵌入式通信系统的实时操作系统目目 录录 4.1概述4.2操作系统4.3嵌入式操作系统4.4嵌入式实时操作系统4.5常用嵌入式实时操作系统4.1概述概述 74嵌入式通信系统的软件分为:简单系统和复杂系统。使用嵌入式操作系统,可以有效地提高系统的开发效率和可靠性。简单系统 裸机设计 裸机设计的系统简单 软件的代码量比较少 适用于民用产品 可靠性要求一般不高复杂系统 需要使用嵌入式操作 系统 需要扩展程序存储器 系统处理事务比较多, 事务之间关系复杂 程序算法复杂 软件开发难度比较大 .4.1概述概
53、述 75嵌入式通信系统一般采用实时操作系统(RTOS)。RTOS是嵌入式应用软件的运行和开发平台,是一段嵌入在目标代码中的软件,用户的其他应用程序都建立在其上。RTOS是可靠性、可信任性很高、一般经过时间考验的实时内核。基于RTOS开发的程序,具有较高的可移植性。本章首先介绍操作系统、嵌入式操作系统的一些知识,然后介绍RTOS的概念和功能,介绍嵌入式RTOS的内核和可剥夺性,最后介绍目前比较广泛使用的嵌入式RTOS。4.2操作系统操作系统 76操作系统的概念和功能操作系统的概念和功能操作系统是计算机用户和计算机硬件的接口,也是计算机硬件与其他软件的接口,是用于管理、控制计算机硬件与软件资源的应
54、用程序。操作系统给开发者和计算机用户都带来了便利。从开发者角度看,它能够在很大程度上隐藏硬件细节,给发开者提供一个抽象、容易使用的开发界面,并且能够继承前人的开发成果,提高开发效率。从用户角度看,它是系统资源的管理者,可以负责对不同程序之间的CPU、内存和其他I/O设备的分配。4.2操作系统操作系统 77操作系统的概念和功能操作系统的概念和功能操作系统一般会提供以下功能:4.2操作系统操作系统 78进程进程有的操作系统把进程叫做任务,本章提到的任务和进程是相同的意思。在操作系统中,进程是享用系统资源的对象,是资源分配的基本单位。在国内,一般把进程理解为:“可并发执行且具有独立功能的程序在一个数
55、据集合上的运行过程,它是操作系统进行资源分配和保护的基本单位。”首先强调进程是一个程序运行的动态过程,而且该程序必须具有并发运行的程序结构。其次强调了这个运行过程必须依赖一个数据集合而独立运行,从而形成了系统中的一个单位。它具有动态性、并发性、独立性、异步性和结构性五大特性。4.2操作系统操作系统 79进程进程在不同的操作系统中,进程一般至少有三种状态:运行、就绪、阻塞。如图4-1所示。图4-1 进程的基本状态及转换关系三者之间的关系:就绪状态的进程被调度就会运行,系统根据某种规则或者调度策略暂停某个进程的运行,运行的程序就会进入就绪状态。一旦被阻塞进程所等待的事件发生且进程获得了这个消息,进
56、程就进入了就绪状态。进程获得除处理器以外的所有必需的资源处在就绪状态的进程获得了处理器的使用权进程需要等待一个事件而暂停运行4.2操作系统操作系统 80进程进程图4-1可以看出,系统总是要从处于就绪状态的进程里选择一个转换为运行状态的。这种选择一个就绪状态并使之运行的工作就叫做进程调度,是操作系统的一项重要任务。进程调度,指在系统中所有的就绪进程里,按照某种策略确定一个合适的进程并让处理器运行它。从使进程获取处理器使用权的方式来看,有两类调度方式:可剥夺方式和不可剥夺方式。可剥夺方式中,高优先级的进程可以终止低优先级的进程;不可剥夺方式中,运行进程除非主动让出处理器,否则其他进程无法获得机会运
57、行。4.2操作系统操作系统 81进程进程调度算法有时间片轮转法,优先级调度法,多级反馈队列调度法等。 时间片轮转法要求系统中的每个进程轮流占用处理器运行一个相同的时间片。时间片指操作系统将CPU的时间划分的若干个时间段。八进程的时间片轮转调度示意图如4-2所示:图4-2 具有八个进程的时间片轮转调度示意图4.2操作系统操作系统 82进程进程 优先级调度法按进程的优先级来确定待运行进程。系统中的所有进程都各自有一个优先级,这个级别就标志着一个进程在抢占处理器时的权利大小。调度器在调度时,首先选择优先级最大的进程作为待运行进程。 多级反馈队列调度法把系统中的进程分组,不同的组优先级不同,同组的进程
58、优先级相同。每组中只有一个队首进程才能分配CPU的时间片。只有当在高优先级队列中找不到就绪进程时,才到低优先级的就绪进程队列中选取。4.2操作系统操作系统 83操作系统的分类操作系统的分类从操作系统工作的角度,计算机的操作系统分为以下四类。(1)单用户操作系统:只能面对一个用户。(2)批处理操作系统:作业处理系统。(3)分时操作系统(4)实时操作系统(RTOS) 分时操作系统旨在能让多个计算机用户共享计算机资源、能及时地响应和服务联机用户。软件的执行在时间上要求并不严格,时间上的延迟可能会让用户多等候一段时间,一般不会造成灾难性的后果; 对于RTOS,主要任务是对事件进行实时处理,调度一切可利
59、用的资源完成实时控制进程。软件在事件发生时必须能够在严格的时限内做出响应,即使在尖峰负荷下也是如此。否则会导致系统的失败。4.3嵌入式操作系统嵌入式操作系统 84嵌入式操作系统的概念和特点嵌入式操作系统的概念和特点随着技术的发展,嵌入式通信系统的硬件功能越来越强大,嵌入式软件开始使用C、C+等高级语言编写,调试手段也越来越多、越来越成熟。在体系结构上也由最初的单一控制流程,逐渐引入嵌入式操作系统等技术。嵌入式操作系统通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、标准化浏览器,对整个系统的资源进行管理。它的显著特点包括:(1)微型化(2)实时性和高可靠性(3)可裁剪性(4)
60、易移植性4.3嵌入式操作系统嵌入式操作系统 85嵌入式操作系统的发展嵌入式操作系统的发展嵌入式通信系统的发展经历了4个比较明显的阶段。面向Internet阶段4.3嵌入式操作系统嵌入式操作系统 86嵌入式操作系统的构成嵌入式操作系统的构成嵌入式操作系统一般包括:操作系统内核、多进程管理、内存管理。有些嵌入式系统则提供额外的功能,例如文件系统、图形用户接口等。许多嵌入式操作系统更像是一个函数库,它能够与应用程序一块在编译环境下编译成一个单一的映像文件,从而在嵌入式硬件平台上运行。(1)操作系统内核:一般负责操作系统最底层的一些功能。(2)多进程管理:多个进程之间通信、同步、切换等问题。(3)内存
61、管理:内存的划分、分配、释放等操作。(4)文件系统:主要完成系统中文件的组织、创建、删除、维护等工作。4.4嵌入式实时操作系统嵌入式实时操作系统 87RTOS的概念和功能的概念和功能RTOS(实时操作系统)指具有实时特性、能支持实时控制系统工作的操作系统,它能够将系统中各种设备有机地联系在一起,并控制它们完成既定的进程。实时操作系统一般分为:硬实时操作系统和软实时操作系统。硬实时操作系统是指,在该系统中,如果不能满足所需的时限要求,就会导致系统失效,产生难以弥补的损失。而软实时操作系统,指的是如果该系统不能满足所需的时限要求,将会导致系统的性能降低,但系统仍将继续运作。4.4嵌入式实时操作系统
62、嵌入式实时操作系统 88RTOS的概念和功能的概念和功能对于嵌入式RTOS来说,它必须具备以下特点,提供以下基本功能:应用程序中建立进程、删除进程、挂起进程、恢复进程以及进程的响应、切换和调度等。进程间的交流和合作。进程间同步和通信的机制有:消息、事件信号量。实时操作系统会借用CPU的内存管理单元来完成内存管理。包括定时唤醒、定时事件机制,和定时消息机制。实时操作系统的中断处理程序要更加短小、精悍。4.4嵌入式实时操作系统嵌入式实时操作系统 89RTOS的重要评价指标的重要评价指标评价一个RTOS,衡量其优劣,可以从以下几个方面: 进程调度算法 事件发生率单调算法,截止期最早优先算法,最小裕度
63、算法。 上下文切换时间 处理器把控制权从当前运行的进程转交给另外一个就绪进程所需的时间。 时间确定性 系统调用运行的时间应当有一个最大执行时间限度。 最小内存开销 在限的空间内不仅要装载RTOS,还要装载用户程序。 最大中断禁止时间 影响外部中断请求的响应时间。4.5常用嵌入式实时操作系统常用嵌入式实时操作系统 90嵌入式嵌入式Linux嵌入式Linux的核心源代码公开、界面友好、质量可靠,为嵌入式实时操作系统带来了新的生机和活力。Linux的主要特征如下: 移植性好 可随意配置 源代码免费 高度模块化 软件的模块化 虚拟内存NucleusPlus为实时嵌入式应用而设计的一个抢先式多进程操作系
64、统内核。其核心部分通常以C库的形式提供给用户,然后将实时应用建立在其核心库上,应用程序代码与核心函数库连接在一起,生成的目标代码可以下载到目标板的RAM中或者直接烧录到目标板的ROM中执行,在典型的目标环境中,NucleusPlus核心代码区一般不超过20k字节。4.5常用嵌入式实时操作系统常用嵌入式实时操作系统 91C/OS-著名的源代码公开的实时操作系统内核。专为嵌入式应用设计,可用于8位、16位、32位、64位微处理器甚至数字信号处理器。它在原版本C/OS的基础上做了重大改进与升级,有许多成功应用该实时内核的实例。现已应用于多种领域。WindowsCEMicrosoft公司为开发各类功能
65、强大的信息设备而推出的一款32位多线程、多进程的嵌入式实时操作系统,与Windows系列有较好的兼容性。WindowsCE非常小巧精致,其核心全部是由C语言开发的,此外还包括各个厂家用C语言和汇编语言开发的驱动程序。其内核提供了内存管理、抢先进程和中断处理功能。4.5常用嵌入式实时操作系统常用嵌入式实时操作系统 92Vxworks美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统。它以其良好的可靠性和卓越的实时性已顺利应用到航天、航空、军事、医疗、通信等对实时性要求极高的高精尖技术领域。其具有以下特点:(1)可靠性(2)实时性(3)可裁剪性(4)可移植性(5)支持各种工业标
66、准4.6嵌入式操作系统的选择嵌入式操作系统的选择 93面对众多的嵌入式操作系统,如何选择适合特定嵌入式应用的嵌入式操作系统极为重要。一般而言,在选择嵌入式操作系统时,可以遵循以下原则:(1)进入市场时间(2)可移植性(3)可利用资源(4)系统定制能力(5)成本(6)中文内核支持小结小结94本章主要介绍了嵌入式实时操作系统及与其相关的一些基本知识,它的主要特点是实时性和可裁剪性。最后还介绍了目前常用的几种嵌入式实时操作系统,还对嵌入式操作系统的选择给了一些建议。第5章 嵌入式通信系统的网络及协议栈目目 录录 5.1概述5.2嵌入式通信系统的联网5.3嵌入式Internet技术5.1概述概述 97
67、 嵌入式通信系统的两种应用方式为:单机方式和网络方式。 单机方式:以嵌入式处理器为核心,与一些外部接口部件如监测、伺服和指示设备配合实现一定的功能。 网络方式:嵌入式设备通过网络连接到一起,相互通信,完成协作、并行功能等。 设计基于网络的嵌入式系统的原因:1)计算机处理资源的分散性2)减少处理的数据量3)模块化设计需求4)系统可靠性需求5.2嵌入式通信系统的联网嵌入式通信系统的联网 98选择协议栈选择协议栈 网络协议栈的选择通常与嵌入式通信系统的应用环境和使用的网络技术有关。选择网络协议栈需要从下面几个方面进行考虑:网络协议栈占用的内存 对于一个网络协议栈组件,占用的内存主要表现在两方面,即协
68、议栈代码占用的存储器的大小和数据段占用的存储器的大小硬件资源的成本 硬件资源主要指的是与网络有关的部件,如通信控制器、物理层接口等。协议开销 协议栈施加在CPU上的开销。5.2嵌入式通信系统的联网嵌入式通信系统的联网 99选择网络技术选择网络技术 网络技术的选择取决于应用。选择网络技术,考虑的是如何把嵌入式设备连接到网络上。产品需要提供不止一种连网选择以扩大其应用市场。5.2嵌入式通信系统的联网嵌入式通信系统的联网 100选择成熟的实现方案选择成熟的实现方案 由于嵌入式产品发展很快,产品开发周期越来越短,尽量选择成熟的方案,一方面可以节省开发时间,另一方面成熟的方案具有很高的可靠性。通常协议栈
69、集成在操作系统中,操作系统和网络协议栈的提供商应提供完美的技术支持。 从单独的提供商那里购买,需要考虑集成和移植工作带来的额外工作量。最好选择已经移植到不同平台应用过的协议栈,因为一个协议栈移植次数越多,移植过程通常越平滑。要确保两个单独的提供商在移植时都能提供技术支持。5.2嵌入式通信系统的联网嵌入式通信系统的联网 101使用标准的应用协议使用标准的应用协议网络应用层的标准协议使设计者可以借助一些成熟的且容易获得的标准软件模块来完成任务。可以从一些标准的软件中找到开放源代码,开发时可以节约不少时间,可靠性也可以得到保证。流行的网络体系结构流行的网络体系结构 网络体系结构是计算机的层次和协议的
70、集合。多年来,已有很多种网络协议投入使用,大多数是由开发商为某些特定的应用开发的。NetBIOS(网络基本的输入输出系统) 为PC与大型主机的应用程序、数据库通信提供标准编程接口。IPX/SPX(互联网包交换/顺序包交换) IPX工作在网络层,提供不可靠的报文传输和路由选择,SPX工作在传输层提供可靠的基于连接的服务。5.2嵌入式通信系统的联网嵌入式通信系统的联网 102流行的网络体系结构流行的网络体系结构TCP/IP早期开发的应用层协议是交换文件用的文件传输协议以及用于发送邮件的简单邮件传输协议。后来,一些协议被加入该体系以支持其他的网络功能,如文件服务器、打印服务器。所有这些网络体系的开发
71、都是为了解决某个特定问题:NetBIOS为了使PC能访问大型主机的服务;IPX/SPX使我们能建立一个无大型机的服务器框架,尤其是建立一个局域网;而TCP/IP使信息交换变得容易。除非开发的是一个必须要采用某种网络体系结构的计算机通信的嵌入式设备,最佳选择应是TCP/IP协议,以便能同最大范围的网络和设备兼容。5.3嵌入式嵌入式Internet技术技术 103网络体系结构网络体系结构在计算机网络中,为了使相连的计算机或终端之间能够正确地传输信息,必须有一整套关于信息、传输顺序、信息格式以及内容的约定,称为计算机网络通讯协议。由于协议太复杂,必须采用分层的方法以使其简化,而各层都按各自的协议工作
72、,层和协议的集合称为网络体系结构。OSI网络体系模型OSI网络体系模型网络协议中,由国际标准化组织发展和制定开放系统互连参考模型制定了数据通讯协议的标准。OSI参考模型采用七个协议层来定义数据通讯的协议功能,每一层是相对独立的,完成数据传输过程中的部分功能。5.3嵌入式嵌入式Internet技术技术 104网络体系结构网络体系结构OSI网络体系模型OSI网络体系模型提供终端用户程序和网络之间的一个应用程序接口主要解决用户信息的语法表示对数据传输进行管理为网络层进行通信的两个进程提供透明的端到端的数据传输服务为分组选择传输路径,并解决拥塞、流量控制和网际互连等问题为相邻结点之间提供以帧为单位的可
73、靠传输利用物理介质透明地传送比特流5.3嵌入式嵌入式Internet技术技术 105网络体系结构网络体系结构OSI网络体系模型OSI网络体系模型OSI模型中一个关键概念:虚电路。兼容OSI模型的网络协议栈的每一部分都不知道其上层和下层的行为和细节;它只是向上和向下传输数据。就模型的层次而言,每一层都有一虚电路直接连接目的主机上的对应层。5.3嵌入式嵌入式Internet技术技术 106网络体系结构网络体系结构TCP/IP网络体系模型一项应用广泛的工业标准,利用它可以互联所有的计算机和网络。狭义上,TCP/IP特指TCP和IP两个协议,即传输控制协议和网际协议。广义上,指由多个与因特网相关的协议
74、组成的TCP/IP参考模型(TCP/IP协议栈)。TCP/IP网络体系模型将应用程序的数据传送给传输层,以便进行信息交换为两台主机上的应用程序提供端到端的通信又称网际层,负责管理不同设备之间的数据交换连接上一层的IP数据报5.3嵌入式嵌入式Internet技术技术 107网络体系结构网络体系结构TCP/IP网络体系模型TCP/IP参考模型更强调功能分布而不是严格的功能层次的划分,比OSI模型更灵活。TCP/IP类似OSI参考模型,但不能与OSI参考模型完全匹配。OSI层号OSI参考模型TCP/IP参考模型备注7应用层应用层FTP、HTTP、DNS、TELNET、SMTP等6表示层5会话层传输层
75、TCP、UDP4传输层3网络层网络层IP、ICMP、IGMP、ARP、RARP2数据链路层链路层各种通信网络接口1物理层图5-1TCP/IP网络体系模型5.3嵌入式嵌入式Internet技术技术 108网络体系结构网络体系结构TCP/IP网络体系模型为文件传输提供途径访问在WWW服务器上的各种页面实现从主机域名到IP地址之间的转换提供可靠的面向连接的数据传输服务采用无连接的数据报传送方式,把数据报的分组从一台主机发送到另一台主机提供端到端的“数据报”传递在IP主机、路由器之间传递控制消息TCP/IP参考模型每层包含的协议5.3嵌入式嵌入式Internet技术技术 109嵌入式嵌入式Intern
76、et基础基础嵌入式系统包含嵌入式处理器、嵌入式操作系统和应用电路部分,需要加入接入协议实现与Internet的连接。所以实现嵌入式Internet的基础是嵌入式处理器、嵌入式操作系统和接入Internet的通信协议。嵌入式处理器单片机是典型的嵌入式处理器。处理器是嵌入式系统的核心,其性能直接影响到整个系统的性能,影响接入Internet的方式和成本。嵌入式操作系统嵌入式系统如果要完成复杂的功能,就必须在操作系统的基础上完成。目前国际上嵌入式系统的主流是第四章介绍的RTOS(实时操作系统)。5.3嵌入式嵌入式Internet技术技术 110嵌入式嵌入式Internet基础基础接入Internet
77、的通信协议嵌入式通信系统接入Internet采用目前通用的TCP/IP协议。嵌入式系统可以直接对信息进行TCP/IP协议处理,或采用网关方式在网关前端采用适合嵌入处理器和起控制作用的新协议,通过网关转换后变成标准IP包接入Internet。由于嵌入式通信系统自身资源的限制,其处理能力不如台式机强,以及从PC机上发展来的TCP/IP的复杂性,使得处理通信协议成为嵌入式通信系统接入Internet的关键,也是嵌入式通信系统接入Internet的难点之一。下面着重分析当前的几种接入方式以及对协议的不同处理方法。5.3嵌入式嵌入式Internet技术技术 111嵌入式嵌入式Internet的实现方式的
78、实现方式嵌入式Internet的实现方式主要有直接接入和网关接入两种。直接接入Internet嵌入式设备直接接入Internet。嵌入式设备本身支持标准的TCP/IP协议栈,可以作为Internet的一个节点,与Internet互联。MCU(单片机)的处理器像PC一样直接处理TCP/IP协议,一般需要高位的处理芯片,和一些单周期指令速度较高的8位单片机。对处理能力相对弱的8/16位单片机,一般针对特定的软硬件环境对标准的TCP/IP协议栈进行简化,有以下两种方式:Webit方式和Modem方式。5.3嵌入式嵌入式Internet技术技术 112嵌入式嵌入式Internet的实现方式的实现方式直
79、接接入InternetWebit方式:将MCU和以太网控制器集成到一块小板卡上,将它装入到嵌入系统中完成嵌入系统与Internet的连接。Modem方式:用Modem替代以太网控制器,即单片机拨号上网的形式。相应的数据链路层用的是PPP协议(点对点协议)。5.3嵌入式嵌入式Internet技术技术 113u嵌入式嵌入式Internet的实现方式的实现方式通过网关接入嵌入式设备通过一台支持标准TCP/IP协议栈的代理上网,这代理就是网关,它提供与Internet或局域网的协议转换及路由功能。网关可以是PC或其他设备。网关上支持标准的TCP/IP协议栈并运行基于Internet的服务程序,其和嵌入
80、式设备之间通过一些标准的串行通讯协议或者私有通信协议进行通信。小结小结114本章介绍了嵌入式系统网络的概念、常用的嵌入式网络协议原理。最后还介绍了嵌入式网络的接入技术和方法。第6章 嵌入式通信系统的电磁兼容目目 录录 6.1概述6.2嵌入式通信系统中电磁兼容的标准6.3嵌入式通信系统的电磁兼容测试6.4嵌入式通信系统的电磁干扰控制方法6.5嵌入式通信系统中印制电路板的电磁兼容设计6.6嵌入式通信系统的静电防护6.1概述概述 117随着电子技术的发展,嵌入式处理器的应用越来越广泛,处理器的主频也越来越高,伴随而来的电磁兼容(EMC)问题也越来越受到重视。嵌入式系统是否能可靠地工作、是否能达到电磁
81、兼容的标准,与系统设计、电子元器件的选择与使用、印制电路板的设计与布线、产品的制造工艺等都有很大关系。本章从实用的角度介绍一些电磁兼容的基本概念、设计嵌入式系统需要注意的问题、达到电磁兼容标准需要采取的措施,以及对电磁干扰的一些控制技术和对静电的防护措施。6.2嵌入式通信系统中电磁兼容的标准嵌入式通信系统中电磁兼容的标准118电磁兼容的基本概念电磁兼容的基本概念电磁兼容是电子设备的一种特性,电子设备在电磁环境中能正常工作,而不会产生不能容忍的干扰。国际电工技术委员(IEC)电磁兼容主要包括两方面的内容:系统本身抗电磁干扰能力强,不易受到外界电磁辐射信号的干扰;系统本身不会对其他仪器、设备产生不
82、可接受的电磁干扰。电磁干扰(EMI)效应:由干扰源发出干扰能量,经过耦合途径传输到敏感设备,使敏感设备的工作受到影响的过程。形成电磁干扰的3个要素为:(1)电磁干扰源:产生电磁干扰的任何元器件、设备或自然现象。(2)耦合途径:将电磁干扰能量传输到受干扰设备的通路或媒介。(3)敏感设备:受到电磁干扰的设备。6.2嵌入式通信系统中电磁兼容的标准嵌入式通信系统中电磁兼容的标准119电磁兼容标准电磁兼容标准电磁兼容标准是使产品在实际电磁环境中能够正常工作的基本要求。 电磁兼容标准国际上与电磁兼容有关的重要组织机构有:国际电工技术委员(IEC)、IEC中的无线电干扰特别委员会(CISPR)、国际电信联盟
83、(ITU)及美国电气电子工程师协会(IEEE)等。大部分国家的标准都是基于IEC制定的。所有标准分成基础标准、通用标准、产品标准,其中产品标准又可分为系列产品标准和专用产品标准。每类标准都包括发射和抗扰度两个方面的标准。6.2嵌入式通信系统中电磁兼容的标准嵌入式通信系统中电磁兼容的标准120电磁兼容标准电磁兼容标准 电磁兼容标准基础标准,规定达到电磁兼容的一般和基本条件或规则。通用标准,规定了一系列的标准化试验方法与要求(限值),并指出这些方法和要求所适用的环境。产品类标准,包括系列产品标准和专用产品标准。6.2嵌入式通信系统中电磁兼容的标准嵌入式通信系统中电磁兼容的标准121电磁兼容标准电磁
84、兼容标准 电磁兼容技术标准与规范的特点(1)规定了各种非预期发射的极限值(2)统一规定了测量方法 电磁兼容认证针对产品的电磁兼容性进行的认证。不同的国家有不同的认证标准,欧盟执行EMC指令89/336/EEC,美国由美国联邦通讯委员会(FCC)制定标准。中国的标准为中国强制认证(CCC)。6.3嵌入式通信系统的电磁兼容测试嵌入式通信系统的电磁兼容测试122电磁兼容测试包括辐射发射测试、辐射敏感度测试和屏蔽效能测试。辐射发射测试,测试干扰源的干扰强度。辐射敏感度测试,测试感受器(敏感设备)的抗干扰度。屏蔽效能测试,测试阻断干扰耦合通道能力。电磁兼容的测试标准电磁兼容的测试标准在电磁兼容(EMC)
85、领域的所有标准中,有关EMC测量的标准占很大的比重。EMC标准是进行EMC测量的技术依据。在诸多EMC标准中,无线电干扰特别委员会(CISPR)有关EMC的测量标准最受人们重视。国际标准代号国际标准代号标准名称标准名称IEC61000-4-3辐射(射频)电磁场抗扰度试验IEC61000-4-4电快速瞬变/脉冲群抗扰度试验IEC61000-4-5浪涌(冲击)抗扰度试验IEC61000-4-6对射频场感应的传导骚扰抗扰度试验IEC61000-4-7供电系统及所连设备谐波、谐波间的测量和仪表通用指南国际标准代号国际标准代号标准名称标准名称IEC61000-4-8工频抗扰度试验IEC61000-4-9
86、脉冲磁场抗扰度试验IEC61000-4-10阻尼振荡抗扰度试验IEC61000-4-11电压暂降、短期中断和电压变化抗扰度试验IEC61000-4-12震荡波抗扰度试验6.3嵌入式通信系统的电磁兼容测试嵌入式通信系统的电磁兼容测试123电磁兼容的测试仪器电磁兼容的测试仪器可采用带有准峰值和平均值检波器的干扰接收机。在标准涉及的频率范围内,一般要用2台不同频段的干扰接收机。针对不同的频段,应采用相应的测试天线。以频谱分析仪为核心的自动检测系统,可以快捷、准确地提供EMC的有关参数。配合扫描仪可显示真实的电磁辐射情况。电磁兼容的测试场地电磁兼容的测试场地为了保证测试结果的准确性和可靠性,电磁兼容测
87、试对环境有严格的要求,测试场地主要有以下五种:6.4嵌入式通信系统的电磁干扰控制方法嵌入式通信系统的电磁干扰控制方法124常见的电磁干扰常见的电磁干扰(EMI)问题问题常见的EMI问题有四种,即射频干扰、静电放电、电力干扰和自干扰。射频干扰无线通信系统利用射频方式工作,自身工作的同时,发出的射频信号对于其他设备就是干扰。目前无线电发射设备的数量不断增多,如蜂窝电话系统、手机、无线电遥控单元等广泛使用,使射频干扰变得越来越严重。静电放电两个具有不同静电电位的物体,由于直接接触或静电场反应引起两物体间的静电电荷的转移。静电电场的能量达到一定程度后,击穿其间介质而进行放电的现象称为静电放电。6.4嵌
88、入式通信系统的电磁干扰控制方法嵌入式通信系统的电磁干扰控制方法125常见的电磁干扰常见的电磁干扰(EMI)问题问题电力干扰大多数电子设备的开关电源会涉及电力线的干扰问题。这种干扰体现在两方面:一方面是开关电源本身开关工作产生干扰频谱;另一方面是设备内的电路产生干扰,通过电源电路耦合到电力线上。自干扰自干扰是指设备内部各个组成部分间的相互干扰。例如,对于一个数字、模拟混合电路构成的嵌入式系统的电路板,数字电路部分产生的干扰信号会干扰模拟电路的工作。电磁干扰的普遍存在对工程生产、日常设备控制、人体健康造成很大影响,甚至造成很大威胁,因此对EMI的有效控制显得迫切重要。下面介绍EMI控制技术。6.4
89、嵌入式通信系统的电磁干扰控制方法嵌入式通信系统的电磁干扰控制方法126电磁干扰电磁干扰(EMI)控制技术控制技术EMI控制技术大可以分为下面几类:有滤波、屏蔽、搭接、接地以及合理布线等具体方法。通过加大干扰源和接收器之间的空间距离。使有用信号在干扰信号停止发射的时间内传播。常见的电气隔离耦合有机械耦合、电磁耦合和光电耦合等。6.4嵌入式通信系统的电磁干扰控制方法嵌入式通信系统的电磁干扰控制方法127接地接地接地技术是是保护设施和人身安全的必要手段,也是抑制电磁干扰、保障设备或系统的电磁兼容性、提高设备或系统可靠性的重要技术措施。地的分类“地”一般定义为电路或系统的零电位参考点,可以是大地、设备
90、的外壳或其他金属板线。按构造一般分为:安全地、系统地、模拟地、数字地与保护地5类。接地电位差信号电压参考地为电子电路的所有部分提供一个公共电压的参考点。理想情况下接地线所有各点电位相等。实际上接地线上各点的电位不相等。接地系统的电位差会引起电磁兼容性问题,如产生共模干扰,严重时会导致电路无法正常工作。6.4嵌入式通信系统的电磁干扰控制方法嵌入式通信系统的电磁干扰控制方法128接地接地接地方法6.4嵌入式通信系统的电磁干扰控制方法嵌入式通信系统的电磁干扰控制方法129其他方法其他方法屏蔽屏蔽能够有效地抑制通过空间传播的电磁干扰。采用屏蔽的目的有两个:一是限制内部的辐射电磁能量外泄出控制区域;二是
91、防止外来的辐射电磁能量进入内部控制区。滤波技术滤波技术是抑制电气、电子设备传导电磁干扰,提高其抗扰度水平的重要手段,也是保证设备整体或局部屏蔽效能的重要辅助措施。滤波器按滤波原理可以分为:反射式滤波器和吸收式滤波器。搭接技术搭接是指两个金属物体之间通过机械、化学或物理的方法实现结构连接,以建立一条稳定的、低阻抗电气通路的工艺过程。6.5嵌入式通信系统中印制电路板的电磁兼容设计嵌入式通信系统中印制电路板的电磁兼容设计130印制电路板(PCB),又称为印刷电路板,是在绝缘材料的基础上提供元器件之间电气连接的导电图形的成品板。它实现集成电路等各种电子元器件之间的布线和电气连接,因此PCB板设计的好坏
92、对抗干扰能力有很大影响,其设计应符合抗干扰设计与电磁兼容的要求。图6-12常用元件的高频等效电路元件在特定情况下会表现出其隐藏特性。因此认识到元件的高频寄生特性,对解决高频下的电磁兼容问题非常重要。6.5嵌入式通信系统中印制电路板的电磁兼容设计嵌入式通信系统中印制电路板的电磁兼容设计131常用元器件的选择常用元器件的选择有两类基本的电子元器件:有引脚的和无引脚的元器件。有引脚线元器件有寄生效果,尤其在高频时。无引脚且表面贴装的元件的寄生效果要小一些。从电磁兼容性的观点看:表面贴装元器件放射状引脚元件轴向平行引脚元件电阻由于表面贴装元件具有低寄生参数的特点,因此,表面贴装电阻总是优于有引脚电阻。
93、对于有引脚的电阻,应首选碳膜电阻,其次是金属膜电阻,最后是线绕电阻。6.5嵌入式通信系统中印制电路板的电磁兼容设计嵌入式通信系统中印制电路板的电磁兼容设计132常用元器件的选择常用元器件的选择电容电容种类繁多、性能各异,电容的合理使用可以解决许多EMC问题。常见的集中电容类型为:铝质电解电容、钽电容和陶瓷电容等。为得到最好的EMC特性,电容具有低的等效串联电阻值是很重要的,因为它会对信号造成大的衰减,特别是应用于频率接近电容谐振频率场合。电感电感是一种可以将磁场和电场联系起来的元件,其固有的、可以与磁场互相作用的能力,使其潜在地比其他元件更为敏感。和电容类似,使用电感也能解决许多EMC问题。电
94、感有两种基本的类型:开环和闭环。6.5嵌入式通信系统中印制电路板的电磁兼容设计嵌入式通信系统中印制电路板的电磁兼容设计133常用元器件的选择常用元器件的选择u电感开环电感的磁场穿过空气,这将引起辐射并带来电磁干扰(EMI)问题。在选择开环电感时,绕轴式比棒式或螺线管式更好,因为这样磁场将被控制在磁芯。图6-14开环电感6.5嵌入式通信系统中印制电路板的电磁兼容设计嵌入式通信系统中印制电路板的电磁兼容设计134PCB的走线的走线当PCB上的走线很长,并且频率很高时,走线可能具有天线效应。实际应用中走线的长度应小于特定频率波长的1/20,避免形成无意的发射源。走线的一般原则(1)选用多层板(2)走
95、线要短而粗(3)时钟走线电源、地线的处理对电源、地线布线的考虑不周引起的干扰会使产品的性能下降,有时甚至影响到产品的成功。常见的电源、地线的处理方法为:6.6嵌入式通信系统的静电防护嵌入式通信系统的静电防护135静电的产生和危害静电的产生和危害静电放电(ESD)作为一种近场电磁干扰源对电子设备会造成严重的电磁干扰。静电产生的根源及特点静电产生的主要原因有摩擦分离、电磁感应、静电感应3种方式。(1)摩擦分离起电:两种不同的物体相互接触摩擦分离,各自产生数量相同、极性相反的电荷。(2)电磁感应起电:静电技术应用是利用电磁感应发电原理的低压电变换成高压电的新技术应用。(3)静电感应起电:当一个中性物
96、体与带电体靠近时,中性物体在靠近带电体的一端呈现与带电体所带电荷极性相反的电荷,而另一端呈现与带电体电荷极性相同的电荷。6.6嵌入式通信系统的静电防护嵌入式通信系统的静电防护136静电的产生和危害静电的产生和危害静电现象是电荷的产生和消失的过程中产生的电现象的总称。静电具有以下特点:(1)静电量小而电压高。(2)高压静电可能会发生放电。(3)绝缘体上的静电消失得很慢。(4)静电受环境,特别是湿度的影响比较大。静电对电子元件的危害(1)静电吸附灰尘,改变线路间的阻抗,影响产品的功能与寿命。(2)因电场或电流破坏元件的绝缘或导体,使元器件不能工作。(3)因瞬间电场或电流产生的热导致元器件受伤,影响
97、产品的寿命。6.6嵌入式通信系统的静电防护嵌入式通信系统的静电防护137静电放电静电放电(ESD)的模型的模型为了深入研究并防护ESD,通过长期大量的观测和实验研究,人们已经总结出许多ESD产生危害的模型。其中,最常用的3种ESD模型如下:6.6嵌入式通信系统的静电防护嵌入式通信系统的静电防护138静电的消除静电的消除控制静电的基本方法是泄露、中和、屏蔽。需要提供对应的泄露通路,极性相反的带电粒子和有屏蔽功能的环境。静电泄露释放积累的电荷只需要接地就行了。接地就是将静电通过一条导线连接释放到大地,这是防静电措施中最有效的。静电屏蔽用一个空腔导体遮住外电场,使其内部不受影响,且不对外界产生影响。
98、空腔导体不接地的屏蔽为外屏蔽,接地的屏蔽为全屏蔽。离子中和利用带电体吸引相反电荷的空气离子。6.6嵌入式通信系统的静电防护嵌入式通信系统的静电防护139PCB的静电防护的静电防护PCB的静电防护首先要保证电路及PCB本身不会产生强静电感应,如增加隔离或电荷泄露通路,尽量避免采用易受静电感应影响的制造工艺和零配件,如有必要可增设保护电路。PCB静电破坏防护设计考虑也是多方面的,概括起来有三点:吸收、躲避与加强防护。小结小结140本章首先介绍了电磁兼容的基本定义和概念,接着介绍了电磁兼容的标准和一些常用的电磁兼容的测量方法,定性分析了控制电磁干扰的技术,包括接地、屏蔽、滤波和搭接等方法,并介绍了静
99、电防护的一些知识。通过本章的学习,读者对电磁兼容的概念和电磁干扰的控制措施有一定了解。第7章 基于单片机的嵌入式通信系统目目 录录 7.1概述7.2单片机的体系结构7.3单片机中断系统7.4单片机定时器/计数器7.5单片机的串行通信接口7.1概述概述 143单片机的概念单片机的概念单片机是在一块硅片上集成了各种部件的微型计算机。随着大规模集成电路技术的发展,可以将中央处理器(CPU)、随机存储器(RAM)、程序存储器(ROM)、定时器/计数器以及输入/输出(I/O)接口电路等主要计算机部件,集成在一块电路芯片上。单片机通常指芯片本身,它是由芯片制造商生产的,在它上面集成一些作为基本组成部分的运
100、算器电路、控制器电路,存储器、中断系统、定时/计数器,以及输入/输出口电路等,一般需要扩展外围电路和外围芯片。单片机系统则是在单片机芯片的基础上扩展其他电路或芯片构成的具有一定应用功能的嵌入式系统。7.1概述概述 144单片机的发展史单片机的发展史1974年,美国仙童(Fairchild)公司研制出世界上第一台单片微型计算机F8。在20世纪80年代初,Intel公司发布了MCS-51系列的单片机。继1971年微处理器的研制成功不久,就出现了单片机,但最早的单片机是1位的。单片机的发展历史可分为4个阶段:第四阶段1982年至今8位单片机巩固发展及16位、32位单片机推出阶段7.1概述概述 145
101、单片机的分类单片机的分类迄今为止,市售单片机产品已达60多个系列,600多个品种。按照CPU对数据处理的位数来分,单片机通常分为以下4类:控制能力较弱,CPU一次只能处理4位二进制数。控制能力较强,品种最为齐全。CPU是16位的,运算速度普遍高于8位的单片机。字长为32位,具有极高的运算速度。7.2单片机的体系结构单片机的体系结构146MCS-51单片机的硬件结构单片机的硬件结构MCS-51单片机是把那些作为控制应用所必需的基本内容都集成在一个尺寸有限的集成电路芯片上。其由如下功能部件组成:(1)中央处理器(CPU):8位,包括运算器和控制器。(2)数据存储器(RAM):片内为128B,片外最
102、多可外扩64KB。(3)程序存储器(ROM/EPROM):用来存储程序,片外最多可扩至64KB。(4)中断系统:有5个中断源,分为2个优先级。(5)定时器/计数器:2个16位的定时器/计数器,具有4种工作方式。(6)串行口:1个全双工的串行口,具有4种工作方式。(7)并行口:4个8位并行I/O口,P0口、P1口、P2口、P3口。(8)特殊功能寄存器(SFR):21个,用于管理、控制、监视片内各功能部件。7.2单片机的体系结构单片机的体系结构147MCS-51的引脚的引脚MCS-51系列单片机的生产工艺有两种:一种是HMOS工艺,一种是CHMOS工艺。HMOS的MCS-51单片机采用双列直插式封
103、装,有40个引脚,而CHMOS型单片机则采用44个引脚方形封装。图7-1单片机封装7.2单片机的体系结构单片机的体系结构148MCS-51的引脚的引脚MCS-51系列单片机的引脚中有单功能引脚,也有双功能引脚,其各引脚的主要功能如下:(1)电源引脚:Vss、Vcc(2)外接晶振引脚:XTAL1、XTAL2(3)输入输出引脚:P0-P3(4)控制线(4条):RST/VPD,ALE/PROG,PSEN,EA/Vpp,除PSEN外均为双功能引脚。7.2单片机的体系结构单片机的体系结构149MCS-51系列单片机存储器结构系列单片机存储器结构MCS-51单片机存储器采用的是哈佛机构,程序存储器空间和数
104、据存储器空间分开,其各有自己的寻址方式、寻址空间和控制系统。这种结构适用于“面向控制”的应用。具有极强的外部存储器的扩展能力,寻址能力分别可达64KB。MCS-51的存储器空间可划分为如下4类:程序存储器MCS-51单片机的程序存储器用于存放应用程序和表格之类的固定常数。可扩充的程序存储器空间最大为64KB。整个程序存储器空间可分为片内和片外两部分。CPU访问片内、片外程序存储器,可由引脚EA所接的电平来确定。当EA引脚接高电平时,访问片内程序存储器;接低电平时,访问片外程序存储器。7.2单片机的体系结构单片机的体系结构150MCS-51系列单片机存储器结构系列单片机存储器结构片内数据存储器M
105、CS-51单片机的片内数据存储器(RAM)单元共有128个,字节地址为00H7FH,共包含4组通用工作寄存器区,位寻址区和用户RAM区。片外数据存储器51系列单片机能够扩展64KB外部数据存储器RAM和I/O端口。特殊功能寄存器MCS-51单片机中的CPU对各种功能部件的控制是采用特殊功能寄存器(SFR)的集中控制方式。SFR实质上是一些具有特殊功能的片内RAM单元,字节地址范围为80HFFH。7.2单片机的体系结构单片机的体系结构151MCS-51单片机最小系统电路单片机最小系统电路单片机的最小系统电路:能让单片机运行起来的最小硬件连接。51单片机的最小系统电路一般包括以下几个部分:7.3单
106、片机中断系统单片机中断系统152中断实际上就是CPU暂停执行现行程序,转而处理随机事件,处理完毕后再返回被中断的程序,这一全过程称为中断。MCS-51单片机内的中断系统主要用于实时测控中。MCS-51的中断源和中断标志的中断源和中断标志在MCS-51单片机中,单片机类型不同,其中断源个数和中断标志位的定义也有差别。现以8031、8051和8751的5级中断为例加以介绍。5个中断源有两个中断优先级,可实现两级中断服务程序嵌套。分3类,分别是外部中断源(2个)、定时中断源(2个)、串行口接收/发送中断源(1个)。当某个中断源的中断申请被CPU响应后,CPU便会将相应的中断服务程序入口地址发送给程序
107、计数器,转向该中断服务程序。中断服务程序入口地址称为中断向量。7.3单片机中断系统单片机中断系统153中断控制中断控制 中断允许寄存器IE中断允许寄存器(IE)主要完成对系统中各中断源的允许与屏蔽的控制,以及是否允许CPU响应中断的控制。IE的状态由软件设置。若某位设置为1,则相应的中断源允许;反之,该中断源的中断被屏蔽。上电复位时,IE各位初始为0,禁止所有中断。IE寄存器属51单片机的特殊功能寄存器,其映像字节地址为A8H。中断优先级控制寄存器IPMCS-51的中断源有两个中断优先级,对于每一个中断源可由软件定为高优先级中断或低优先级中断,可实现两级中断嵌套,两级中断嵌套的过程如图7-4所
108、示。7.3单片机中断系统单片机中断系统154中断控制中断控制 中断优先级控制寄存器IP图7-4两级中断嵌套7.3单片机中断系统单片机中断系统155中断控制中断控制 中断源寄存器TCON和SCON在51单片机的中断系统中,由特殊功能寄存器TCON和SCON的相应位来锁存各中断请求标志。TCON为定时器/计数器的控制寄存器(其映像字节地址为88H),它也锁存外部中断请求标志。SCON是串行口控制寄存器(其映像字节地址为98H),它锁存的中断请求标志只有2位。 中断处理过程一个完整的中断处理过程包括以下几个部分:7.4单片机定时器单片机定时器/ /计数器计数器156MCS-51系列单片机中,有两个可
109、编程的16位的定时器/计数器T0、T1(增强型有3个)。MCS-51的这种结构特点集中体现在如下三个方面:(1)定时器/计数器可以分为定时器模式和计数器模式两种。(2)定时时间或计数器模式下的计数值均可由CPU通过程序设置,但不能超过各自的最大值。(3)定时器/计数器是一个二进制的加1计数器,当计数器计满回零时能自动产生溢出中断请求,表示定时时间已到或计数器已经计满。MCS-51对内部定时器对内部定时器/计数器的控制计数器的控制主要通过TCON和TMOD两个特殊功能寄存器实现。控制寄存器TCON是一个8位寄存器。方式寄存器TMOD的地址为89H,CPU可以通过字节传送指令来设置TMOD中的各位
110、状态,但不能用位寻址指令改变。定时器/计数器在定时和计数方式下,计数初值N的计算方法各不相同。7.4单片机定时器单片机定时器/ /计数器计数器157定时器定时器/计数器工作方式计数器工作方式MCS-51定时器/计数器工作方式有4种工作方式,本部分内容将简要描述4种工作方式。方式0:定时器/计数器按13位加1计数器工作,这13位由TH中的高8位和TL中的低5位组成。方式1:定时器/计数器按16位加1计数器工作。方式2:定时器/计数器被拆成一个8位寄存器TH(TH0/TH1)和一个8位计数器TL(TL0/TL1)方式3:T0和T1功能不相同,而且只有T0才能设置方式3。7.4单片机定时器单片机定时
111、器/ /计数器计数器158定时器定时器/计数器工作方式计数器工作方式图4种工作方式下TH和TL的分配7.5单片机的串行通信接口单片机的串行通信接口159串行口结构及工作原理串行口结构及工作原理MCS-51系列单片机内部有一个采用异步通信工作方式的可编程全双工串行通信接口,通过软件编程,可以用作通用异步收发传输器(UART),也可做同步移位寄存器用。其帧格式可有8位、10位和11位,并能设置波特率,在使用上灵活方便。MCS-51单片机串主要由串行数据缓冲器(SBUF)、输入移位寄存器、发送控制器、接受控制器、波特率发生器和输出控制门组成。在串行通信的发送过程中,CPU向发送SBUF写入数据就启动
112、了发送过程,在发送控制器的控制下按照设置波特率的速率由低位到高位一位一位地发送。7.5单片机的串行通信接口单片机的串行通信接口160串行口串行口控制控制寄存器寄存器串行通信接口的控制寄存器有两个,分别是串行口控制寄存器(SCON)和电源控制寄存器(PCON)。SCON用于控制和监视串行口的工作状态。其字节地址是98H,可位寻址,位地址为98H9FH。PCON的字节地址为87H,没有位寻址功能。串行口工作方式串行口工作方式串行口具有4种工作方式:方式0:移位寄存器输入/输出方式,波特率为定值。方式1:8位异步通信接口,波特率可变。方式2:9位异步通信接口,波特率为定值。方式3:9位异步通信接口,
113、波特率可变。7.5单片机的串行通信接口单片机的串行通信接口161波特率的设计波特率的设计根据串行口的4种工作方式可知:方式0:移位寄存器方式,波特率是固定的,为fosc/12。方式1:由定时器T1的溢出速率控制,波特率=2SMOD/32(T1的溢出率)。T1的溢出率定义为单位时间内定时器T1溢出的次数。方式2:波特率=2SMODfosc/64。方式3:同方式1。小结小结162本章以单片机中的主流机种MCS-51系列单片机为背景,系统概述了单片机的相关技术。主要介绍了单片机的由来、发展以及分类;MCS-51系列单片机的硬件资源、组织结构及外部特性;MCS-51系列单片机的中断系统;单片机的定时器
114、/计数器系统;MCS-51系列单片机的串行通用接口。通过本章的学习,读者可对单片机系统有一定的了解。第8章 基于PC/104架构的嵌入式通信系统目录目录8.1概述8.2PC/104标准8.3PC/104结构体系8.4PC/104通信接口8.5PC/104的开发环境与编程8.1概述概述165PC/104是一种嵌入式的总线规范,是工业标准架构(ISA)总线的延伸和扩展。1981年,IBM公司生产出了PC并提出了8位的PC总线。1984年,提出PC/AT总线,这是一种16位总线。1987年,IEEE正式制定了ISA总线标准。1992年,PC/104作为基本文件被采纳,叫作IEEE-P996.1兼容P
115、C嵌入式模块标准。PC/104的优点如下:8.2PC/104标准标准166模块标准模块标准紧凑型的ISA(PC、PC/AT)总线结构是为嵌入式系统应用的特殊要求而优化的,其总线结构的104个信号线分布在两个总线连接器上。P1连接器上有64个信号引脚、P2连接器上有40个信号引脚,所以称这种总线结构为PC/104。图8-1给出了一个典型的模块堆,其中包括8位和16位的模块,它说明了“叠穿式”和“非叠穿式”总线选择的用法。图8-1PC/104总线模块堆8.2PC/104标准标准167引引脚信号脚信号信号分配与ISA板卡插槽上连接器的顺序一致,但它们是转换到相应的头连接器引脚上的。ISA总线板卡元件
116、面和焊接面共有62+36个引脚(A1A31、B1B31、C1C18和D1D18),其中A1A31、BlB31是低8位部分即8位ISA总线所用的信号。8位ISA总线板卡及插槽与该图的区别在于没有36个引脚(C1C18和D1D18)那部分。表8-1给出了16位ISA总线前62个引脚(亦是8位ISA总线的全部引脚)信号定义,表8-2给出了16位ISA总线的后36个引脚信号定义。8.2PC/104标准标准168引脚信号引脚信号8.2PC/104标准标准169引引脚信号脚信号下面对部分引脚信号做简要说明:(1)D7DO:8位数据线,双向,三态。(2)A19A0:20位地址线,输出。(3)SMEMR、SM
117、EMW:存储器读、写命令,输出,低电平有效。(4)IOR、IOW:I/O读、写命令,输出,低电平有效。(5)AEN:地址允许信号,输出,高电平有效。(6)BALE:总线地址锁存允许,输出。(7)I/OCHRAY:I/O通道准备信号,输入,高电平有效。(8)I/OCHCK:I/O通道校验,输入,低电平有效。(9)IRQ7IRQ2:6个中断请求信号,输入,分别接到中断控制逻辑的主8259A的中断请求输入端IR7IR2。8.2PC/104标准标准170引引脚信号脚信号(10)DRQ3DRQ1:3个DMA请求信号,输入,高电平有效。(11)DACK3DACKl:3个DMA响应信号,输出,低电平有效。(
118、12)T/C:计数结束信号,输出,高电平有效。(13)OSC:振荡器的输出脉冲。(14)CLK:系统时钟信号,输出。(15)RESET:系统复位信号,输出,高电平有效。(16)NOWS:零等待状态,输入,低电平有效。(17)REFRESH:刷新信号,双向,低电平有效,由总线主控器的刷新逻辑产生。8.3PC/104结构体系结构体系171本节以SCM-7020Bs(PC/104模块)来介绍以PC/104为架构的模块体系结构。SCM-7020Bs(PC/104模块)是一款“all-in-one”CPU模块,它集成了10/100Base-T以太网接口及高性能图形处理器。采用X86兼容的64位第六代处理
119、器,最高运行速度可达300Mbit/s,在板内存支持最大128MB3.3VSDRAM。图形处理器可支持各种LCD及TFT显示屏,最大4MB显存最大支持至1280x1024、16.7M种颜色,同时支持PS/2键盘、PS/2鼠标、IDE接口、Floppy接口、两串一并接口、USB、以太网接口以及Watchdog。物理特性:尺寸,90mm96mm15mm;电源要求,+5V(15%)工作环境,S型:070C;N型:-25+75C湿度,5%95%相对湿度;储存温度,-55+85C8.4PC/104通信接口通信接口172将SCM-7020Bs作为一个部件用到各种应用系统(包括嵌入式系统)中,SCM-702
120、0Bs将需做不同的硬件设置。本节介绍有关在板设备及接口。外部连接器外部连接器板上的接口连接器和配置跳线的位置,如图8-2所示。图8-2SCM-7020Bs机械尺寸及跳线图(单位:英寸)8.4PC/104通信接口通信接口173SCM-7020Bs板上的PC/104扩展总线在板上正面是两个双列插座(64芯及40芯),在板的反面是相应的插针,这个可栈接的连接器使SCM-7020Bs可以非常方便地与扁平电缆、固定连接器或各种栈接的外围模块相连接。在板电源能从 5V供电电压中产生所需的所有电压。多用接口多用接口KBMS1是一个10针的连接器,它连接4种功能:喇叭、复位、键盘和鼠标,该连接器的引脚信号定义
121、如表8-5所示。引脚引脚信号名称信号名称功能功能5芯键盘插座芯键盘插座1Speaker+音频输出信号2GND音频(-)3ResetSwitch复位控制4MouseData鼠标数据5KbdData键盘数据26KbdClock键盘时钟17Ground地48Power+5V59NC10MouseClock鼠标时钟8.4PC/104通信接口通信接口174串行端口串行端口SCM-7020Bs有两个PC/AT兼容的RS-232C串行口(COM1和COM2),每个串行口都可设置为有效或禁止。表8-6列出了COM1及COM2的引脚信号,为了便于对照,表中列出了DB9和DB25与PC/AT标准对应的串行口连接器
122、的引脚。引脚引脚信号名称信号名称功能功能In/OutDB25PinDB9Pin1DCDDataCarrierDetectIn812DSRDataSetReadyIn663RXDReceiveDataIn324RTSRequestToSendOut475TXDTransmitDataOut236CTSClearToSendIn587DTRDataTerminalReadyOut2048RIRingIndicatorIn2299GNDGround-7510-KEYPin-表8-6串口引脚定义(COM1、COM2)8.4PC/104通信接口通信接口175并行端口并行端口并行口可用作标准PC/AT打印
123、机接口,也可用作通用的可编程I/O口,其数据线是全双向的,控制线则是准双向的。并行口(LPT1)是一个26针的针式连接器,表8-7列出了该连接器的引脚信号定义,注意连接本模块和打印机的电缆总长度不超过40cm,超过这个长度,由于受端口信号驱动能力限制,信号传送将不可靠。引脚引脚信号名称信号名称功能功能In/OutDB25Pin1-STBOutputDataStrobeOut13PD0ParallelDataBit0In/Out25PD1ParallelDataBit1In/Out37PD2ParallelDataBit2In/Out49PD3ParallelDataBit3In/Out511P
124、D4ParallelDataBit4In/Out613PD5ParallelDataBit5In/Out715PD6ParallelDataBit6In/Out817PD7ParallelDataBit7In/Out9引脚引脚信号名称信号名称功能功能In/OutDB25Pin19-ACKCharacterIn1021BSYPrinterBusyIn1123PEPaperEmptyIn1225SLCTPrinterSelectedIn132-AFDAutofeedOut144-ERRPrinterErrorIn156-INITInitPrinterOut168-SLINSelectPrinter
125、Out1726N/CKEY-10-24GroundSignalGround18-25表8-7并口引脚定义(LPT1)8.4PC/104通信接口通信接口176软盘接口软盘接口软盘接口连接器用于使用FFC电缆的软驱。连接普通软驱时,可选择使用适配器。表8-8列出了该连接器的引脚信号定义。引脚引脚信号名称信号名称引脚引脚信号名称信号名称1+5VVolt2Index3+5VVolt4DriveSelect05+5VVolt6Diskchange7n.c.8n.c.9n.c.10MotorOn011n.c.12Direction13n.c.14Step15GND16WriteData17GND18Wri
126、teGate19GND20Track021GND22WriteProtect23GND24ReadData25GND26HeadSelect表8-8Floppy接口引脚定义(FDD1)8.4PC/104通信接口通信接口177CRT接口接口SCM-7020Bs模块上双列10针的连接器CRT1为CRT监视器提供模拟输出。DB15连接方式的电缆随SCM-7020Bs模块提供,用它可与大多数的VGA模拟显示器相连接。平板显示接口平板显示接口提供许多平板显示器所需要的信号,像彩色STN,彩色TFT和其它一些信号都可在LCD1上得到。IDE端口端口芯片组提供一个EIDE(增强型智能磁盘设备)接口连接集成控
127、制器的智能驱动器(硬盘,CD-ROM等)。该端口支持LBA,可以接大于512MB的硬盘。为了增强其功能,该端口支持DMAF型传输方式。8.4PC/104通信接口通信接口178ETH/USB1端口端口USB2端口端口引脚引脚信号名称信号名称引脚引脚信号名称信号名称123RX+4PE5PE6RX-7USB+8USB-9+5V10GND表8-12ETH/USB接口引脚定义(RJ1)引脚引脚信号名称信号名称引脚引脚信号名称信号名称1NC2NC3NC4NC5NC6NC7USB+8USB-9+5V10GND表8-13USB2接口引脚定义(RJ2)8.4PC/104通信接口通信接口179AUDIO端口端口表
128、8-14AUDIO接口引脚定义(AUDIO1)引脚引脚信号名称信号名称引脚引脚信号名称信号名称1LineOutR2GND3LineOutL4GND5LineInR6GND7LineInL8GND9MIC10GND8.5PC/104的开发环境与编程的开发环境与编程180QNX概述概述QNX操作系统是一个分布式网络实时操作系统,它是加拿大QuantumSoftwareSystems公司的产品。QNX特点QNX操作系统最突出的特点是,它是一个真正的分布式网络操作系统。它的网络功能最大程度地实现了资源共享,并对网络上的每个结点资源透明存取,任务可共享网上所有资源。在资源使用时,只要在资源名前加入结点号
129、即可,如果不在同一结点,QNX内核在网上通过消息实现不同结点通信。此外,QNX提倡把一个任务划分为多个子任务。每个进程执行一个子任务,由协同操作的进程组共同完成整个任务。8.5PC/104的开发环境与编程的开发环境与编程181QNX概述概述QNX系统结构QNX系统定义了一些抽象的概念,诸如任务、消息、资源和结点等。任务是一个可执行单元,它可通过消息等手段对资源进行操作和与其它任务进行通信。典型的资源有内存和文件。QNX实现了以下6种文件类型:常规文件、目录文件、符号链文件、管道和FIFO文件、块特殊文件、字符特殊文件。进程间通信进程间通信(IPC)是QNX区别于其他系统的一个主要标志。QNX系
130、统采用此思想执行任务并在任务间传输信息,IPC能有效地管理任务之间的信息传输,QNX系统中所有的系统服务、设备驱动和应用都依赖于它。8.5PC/104的开发环境与编程的开发环境与编程182QNX系统命令系统命令(1)显示当前工作目录pwd(2)显示用户信息who、finger(3)显示和设置系统日期和时间date(4)列目录ls(5)查找文件find(6)浏览文本文件more(7)显示进程状态ps、sin(8)获得联机帮助use8.5PC/104的开发环境与编程的开发环境与编程183QNX应用程序开发应用程序开发基本例程程序hello.c的编辑、编译和运行。输入vedithello.c回车,进
131、入编辑屏幕,输入源文件正文:main()printf(“hello,QNXworld!n”);保存文件,然后编译和链接程序,键入如下命令:#ccohellohello.c最后运行它,键入:#./hello这些步骤是程序开发的基本步骤编辑、编译和运行。8.5PC/104的开发环境与编程的开发环境与编程184基本概念(1)编辑器和编辑源程序标准QNX程序编辑器是vi,但是它操作起来比较复杂,一般在完全安装的QNX系统下使用vedit进行文件编辑是比较方便的。(2)头文件所有QNX头文件都存在目录/usr/include下。(3)编译QNX系统提供了可选择的多步编译,即分几步完成编译工作。每一步产生
132、一个输出文件,作为下一步的输入文件。最后一步是链接目标模块和系统函数库,生成可执行文件。(4)运行QNX系统的应用程序通过文件使用权限x限定。8.5PC/104的开发环境与编程的开发环境与编程185cc命令的使用cc命令可以对文件进行编译和链接,它的标准格式为:cc-options|operandscc命令的常用参数如下表,通过选用不同的参数可以将编制好的程序编译/链接为库文件(*.lib)或可执行应用程序。参数含义-Alibrary创建新的库文件(扩展名为“.lib”)-Idirectory包含的头文件路径-Ilibrary包含的库文件-Ldirectory包含库文件的路径-ooutfile
133、输出的文件名-T0.3设置优先级-wx显示所有的Warning(警告)信息小结小结186本章首先介绍了PC/104总线架构的发展以及其优点;然后介绍其模块标准以及信号时序等相关内容,并与ISA总线进行比较介绍;结合SCM-7020B介绍了以PC/104总线所构造的核心模块的体系架构以及其通信接口的相关内容;以QNX操作系统为PC/104的开发环境详细介绍了其基本操作指令以及应用程序的开发。第9章 基于ARM架构的嵌入式通信系统目录目录9.1概述9.2ARM的结构体系9.3ARM的指令系统9.4ARM的通信接口9.5基于ARM架构的嵌入式网关9.1概述概述189ARM是AdvancedRISCM
134、achines的缩写,1991年ARM公司成立于英国剑桥,主要出售芯片设计技术的授权。ARM微处理器系列微处理器系列ARM微处理器目前主要包括ARM7、ARM9、ARM9E系列、ARM10E、ARM11、 SecurCore、 Intel的 Xscale、 Intel的 StrongARM系 列 。 其 中 ,ARM7、ARM9、ARM9E和ARM10E为4个通用处理器系列,每一个系列提供一套相对独特的性能来满足不同应用领域的需求。SecurCore系列专门为安全要求较高的应用而设计。9.1概述概述1909.1概述概述191ARM微处理器结构微处理器结构RISC体系结构1979年加州大学伯克利
135、分校提出了RISC结构,优先选取使用频最高的简单指令,避免复杂指令;将指令长度固定,指令格式和寻地方式种类减少;以控制逻辑为主,不用或少用微码控制等。ARM微处理器的寄存器结构ARM处理器共有37个寄存器,被分为若干个组,这些寄存器包括:(1)31个通用寄存器,包括程序计数器(PC指针),均为32位的寄存器。(2)6个状态寄存器,用以标识CPU的工作状态及程序的运行状态,均为32位,目前只使用了其中的一部分。9.2ARM的结构体系的结构体系192AR体系结构的特点体系结构的特点ARM内核采用精简指令集计算机(RISC)体系结构。RISC技术产生于20世纪70年代。RISC的设计思想主要有以下特
136、性。ARM体系结构的主要特征如下:大量的寄存器,它们都可以用于多种用途。Load/Store体系结构。每条指令都条件执行。多寄存器的Load/Store指令。能够在单时钟周期执行的单条指令内完成一项普通的移位操作和一项普通的ALU操作。9.2ARM的结构体系的结构体系193通过协处理器指令集来扩展ARM指令集,包括在编程模式中增加了新的寄存器和数据类型。Thumb指令集也可以当作ARM体系结构的一部分,以高密度16位压缩形式表示指令集。ARM体系结构的存储器格式体系结构的存储器格式ARM体系结构可以用两种方法存储字数据,称之为大端格式和小端格式,如图9-1,9-2所示,具体说明如下:大端格式:
137、在这种格式中,字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。小端格式:与大端存储格式相反,在小端存储格式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。9.2ARM的结构体系的结构体系194图9-1以大端格式存储字数据图9-2以小端格式存储字数据9.2ARM的结构体系的结构体系195ARM处理器模式处理器模式ARM微处理器支持7种运行模式,分别为:ARM处理器正常的程序执行状态用于高速数据传输或通道处理用于通用的中断处理操作系统使用的保护模式当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护。运行具有特权的操作系统任务。当未定义的指令执行时进入该模式
138、,可用于支持硬件协处理器的软件仿真。9.3ARM的指令系统的指令系统196ARM微处微处理器的指令集概述理器的指令集概述ARM微处理器的指令的分类与格式ARM微处理器的指令集可以分为跳转指令、数据处理指令、程序状态寄存器(PSR)处理指令、加载/存储指令、协处理器指令和异常产生指令六大类。指令的条件域当处理器工作在ARM状态时,几乎所有的指令均根据CPSR中条件码的状态和指令的条件域有条件地执行。当指令的执行条件满足时,指令被执行,否则指令被忽略。9.3ARM的指令系统的指令系统197ARM指令的寻址方式指令的寻址方式目前ARM指令系统支持如下几种常见的寻址方式。立即寻址立即寻址:立即数寻址,
139、操作数本身就在指令中给出。寄存器寻址寄存器寻址:利用寄存器中的数值作为操作数。寄存器间接寻址寄存器间接寻址:以寄存器中的值作为操作数的地址。 基基址址变变址址寻寻址址:将寄存器的内容与指令中给出的地址偏移量相加,从而得到操作数的有效地址。 多寄存器寻址:多寄存器寻址:一条指令可以完成多个寄存器值的传送。 相相对对寻寻址址:以程序计数器PC的当前值为基地址,指令中的地址标号作为偏移量,将两者相加之后得到操作数的有效地址。堆堆栈栈寻寻址址:堆栈是一种数据结构,按先进后出(FILO)的方式工作,使用一个称作堆栈指针的专用寄存器指示当前的操作位置。9.3ARM的指令系统的指令系统198ARM指令集指令
140、集ARM指令集的十大类指令如下。指令类型指令类型作用作用包含指令包含指令跳转指令实现程序流程的跳转B、BL、BLX、BX数据处理指令在寄存器和存储器之间进行数据的双向传输MOV、MVN、CMP、CMN、TST、TEQADD、ADC、SUB、SBC、RSB、RSC、AND、ORR、EOR、BIC乘法指令与乘加指令指令中的所有操作数、目的寄存器必须为通用寄存器MUL、MLA、SMULL、SMLAL、UMULL、UMLAL程序状态寄存器访问指令在程序状态寄存器和通用寄存器之间传送数据MRS、MSR加载/存储指令在寄存器和存储器之间传送数据LDR、LDRB、LDRH、STR、STRB、STRH批量数据
141、加载/存储指令一次在一片连续的存储器单元和多个寄存器之间传送数据LDM、STM数据交换指令在存储器和寄存器之间交换数据SWP、SWPB移位指令(操作)支持数据的各种移位操作LSL、ASL、LSR、ASR、ROR、RRX协处理器指令各种协处理操作CDP、LDC、STC、MCR、MRC异常产生指令产生异常SWI、BKPT9.4ARM的通信接口的通信接口199S3C4510B概述概述Samsung公司的S3C4510B是基于以太网应用系统的高性价比16/32位RISC微控制器,内含一个由ARM公司设计的16/32位ARM7TDMIRISC处理器核,ARM7TDMI为低功耗、高性能的16/32核,最适
142、合用于对价格及功耗敏感的应用场合。S3C4510B提供了18个可编程的通用I/O端口,用户可将每个端口配置为输入模式、输出模式或特殊功能模式,由片内的特殊功能寄存器IOPMOD和IOPCON控制。控制I/O口的特殊功能寄存器一共有3个:(1)IOPMOD(I/O模式寄存器)(2)IOPCON(I/O控制寄存器)(3)IOPDATA(I/O数据寄存器)9.4ARM的通信接口的通信接口200串行通信接口串行通信接口S3C4510B的UART单元提供两个独立的异步串行I/O口(SIO),每个通信接口均可工作在中断模式或DMA模式,也即UART能产生内部中断请求或DMA请求,在CPU和串行I/O口之间
143、传送数据。S3C4510B的UART单元特性包括:(1)波特率可编程(2)支持红外发送与接收(3)12个停止位(4)58个数据位(5)奇偶校验9.4ARM的通信接口的通信接口201以太网通信接口以太网通信接口S3C4510B内嵌一个可以以10/100Mbit/s的速率工作在半双工或全双工模式下的以太网控制器。在半双工模式下,控制器支持IEEE802.3的CSMA/CD协议;在全双工模式下,控制器支持包括用于流控的暂停操作的IEEE802.3MAC控制层协议。以太网控制器的MAC层支持媒体独立接口(MII)和带缓冲的DMA接口(BDI)。MAC层由发送模块、接收模块、流控模块、用于存储网络地址的
144、匹配地址存储器(CAM)以及一些命令寄存器、状态寄存器、错误计数器寄存器构成。9.5基于基于ARM架构的嵌入式网关架构的嵌入式网关202硬件平台设计硬件平台设计硬件设计框图如9-3所示。设计模块:微处理器Flash存储器SDRAM总线驱动电路10/100Mbit/s以太网串行接口通用I/O接口S3C4510B所需的其他外围驱动电路图9-3家庭网关的设计框图9.5基于基于ARM架构的嵌入式网关架构的嵌入式网关203软件平台设计软件平台设计嵌入式操作系统uClinux,有完整TCP/IP协议栈,同时给其他许多的网络协议提供支持。嵌入式家庭网关设计在嵌入式网关的设计中,网关程序与家庭网络的HTP服务
145、器和家庭网络内部服务器(HomeNetServer)位于同一物理设备(基于S3c4510B的硬件平台)之上, 负责连接HTTP服务器与后台数据库, 完成HTTP服务器与HomeNetServer之间的信息交互。图9-4显示了嵌入式网关的设计结构。9.5基于基于ARM架构的嵌入式网关架构的嵌入式网关204软件平台设计软件平台设计(1)嵌入式HTTP服务器为实现家庭网关的各项功能,HTTP 服务器必须按照HTTP协议的规范和客户进行交互。家庭网络服务器的工作流程如图9-5所示。图9-5家庭网络服务器的工作流程9.5基于基于ARM架构的嵌入式网关架构的嵌入式网关205软件平台设计软件平台设计(2)W
146、eb服务器网关应用程序连接HTTP服务器和HomeNetServer,在远程控制的动态交互中起到承接作用。图9-6为HTTPd与CGI的实现流程图。图9-6HTTPd与CGI的实现流程图小结小结206本章系统地介绍了嵌入式系统软硬件的组成、工作原理和设计方法。主要介绍了嵌入式系统的基本概念,包括嵌入式系统的定义、组成、特点、分类和应用领域;ARM处理器的体系结构;ARM的指令系统以及S3c4510B芯片相关的通信接口。最后,介绍了基于ARMS3c4510B芯片的网关设计。第10章 嵌入式操作系统C/OS-II目目 录录 10.1概述10.2C/OS-II任务管理10.3C/OS-II任务管理1
147、0.4C/OS-II中断和时间管理10.5C/OS-II任务之间的通信与同步10.6C/OS-II系统移植10.7C/OS-II的通信开发10.1概述概述 C/OS-II是一种基于优先级可剥夺型的多任务实时内核,包含了任务调度与管理、时间管理、任务间通信与同步等基本功能。C/OS-II具有以下特点:10.1概述概述 C/OS-II作为一个微内核,它只是对计算机的处理器和硬件时钟进行了抽象和封装,而没有提供其他硬件抽象层。其体系结构如图所示:C/OS-II是通过任务控制块来管理任务的。创建任务:C/OS-II有两个函数来完成任务的创建,分别为OSTaskCreate()和OSTaskCreate
148、Ext(),其中函数OSTaskCreateExt()是函数OSTaskCreate()的扩展,并提供了一些附加功能。删除任务:即把该任务置于睡眠状态。把当初分配给被删除任务的任务控制块从就绪链表中删除,并且归还给空闲任务控制块链表。可调用函数OSTaskDel()来删除任务自身或除了空闲任务以外的其他任务。挂起任务:即因某种原因由任务自己或其他任务停止这个任务的运行。可调用系统提供的函数OSTaskSuspend()来挂起自身或者除空闲任务之外的其他任务恢复任务:可调用OSTaskResume()函数来恢复任务。10.2C/OS-IIC/OS-II任务管理任务管理C/OS-II系统总是运行进
149、入就绪态任务中优先级最高的那一个。10.3C/OS-IIC/OS-II内存管理内存管理为了便于内存的管理,在C/OS-II中使用内存控制块(MemoryControlBlocks)的数据结构来跟踪每一个内存分区,系统中的每个内存分区都有它自己的内存控制块。内存控制块定义如下:typedefstructvoid*OSMemAddr;/指向内存分区起始地址的指针void*OSMemFreeList;/下一个空闲内存控制块或者下一个空闲的内存块的指针INT32UOSMemBlkSize;/内存分区中内存块的大小INT32UOSMemNBlks;/内存分区中总的内存块数量INT32UOSMemNFre
150、e;/内存分区中当前可用的空闲内存块数量OS_MEM;通过定义一个二维数组来定义一个内存分区及其内存块。10.3C/OS-IIC/OS-II内存管理内存管理只有把内存控制块与分区关联起来之后,系统才能对内存进行相应的管理和控制。如图为内存控制块与内存分区和内存块的关系图:如果要在C/OS-II中使用内存管理,需要在OS_CFG.H文件中将开关量OS_MEM_EN设置为1进行初始化。10.3C/OS-IIC/OS-II内存管理内存管理建立一个内存控制块链表示意图如下:C/OS-II用于动态内存管理的函数有:创建动态内存分区函数OSMemCreate()、请求获得内存块函数OSMemGet()、释
151、放内存块函数OSMemPut()和查询动态内存分区状态函数OSMemQuery()。10.4C/OS-IIC/OS-II中断和时间管理中断和时间管理C/OS-II中,任务在运行过程中,应内部或外部异步事件的请求中止当前任务,而去处理异步事件所要求的任务的过程叫做中断中断。应中断请求而运行的程序叫中断服务子程序中断服务子程序(InterruptServiceRoutines,ISR)。中断服务子程序的入口地址叫中断向量中断向量。C/OS-II系统响应中断的过程是:系统接收到中断请求之后,如果处理器处于中断允许状态(即中断是开放的),系统就会中止正在运行的当前任务,而按照中断向量的指向转而去运行中
152、断服务子程序。10.4C/OS-IIC/OS-II中断和时间管理中断和时间管理C/OS-II系统允许中断嵌套,即在中断服务程序的运行过程中,处理器可以相应更高优先级别中断源的中断请求。中断响应过程如图:10.4C/OS-IIC/OS-II中断和时间管理中断和时间管理C/OS-II定义了一个全局变量OSIntNesting来记录中断嵌套的层数。全局变量OSIntNesting有两个用途:一是记录中断嵌套层数,二是为调度器加锁或解锁。C/OS-II用两个函数OSIntEnter()和OSIntExit()来处理变量OSIntNesting。函数OSIntEnter()的作用就是把全局变量OSInt
153、Nesting加1,从而用它来记录中断嵌套的层数并且为调度器加锁。OSIntExit()为退出中断服务函数,用来通知内核中断服务已经结束,可以进行调度。OSIntEnter()和OSIntExit()要成对使用,在这两个函数之间,任务不能被调度。C/OS-II在时间管理上,主要是在任务的延时、取消延时、设置和获取系统时间等方面提供服务。与时间管理有关的函数主要有5个:OSTimeDly()OSTimeDlyHMSM()OSTimeDlyResmue()/由其他任务唤醒延迟未满的任务OStimeGet()/获得OSTime的当前值OSTimeSet()/设置OSTime的当前值使用上述函数,必须
154、通过设置OS_CFG.H中的一些配置常量。设置如表10-1所示。10.4C/OS-IIC/OS-II中断和时间管理中断和时间管理10.4C/OS-IIC/OS-II中断和时间管理中断和时间管理时间管理函数在OS_CFG.H中置1允许相应函数OSTimeDly()OSTimeDlyHMSM()OS_TIME_DLY_HMSN_ENOSTimeDlyResmue()OS_TIME_DLY_RESUME_ENOStimeGet()OS_TIME_GET_SET_ENOSTimeSet()OS_TIME_GET_SET_EN表10-1时间管理函数设置表10.4C/OS-IIC/OS-II中断和时间管理
155、中断和时间管理C/OS-II的时间管理函数的的时间管理函数的功能功能OSTimeDly():任务延时,除了空闲任务之外的所有任务须在任务中合适的位置调用该函数,使当前任务的运行延迟一段时间并进行一次任务调度,以让出CPU的使用权。OSTimeDlyHMSM():按时分秒延时,该函数与函数OSTimeDly()一样,在结束前也会引发一次调度。OSTimeDlyResmue():取消任务的延时,延时的任务可以通过在其他任务中调用该函数取消延时而进入就绪状态。如果任务比正在运行的任务优先级别高,则会立即引发一次任务调度。OStimeGet():获取系统时间,记录系统上电后或时钟重新设置后的时钟计数。
156、OSTimeSet():设置系统时间,设置当前系统时钟数值。10.5C/OS-IIC/OS-II任务之间的通信与同步任务之间的通信与同步系统中多个任务运行时,需要互相无冲突地访问同一个共享资源,或者需要互相支持和依赖,甚至还要互相限制和制约,才保证任务的顺利运行。为了实现各任务之间的合作和无冲突的运行,在各任务之间必须建立一些制约关系。任务之间这种制约性的合作运行机制叫做任务间的同步任务间的同步。任务间的同步依赖于任务间的通信。在C/OS-II中,使用消息邮箱消息邮箱和消息队列消息队列这些被称作事件的中间环节来实现任务间的通信。10.5C/OS-IIC/OS-II任务之间的通信与同步任务之间的
157、通信与同步事件控制块事件控制块C/OS-II使用事件控制块来描述诸如信号量、邮箱和消息队列等事件。事件控制块结构如图所示:10.5C/OS-IIC/OS-II任务之间的通信与同步任务之间的通信与同步事件控制块事件控制块C/OS-II有4个对事件控制块进行基本操作的函数以供操作信号量、邮箱、消息队列等事件的函数来调用。事件控制块的初始化函数:调用OSEventWaitListInit()函数可对事件控制块进行初始化。使任务进入等待状态的函数:OS_EventTaskWait()使一个正在等待任务进入就绪状态的函数:OS_EventTaskRdy()使一个等待超时的任务进入就绪状态的函数:OS_E
158、ventTo()10.5C/OS-IIC/OS-II任务之间的通信与同步任务之间的通信与同步消息邮箱消息邮箱如果任务与任务之间要传递一个数据,那么为了适应不同数据的需要,最好在存储器中建立一个数据缓冲区,把要传递的数据放在该缓冲区中,即可实现任务间的数据通信。如果把数据缓冲区的指针赋给一个事件控制块的成员OSEventPrt,同时使事件控制块的成员OSEventType为常数OS_EVENT_TYPE_MBOX,则该事件控制块就叫做消息邮箱消息邮箱。10.5C/OS-IIC/OS-II任务之间的通信与同步任务之间的通信与同步消息邮箱消息邮箱对消息邮箱的操作主要有四种:创建消息邮箱,消息邮箱发送
159、消息,请求消息邮箱,查询邮箱状态。10.5C/OS-IIC/OS-II任务之间的通信与同步任务之间的通信与同步消息队列消息队列消息队列由三部分组成:事件控制块、消息队列和消息。当把事件控制成员OSEventType的值设为OS_EVENT_TYPE_Q时,该事件控制块描述的就是一个消息队列消息队列。消息消息队列的操作队列的操作创建消息队列:创建一个消息队列首先需要定义一个指针数组,然后把各个消息数据缓冲区的首地址存入该数组中,最后再调用OSQCreate()创建消息队列。请求消息队列:请求消息队列的目的是为了从消息队列中获取消息。任务请求消息队列需要调用函数OSPend()。10.6C/OS-
160、IIC/OS-II系统移植系统移植处理器的C编译器能产生可重入型代码处理器支持中断,并且能产生定时中断(通常为10100Hz),这是由于C/OS-II中通过处理器的定时中断来实现多任务之间的调度。在程序中可以打开或者关闭中断处理器支持能够容纳一定量数据的硬件堆栈处理器有将堆栈指针和其他CPU寄存器存储和读出到堆栈(或者内存)的指令。C/OS-II移植条件移植条件基于RAM7内核的LPC2220处理器完全满足C/OS-II的移植要求。书中主要介绍如何将C/OS-II移植到LPC2220处理器上。10.6C/OS-IIC/OS-II系统移植系统移植C/OS-II移植移植过程过程10.6C/OS-I
161、IC/OS-II系统移植系统移植C/OS-II移植测试移植测试移植测试包含两个步骤:首先确保C编译器、汇编编译器及连接器正常工作;接下来在C/OS-II操作系统基础上实现多任务机制。10.6C/OS-IIC/OS-II的通信开发的通信开发C/OS-II系统系统CAN总线开发总线开发CAN总线是一种开放式、数字化、多节点通信的控制系统局域网络,适用于分布式控制和实时控制的串行通信网络。CAN总线具有通信速率高、开放性好、报文短、纠错能力强、系统架构成本低等特点。CAN总线采用差分信号传输,通常情况下只需要两根信号线(CAN-H和CAN-L)就可以正常的通信。有时可用到屏蔽地(CAN-G),用于屏
162、蔽干扰信。10.6C/OS-IIC/OS-II的通信开发的通信开发C/OS-II系统系统CAN总线开发总线开发图10-7CAN总线位电平特点10.6C/OS-IIC/OS-II的通信开发的通信开发STM32处理器的处理器的CAN模块模块STM32处理器内置有控制器局域网(bxCAN)模块,bxCAN是基本扩展控制器局域网(BasicExtendedCAN)的缩写,它支持CAN2.0A和CAN2.0B两种协议标准。bxCAN模块有3个主要的工作模式:初始化、正常和睡眠模式。3个工作模式状态切换如图10-8所示。10.6C/OS-IIC/OS-II的通信开发的通信开发C/OS-II系统系统CAN总
163、线开发总线开发10-8bxCAN模块工作模式状态图10.6C/OS-IIC/OS-II的通信开发的通信开发C/OS-II系统系统CAN总线开发总线开发CAN外设相关库函数由一组API(ApplicationProgrammingInterface,应用编程接口)驱动函数组成,这组函数覆盖了bxCAN模块所有功能。CAN_DeInit();CAN_Init();CAN_FilterInit();CAN_StructInit();CAN_ITConfig();CAN_FIFORelease();CAN_TransmitStatus();CAN_CancelTransmit();CAN_Sleep(
164、);CAN_MessagePending();CAN_Receive();CAN_WakeUp();CAN_ClearITPendingBit();CAN_Transmit();CAN_ClearFlag();CAN_GetFlagStatus();CAN_GetITStatus();10.6C/OS-IIC/OS-II的通信开发的通信开发C/OS-II系统系统以太网以太网开发开发以太网是局域网(LocalAreaNetwork,LAN)的主要互联技术,可实现局域网内的嵌入式器件与互联网的连接,是嵌入式系统应用的标准网络技术。嵌入式系统的硬件资源非常有限,因为必须使用小型协议栈。在C/OS-I
165、I系统上引入了一些小型化的TCP/IP协议栈,这种协议栈有很多,LwIP和IP是其中最常用的两种。LwIP实现了较为完备的IP,ICMP,UDP,TCP协议,具有超时间估算、快速恢复和重发、窗口调整等功能LwIP协议在C/OS操作系统中的实现主要由4个部分组成:信号量、消息队列、定时器函数和创建新线程函数。10.6C/OS-IIC/OS-II的通信开发的通信开发C/OS-II系统系统以太网以太网开发开发sys_sem_t信号量LwIP中需要使用信号量通信,所以在sys_arch中应实现信号量结构体和处理函数:structsys_sem_t。sys_mbox_t消息LwIP使用消息队列来缓冲、传
166、递数据报文,因此要在sys_arch中实现消息队列结构sys_mbox_t,以及相应的操作函数。sys_arch_timeout函数这个函数的功能是返回目前正处于运行态的线程所对应的timeouts队列指针。sys_thread_new创建新线程LwIP可以是单线程运行,也可以多线程运行。为提高效率并降低编程复杂度,就需要用户实现创建新线程的函数。小结小结本章介绍了C/OS-II的特点、结构,C/OS-II操作系统的任务管理及内存管理。介绍C/OS-II的中断和时间管理,任务之间的同步与通信。并对C/OS-II系统移植进行介绍,包括移植条件、移植过程以及移植测试。将C/OS-II系统应用于通信
167、开发领域,分析CAN总线和以太网通信在C/OS-II系统的开发。第11章 嵌入式操作系统Windows CE目目 录录 11.1嵌入式操作系统WindowsCE概述11.2WindowsCE体系结构11.3WindowsCE进程和线程11.4WindowsCE存储系统11.5WindowsCE的网络通信开发11.1嵌入式操作系统嵌入式操作系统WindowsCE概述概述WindowsCE自1996年微软推出WindowsCE1.0,一共经历了7个不同的版本:WindowsCE1.0,WindowsCE2.0,WindowsCE3.0,WindowsCE4.0-4.2,WindowsCE5.0,W
168、indowsCE6.0,WindowsCE7.0WindowsCE有以下几个特征:11.1嵌入式操作系统嵌入式操作系统WindowsCE概述概述WindowsCE是一种组件化的实时操作系统,适用于各种占用空间小的消费类和企业级设备。覆盖从消费电子产品到任务关键型工业控制器等众多领域。主要包括以下三个领域:11.2WindowsCE体系结构体系结构WinCE采用了典型的分层结构,在WindowsCE5.0的文档中,微软公司将其分为四个层次,从上到下依次为:硬件层、OEM层、操作系统层、应用程序层。其结构模型如图所示:11.2WindowsCE体系结构体系结构硬件层硬件层是指由CPU、存储器、I/
169、O端口、扩展板卡等组成的嵌入式硬件系统,是操作系统必不可少的载体。硬件层的结构和性能直接影响到系统的功能和结构。OEM层OEM(OriginalEquipmentManufacturer)层位于硬件层和操作系统层之间,是一个与硬件密切相关的代码层。操作系统层操作系统层是整个嵌入式系统的核心。由内核,图形、窗口、时间管理子系统,文件系统,设备管理器,核心动态链接库以及驱动程序这几个组件模块构成。应用程序层应用程序层位于WinCE分层模型的最顶层。主要由Internet客户服务、WinCE应用程序、客户应用程序、用户界面和国际化支持构成。11.3WindowsCE进程和线程进程和线程Windows
170、CE进程进程进程是应用程序的执行实例,每个进程都是由私有的虚拟地址空间、代码、数据和其他各种系统资源组成。进程由三个部分组成:程序、数据、PCB三个部分。系统进程:常见的系统进程有:NK.exe;Filesys.dll;GEWS.dll;device.dll;explorer.dll;services.exe;repllog.exe;rapisrv.exe。与进程相关的API函数:创建进程函数CreateProcess();结束进程函数ExitProcess(),ExitThread(),TerminateProcess();结束进程时,WinCE的操作:终止该进程内所有的线程;释放用户对象和
171、GDI对象;关闭所有内核对象,进程退出;内核对象计数器减1;获取进程终止状态:GetExitProcess()函数11.3WindowsCE进程和线程进程和线程WindowsCE线程线程线程是进程内部的一个执行单元。系统创建好进程之后,实际上就启动执行了该进程的主要执行线程。线程是进程中的一个实体,是被系统独立调度和分派的基本单位。WincCE中有一系列的函数来完成线程的创建、挂起等相关工作。创建一个新的线程:CreateThread()函数;挂起制定的线程:SuspendThread()函数;结束线程的挂起状态:ResumeThread()函数;线程终结自身的执行:ExitThread()函
172、数;强行终止某一线程:TerminateThread()函数11.3WindowsCE进程和线程进程和线程WindowsCE线程调度线程调度线程调度采用基于优先级的时间片轮转算法,WindowsCE支持抢占式调度,高优先级会抢占低优先级的线程。具有相同优先级的线程平均占有CPU时间片(量程)。线程优先级划分为256个,具体划分如下表所示:优先级范围分配对象096高于驱动程序的程序97152基于WindowsCE的驱动程序153247低于驱动程序的程序248255普通的应用程序11.3WindowsCE进程和线程进程和线程WindowsCE线程调度线程调度与线程调度有关的API函数有:读取普通线
173、程优先级:intGetThreadPriority(HANDLEhThread);设置普通线程优先级:BOOLSetThreadPriority(HANDLEhThread,intnPriority);获取实时线程优先级:intCeGetThreadPriority(HANDLEhThread);设置实时线程优先级:BOOLCeSetThreadPriority(HANDLEhThread,intnPriority;查询线程的时间片:DWORDCeSetThreadQuantum(HANDLEhThread);设置线程的时间片:BOOLCeSetThreadQuantum(HANDLEhThr
174、ead,DWORDdwTime)。11.3WindowsCE进程和线程进程和线程WindowsCE线程同步线程同步线程同步可以保证在一个时间内只有一个线程对某个资源有控制权。还可以使得有关联交互作用的代码按一定的顺序执行。同步对象同步对象有:Event(事件)、Mutex(互斥对象)、Semaphores(信号量)、Critical_section(临界区)。这些对象有两种状态:通知(signaled)或未通知(notsignaled)状态。线程通过同步等待函数等待函数来使用同步对象。一个同步对象在同步等待函数被调用时被指定,调用同步函数的线程被阻塞(blocked),直到同步对象获得通知。被
175、阻塞的线程不占用CPU时间。11.3WindowsCE进程和线程进程和线程WindowsCE线程同步线程同步当一个线程需要通知其他线程发生了什么时,可用事件事件同步对象,首先,创建一个事件对象,该函数返回一个事件句柄。然后,可以设置或复位一个事件对象,最后,使用CloseHandle销毁创建的事件对象。对应的函数有:创建事件函数CreateEvent(),把Event同步对象设置为通知状态的函数SetEvent(),把Event同步对象设置为通知未状态的函数ResetEvent()。在一个线程访问某个共享资源时,互斥对象互斥对象(Mutex)能够保证其他线程不能访问这个资源。首先调用Creat
176、eMutex(NULL,是否属于该线程,互斥对象名)创建互斥对象,然后调用等待函数,最后调用ReleaseMutex释放互斥对象。11.3WindowsCE进程和线程进程和线程WindowsCE线程同步线程同步临界区临界区对象能保证在临界区内所有被访问的资源不被其他线程访问,知道当前线程执行完临界区代码为止。首先定义一个临界区对象,然后初始化该对象,在进入临界区代码前调用EnterCriticalSection函数,这样其他线程都不能执行该代码段。若它们试图执行就会被阻塞。完成临界区的执行后,调用LeaveCriticalSection函数,其他线程可以继续执行该段代码。如果不调用该函数,其他
177、的线程将无限期等待。最后删除临界区。信号量信号量(Semaphore)用于限制资源访问数量,其中包含一个引用计数、一个当前可用资源数和一个最大可用资源数。如果当前可用资源数大于0,信号量对象对于通知状态;当可用资源数等于0,信号量对象处于未通知状态。使用CreateSemaphore()和ReleaseSemaphore()函数创建和释放信号量。11.3WindowsCE进程和线程进程和线程进程间通信进程间通信进程间通信是指不同进程之间进行数据共享和数据交换。WindowsCE提供了多种进程间的通信方式,如粘贴板、共享堆、文件映射、动态数据交换、匿名管道、命名管道、邮件箱、对象连接与嵌入、远程
178、过程调用、Sockets、WM_COPYDATA消息等。文件映射能使进程把文件内容当做进程地址区间一块内存那样来对待。因此,进程不必使用文件I/O操作,只需简单的指针操作就可读取和修改文件的内容。WindowsCE允许一个应用程序或驱动程序创建自己的消息队列。消息队列既可作为在线程之间传递数据的工具,也可作为线程之间同步的工具。它的优点是只需很小的内存,一般只用于点到点的通信。11.4WindowsCE进程和线程进程和线程内存管理WindowsCE是一个层次化的操作系统,内存以层的结构管理,上层通过下层提供的接口使用其服务,而所有的程序又可以根据不同的需要与各层进程接口通信,以满足不同的存储需
179、求。WindowsCE的内存结构如图所示:11.4WindowsCE存储系统存储系统内存管理WindowsCE系统中,物理内存包括:ROM(只读存储器)和RAM(随机存储器)、NOR以及NAND。WindowsCE有物理地址和虚拟地址两种,当系统刚刚启动还没加载MMU(存储管理单元)时,只能使用物理地址进行相关访问。当启动了MMU后,WindowsCE便建立了物理地址和虚拟地址之间映射,也正是这种映射关系,才使得WindowsCE虚拟内存模型得以建立。11.4WindowsCE存储系统存储系统内存管理虚拟内存是微处理器可访问或可寻址的内存空间,这些存储空间并没有真正与物理内存相联系,而是到确实
180、需要资源时才实际调配物理内存。由于虚拟内存没有与实际的物理内存对应,仅为一种内存管理策略,所以称为虚拟内存。虚拟内存比系统中总的物理内存大得多,WinCE能管理的最大物理内存是512M,而能管理的最大虚拟地址空间是4GB。WinCE以页为单位管理内存,它将4GB的虚拟地址空间划分为多个页面。虚拟内存页面存在三种状态:FREE,代表页面可以被分配;RESERVED,代表虚拟地址被保留,不能再分配,也不能被使用;COMMITTED(提交),页面已经被映射到物理内存。11.4WindowsCE存储系统存储系统内存管理当WinCE的MMU被加载时,4GB的虚拟地址空间就被创建。WindowsCE内存模
181、型如图所示:11.4WindowsCE存储系统存储系统内存管理WindowsCE的内存分配如下表所示:地址范围用途0x000000000x41ffffff由所有应用程序公用0x420000000x7fffffff所有进程共享内存区域0x800000000x9fffffff静态映射的物理内存,可缓存0xa00000000xbfffffff静态映射的物理内存,不可缓存0xc00000000xc1ffffff系统保留0xc20000000xc3ffffff内核程序NK.exe使用的内存空间0xc40000000xdfffffff用户定义的静态虚拟地址空间,不可缓存0xe00000000xffffff
182、ff内核使用的虚拟地址空间11.4WindowsCE存储系统存储系统文件管理与注册表文件管理与注册表是WinCE的重要组成部分,在操作平台的定制、设备驱动开发、应用程序开发中都要涉及文件和注册表。通过文件系统API函数对其进行访问,函数分为以下几类:11.4WindowsCE存储系统存储系统u文件管理与注册表注册表是一种信息数据库,应用程序、驱动程序以及管理程序使用注册表来标识自己,检索所需的各种信息。注册表按照键(Key)和记录项(Entries)的树形结构组织。WinCE的注册表支持4个根键:HKEY_LOCAL_MACHINE;HKEY_CURRENT_USER;HKEY_CLASSES
183、_ROOT;HKEY_USERS.访问或修改注册表的步骤如下:使用RegOpenKeyEx或RegCreateKeyEx函数打开要修改的注册表项。用RegQueryValueEx函数读取注册表项的值,或用RegSetValueEx函数修改注册表项的值;用RegEnumValue函数枚举记录项,或用RegEnumKeyEx函数枚举子键;用RegDelete函数删除记录项,或用RegDeleteKey函数删除子键。用RegCloseKey函数关闭打开的注册表键。11.5WindowsCE的网络通信开发的网络通信开发WindowsCE提供了支持广泛的硬件和通讯技术,WindowsEmbeddedCE
184、6.0对网络和通信提供了很全面的支持,包括有线网络和无线网络,并且可以根据应用需要,还可以进行再开发。基于WinCE的网络通信系统可靠、数据吞吐量大、实时性强的数据传输,重用性好,可以移植到不同的应用系统中。WindowsCE网络通讯支持通过串行口与SLIP或PPP连在一起的网络、局域网(LAN)和用TCP/IP协议的无线网络。WindowsCE支持串行通信串行通信和网网络通信络通信两种基本的通信方式。当在发送器和接受器之间有一个一对一连接时,就可以采用串行通信,数据简单地从一个设备流到另一个设备。网络通信允许给定一个目标地址,传送到多台设备中的一台,提供了高度的可靠性以防止数据丢失。Wind
185、owsCE通信简介WinSock和IRSock11.5WindowsCE的网络通信开发的网络通信开发WinSock是Microsoft为Windows操作系统提供的一个双向兼容的编程接口,WinSock实现了对网络细节的屏蔽,它是基于UNIX的套接字(Socket)而建立的。一个套接字(Socket)对象就是一个通信的节点,通过套接字可以在网络上发送或接受数据包。使用WinSock可以很容易实现网络通信功能,且WinSock是线程安全的。WinSock定义了两种类型的套接字,一种是流套接字(StreamSocket),另一种是数据报套接字(DatagramSocket)。IrSock是WinS
186、ock的一个扩展,它能应用IrDA协议加强基于Socket的红外通讯。尽管IrSock这个应用工具和传统的WinSock在几个函数的用法上有一些不同,但是在许多方面它们都是相同的。UDP编程11.5WindowsCE的网络通信开发的网络通信开发相对于TCP而言,UDP(UserDatagramProtocal)提供一种无连接,不可靠的传输服务。通信双方在交换数据前不需要建立连接。UDP编程简单的,其服务器和客户的编程流程非常相似,且是对称的。创建UDP应用程序(包括服务器和客户端)需要经历以下步骤:调用WSAStartup()函数,启动WinSock2.2动态链接库ws2.dll。调用sock
187、et()函数,创建一个新的无连接套接字。调用bind()函数,为步骤2)创建的套接字命名。调用recvfrom()函数,从无连接的套接字上读取数据。调用sendto()函数,向指定的无连接套接字发送数据。调用closesocket()函数,关闭套接字。调用WSACleanup()函数,终止动态链接库ws2.dll的使用。TCP编程11.5WindowsCE的网络通信开发的网络通信开发TCP(TransportControlProtocol)提供可靠的数据传输机制,当发送进程必须知道接收进程是否成功接收了所发射的数据时,应使用TCP。实现TCP客户的步骤如下:1)调用WSAStartup()函数
188、,启动WinSock2.2动态链接库ws2.dll。2)调用socket()函数,创建一个新的流式套接字。3)调用connect()函数,建立与TCP服务器的连接。4)调用send()函数,向TCP服务器发送数据5)调用recv()函数,从TCP服务器接收数据6)调用closesocket()函数,关闭套接字。7)调用WSACleanup()函数,终止动态链接库ws2.dll的使用。TCP编程11.5WindowsCE的网络通信开发的网络通信开发实现TCP服务器的步骤如下:1)调用WSAStartup()函数,启动WinSock2.2动态链接库ws2.dll。2)调用socket()函数,创建
189、一个新的流式套接字,用于侦听客户的连接。3)调用bind()函数,将步骤2)创建的套接字与本机的IP地址关联起来。4)调用listen()函数,侦听来自客户端的连接请求。5)一旦侦听到TCP客户的连接请求,调用accept()函数接受客户的连接。同时accept函数返回一个连接客户的套接字,用于和这个客户通信。服务器可以与多个客户建立连接。6)调用recv()函数,从连接客户的套接字上接收数据7)调用send()函数,箱指定的连接套接字发送数据。8)调用closesocket()函数,关闭套接字。9)调用WSACleanup()函数,终止动态链接库ws2.dll的使用。FTP编程11.5Win
190、dowsCE的网络通信开发的网络通信开发WinCE利用TCP/IP网络协议实现了一个简化的文件传输协议(FileTransferProtocol,FTP)服务器。如果操作系统定制了FTP服务器,则它作为Services.exe模块的一种服务被加载到系统中,利用FTP可以执行下列任务:使用TCP/IP网络连接,在WinCE设备和桌面系统计算机上传输文件。在FTP根目录下产生虚拟目录使用互联网配置工具执行各种配置任务在桌面系统上,使用WindowsFTP客户软件或第三方的客户软件访问WinCE的FTP服务器。函数名说明InternetOpen初始化应用程序对WinInet函数的访问Internet
191、Connect建立一个FTP会话InternetCloseHandle关闭WinInet句柄或子句柄FtpCommand向FTP服务器传递一个任意的命令FtpCreateDirectory在FTP服务器上产生一个目录FtpDeleteFile在FTP服务器上删除一个文件FtpFindFirstFile在当前的目录上启动一个文件查找任务InternetFindNextFile继续由FtpFindFirstFile启动的文件查找任务FtpGetCurrentDirectory返回服务器上客户的当前目录FtpGetFile从服务器上下载文件FtpOpenFile在服务器上启动文件访问,如读、写等Ft
192、pPutFile向服务器上传文件FtpRemoveDirectory删除一个服务器上的目录FtpRenameFile更名服务器上的文件FtpSetCurrentDirectory改变服务器上客户的当前目录11.5WindowsCE的网络通信开发的网络通信开发表11-3WinCE支持的FTP编程函数小结小结本章介绍了WindowsCE的概念以及发展历程、应用领域,详细阐述WindowsCE的体系结构,WindowsCE的线程和进程及存储系统。并且介绍了WindowsCE的网络开发,通过学习本章可以了解WindowsCE操作系统的功能特点、系统结构、内存管理模式以及网络通信的开发和应用。第12章
193、嵌入式操作系统Linux目目 录录 12.1概述12.2Linux体系结构12.3Linux系统功能12.4Linux的驱动开发12.5Linux的网络通信开发12.1概述概述Linux是一个类Unix的操作系统,是一个完整的多用户多任务操作系统,因此不需要先安装DOS或其他操作系统,就可以进行直接安装。Linux可以运行在多种硬件平台上,如x86、SPARC等处理器的平台以及嵌入式处理器等。Linux操作系统的源代码完全公开。目前Linux在中国发行的版本主要有RedHat(红帽子)、RedFlag(红旗)、OpenLinux、TurboLinux等。12.1概述概述Linux的组成部分的组
194、成部分Linux包括下列重要部分:Linux内核,LinuxShell、文件系统、应用程序。12.1概述概述Linux的特点的特点Linux与其他操作系统的区别:Linux是从一个成熟的操作系统发展而来,而其他操作系统如Windows等,都是自成体系,无对应相依托的操作系统。Linux是一种开放的、免费的,可以自由传播的操作系统,而其他操作系统都是封闭的系统,需要有偿使用。Linux内核具有其他操作系统无法比拟的稳定性和高效性,占用系统资源较少,具有良好的兼容性,强大的可移植性,高度的稳定性,漂亮的用户界面等。12.1概述概述Linux的特点的特点12.2Liunx体系结构体系结构嵌入式操作系
195、统的体系结构嵌入式操作系统的体系结构嵌入式操作系统分成3大类:宏内核结构、分层结构和微内核结构。宏内核结构:代码执行效率高,可移植性和扩展性差分层结构:支持软件的重用,可移植性和可替换性好,开发维护简单,但是系统效率低,底层修改时会产生连锁反应。微内核结构:内核小,可扩展性好,安全性高,内核效率低12.2Liunx体系结构体系结构Linux系统内核结构系统内核结构Linux是依据宏内核结构实现的。其内核包含了5个子系统:进程调度,内存管理,虚拟文件系统,网络接口,进程间通信。体系结构如图所示。12.2Liunx体系结构体系结构Linux系统数据结构系统数据结构在linux的内核的实现中,有一些
196、数据结构使用频度较高。task_struct.数据结构task_struct代表一个进程,当建立新进程的时候,Linux为新进程分配一个task_struct结构,然后将指针保存在task数组中。调度程序一直维护着一个current指针,他指向当前正在运行的进程。Mm_structmm_struct结构代表一个进程的虚拟内存,该结构实际上包含了当前执行映像的有关信息,并且包含了一组指向vm_area_struct结构的指针,vm_area_struct结构描述了虚拟内存的一个区域。Inode索引节点(inode)代表虚拟文件系统(VFS)中的文件、目录等。12.2Liunx体系结构体系结构Li
197、nux内核源代码的结构内核源代码的结构Linux内核源代码位于/usr/src/linux目录下。/include子目录包含了建立内核代码时所需的大部分包含文件,这个模块利用其他模块重建内核;/init子目录包含了内核的初始化代码,这是内核工作的开始的起点;/arch子目录包含了所有硬件结构特定的内核代码;/drivers子目录包含了内核中所有的设备驱动程序;/fs子目录包含了所有的文件系统的代码。如:ext2,vfat等;/net子目录包含了内核的连网代码;/mm子目录包含了所有内存管理代码;/ipc子目录包含了进程间通信代码;/kernel子目录包含了主内核代码。12.3Liunx系统功能
198、系统功能内存管理内存管理基本功能包括:内存管理、进程管理、文件管理和设备管理请求分页机制Linux系统采用了虚拟内存管理机制,即交换和请求分页存储管理技术。分页存储管理的基本方法是:逻辑空间分页内存空间分页逻辑地址表示内存分配原则页表12.3Liunx系统功能系统功能内存管理内存管理请求分页的基本思想请求分页存储管理技术是在简单分页技术基础上发展起来的,二者的根本区别在于请求分页,提供虚拟存储器。它的基本思想是:当我们要执行一个程序时才把它换入内存;但并不把全部程序都换入内存,而是用到哪一页时才换入它。这样,就减少了兑换时间和所需内存数量,允许增加程序的道数。12.3Liunx系统功能系统功能
199、内存管理内存管理进程的虚存空间在x86平台上的Linux系统中,地址码为32位,每个进程的虚存空间可达4GB,进程的虚存空间如图所示。12.3Liunx系统功能系统功能内存管理内存管理内存页的分配与释放当一个进程开始运行时,系统要为其分配一些内存页;而当该进程结束运行时,要释放其所占用的内存页。Linux系统采用两种方法来管理内存页:位图和链表。利用位图可以记录内存单元的使用情况;利用链表可以记录已分配的内存单元和空闲的内存单元。12.3Liunx系统功能系统功能内存管理内存管理内存页的分配与释放Linux系统的物理内存页分配采用链表和位图相结合的方法,如图所示12.3Liunx系统功能系统功
200、能进程管理进程管理在Linux系统中,进程有五种状态,进程状态的变化关系如图所示。12.3Liunx系统功能系统功能进程管理进程管理进程是由生命周期的动态过程,内核能对它们实施操作,这主要包括:创建进程、撤销进程、挂起进程、执行进程等。创建进程Linux系统中,除初始化进程外,其他进程都是同系统调用fork()和clone()创建的。u挂起进程u终止进程u执行进程12.3Liunx系统功能系统功能进程管理进程管理Linux内核的调度方式采用“抢占式优先级”方式,即:当进程在用户模式下运行时,不管是否自愿,在一定条件下,内核就可以暂时剥夺其运行而调度其他进程进入运行。在以下情况出现时,Linux
201、内核会进行进程调度:(1)当前进程调用系统调用nanosleep()或pause(),使自己进入睡眠状态;(2)进程终止;(3)在时钟中断处理程序执行过程中,发现当前进程连续运行的时间过长;(4)当唤醒一个睡眠进程时,发现被唤醒的进程比当前进程更有资格运行;(5)一个进程通过执行系统调用来改变调度策略或者降低自身的优先权,从而引起立即调度。12.3Liunx系统功能系统功能文件系统文件系统文件系统是对文件存储器空间进行组织和分配,负责文件的存储并对存入的文件进行保护和检索的系统。Linux内核含有一个虚拟文件系统层。如图所示:12.3Liunx系统功能系统功能设备管理设备管理Linux系统采用
202、设备文件统一管理硬件设备。在Linux系统中,硬件设备分为三种:块设备、字符设备和网络设备。图中为设备驱动的分层结构。12.4Liunx的驱动开发的驱动开发Liunx的驱动概述的驱动概述Linux系统内核通过设备驱动与外围设备进行交互,设备驱动程序是Linux内核的一部分,它是一组数据结构和函数,这些数据结构和函数通过定义接口控制一个或多个设备。设备驱动程序有如下特点:1)驱动程序是与设备相关的;2)驱动程序的代码由内核统一管理;3)驱动程序在具有特权级别的内核态下运行;4)设备驱动程序是输入/输出系统的一部分;5)驱动程序是为某个进程服务的,其执行过程仍处在进程运行的过程中,即处于进程的上下
203、文中;6)若驱动程序需要等待设备的某种状态,它将阻塞当前进程,把进程加入到该设备的等待队列中。12.4Liunx的驱动开发的驱动开发Liunx设备驱动设备驱动程序的基本结构程序的基本结构Linux的设备驱动程序可以分为3个主要组成部分:自动配置和初始化负责监控所要驱动的硬件设备是否存在和能否正常工作,仅在初始化时被调用一次;服务于I/O请求的子程序又称为驱动程序的上半部分。这部分程序在执行时,由用户态变成了内核态中断服务子程序又称为驱动程序的下半部分。在系统调用中断服务子程序时,都带有一个或多个参数,以唯一标识请求服务的设备。12.4Liunx的驱动开发的驱动开发Liunx设备驱动设备驱动分类
204、分类Linux操作系统中,将设备分为三类:字符设备,块设备和网络设备。12.4Liunx的驱动开发的驱动开发Liunx设备的控制方式设备的控制方式Linux操作系统中,处理器与外设之间传输数据的控制方式通常有3种:查询方式、中断方式和直接内存存取(DAM)方式。12.4Liunx的驱动开发的驱动开发Liunx设备驱动开发流程设备驱动开发流程设备驱动程序操作分为以下5类。12.5Liunx的网络通信开发的网络通信开发网络协议参考模型网络协议参考模型Linux具有网络功能完善,内含TCP/IP网络协议的优点,已经广泛应用于服务器领域。国际标准组织(ISO)指定的OSI模型将网络通信的工作分为7层,
205、它们是应用层、表示层、会话层、传输层、网络层、数据链路层及物理层。TCP/IP协议将OSI的7层简化为4层,更有利于实现和使用,它们分别是:应用层、传输层、网络互联层以及网络接口层。12.5Liunx的网络通信开发的网络通信开发TCP和和UDP传输控制协议(TCP)处于传输层,实现了从一个应用程序到另一个应用程序的数据传输。应用程序通过目的地址和端口号来区分接收数据的不同应用程序,TCP协议通过三次握手来初始化。UDP协议是一种无连接的协议,不需要通过三次握手来建立一个连接。由于UDP协议并不需要建立一个明确的连接,UDP服务器只要在绑定的端口上等待客户机发送过来的UDP数据,并对其进行处理和
206、响应即可。因此建立UDP应用要比建立TCP应用简单得多,相比TCP协议,UDP耗费的系统资源要少,而且能更好地解决实时性问题。12.5Liunx的网络通信开发的网络通信开发TCP通信编程通信编程Socket(套接字)接口是TCP/IP网络的API,它定义了许多函数和例程,使用TCP协议的Socket编程流程如图所示。12.5Liunx的网络通信开发的网络通信开发UDP通信编程通信编程UDP服务器端程序设计使用socket()来建立一个UDPSocket,第二个参数为SOCK_DGRAM。初始化sockaddr_in结构的变量,并赋值。使用bind()把上面的Socket和定义的IP地址和端口绑
207、定。这里检查bind()是否执行成功,如果有错误就退出。这样可以防止服务程序重复运行的问题。进入无线循环程序,使用recvfrom()进入等待状态,直到接收到客户程序发送的数据,就处理收到的数据,并向客户程序发送反馈。12.5Liunx的网络通信开发的网络通信开发UDP通信编程通信编程UDP客户端程序设计初始化sockaddr_in结构的变量,并赋值;使用socket()来建立一个UDPsocket,第二个参数为SOCK_DGRAM;使用conncet()来建立与服务程序的连接;向服务程序发送数据,因为使用连接的UDP,所以用write来代替sendto();接收服务程序发回的数据,同样使用r
208、ead()来替代recvfrom();处理接收到的数据。小结小结297本章介绍了Linux的体系结构,详细说明了Linux操作系统的功能内存管理、进程管理、文件系统、设备管理。介绍了Linux下设备驱动程序的开发,结合Linux强大的网络功能,介绍Linux通信开发过程。第13章 嵌入式移动手机操作系统Android目目 录录 13.1概述13.2Android的开发工具13.3Android应用程序13.4Android程序的用户界面开发13.5Android的网络通信开发13.1概述概述Android的本义是指“机器人”,它是Google公司推出的一种基于Linux平台的开源操作系统,主要
209、分为手机操作系统和平板电脑操作系统。Android有以下的优点:13.1概述概述Android核心功能模块如图所示:13.2Android的开发工具的开发工具系统需求系统需求操作系统Android应用程序可以在所有主流操作系统(Windows、Mac、Linux)上开发。包括WindowsXP,Vista或者Windows7;MacOSX10.4.8或之后版本Linux。必要的开发工具需要安装一些Android开发环境所需的程序工具,包括JDK5,JDK6或者更高版本,EclipseIDE,ADT,AndroidSDK。13.2Android的开发工具的开发工具搭搭建建Android开开发环境
210、发环境Android开发环境的搭建可以分为6个步骤13.3Android应用程序应用程序Android应用程序是Android系统智能手机的主要构成部分,其由以下几个部分构成:活动(Activity)、广播接收器(BroadcastReceiver)、服务(Service)、内容提供者(ContentProvider)。一个Android应用必定包含至少一个Activity,其他的3个组成部分为可选部分。13.3Android应用程序应用程序Android文件资源文件资源Android资源文件主要包含字体、颜色、尺寸、图片、主题样式、菜单等。res目录是资源目录,有三个子目录用来保存Andro
211、id程序所有资源:drawable:保存图像文件layout:保存与用户界面相关的布局文件values:保存颜色,风格,主题和字符串等Android会为每一种资源在R类中生成一个唯一的ID,这个ID是int类型的值。Android应用程序可以通过ID直接使用这些资源。13.3Android应用程序应用程序Android应用程序构成应用程序构成Android提供了四个通用的应用程序组件。13.4Android程序的用户界面程序的用户界面开发开发用户界面(UserInterface,UI)是系统和用户之间进行信息交换的媒介,它能够使用户方便有效地操作以达成双向交互,完成相应的工作。界面控件Andr
212、oid系统的界面控件分为定制控件和系统控件。定制控件是用户独立开发的控件,或通过继承并修改系统控件后所产生的新控件。常见的系统控件包括TextView、EditText、Button、ImageButton、Checkbox、RadioButton、Spinner、ListView和TabHost。界面布局界面布局(Layout)是用户界面结构的描述,定义了界面中所有的元素、结构和相互关系。声明Android程序的界面布局有两种方法:使用XML文件描述界面布局;在程序运行时动态添加或修改界面布局。13.4Android程序的用户界面程序的用户界面开发开发Android界面布局分为以下几种:13
213、.5Android的网络通信开发的网络通信开发Android的网络基础的网络基础Android支持JDK本身的TCP、UDP网络通信API,支持使用ServerSocket和Socket来建立TCP/IP协议的网络通信,也支持基于UDP协议的网络通信,此外Android还内置了HttpClient,用来方便地发送和获取HTTP请求。Android系统有3种网络接口,包括.*(标准Java接口)、Apache接口(Org.apacheHttpComponents)和A.*(Android网络接口)。同时Android系统还可以使用浏览器webkit来进行网络访问。13.5Android的网络通信
214、开发的网络通信开发HTTP通信通信HTTP协议即超文本传送协议(HypertextTransferProtocol),是Web联网的基础,也是手机联网常用的协议之一,HTTP协议是建立在TCP协议之上的一种应用。HTTP连接是一种“短连接”、“无状态”连接,每次请求结束后都会主动释放连接。Android提供了HttpURLConnection和HttpClient接口来开发HTTP程序。HttpURLConnection接口Http通信中有两种请求方式:POST和GET。GET请求把参数放在URL字符串后面,传递给服务器,而POST方法的参数是放在Http请求中的。HttpClient接口Ht
215、tpClient是ApacheJakartaCommon下的子项目,用来提供高效、最新、功能丰富的支持HTTP协议的客户端编程工具包。13.5Android的网络通信开发的网络通信开发Socket通信通信Android与服务器的通信方式主要有两种,一种是Http通信,另一种是Socket通信。套接字(socket)是一个通信链的句柄,用于描述IP地址和端口,是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。它包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。套接字之间的连接过程分为三个步骤:服务器监听,客
216、户端请求,连接确认。13.5Android的网络通信开发的网络通信开发Socket通信通信套接字操作主要包括:创建Socket建立Socket连接至少需要一对套接字,其中一个运行于客户端,称为ClientSocket;另一个运行于服务器端,称为ServerSocket。输入/输出流Socket提供了getInputStream()和getOutputStream()来得到相应的输入(输出)流以进行读(写)操作。关闭Socket和流在Socket使用完毕后需要将其关闭,以释放资源。在关闭Socket之前,应将与Socket相关的所有输入、输出流先关闭,以释放资源。13.5Android的网络通信
217、开发的网络通信开发Wi-Fi通信通信WiFi是一种能将个人电脑和手持设备(如Pad、手机)等终端以无线方式互相连接的技术。对于WiFi操作,主要包括以下几个类和接口小结小结314本章首先概要性地介绍了Android系统,然后讲述了Android的开发工具,介绍了Android系统中应用程序开发,用户界面开发以及网络通信开发,为以后的开发之路打下扎实的基础。第14章 嵌入式工业以太网目目 录录 14.1以太网综述14.2工业以太网及其关键技术14.3嵌入式工业以太网应用实例14.1以太网综述以太网综述 317以太网及其特点以太网及其特点以太网是IEEE802.3所支持的局域网标准,最早由Xero
218、x公司开发,后经数字仪表公司、Inter公司和Xerox公司联合扩展,成为以太网标准。随着Internet的迅猛发展,以太网已成为事实上的工业标准。与目前的现场总线相比,以太网具有以下优点:应用广泛成本低廉通信速率高软硬件资源丰富可持续发展潜力大14.1以太网综述以太网综述 318以太网络系统以太网络系统载波侦听冲突检测LLC1不确认的无连接服务LLC2面向连接服务带确认的无连接服务高速传送服务14.1以太网综述以太网综述 319以太网络协议以太网络协议目前关于以太网的网络传输协议有两种架构:OSI的7层架构和TCP/IP的4层架构。OSI七层参考模型TCP/IP四层应用模型14.2工业以太网
219、及其关键技术工业以太网及其关键技术 320工业以太网及其特点工业以太网及其特点以太网以其普遍、易用和优良的技术性能,在工业控制领域获得了广泛应用,已经成为一种重要的现场总线技术和主要的工业控制网络。性能的改进和增强性能方面:抗干扰能力、环境适应性、本质安全性、网络供电特性。设备方面:网卡/适配器、集线器、交换机、路由器、网关、服务器等。协议架构的简化存在的问题与对策实时性:可以通过采用快速以太网、千兆以太网、万兆以太网、提高传输速度来解决。不确定性:可以通过有效的网络管理及其一些抗干扰措施来加以解决。连接性:可以通过采用高性能的网络接口、通信介质等措施来加以解决。14.2工业以太网及其关键技术
220、工业以太网及其关键技术 321工业以太网关键技术分析工业以太网关键技术分析随着Internet的迅猛发展,以太网已成为事实上的工业标准,TCP/IP的简单实用已为广大用户所受。但如何利用COTS(CommercialOff-TheShelf)技术来满足工业控制需,是目前迫切需要解决的问题。 可靠性 可恢复性 可维护性14.3嵌入式工业以太网应用实例嵌入式工业以太网应用实例322网口驱动及其直接通信应用网口驱动及其直接通信应用接口电路设计整 个 以 太 网 络 通 信 系 统 用 到 的 主 要 芯 片 有 80C52、 RTL8019AS、93C46(EEPROM)、74HC573(8位锁存)
221、、62256(32KB的RAM)。分配好地址空间的分配为:00H03H的地址空间用于存储RTL8019AS内配置寄存器CONFIG14的上电初始值;地址04H11H存储网络节点地址即物理地址;地址12H7FH存储即插即用的配置信息。14.3嵌入式工业以太网应用实例嵌入式工业以太网应用实例323网口驱动及其直接通信应用网口驱动及其直接通信应用直接以太网通信软件设计直接以太网通信软件设计主要是对以太网控制器为核心的网口驱动程序设计,包括:(1)以太网控制器芯片初始化具体的初始化过程为:首先进行复位操作,18H1FH共8个地址为复位端口,对该端口的读或写,都会引起RTL8019的复位。复位完成之后,
222、进行初始化,设置工作参数。(2)数据的收发通过对地址及数据口的读写来完成以太网帧的接收与发送。要接收和发送数据包都必须读写RTL8091内部16KB的RAM,并通过DMA进行读和写。14.3嵌入式工业以太网应用实例嵌入式工业以太网应用实例324嵌入式嵌入式TCP/IP协议栈移植及应用协议栈移植及应用嵌入式以太网通信应用系统实现了TCP/IP协议栈,就可以使用最少的系统资源正常地进行Web信息浏览和传输了。这里以IP协议栈为例,说明TCP/IP协议栈的移植与应用。IP协议栈可以简单地移植到多种嵌入式操作系统,适应多种嵌入式处理器。移植的时候主要对up_arch.h,uipopt.h,tapdev
223、.c这3个文件进行修改。其中,up_arch.h包含了用C语言实现的32位加法、校验和算法;uipopt.h是IP的配置文件,其中不仅包含了如IP网点的IP地址和同时可连接的最大值等设置选项,而且还有系统结构和C编译器的特殊选项;tapdev.c是为串口编写的驱动程序。14.3嵌入式工业以太网应用实例嵌入式工业以太网应用实例325嵌入式嵌入式TCP/IP协议栈移植及应用协议栈移植及应用IP的设备驱动程序接口IP内核中有两个函数直接需要底层设备驱动程序的支持。一个是uni_input()。当设置驱动程序从网络层收到一个数据包时要调用这个函数,设备驱动程序必须事先将数据包存入到uip_buf中,当
224、函数返回时,如果uip_len不为0,则表明有数据(如SYN,ACK等)要发送。另一个需要驱动程序支持的函数是uip_periodie(conn)。这个函数用于IP内核对各连接的定时轮询,因此需要一个硬件支持的定时程序周期性地用它轮询各个连接,一般用于检查主机是否有数据要发送,如有,则构造IP包。14.3嵌入式工业以太网应用实例嵌入式工业以太网应用实例326嵌入式嵌入式TCP/IP协议栈移植及应用协议栈移植及应用IP的应用程序接口为了将用户的应用程序挂接到IP中,必须将宏UIP_APPCALL()定义成实际的应用程序函数名。加入应用程序状态时必须将宏UIP_APPSTATE_SIZE定义成应用
225、程序状态结构体的长度。在应用程序函数中,依靠IP事件检测函数来决定处理的方法,另外可以通过判断当前连接的端口号来区分处理不同的连接。14.3嵌入式工业以太网应用实例嵌入式工业以太网应用实例327嵌入式嵌入式TCP/IP协议栈移植及应用协议栈移植及应用IP在电机远程监测系统中的应用下面介绍一个嵌入式Web模块UIPWEB51,用于将发电机射频监测仪串口输出的数据送入以太网,以实现对发电机工作状态的远程监测,该模块的硬件框图如图14-1所示。图14-1发电机工况远程监测的嵌入式Web模块硬件电路框图14.3嵌入式工业以太网应用实例嵌入式工业以太网应用实例328嵌入式嵌入式TCP/IP协议栈移植及应
226、用协议栈移植及应用IP在电机远程监测系统中的应用UIPWEB51模块的总体程序结构图如图14-2所示。图14-2发电机远程监控UPWEB51模块的程序结构示意图小结小结329工业以太网以其传输速度高、成本功耗低、普遍易用、持续发展潜力大等特征而著称,在工业过程控制、监测计量、安全监控等诸多领域获得了广泛的应用,已经成为一种重要的现场总线技术和主要的工业控制网络。本章主要从以太网的网络特征出发,分析以太网的相关构成,并延伸到相关应用实例开发。第15章 嵌入式CAN总线网络通信目目 录录 15.1CAN总线网络通信综述15.2CAN总线通信技术15.3基于STM32的CAN通信的软/硬件设计15.
227、4基于CAN总线网络监控系统的软/硬件设计15.1CANCAN总线网络通信综述总线网络通信综述332CAN总线的数据通讯具有突出的可靠性、实时性和灵活性,其总线规范已经成为国际标准,被公认为几种最有前途的总线之一。本节在总结CAN总线特点的基础上,对其通信介质访问方式进行了详细的描述,介绍了它在应用中需要解决的技术问题以及目前应用状况。333CAN总线简介总线简介CAN网络(Controller Area Network)是现场总线技术的一种,它是一种架构开放、广播式的新一代网络通信协议,称为控制器局域网现场总线。具有如下优势:15.1CANCAN总线网络通信综述总线网络通信综述网络各节点之间
228、有较强的实时性开发周期短形成国际标准334CAN总线发展概况总线发展概况控制器局部网(CANCONTROLLERAREANETWORK)是一种多主机局部网,由于其高性能、高可靠性、实时性等优点现已广泛应用于工业自动化、多种控制设备、交通工具、医疗仪器以及建筑、环境控制等众多部门。1991年9月出现了CAN技术规范(VERSION2.0)。该技术规范包括A和B两部分。2.0A给出了曾在CAN技术规范版本1.2中定义的CAN报文格式,能提供11位地址;而2.0B给出了标准的和扩展的两种报文格式,提供29位地址。为控制器局部网标准化、规范化推广铺平了道路。CAN总线开发系统廉价,OEM用户容易操作,
229、国际上大的半导体厂商已经推出不少CAN总线的专用芯片,其中有智能CAN芯片,也有非智能CAN控制器、收发器。15.1CANCAN总线网络通信综述总线网络通信综述335CAN总线协议总线协议CAN总线协议简介控制器局域网(CAN)为串行通讯协议,能有效地支持具有很高安全等级的分布实时控制。CAN总线协议有如下基本特点:15.2CANCAN总线通信技术总线通信技术多主控制消息的发送系统的柔软性通信速度远程数据请求错误检测通知、恢复功能336CAN总线协议总线协议CAN总线通信介质访问控制方式15.2CANCAN总线通信技术总线通信技术图15-1CAN总线系统构成CAN的通信介质访问为带有优先级的C
230、SMA/CA。337CAN总线协议总线协议CAN总线协议通信过程CAN总线数据的通信过程中,信息通过不同的报文格式来传送,例如数据帧、远程帧等。CAN总线协议中标示符的结构和所包含的内容决定了该信息的去向,通过标示符命名就可以在总线上增加通信节点。CAN总线协议引入了仲裁机制。15.2CANCAN总线通信技术总线通信技术338CAN总线报文传输总线报文传输CAN总线协议中的报文指的是总线单元间传递的消息,消息的格式各有不同,总线上的单元想要发送新信息就要检测到总线空闲状态的位信息才可以发送,总线上的报文信息表示为几种固定的帧类型。帧类型报文传输由以下4 个不同的帧类型所表示和控制:15.2CA
231、NCAN总线通信技术总线通信技术过载帧远程帧错误帧数据帧339CAN总线报文传输总线报文传输报文滤波报文滤波取决于整个识别符。报文校验校验报文有效的时间点,发送器与接收器各不相同。编码帧的部分,诸如帧起始、仲裁场、控制场、数据场以及CRC序列,均通过位填充的方法编码。无论何时,发送器只要检测到位流里有5个连续相同值的位,便自动在位流里插入一补充位。错误检测MAC子层具有这样一些错误检测功能:监测、填充规则检验、帧检验、15位循环冗余码校验和应答校验。有5种不同的错误类型:位错误;填充错误;CRC错误;形式错误;应答错误。15.2CANCAN总线通信技术总线通信技术340CAN总线驱动分析总线驱
232、动分析fileoperationss3c2410fops结构体在这一章中所使用的系统内核版本为Linux2.4.18,CAN总线驱动作为数据结构fileoperations中的重要组成部分,成员中主要包括owner,read,write,ioctl,open和release,具体功能如下:15.2CANCAN总线通信技术总线通信技术owner:声明模块的拥有者。write:处理数据的发送方法。read:处理数据的接收方法。ioctl:负责数据的发送和接收外的工作open:为即将执行的I/O操作做必要的准备工作releas:工作时负责关闭CAN设备341CAN总线驱动分析总线驱动分析初始化CAN
233、设备通过函数staticint_inits3c2410(void)和mcp2510_init(void)对模块进行初始化,主要包括如下内容:register-chrdev负责完成注册字符型设备驱动程序的工作;request_irq负责完成驱动程序的注册中断的工作;CONFIGDEVFSFS判断是否使用设备文件系统。15.2CANCAN总线通信技术总线通信技术创建CAN设备节点设备文件。初始化MCP2510工作。注册CAN设备的中断处理函数。342CAN总线驱动分析总线驱动分析CAN驱动程序的配置和编译1)在系统终端下,通过命令进入Linux内核所在目录,执行命令makemenuconfig进入
234、内核配置界面。2)通过Linux内核配置主界面,进入MainMenu/Characterdevices菜单,选择S3C2410CANBUS为加载模块,3)分别执行命令makedev,make和makemodules对内核模块进行编译,编译成功之后,即可在内核目录下的driver/char目录找到编译成功的CAN总线驱s3c2410-can-mcp2510.o,为了后面设计的使用方便,在这里将s3c2410-can-mcp2510.o重命名为熟悉的can.o。15.2CANCAN总线通信技术总线通信技术343CAN总线拓扑结构总线拓扑结构CAN总线是一种分布式的控制总线,由于总线上的每一个节点都
235、不复杂,所以可以使用MCU控制器处理CAN总线数据,来完成特定的功能。只需较少的线缆就可以将各个节点通过CAN总线连接,同时可靠性也比较高。CAN总线线性网络结构如图15-2所示。15.3基于基于STM32STM32的的CANCAN通信的软通信的软/ /硬件设计硬件设计图15-2CAN总线线性网络结构344CAN总线结点的硬件构成总线结点的硬件构成CAN总线节点的硬件构成方案大致有以下两种:第一种是MCU控制器连接独立的CAN控制器,再连接CAN收发器,构成挂接在CAN总线上的硬件结构。独立CAN控制器常见的有MCP2515,SJA1000等。其中MCP2515通过SPI总线接口和MCU连接,
236、SJA1000则是通过数据总线接口和MCU单元相连接。本书的一个节点采用了该种构成模式。第二种构成方式是将带有CAN控制器的MCU与CAN收发器相连接,挂接到CAN总线上。目前,市场上带有CAN控制器的MCU种类繁多,如P87C591,LPC2294,C8051F340,STM32等。本文的另一个节点采用了该种构成模式。15.3基于基于STM32STM32的的CANCAN通信的软通信的软/ /硬件设计硬件设计345双结点双结点CAN线通信线通信采用两块CAN总线模块,可以实现双节点CAN总线通信。A节点主要负责产生发送数据,利用其定时器,每隔一段时间向B节点发送一帧数据;B节点负责接收CAN总
237、线数据。STM32控制器的介绍RM的Cortex-M3处理器属于最新一代的嵌入式ARM处理器,它为实现MCU的需求提供了低成本的平台,较少的管脚数目、较低的系统功耗,同时还提供卓越的计算性能以及先进的中断系统响应。由于STM32F103xx增强型系列可以与所有的ARM工具和软件兼容。STM32的CAN通信模块STM32中的CAN通信模块具有三个工作模式,分别是CAN模块的初始化,CAN模块的正常工作模式以及CAN模块的睡眠模式。15.3基于基于STM32STM32的的CANCAN通信的软通信的软/ /硬件设计硬件设计346双结点双结点CAN线通信线通信CAN控制器MCP2515介绍MCP251
238、5是Microchip出品的一款控制器,支持CAN协议V2.0B技术规范,通信速率在1Mb/s,这种形式最突出的特点就是简化连接。MCP2515的滤波报文的功能由2个验收屏蔽寄存器和6个验收滤波寄存器完成。uArduino微处理器介绍Arduino由一套为Arduino板编写程序的开发环境和简易的单片机组成,Arduino有开放源码的平台。15.3基于基于STM32STM32的的CANCAN通信的软通信的软/ /硬件设计硬件设计347CAN通信系统软件的设计通信系统软件的设计作为CAN网络中的节点,微控制器最重要的功能就是与系统中的其他节点进行通信。微控制单元STM32是系统进行CAN通信的核
239、心元件,因此在主程序中,首先要对STM32进行初始化。涉及到CAN总线的初始化,其过程主要有设置模式寄存器,设置波特率,设置中断方式等等。开发工具介绍Keil是常用嵌入式系统开发工具。由于Keil是目前市场上比较流行的ARM系统开发软件,各仿真器厂商全面支持keil的使用。基于STM32的CAN总线通信选取KeilVision4环境实现编译调试。KeilVision4是KeilSoftware公司为ARM及其兼容产品提供的专门开发工具,它支持在线系统调试。15.3基于基于STM32STM32的的CANCAN通信的软通信的软/ /硬件设计硬件设计348CAN通信系统软件的设计通信系统软件的设计系
240、统程序流程15.3基于基于STM32STM32的的CANCAN通信的软通信的软/ /硬件设计硬件设计图15-3基于STM32的CAN总线通信主程序流程图349CAN通信系统软件的设计通信系统软件的设计CAN初始化程序设计CAN模块初始化过程包括以下内容:使能并设置CAN模块时钟,将CAN模块的输入输出脚上拉,使能中断,关闭自动重传机制,清空数据寄存器,设置波特率,然后使能消息接收,最后设置寄存器的特定位,退出初始化模式。系统发送消息程序发送过程可以简单归纳为:首先重置寄存器,设置消息的认证信息、类型信息和数据信息,并设置数据长度,并使能TME中断,然后发送消息。系统接收消息程序系统接收程序的主
241、要工作包括:将消息的认证信息,类型信息,数据长度读取出来,并提取消息的数据内容。15.3基于基于STM32STM32的的CANCAN通信的软通信的软/ /硬件设计硬件设计350CAN总线是串行多主站控制器局域网总线,其安全性、可靠性较高,实时性很强;网络构成简单实用,硬件成本较低。实际应用中该系统采用分布式设计,其系统结构如图15-4所示。15.3基于基于CANCAN总线网络监控系统的软总线网络监控系统的软/ /硬件设计硬件设计图15-4系统结构图351CAN总线监控方案总线监控方案如图15-4中所示,整个控制系统包括两个部分,数据采集卡,符合处理板组成的数字电路网络和探测器端控制板组成的模拟
242、电路网络。CAN控制系统监控整个设备的运行,上位机与各智能节点之间通讯,控制各模块的工作状态,协调各个电子控制单元的正常工作,完成监测、报警、控制、显示、通信等基本功能。有两种控制设计方案:15.3基于基于CANCAN总线网络监控系统的软总线网络监控系统的软/ /硬件设计硬件设计探测器端控制板CAN控制设计方案数据采集卡CAN控制设计方案352CAN总线监控系统的硬件设计总线监控系统的硬件设计USB-CAN转接器简介采用德国SYSTEC-ELECTRONIC公司研制的智能两通道USB-CAN转接器。该转接器基于32位MCU进行设计,拥有两个独立的CAN-BUS接口。CAN总线智能节点硬件设计目
243、前CAN总线接口电路的设计方法有如下两种:一种是带片内CAN控制器的微控制器;另一种是微控制器与独立的CAN控制器。所设计CAN总线接口电路结构框图如图15-5所示(见下一页)。目前,带片内CAN控制器的微控制器有INTEL公司的80C196CA/CB,PHILIPS公司的P8XC592,P87C591,MOTOROLA公司的68HC05X4,以及MICROCHIP公司的DSPIC30F系列。15.3基于基于CANCAN总线网络监控系统的软总线网络监控系统的软/ /硬件设计硬件设计353CAN总线监控系统的硬件设计总线监控系统的硬件设计CAN总线智能节点硬件设计15.3基于基于CANCAN总线
244、网络监控系统的软总线网络监控系统的软/ /硬件设计硬件设计图15-5CAN总线接口结构图354CAN总线监控软件设计总线监控软件设计软件设计包括上位机的软件设计和智能节点的软件设计两个部分。在软件设计中,遵循模块化设计思想,采用结构化程序设计方案,使之具有良好的模块性、可修改性及可移植性。p控制系统应用层通信协议CAN总线的3层结构模型为:物理层、数据链路层和应用层。系统的开发重点主要在应用层软件的设计上,CAN总线节点的软件设计主要包括三大部分:CAN节点节点初始化、报文发送和报文接收初始化、报文发送和报文接收。CAN2.0A/B规范仅定义了OSI模型的数据链路层、物理层,而没有规定OSI模
245、型的上层。本系统有许多不同节点与主控计算机通讯,同时有众多不同类型的信息传递,需要根据各种信息的类型分配相应级别的报文类型,还有包含供识别的信息。15.3基于基于CANCAN总线网络监控系统的软总线网络监控系统的软/ /硬件设计硬件设计355CAN总线监控软件设计总线监控软件设计p控制系统应用层通信协议(1)智能节点信息标识符分配原则依据CAN的仲裁机制,CAN信息标识符分配应该遵循如下原则:1)在同一系统内,每条信息必须标以唯一的信息标识符。2)具有给定标识符且DLC(数据长度码)不为0的数据帧仅可由一个节点启动。否则,在某时刻如果有几个节点同时发送,将造成仲裁失效。3)相同信息标识符不同D
246、LC的远程帧不能同时发送,若相同信息标识符不同DLC的远程帧同时启动,由于它们的仲裁字节内容完全相同,CAN仲裁机制无法确定总线的拥有权,将导致无法解决的冲突。15.3基于基于CANCAN总线网络监控系统的软总线网络监控系统的软/ /硬件设计硬件设计356CAN总线监控软件设计总线监控软件设计p控制系统应用层通信协议(2)智能节点标识符分配方案在本项目所制定的协议中信息标识符采用静态分配的策略,采用PELICAN模式,标识符为29位。结构如表15-1:15.3基于基于CANCAN总线网络监控系统的软总线网络监控系统的软/ /硬件设计硬件设计信息功能码(3位)数据场格式(3位)节点号(8位)备用
247、位(15位)表15-1标识符分配方案357CAN总线监控软件设计总线监控软件设计p控制系统应用层通信协议(3)信息优先权分配按上述的信息标识符(ID)分配方案,在CAN的仲裁机制作用下,信息优先权遵循以下原则。1)发送网络传感器信息的帧具有最高的优先权,发送复位信号的优先权次之,其次是发送工作模式,点对点调节再次之,最后CAN参数设置的优先权最低。2)在同类信息帧中,节点号小的帧具有较高的优先权。3)具有相同标识符的帧,数据帧优先权高于远程帧。(4)应用层信息帧格式应用层信息帧是应用层与CAN基本通信部分之间数据交换的纽带。应用层将信息帧解析后,输出给用户程序;应用层将对用户程序需要发送的信息
248、通过应用层装配成帧后,供CAN基本通信部分发送。15.3基于基于CANCAN总线网络监控系统的软总线网络监控系统的软/ /硬件设计硬件设计358CAN总线监控软件设计总线监控软件设计pCAN总线智能节点软件设计CAN总线节点要有效的实时地完成通信任务,软件的设计是关键,也是难点。它主要包括节点的初始化,报文的发送程序和接收程序以及总线的出错、接收滤波等的处理。系统每个节点采用单片机 C 程序设计,软件结构如图15-6所示:15.3基于基于CANCAN总线网络监控系统的软总线网络监控系统的软/ /硬件设计硬件设计图15-6CAN节点程序结构示意图359CAN总线监控软件设计总线监控软件设计pCA
249、N总线智能节点软件设计(1)CAN 节点的初始化程序CAN节点初始化子程序流程如图15-7所示。15.3基于基于CANCAN总线网络监控系统的软总线网络监控系统的软/ /硬件设计硬件设计图15-7CAN节点初始化子程序流程图360CAN总线监控软件设计总线监控软件设计pCAN总线智能节点软件设计(2)CAN节点中断接收子程序设计如图15-8所示,接受中断的子程序流程。15.3基于基于CANCAN总线网络监控系统的软总线网络监控系统的软/ /硬件设计硬件设计图15-8接收中断子程序流程图361CAN总线监控软件设计总线监控软件设计pCAN总线智能节点软件设计(3)CAN 节点发送子程序设计CAN
250、节点发送程序如图15-9所示。15.3基于基于CANCAN总线网络监控系统的软总线网络监控系统的软/ /硬件设计硬件设计图15-9发送子程序流程图小结小结362CAN总线的数据通讯具有突出的可靠性、实时性和灵活性,其总线规范已经成为国际标准,被公认为几种最有前途的总线之一。本节在总结CAN总线特点的基础上,对其通信介质访问方式进行了详细的描述,介绍了它在应用中需要解决的技术问题以及目前应用状况。第16章 嵌入式BLUETOOTH无线网络通信目目 录录 16.1BLUETOOTH传输协议16.2嵌入式BLUETOOTH点对点通信系统16.3嵌入式BLUETOOTH信息共享系统16.1BLUETO
251、OTHBLUETOOTH传输协议传输协议365蓝牙技术是一种通用型无线信号传输接口及其操控软件的公开标准。它的目的就是建立一个全球统一的无线连接标准,使不同厂家生产的便携式硬件能够在无线连接的情况下,在近距离范围具有交互信息和交叉操作的可能性。从降低成本角度出发,选定了跳频扩频无线解决方案,和基带传输选择了主/从结构,这是由该系统的自身性质决定的。本章描述传输协议组中的有关协议,这些协议包括从无线层到L2CAP层等各层的内容。它们集中讲述了蓝牙系统的底层功能(包括空中传输协议和信息处理)和主机控制接口部分。366蓝牙无线层蓝牙无线层开发蓝牙的主要目的是在全世界实现一个短距离无线通信的标准,所以
252、选择一个能够为各个国家认可的频段是首要的问题。蓝牙使用了ISM频段,蓝牙的方便在于各个厂商生产的蓝牙要基于一个统一的标准规范,要能够实现互联和互操作。要实现互联,物理层的统一是基础。频段和信道安排蓝牙目前为两种频段定义两种信道方案,大多数国家的频段定义为2.400-2.4835GHz,其中分配了79个跳频信道,每个频道为1MHz带宽。对于法国等少数国家,这段频段为2.4465-2.4835GHz,分配23个1MHz带宽跳频信道。为了减少带外的辐射和干扰,系统留有保护带,对于79信道系统,下保护带是2MHz,上保护带是3.5MHz。16.1BLUETOOTHBLUETOOTH传输协议传输协议36
253、7蓝牙无线层蓝牙无线层发射器特性根据功率的电平值,可以把蓝牙设备分成3个级别,见表16-1所示。16.1BLUETOOTHBLUETOOTH传输协议传输协议功率级别最大输出功率正常输出功率最小输出功率功率控制1100mW(20dBm)N/A(不适用)1mW(0dBm)Pmin+4dBm到Pmax22.5mW(4dBm)1mW(0dBm)1mW(0dBm)Pmin到Pmax31mW(0dBm)N/A(不适用)N/APmin到Pmax表16-1功率级别备注:10lg(xmW)=ydBm368蓝牙无线层蓝牙无线层接收器特性为了测量比特率性能,设备必须具有回送功能,设备把解码的信息发送回来,该功能在测
254、试模式规范中进行了定义了真实灵敏度和干扰性能。如表16-2所示。16.1BLUETOOTHBLUETOOTH传输协议传输协议要求信噪比同信道干扰11dB1Mhz邻信道干扰0dB2Mhz邻信道干扰-30dB3Mhz邻信道干扰-40dB镜像信道干扰-9dB1Mhz邻信道与镜像信道的干扰比-20dB表16-2干扰性能369蓝牙无线层蓝牙无线层蓝牙跳频蓝牙无线技术使用跳频方式来扩展频谱。跳频方式是发射机以一个特定的与伪随机码序列一致的跳变速率信号从一个频率跳到另一个。伪随机序列通过伪随机发生器控制发射机选择信号的跳频顺序。蓝牙技术标准中规定的速率为在79个频道内,每秒1600跳。共享一个公共的信道的所
255、有蓝牙单元形成一个微网。在一个微网中最多可以有8个蓝牙单元,其中一个是主单元,另外还可有最多7个从单元。16.1BLUETOOTHBLUETOOTH传输协议传输协议370蓝牙基带层蓝牙基带层无线层主要是处理空中数据的接收和发送。基带就是蓝牙的物理层,它负责管理物理信道和链路中除了错误纠正、数据处理、调频选择和蓝牙安全之外的所有业务。物理链路系统可以在主/从设备间建立不同形式的链路,共定义了两种方式:实时的同步面向连接(SCO,SynchronousConnection-Oriented)方式和非实时的异步非面向连接(ACL,AsynchronousConnection-Less)方式。逻辑信道
256、在蓝牙系统中,定义了5种信道:LC(LinkControl)控制信道、LM(LinkManager)控制信道、UA(UserAsynchronousdata)用户信道、UI(UserIsochronousdata)用户信道、US(UserSynchronousdata)用户信道。16.1BLUETOOTHBLUETOOTH传输协议传输协议371蓝牙基带层蓝牙基带层蓝牙数据包蓝牙基带规范中分组和消息的bit次序时使用LittleEndian格式,即使用如下的规则:(1)最次要的bit(LSB)对应b0;(2)LSB最先发送;(3)在用图例表示这种格式时,LSB位于最左边。标准包的总体格式如图16
257、-1所示。每个包由三部分组成:接入码,分组头和净荷。每部分实体的比特长度也在图中给出。16.1BLUETOOTHBLUETOOTH传输协议传输协议图16-1标准包格式372蓝牙基带层蓝牙基带层蓝牙网络使用蓝牙无线技术相互通信的设备必须是某个微微网的一部分。一个微微网包含一个共享的通信信道,微微网的成员通过这个信道进行通信。微微网主控设备的主要作用是要解决如下问题:16.1BLUETOOTHBLUETOOTH传输协议传输协议这个微微网的成员应该跟随哪一个跳频序列;跳频在什么时候发生,以便为微微网中与时间有关的时间能够确定计时基准;哪一个频率是“当前”频率;把信号发往哪一个从属设备以及下一次发送的
258、从属设备的哪一个;373主机控制器接口主机控制器接口蓝牙作为一种短距离的无线网络技术,为设备之间的互联提供了方便。本节讨论关于蓝牙与主机系统之间接口的规范的相关内容。主机控制器接口(HCI)提供了一种访问蓝牙硬件能力的通用接口。HCI固件通过访问基带命令、链路管理命令、硬件状态寄存器、控制寄存器以及事件寄存器实现对蓝牙硬件的HCI命令。HCI接口类型在主机系统的HCI驱动程序和蓝牙硬件HCI固件之间可能存在几个层次。这些中间层,又称为主机控制器传输层,提供传输数据的能力。在便携电脑中,该层是PC卡或通用串行总线(USB)。蓝牙设备可以使用多种物理总线接口连接蓝牙硬件。蓝牙主控制器最初支持2种物
259、理总线结构:USB和PC卡。16.1BLUETOOTHBLUETOOTH传输协议传输协议374主机控制器接口主机控制器接口HCI流控制流控制用在主机到主机控制器的方向,在发送时,主机先把ACL数据发送到数据缓冲区,HCI流控制的作用是避免发送到数据缓冲器的数据溢出,也就是说主机要对主机控制器的数据缓冲器进行管理。HCI接口命令完成一个HCI命令花费的时间是不同的。因此,必须以事件的形式向主机报告命令运行的结果。主机控制器传输层提供HCI专用信息的透明交换。这些传输机制为主机提供向主机控制器发送HCI命令、ACL数据和SCO数据的能力,同时还向主机提供从主机控制器接收HCI事件、ACL数据和SC
260、O数据的能力。16.1BLUETOOTHBLUETOOTH传输协议传输协议375在下面通过在以两个蓝牙ROK101008模块和两台PC为基本硬件设备而搭建的蓝牙点对点无线通信系统的基础上,结合具体的蓝牙应用剖面,以现有的蓝牙开发工具包提供的蓝牙参考栈为基础,通过在VC+6.0环境下的软件编程调用工具包中提供的蓝牙API函数,实现PC机之间点对点的蓝牙无线通信系统,并具体搭建了实现的设备环境,同时给出了软件实现的方法和步骤。Bluetooth模块和开发工具包模块和开发工具包Bluetooth模块说明蓝牙系统由两部分组成,一是硬件部分,二是软件部分。蓝牙模块是蓝牙的硬件部分,它包括蓝牙协议栈的下三
261、个层次,即无线收发、基带和链路管理器(LMP)。16.2嵌入式嵌入式BLUETOOTHBLUETOOTH点对点通信系统点对点通信系统376Bluetooth模块和开发工具包模块和开发工具包蓝牙模块技术指标简介(1)数据吞吐率/包类型设备的使用方式决定了相应的使用模型(profile)。使用模型确定数据传输的类型,异步信道能支持非对称连接,一方向为721kbit/s的最大速率,另一方向为57.6kbit/s的速率,或是支持对称链路为432.6kbit/s的速率。同步信道支持各方向为64kbit/s的链路。同步链路用于同步语音连接,异步链路用于数据连接。(2)工作范围根据发送功率电平,蓝牙模块的发
262、送距离为10cm-100m:功率级1(最大功率+20dBm,最大距离100m);功率级2(最大功率+4dBm,最大距离20m);功率级3(最大功率0dBm,最大距离10m)。要保证被检查模块在超过要求的工作距离内能够工作。(3)工作温度范围模块及设备都可能会受到高温或低温的影响。(4)尺寸大小蓝牙模块显然必须适应主设备的物理尺寸,在设备设计和生产制造中对模块的调整应尽可能少。16.2嵌入式嵌入式BLUETOOTHBLUETOOTH点对点通信系统点对点通信系统377Bluetooth模块和开发工具包模块和开发工具包蓝牙开发工具包为了满足蓝牙应用的初级研发和试验,实现蓝牙点对点无线通信系统,包含蓝
263、牙ROK101008模块的蓝牙应用和培训工具包(BluetoothApplicationandTrainingToolKit)构成了本课题中蓝牙硬件的完整部分。硬件部分由两层的印刷电路板构成,主要有蓝牙模块(ROK101008)、跳线区域、UART连接器、USB连接器、以及复位开关组成。16.2嵌入式嵌入式BLUETOOTHBLUETOOTH点对点通信系统点对点通信系统378点对点无线通信系统的组建点对点无线通信系统的组建蓝牙系统的硬件部分实现的是蓝牙协议的无线、基带、链路控制部分和HCI接口,并通过串口与PC机相连。采用现有的通过SIG认证的蓝牙模块,使硬件的开发工作和蓝牙协议1.1版本相符
264、合。从而在硬件上实现了蓝牙协议HCI接口以下各层的协议规范,如图16-2所示。16.2嵌入式嵌入式BLUETOOTHBLUETOOTH点对点通信系统点对点通信系统图16-2硬件部分实现的蓝牙协议栈379点对点无线通信系统的组建点对点无线通信系统的组建对照蓝牙协议栈,在组建的点对点无线通信最简系统中所要实现的基本系统框架如下:(1)连接于两台点对点通信的PC机之间,最大限度的利用PC机现有的资源;(2)通信系统的设计部包括蓝牙语音的应用,系统中不包含PCM编码以及还原系统;(3)使用UART连接器,分别将两台PC机与两个蓝牙模块向连接,实现100Kbps的数据传输速率;(4)利用协议栈提供的AP
265、I函数,通过软件编程,最终实现两台PC机串口间的点对点的无线通信。16.2嵌入式嵌入式BLUETOOTHBLUETOOTH点对点通信系统点对点通信系统380嵌入式嵌入式Bluetooth通信系统软件设计通信系统软件设计蓝牙点对点通信系统的软件设计包括根据蓝牙PC参考栈中提供的API函数以及具体的蓝牙应用剖面开发出一个可以为用户使用的可见的用户接口UI,以便用户使用这个接口可以对蓝牙进行配置,实现通信通能。蓝牙PC参考线对于数据应用至少需要到RFCOMM层以下的抽象,对于语音应用还需要其它高层的抽象。在现有的蓝牙协议栈中,对于Linux平台,Axis和IBMBluedrekar提供了免费的协议栈
266、;对于Windows平台,可以从Cstack得到免费的协议栈。16.2嵌入式嵌入式BLUETOOTHBLUETOOTH点对点通信系统点对点通信系统381嵌入式嵌入式Bluetooth通信系统软件设计通信系统软件设计蓝牙点对点通信的应用剖面设计可通过RS-232串口分别将两个蓝牙ROK101008模块与两台PC机相连接构成,其具体的蓝牙应用剖面协议模型如图16-4所示。16.2嵌入式嵌入式BLUETOOTHBLUETOOTH点对点通信系统点对点通信系统图16-4点对点通信应用剖面协议模型382u嵌入式嵌入式Bluetooth通信系统软件设计通信系统软件设计蓝牙点对点通信的应用剖面设计(1)串口仿
267、真协议SIG在协议栈中定义了一层与传统串行接口十分相似的协议层,这个协议就是串口仿真协议(RFCOMM)。(2)服务发现协议服务发现协议(SDP)是一个基于客户/服务器结构的协议,它为客户应用提供一种发现服务器所提供服务和服务属性的机制,服务属性包括服务类型以及使用该服务所需的机制或协议信息。16.2嵌入式嵌入式BLUETOOTHBLUETOOTH点对点通信系统点对点通信系统383嵌入式嵌入式Bluetooth通信系统软件设计通信系统软件设计蓝牙点对点通信的应用剖面设计(2)服务发现协议在服务发现协议的1.1版本中将提供下面能力:16.2嵌入式嵌入式BLUETOOTHBLUETOOTH点对点通
268、信系统点对点通信系统SDP应该允许根据服务的类别发现服务。SDP应该能够浏览服务,无需事先知道这些服务的特征。SDP应该能为客户提供查询功能,允许其根据服务的特殊属性进行所需的服务查询。SDP必须允许一个设备上的客户直接发现另外设备上的服务。SDP应该独立的传输。SDP必须对服务、服务类和服务属性提供唯一标识。384嵌入式嵌入式Bluetooth通信系统软件设计通信系统软件设计蓝牙点对点通信的应用剖面设计(2)服务发现协议SDP的客户(Client)/主机(Server)服务应用框图如图16-5所示。16.2嵌入式嵌入式BLUETOOTHBLUETOOTH点对点通信系统点对点通信系统图16-5
269、客户/主机服务应用框图385嵌入式嵌入式Bluetooth通信系统软件设计通信系统软件设计蓝牙API概述API的全称为应用程序接口,蓝牙API函数是在PC参考栈中提供的。在蓝牙的协议栈中,层与层之间的通信与一般的协议之间的通信概念和机制相同,使用请求、确认、指示和响应四种原语实现。蓝牙API能够在不同的应用环境中相对独立,并且灵活的被调用。蓝牙API允许蓝牙用户通过调用而实现如下功能:16.2嵌入式嵌入式BLUETOOTHBLUETOOTH点对点通信系统点对点通信系统建立或者断开数据/语音连接;发送接收数据;执行具体的蓝牙功能,例如执行寻呼和查询功能、选择加密模式等等;能够动态的载入一个剖面;
270、用户可以根据自己的需要添加自己的API组件;可以跨越L2CAP层直接执行新的协议。386嵌入式嵌入式Bluetooth通信系统软件设计通信系统软件设计蓝牙点对点通信软件模块设计本软件系统将实现以下功能:主机对其他蓝牙设备的自动识别、串行端口的仿真和服务发现。软件系统的操作界面以及对蓝牙API函数的调用是通过在VC+6.0环境下制作编译的。在PC1中调用蓝牙API函数的具体过程如下:16.2嵌入式嵌入式BLUETOOTHBLUETOOTH点对点通信系统点对点通信系统启动蓝牙设备,不断从蓝牙模块获得反馈信息检测有效范围内是否存在相应的蓝牙设备,若存在蓝牙设备,则获得蓝牙设备的BD_ADDR,并请求
271、建立连接请求被PC2答应后,建立点对点的蓝牙无线连接封装所要发送的数据,请求蓝牙模块发送检测蓝牙发送是否成功断开连接387随着后PC 时代的来临,嵌入式设备已逐渐融入人们的生活。同时由于信息社会的发展,嵌入式设备之间信息和资源的共享也越来越成为人们的诉求。与此同时,蓝牙技术以其低功耗、低成本、抗干扰性强、移动性高、组网灵活等优点在嵌入式设备上得到了越来越广泛的应用。因此本节给出了一个基于嵌入式平台和蓝牙技术的信息共享系统。系统硬件框架设计系统硬件框架设计本系统的硬件构成主要有:OK6410开发板、USB蓝牙适配器、USB集线器、USB鼠标、蓝牙GPS接收器、耳机麦克。由于本系统的GPS信息共享
272、功能只是在3台设备之间进行了试验,所以根据有无GPS功能,可把本系统的硬件框架划分为两种:一种是有GPS功能的框架,一种是无GPS功能的框架。16.3嵌入式嵌入式BLUETOOTHBLUETOOTH信息共享系统信息共享系统388系统软件框架设计系统软件框架设计模块设计模块设计系统的软件操作平台建立在通用的嵌入式Linux操作系统,图16-6描述了有GPS功能的软件模块的划分和模块之间的相互关系。16.3嵌入式嵌入式BLUETOOTHBLUETOOTH信息共享系统信息共享系统图16-6有GPS功能的软件模块划分389系统软件框架设计系统软件框架设计p模块设计模块设计主要分为四个模块,蓝牙内网程序
273、、蓝牙外网程序、图形界面程序和录音放音程序,每个模块各编译成一个可执行文件,运行时相互调用完成整体功能。其中蓝牙内网程序完成如下功能:16.3嵌入式嵌入式BLUETOOTHBLUETOOTH信息共享系统信息共享系统内网蓝牙模块和协议栈的初始化;以多进程的方式调用蓝牙外网程序和图形界面程序;GPS数据的接收与处理;内网蓝牙模块与蓝牙GPS接收器之间链路的查询、建立与断开;响应图形界面程序的命令,并将GPS信息传递给图形界面程序。390p系统软件框架设计系统软件框架设计进程间通信设计进程间通信设计由于本系统的软件划分为不同的模块,每个模块分别编译成可执行程序,在运行时属于不同的进程,而各个模块之间
274、又存在着各种不同的消息和数据需要进行相互传递,所以需要对各个不同进程之间的通信进行设计。(1)消息队列图形界面和蓝牙内网程序、蓝牙外网程序之间命令的发送与接收通过消息队列来进行。图16-8给出了消息队列在多进程间通信示意图。16.3嵌入式嵌入式BLUETOOTHBLUETOOTH信息共享系统信息共享系统图16-8消息队列示意图391p系统软件框架设计系统软件框架设计进程间通信设计进程间通信设计(2)共享内存GPS信息、网内设备之间的连接状态和GPS连接状态、发送文件时的实时速率、发送进度和平均速率及是否接收到新文件及接收到的文件的文件名,这些信息的传递通过共享内存来进行。16.3嵌入式嵌入式B
275、LUETOOTHBLUETOOTH信息共享系统信息共享系统392pBluetooth语音短消息功能设计实现语音短消息功能设计实现蓝牙语音短消息功能包括语音短消息的建立、读取、发送和接收。其中,短消息的发送和接收通过文件的发送和接收来实现,包括群发功能。本小节主要对其建立和读取进行设计实现。语音短消息的建立语音短消息的建立要新建一个语音短消息,点击文件浏览页面下的“新建语音”按钮,进入新建语音消息页面,在该页面中的文本框中输入要建立的语音消息的名字,如果没有输入则采用默认名字,点击该页面下的“开始”按钮,图形界面程序会通过创建一个QProcess类型的对象来实现创建一个进程,同时用该类中的sta
276、rt()函数来调用录音程序,当执行start()函数后,调用waitForStarted()函数来等待进程启动,当进程启动成功的时候会返回true,否则返回false16.3嵌入式嵌入式BLUETOOTHBLUETOOTH信息共享系统信息共享系统393pBluetooth语音短消息功能设计实现语音短消息功能设计实现蓝牙语音短消息功能包括语音短消息的建立、读取、发送和接收。其中,短消息的发送和接收通过文件的发送和接收来实现,包括群发功能。本小节主要对其建立和读取进行设计实现。语音短消息的建立语音短消息的建立要新建一个语音短消息,点击文件浏览页面下的“新建语音”按钮,进入新建语音消息页面,在该页面
277、中的文本框中输入要建立的语音消息的名字,如果没有输入则采用默认名字,点击该页面下的“开始”按钮,图形界面程序会通过创建一个QProcess类型的对象来实现创建一个进程,同时用该类中的start()函数来调用录音程序,当执行start()函数后,调用waitForStarted()函数来等待进程启动,当进程启动成功的时候会返回true,否则返回false16.3嵌入式嵌入式BLUETOOTHBLUETOOTH信息共享系统信息共享系统394pBluetooth语音短消息功能设计实现语音短消息功能设计实现语音短消息的建立语音短消息的建立录音流程如图16-9所示。16.3嵌入式嵌入式BLUETOOTH
278、BLUETOOTH信息共享系统信息共享系统图16-9录音流程395pBluetooth语音短消息功能设计实现语音短消息功能设计实现语音短消息的读取语音短消息的读取放音流程如图16-10所示16.3嵌入式嵌入式BLUETOOTHBLUETOOTH信息共享系统信息共享系统图16-10放音流程小结小结396蓝牙技术是一种通用型无线信号传输接口及其操控软件的公开标准。它的目的就是建立一个全球统一的无线连接标准,使不同厂家生产的便携式硬件能够在无线连接的情况下,在近距离范围具有交互信息和交叉操作的可能性。实现不同电子设备之间短距离无线连接和通信的技术。本章着力于嵌入蓝牙技术出发,介绍了蓝牙的相关技术,然
279、后讲解了蓝牙的通信协议,最后着重阐述了嵌入式蓝牙无线网络的一些应用。第17章 Linux的ZigBee网关设计目目 录录 17.1ZigBee标准介绍17.2ZigBee网关硬件结构17.3ZigBee网关软件结构17.4ZigBee网关数据收发与应用处理17.1ZigBee标准介绍标准介绍ZigBee技术的概念和发展技术的概念和发展ZigBee是一种短距离、低功耗、低成本的无线通信技术,它适用于通信数据量不大,数据传输速率相对较低,分布范围较小,要求安装成本和功耗非常的低,并容易安装使用的场合。ZigBee协议的底层规范采用的是IEEE802.15.4协议的物理层(PHY)和媒体介质访问层(
280、MAC)。在此基础上,ZigBee联盟定义了网络层(NWK)和应用层(APL)等层次规范。17.1ZigBee标准介绍标准介绍ZigBee技术的特点技术的特点ZigBee是一种新兴的近距离、低复杂度、低功耗、低数据速率、低成本的无线网络技术。作为一种介于无线标记技术和蓝牙之间的技术提案,ZigBee技术主要具有以下几个特点:17.1ZigBee标准介绍标准介绍ZigBee网络结构网络结构ZigBee技术是一种低数据传输率的无线个域网,网络的基本成员称为网络节点。网络中的节点按照功能的不同分为三个部分,即终端节点,路由器节点和协调器节点。协调器节点:协调器节点是整个网络的中心,主要负责建立、维持
281、和管理整个网络,分配网络地址,向其他节点下发指令,收集其他节点的数据。路由器节点:路由器在网络中充当了一个中介设备的功能,主要负责路由发现、数据中继、允许其他节点通过它接入到网络。终端节点:终端节点主要负责进行数据的收集,终端节点可以直接接入协调器节点或通过路由器节点接入网络,但不允许其他节点通过终端节点加入网络。17.1ZigBee标准介绍标准介绍ZigBee协议栈协议栈常见的ZigBee协议栈主要分为以下三种:开源的协议栈,半开源的协议栈以及非开源的协议栈。开源协议栈Freakz是一个完全开源的ZigBee协议栈,需要配合Contiki操作系统运行。Contiki的代码完全由C语言编写,对
282、于初学者容易上手。半开源协议栈2007年,德州仪器推出了业界领先的ZigBee协议栈,并开放了部分源代码。非开源协议栈常见的非开源ZigBee协议栈包括Freescale公司的SMAC协议和Microchip公司的ZigBeeRF4CE和ZigBeePRO协议。17.2ZigBee网关硬件结构网关硬件结构网关是无线传感网络与互联网之间的一个枢纽,应该具有协议转换的功能。与感知层交互,网关使用ZigBee无线协议。与应用层交互,网关使用TCP协议。网络的整体框图网络的整体框图无线传感器网络的整体结构如图所示:17.2ZigBee网关硬件结构网关硬件结构网络的硬件框架网络的硬件框架网关的硬件实现基
283、于硬件框架的设计,根据Zigbee网关要实现的功能,硬件框架分为中央处理模块、ZigBee通信模块以及网络模块。硬件框架如图所示。图17-2网关硬件架构17.2ZigBee网关硬件结构网关硬件结构ZigBee通信模块通信模块目前常见的ZigBee芯片主要为CC243X系列、CC253X系列和MC1322X系列。CC253X系列芯片的模块大致可以分为三种类型:CPU和内存相关的模块,外设、时钟和电源管理相关的模块,无线电相关模块。CPU和内存模块CC253X系列使用的CPU是一个单周期的8051兼容内核。它有三个不同的存储器访问总线(SFR、DATA和CODE/XDATA)内存仲裁器位于系统中心
284、,它通过SFR总线把CPU和DMA控制器和物理存储器和所有外设连接在一起。时钟和电源管理模块CC253X系列芯片内置了一个16MHz的RC振荡器,外部可连接32MHz的外部晶振。17.2ZigBee网关硬件结构网关硬件结构ZigBee通信模块通信模块外设CC2530包括许多不同的外设,包括调试接口、I/O控制器、DMA控制器、两个8位定时器、一个16位定时器、一个MAC定时器、一个睡眠定时器、ADC和AES协处理器、看门狗定时器、两个串口USART0和USART1和USB2.0全速控制器。无线收发器CC253X系列设备提供了一个兼容IEEE802.15.4的无线收发器。在CC253X内部主要由
285、RF内核组成,RF内核控制模拟无线模块。另外,它提供了MCU和无线设备之间的一个接口,这使得可以发出命令、读取状态、自动操作和确定无线设备事件的顺序。无线设备还包括一个数据包过滤和地址识别模块。17.2ZigBee网关硬件结构网关硬件结构网络模块网络模块用户通过PC端与网关通信获取无线传感器网络收集的数据,可是S3C2440没有集成以太网接口,所以要想使S3C2440具备以太网的功能,就必须扩展网卡接口,外接DM9000,可以使其与以太网相连接。DM9000是一款完全集成的、符合成本效益单芯片快速以太网MAC控制器与一般处理接口,并且提供DMA(直接存取技术)来简化对内部存储器的访问。17.2
286、ZigBee网关硬件结构网关硬件结构电源模块电源模块电源模块采用LM2734,它是一款低功耗降压开关稳压器。其外围电路接口如图所示。17.3ZigBee网关软件结构网关软件结构嵌入式网关是在本设计中主要完成两个功能:一方面实现用户端与网关之间的通信,允许用户访问它,另一方面实现网关和ZigBee之间的网络通信。嵌入式网关设计中,无线传感器网络以及系统开发平台的搭建是网关开发的基础。Z-Stack协议栈协议栈Z-Stack协议栈是一款免费的ZigBee协议,支持ZigBee和ZigBeePRO,并向后兼容ZigBee2006和ZigBee2004规范,支持多种平台。完整的Z-Stack协议栈由1
287、4个目录文件组成,从上到下依次为应用层目录、硬件抽象层目录、MAC层目录、监制调试层目录、网络层目录、操作系统抽象层目录、AF层目录、安全层目录、地址处理函数目录、工程配置目录、设备对象层目录、ZMac层目录、主函数目录、输出文件目录。Z-Stack的层次结构如图17-4所示。17.3ZigBee网关软件结构网关软件结构Z-Stack协议栈协议栈为了方便任务管理,Z-Stack协议栈定义了OSAL层(操作系统抽象层),OSAL任务调度流程图如图17-5所示。图17-4协议栈目录结构图17-5OSAL任务调度流程图17.3ZigBee网关软件结构网关软件结构无线传感器网络无线传感器网络无线传感网
288、络负责采集环境数据,数据采集的整体设计方案分为三个部分,即数据采集、数据传输和网络控制,其中涉及到的ZigBee设备类型有协调器节点、路由器节点和终端设备节点。程序的编写包括两个部分:协调器程序的编写和路由器/终端节点的程序编写。在编写程序之前需要制定协调器节点和路由器节点之间的通信协议,协调器节点与路由器节点之间的数据收发需要配置端点描述符的输入/输出簇,通过描述符的簇ID来判断接收数据的类型。17.3ZigBee网关软件结构网关软件结构无线传感器网络无线传感器网络协调器结点在无线传感器网络中,协调器的主要功能包括网络的建立、数据的接收和发送、串口控制。路由器结点/终端结点路由器结点和终端设
289、备在应用层采用同一个程序,根据编译条件的不同来决定该程序是路由器程序还是终端设备程序。根据路由器功能的设计,路由器程序包含以下功能:在路由器节点加入网络后,路由器节点将获取本身的网络地址信息,发送给协调器节点。将子节点的数据发送给下一跳路由或协调器节点,同时本身也需要承担数据采集的任务。17.3ZigBee网关软件结构网关软件结构Linux开发平台的搭建开发平台的搭建嵌入式网关设计中,系统开发平台的搭建是网关开发的基础。嵌入式操作系统有几个特点:实时性、可裁减性、支持网络和图形功能、功能可扩展等。宿主机和目标机由于嵌入式Linux的开发板资源有限,不可能在开发板上运行开发和调试工具,通常需要交
290、叉编译调试的方法,即“宿主机+目标板(开发板)”的形式。建立Linux交叉编译环境步骤1:将下载好的文件拷贝到宿主机系统里相应目录下,进入该目录,执行解压命令;步骤2:把编译器路径加入环境变量;步骤3:重启系统或者Logout系统,在终端里面输入arm-linux-gcc-v查看交叉编译版本。17.3ZigBee网关软件结构网关软件结构Linux开发平台的搭建开发平台的搭建p目标板文件系统映象的制作步骤1:把mkyaffs2image.tgz拷贝到宿主机的工作目录并解压,在终端中执行以下命令:#cd/root/yafifs2#tarzxvfinkyaffs2image.tgz-C/步骤2:把r
291、oot_qtopia.tar.gz文件拷贝至工作目录/root/mkyaffs2image中,然后解压,执行命令:#cd/root/yaffs2#tarzxvfroot_qtopia.tar.gz#mkyaffs2imageroot_qtopiaroot_qtopia.img17.3ZigBee网关软件结构网关软件结构p嵌入式嵌入式Web服务器搭建服务器搭建嵌入式Web服务器通常由以下五个部分组成:应用程序接口、虚拟文件系统、安全模块、配置模块,HTTP引擎,如图所示。17.3ZigBee网关软件结构网关软件结构p嵌入式嵌入式Web服务器搭建服务器搭建用户通过客户端浏览器访问嵌入式Web服务器
292、,Web服务器响应客户端请求将结果返回,其原理如图所示。17.4ZigBee数据收发与应用处理数据收发与应用处理p嵌入式数据库在网关中的应用嵌入式数据库在网关中的应用在本设计中,PC端用户可以通过浏览器输入嵌入式网关的IP地址进入到系统的登录界面,用户输入用户名和密码得到认证以后登录到管理系统,通过管理系统,用户可以通过获取节点信息实现温度的实时显示,并通过输入指令实现对每个节点的控制。系统的基本结构图如图所示。17.4ZigBee数据收发与应用处理数据收发与应用处理p网页动态显示传感器数据网页动态显示传感器数据在嵌入式网关中,通过串口采集传感器数据,每个温度信息前面都带有设备号字符,根据不同
293、的设备号对环境信息分别存储在txt文档中,然后将txt文档中的信息动态显示在网页上。pAjax简介Ajax的全称是AsynchronousJavaScriptAndXML(异步JavaScript与XML)。它是很多己成熟技术的一个集合体:XMLHttpRequest对象、DOM、JavaScript、XML等。每一项内容分工合作,完成Web页面动态显示并且交互任务由DOM来实现,XML负责服务器端与客户端的数据传输处理,只有当读取异步数据的时候才需要调用XMLHttpRequest对象。最后,Web页面中的JavaScript程序来完成处理和绑定所有的数据。17.4ZigBee数据收发与应用
294、处理数据收发与应用处理网页动态显示传感器数据网页动态显示传感器数据pJavaScript介绍JavaScript是一种基于对象和事件驱动并具有安全性能的脚本语言。它是弱类型语言,变量不需要明确的类型。在网页(HTML)文件中加入JavaScript脚本来实现用户所需要的一些功能,脚本程序与HTML语言能够形成互补的优势。JavaScript脚本程序语言具有以下特点:简单性,易于使用,跨平台性,基于对象,高安全性。17.4ZigBee数据收发与应用处理数据收发与应用处理网页动态显示传感器数据网页动态显示传感器数据p读取串口数据设定ZigBee数据釆集的时间为每两秒钟采集一次,然后将采集的数据发往
295、ARM开发板。首先,在串口程序中设置好波特率,数据位等。对串口进行顶以后,编写主体函数,在主体函数中定义buf,将采集的数据传到buf后,只要buf里面有数据,数据就自动存储到txt文档,从而实现了数据的实时存储。小结小结421本章重点讲解了基于基于Zigbee协议的嵌入式网关的设计与实现,包括硬件架构和软件结构。介绍整个网络的设计框图以及网关的硬件框架,然后根据总体结构设计无线传感器网络网关的硬件部分;并搭建数据采集的无线传感器网络和网关系统平台。介绍了环境数据的动态显示过程,釆用Ajax技术来实现数据的动态显示。第18章 Windows CE网络服务器开发目目 录录 18.1Windows
296、CE网络服务器通信架构18.2系统硬件结构及平台搭建18.3WindowsCE操作系统移植与软件平台开发18.4嵌入式Web服务器软件实现18.1WindowsCE网络服务器通信架构网络服务器通信架构网络通信架构处于整个网络系统的最基础位置,合理的网络通信架构对系统运行效率和可维护性具有至关重要的作用。通信架构分析通信架构分析网络通信系统应用的架构主要分为两大类:C/S架构和B/S架构。C/S架构为客户机/服务器架构,该结构采用双层设计模式,客户应用层和服务器层。客户应用层提供管理员或终端用户与系统进行交互的通信界面,而服务器层则提供管理员所需的数据存储和处理操作,客户端和服务器端之间通过网络
297、相连。B/S架构为浏览器/服务器架构,用户和服务器之间的请求服务及解析响应结果的操作全部在浏览器中实现,这种架构突破了传统时间和空间的限制,随时随地向服务器请求服务。18.1WindowsCE网络服务器通信架构网络服务器通信架构HTTP协议协议HTTP(超文本传输协议)协议是用来构建分布式、协同超媒体信息系统的应用层协议,是一种通用的、无状态的协议。HTTP协议用于Web服务器和Web浏览器之间的通信,用来交互具有MIME格式的请求和响应报文。基于HTTP协议的客户服务器模式的信息交换分四个过程:建立连接、发送请求信息、发送响应信息以及关闭连接。在HTTP协议中,通过消息来进行通信,HTTP通
298、信过程如图18-1所示。18.1WindowsCE网络服务器通信架构网络服务器通信架构图18-1HTTP通信过程18.2系统硬件结构及搭建系统硬件结构及搭建嵌入式嵌入式Web服务器的系统结构服务器的系统结构嵌入式Web服务器是一个嵌入式系统,由硬件系统和软件系统两个部分组成,二者紧密结合,相互协调。嵌入式web服务器的系统层次结构如图所示:18.2系统硬件结构及搭建系统硬件结构及搭建系统硬件结构系统硬件结构系统需要包括CPU、存储单元、网络接口等单元。嵌入式CPU由于系统的外围设备比较多(网络接口、LCD接口、USB接口等)、通信复杂,如果完全自己开发各种驱动程序并管理其通信是一件庞大的工作,
299、开发周期过长。因此需要考虑选择一款操作系统来管理协调系统各软件模块。ARM微处理器广泛应用于便携式通信产品、手持运算、多媒体和嵌入式解决方案等领域,已成为RISC标准。ARM9处理器可以轻松地运行WindowsCE或者Linux等操作系统,并能够进行较为复杂的信息处理,三星公司的高性价比、低功耗的S3C2410处理器是合适的选择,它由ARM920TDMI、MMU和高速Cache三部分组成。18.2系统硬件结构及搭建系统硬件结构及搭建系统硬件结构系统硬件结构存储器嵌入式系统的存储器主要包括Norflash、NANDflash、SDRAM(包括16M显存)、SD卡存储器。Flash存储器具有掉电保
300、护功能,它主要是用于存储固化的启动代码,操作系统以及初始化代码。与Flash存储器相比,SDRAM不具有掉电保持数据的特性,但其存取速度远远高于Flash存储器,且具有读/写的属性。因此,SDRAM在系统中主要用做程序的运行空间、数据区以及堆栈区。18.2系统硬件结构及搭建系统硬件结构及搭建系统硬件结构系统硬件结构网络接口作为Web服务器,网络接口电路是不可或缺的。选用CS8900A作为以太网的物理层接口,其与CPU的连接如图所示。18.2系统硬件结构及搭建系统硬件结构及搭建Web服务器的软件总体设计服务器的软件总体设计嵌入式Web服务器的软件系统大致包含以下主要模块:软件系统平台的核心(系统
301、引导程序)操作系统引导程序主要是为操作系统动态地创建数据段、堆栈、页表等软件环境,并将操作系统内核的可执行镜像从Flash存储器复制到RAM中,然后再从RAM中执行操作系统的内核。嵌入式操作系统开发嵌入式系统的开发工作主要是底层设备驱动的开发,从而为上层软件访问底层硬件设备提供统一的接口。18.3WindowsCE操作系统移植与软件平台开发操作系统移植与软件平台开发WindowsCE作为微软发布的嵌入式实时操作系统,具有良好的人机界面、可靠性高、开发周期短、开放性好且便于与各种设备进行快速连接等优点。WinCE具有一个操作系统所需要的各种功能元素,在PlatformBuilder下可以根据具体
302、的应用目标来裁剪各种功能元素,得到满足不同需求的平台。概述概述WindowsCE操作系统的软件平台开发包括操作系统的定制和移植。移植WindowsCE操作系统的主要工作是对BSP(BroadSupportPacket,板级支持包)的修改,BSP包含Bootloader、OAL和驱动程序三大部分,它们互相关联,缺一不可。18.3WindowsCE操作系统移植与软件平台开发操作系统移植与软件平台开发Microsoft Platform Builder平台开发平台开发通过platformBuilder定制的系统由大量组件(Component)组成,这些组件构成了WinCE的基本要素。BSP板级支持包
303、BSP板级支持包是一个包括启动程序、OEM适配层程序(OAL)、标准开发板(SDB)和相关硬件设备的驱动程序的软件包。其结构示意图如图所示。18.3WindowsCE操作系统移植与软件平台开发操作系统移植与软件平台开发Microsoft Platform Builder平台开发平台开发定制操作系统PB平台己经为系统的定制准备好可用的配置(Availableconfiguration),设置中有包含WinCE已经设定的基本配置结构供开发人员选择。如果所需设计的产品和列表中保存的基本配置相同,只要直接选择该选项就可以完成基本的设定了。系统定制了CustomDevicewithShellandGra
304、phicalUserInterface选项,该选项可以选择多种操作系统特性并且包括图形显示功能。18.3WindowsCE操作系统移植与软件平台开发操作系统移植与软件平台开发Microsoft Platform Builder平台开发平台开发生成操作系统镜像操作系统的生成过程主要经历以下四个阶段18.3WindowsCE操作系统移植与软件平台开发操作系统移植与软件平台开发Microsoft Platform Builder平台开发平台开发移植BootloaderBootloader是操作系统内核运行之前运行的一段单独的程序代码,它存放于目标平台的非易失存储介质中,如ROM或者Flash。通过这
305、段程序可以完成硬件设备的初始化、建立内存空间映射图以及为内核镜像建立通信通道和调试通道等工作,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。18.3WindowsCE操作系统移植与软件平台开发操作系统移植与软件平台开发Microsoft Platform Builder平台开发平台开发移植WindowsCE操作系统主要移植步骤如下:(1)在PlatformBuilder中打开Target菜单,单击configureRemoteConnection;(2)选择Services选项卡;(3)从Download字样下面的组合框中选择Ethernet;(4)单击
306、右边的“Config”按钮,弹出一个新的对话框;(5)从AvailableDevices处选择设备名,并单击“OK”按钮;(6)选择Kernel处的Ethernet;(7)打开Target菜单,单击Download/Initialize菜单项;(9)等待操作系统镜像下载完毕。18.3WindowsCE操作系统移植与软件平台开发操作系统移植与软件平台开发OAL层开发层开发OAL层位于系统硬件设备与操作系统内核之间,BSP通过OAL连接到系统内核,OAL层提供了许多直接对硬件的操作。系统初始化操作系统的启动顺序:(1)CPU执行引导向量,跳转到硬件初始化代码,即Startup函数;(2)在Star
307、tup函数完成最小硬件环境初始化后跳转到KernelStart函数(当CPU为x86架构时跳转到KernelInitialize函数)对系统内核进行初始化;(3)KernelStart函数调用OEMIintDebugSerial完成对调试串口的初始化,调用OEMInit函数来完成硬件初始化工作以及设置时钟、中断,调用OEMGetExtensionDRAM函数来判断是否还有另一块DRAM。18.3WindowsCE操作系统移植与软件平台开发操作系统移植与软件平台开发OAL层开发层开发系统时钟在任何一个硬件系统中,时钟是必不可少的。目前,嵌入式芯片的主流设计思路是CPU外接晶振,内部通过PLL(锁
308、相环)进行倍频,以达到高速的目的。典型的系统总线频率为133MHz。通过进一步的分频,这些频率可以供给外设。p系统I/OWindowsCE提供了一种内核与硬件通信的方式,通过这种机制,内核可以通过传递参数的方式直接操作系统的硬件。这项功能也是在OAL层完成的,具体要执行OEMIOControl函数。OEMIOControl函数在OAL层起到至关重要的作用。18.3WindowsCE操作系统移植与软件平台开发操作系统移植与软件平台开发pOAL层开发层开发系统调试串口WinCE设置了一个默认的串口作为调试信息的输出,用户通过调试命令打印调试信息的时候,系统将打印信息从默认的调试串口输出。WinCE
309、的默认调试串口的初始化也是通过OAL层来实现的。串口调试函数是调试OAL层重要工具。18.3WindowsCE操作系统移植与软件平台开发操作系统移植与软件平台开发S3C2410平台驱动开发平台驱动开发驱动程序开发是WindowsCE系统BSP开发重要的一个环节。其驱动模型主要包括流接口和本机驱动两种。流接口驱动与系统其他部件间的关系如图所示。18.3WindowsCE操作系统移植与软件平台开发操作系统移植与软件平台开发S3C2410平台驱动开发平台驱动开发p串口驱动程序串行通信接口主要是指UART和IRDA两种。p串口驱动程序结构在WinCE提供的驱动程序中,串口驱动采用分层结构设计,MDD提
310、供框架性的实现,负责提供操作系统所需的基本实现,并将代码设计与具体的硬件分离。而PDD提供了对硬件操作的相应代码。MDD和PDD两者结合实现了设备驱动的目的。p串口驱动相关函数在WindowsCE中,串口驱动程序的开发模型是以分层的形式给出的,在驱动中实现了流接口函数集中的全部函数,具体函数及其功能如表18-1所示18.3WindowsCE操作系统移植与软件平台开发操作系统移植与软件平台开发pS3C2410平台驱动开发平台驱动开发函数名功能描述COM_Close关闭设备,应用程序通过C1oseHandle()函数调用此函数COM_Open打开设备进行读/写,对应的文件系统API为CreateF
311、ile()函数COM_Init进行驱动初始化COM_Deinit用卸载驱动程序COM_Write应用程序在设备驱动处于打开状态时,通过WriteFile()调用COM_Read应用程序在设备驱动处于打开状态时,通过ReadFile()调用COM_IOControl上层软件通过DeviceIoControl()调用COM_seek对设备的数据指针进行操作,由应用程序通过SetFilePointer()调用COM_PowerUp在系统挂起前调用COM_PowerDown在系统重新启动前调用表18-1串口驱动程序函数集18.3WindowsCE操作系统移植与软件平台开发操作系统移植与软件平台开发S3
312、C2410平台驱动开发平台驱动开发NANDFlash驱动NANDFlash具有存取速度快、体积小、成本低特特点,很适合作为海量数据的存储设备。在WindowsCE系统中,将Flash驱动分为FAL层FlashAbstractionLayer)和FMD层(FlashMediaDriver)。Flash驱动的软件结构图如图18-6所示。由于NANDFlash在读写过程中可能产生位翻转的错误,所以读写时需要对数据进行校验。图18-7所示为NANDFlash读操作流程。18.3WindowsCE操作系统移植与软件平台开发操作系统移植与软件平台开发图18-6FLASH驱动的软件结构18.3Windows
313、CE操作系统移植与软件平台开发操作系统移植与软件平台开发图18-7NANDFLASH读操作流程图18.3WindowsCE操作系统移植与软件平台开发操作系统移植与软件平台开发S3C2410平台驱动开发平台驱动开发基于NANDFlash的Fat文件系统建立NANDFlash可存储大量数据,为了方便数据管理和提高数据访问速度,可以使用文件系统对数据进行管理,Fat文件系统是一个很优秀的文件系统,很适合在嵌入式设备中使用。WindowsCE利用存储管理器管理外围存储设备以及用于访问它们的文件系统。NANDFlash擦除操作流程图如图18-8所示。18.3WindowsCE操作系统移植与软件平台开发操
314、作系统移植与软件平台开发图18-8NANDFLASH擦出操作流程图18.4嵌入式嵌入式Web服务器软件实现服务器软件实现Web服务端应用软件实服务端应用软件实现现嵌入式Web服务器端软件主要包括主监控进程、HTTP报文解析、各分支处理及相关页面的设计等模块。服务器在TCP的80端口(也可以自行定义,这里定义为80)进行监听,当客户端(Web浏览器)有请求时,建立连接进行通信,处理用户请求,并将结果返回给用户。pWeb服务器主程序首先创建一个主进程StartServer(),用来进行一系列网络参数的初始化。pHTTP请求报文分析HTTP报文协议可以实现很多功能,这里只需要实现系统中所要用到的Ge
315、t和POST功能。Web服务器流程如图18-9所示。18.3WindowsCE操作系统移植与软件平台开发操作系统移植与软件平台开发图18-9Web服务器流程18.3WindowsCE操作系统移植与软件平台开发操作系统移植与软件平台开发Web服务端应用软件实服务端应用软件实现现p文件名分析文件名存储在输入缓冲区中的指定位置,并以空格结束。读出的文件名存储在输出缓冲区中。如果文件名只是符号“/”,则默认用户申请的是当前目录下的index.html文件。文件名分析由函数getFilename()完成。18.3WindowsCE操作系统移植与软件平台开发操作系统移植与软件平台开发客户端客户端Activ
316、eX控件的实控件的实现现ActiveX是Microsoft提出的采用COM(ComponentObjectModel)和DCOM(DistributedComponentObjectModel)使软件组件在网络环境中进行交互的一组技术集,ActiveX控件由三大要素组成:属性、方法和事件。属性是控件的基本特性,是控制的一部分,在控制装入时或控制正在进行时可以改变;方法是控件提供给外界的一个接口,类似于一个函数调用接口,用户可通过方法来设置控件的某些性质、执行某项动作或者进行某些运算以实现一定的功能;事件是控件对外部操作或控件内部处于某种状态时所发出的通知,它由控件本身所触发,并与容器进行通信。
317、小结小结453本章主要介绍了基于WinCE的嵌入式Web服务器的软硬件设计与实现,详细介绍了系统的硬件结构,服务器端软件结构和实现以及客户端ActiveX控件的具体设计与实现。介绍了WinCE系统的驱动模型以及工作结构,重点介绍了WinCE下驱动的开发。在网络服务和软件结构的基础上,详细介绍了嵌入式Web服务的技术基础,包括网络传输协议分析、套接字技术以及ActiveX控件技术。第19章 Android系统LBS定位应用开发目录目录19.1概述19.2手机定位技术19.3开发环境及关键技术19.4系统功能分析与设计19.5系统功能实现19.1概述概述456位置服务(LBS)是一种能够提供给用户
318、当前位置的服务,由运营商提供网络和GPS定位相结合,再通过手机平台的LBS应用软件来取得手机用户当前位置信息的技术。LBS的服务类型有很多,可以归纳为三大类:位置信息服务,位置游戏服务,位置签到服务。位置信息服务的关键在于如何准确、高效、低成本地获取用户的位置信息。手机定位技术是指利用GPS定位技术或者基站定位技术对手机进行定位的一种技术。基于GPS的定位方式是利用手机上的GPS定位模块将自己的位置信号发送到定位后台来实现手机定位的。基站定位则是利用基站对手机距离的测算距离来确定手机位置的。此外,还有利用Wi-Fi在小范围内定位的方式。19.2手机定位技术手机定位技术457卫星定位技术卫星定位
319、技术GPS(全球定位系统)来源于美国军队的一个军事项目。GPS的定位原理是测量GPS接收机和已知卫星的距离,在具体测量中为了达到精确性要求,需要引入4颗已知卫星来精确求解。如图19-1所示,图中卫星1、卫星2、卫星3、卫星4为已知卫星,数学计算模型公式如下:图19-1GPS定位系统di=cti 卫星到接收机之间的距离 c GPS信号的传播速度xi yi zi 卫星的空间直角坐标19.2手机定位技术手机定位技术458蜂窝网定位技术蜂窝网定位技术蜂窝网定位就是基于基站的手机定位技术,手机中SIM卡的作用是提供接入网络的信息,网络供应商也是用SIM卡来对用户进行计费,其中和基站通信的模块还是手机的无
320、线发射和接收器,当用户进入一个小区后,手机会自动注册到小区的基站。利用蜂窝网定位的方法主要有5类:19.3开发环境及关键技术开发环境及关键技术4592007年11月5日,Google公司对外正式发布了Android智能移动操作系统,这是一款开放源代码的手机操作系统。Android系统的总体架构主要分为三部份:基于Linux内核的底层驱动,用于协助应用程序操作设备硬件、Library本地函数库和Dalvik虚拟机组成的中间件,源代码中包含的一些应用程序以及用户安装的应用程序组成了系统的应用层。Android平台概述平台概述Android是一款面向手持设备开发的移动操作系统,为移动终端设备提供了一
321、套完整的软件支持,包括操作系统的核心,系统的中间件以及应用层的关键程序。Android系统的整体架构可以被看作不同层的软件堆栈,每一层由几个程序组建组成。Android系统的整体架构如图19-3所示:19.3开发环境及关键技术开发环境及关键技术460图19-3Android系统整体架构系统架构分为5部分:应用层应用程序框架层Android系统运行层Library本地类库Linux内核19.3开发环境及关键技术开发环境及关键技术461位置服务位置服务位置服务也称为定位服务,通过位置服务可以获取精度较高的物理经纬度信息,甚至海拔信息,这一切都是通过使用定位系统、通信网络或两者结合完成的。位置服务主
322、要分为3类:网络定位、终端定位和混合定位。Android系统通过混合定位技术来提供地理位置信息。Android提供位置服务的相关类的关系如图19-4所示,调用android.location包就可以获得位置服务的相关信息。图19-4位置服务相关类19.3开发环境及关键技术开发环境及关键技术462百度地图百度地图AndroidSDKSDK概述百度地图AndroidSDK是基于Android操作系统的移动设备应用程序接口。该套SDK开发适用于Android系统移动设备的地图应用。地图图层地图上的兴趣点、图书馆、公交站、流量监控等都是通过地图图层展现的。地图图层包括底图、实时交通信息图、卫星图。(1
323、)底图:基本地图图层,会显示基本地图信息,包括道路、医院、图书馆等的位置信息。(2)实时交通信息图:显示实时的交通信息。(3)卫星图:卫星地图是卫星拍摄的真实的地理面貌。19.3开发环境及关键技术开发环境及关键技术463百度地图百度地图AndroidSDK检索服务LBS(位置服务)云百度地图LBS云是百度地图针对LBS开发者全新推出的平台级服务,不仅适用PC应用开发,同时适用移动设备应用的开发。通过以下步骤可以检索开发者自己的数据:数据存储、检索、展示。19.4系统功能分析与设计系统功能分析与设计464需求分析需求分析功能分析语言文字和视图是手机地图应用为用户提供地图服务最直观的表现形式,其目
324、的是为用户提供简洁、高效的操作体验,在与用户交互并提供服务中占有重要地位。主要包括以下六个方面的内容。19.4系统功能分析与设计系统功能分析与设计465非功能性需求分析(1)性能需求(2)健壮性需求(3)安全性需求(4)可移植性需求Android开发环境的搭建开发环境的搭建概述Android程序开发环境有很多,本文介绍Google官方已经配置好了调试工具的Eclipse开发平台,Google开发者网站提供了此开发工具的下载。从Google开发者网站下载的开发工具包中已经包含了Eclipse程序,并且已经安装好了Android程序开发调试工具,开发者只要解压工具包就可以进行Android程序的开
325、发。19.4系统功能分析与设计系统功能分析与设计466搭建开发环境配置Java环境变量下载AndroidADTBundle工具包配置AndroidSDK创建Android虚拟机测试开发环境是否配置正确使用Eclipse开发Android应用利用Eclipse开发Android项目的步骤如下:首先,新建一个Android工程,根据具体需求选择合适的工程结构;其次,正确设置启动配置;再次,根据模块功能编写代码;最后,运行并调试程序。19.5系统功能实现系统功能实现467地图浏览控制功能的实现地图浏览控制功能的实现为了能扩展其他功能,在地图浏览界面加入地图模式和定位功能。单击“地图模式”,弹出地图模
326、式选择对话框,选择显示的地图形式,单击显示当前用户的位置。利用cityMap类来控制地图显示界面,其实现流程主要包括以下3步:(1)打开操作界面,cityMap通过调用setContentView(R.layout.map_city)来实现。(2)编写cityMap类。menu.add(0,menuMode,0,“地图模式”);menu.add(0,menuLocation,l,“定位”);(3)通过onOptionsItemSelected方法监听菜单是否被选中,实现具体功能。Intentintent=newIntent(cityMap.this,loc.class);startActivi
327、ty(intent);/loc.class是为帮助模块定义的Activity类19.5系统功能实现系统功能实现468地图模式选择功能的实现地图模式选择功能的实现地图模式选择被设计成selectViewMode类,具体实现流程如下:(1)首先用AlertDialog创建对话框,编码如下:Stringmenu=“街景模式”,“交通模式”,“卫星模式”;newAlertDialog.Builder(citymap.this).setTitle(“请选择地图模式”).setItems(menu,listener).Show();(2)用onClick方法来监听选项是否被选中。switch(mode)/
328、街景模式case0:mapView.setTraffic(false);mapView.setSatellite(false);break;/交通模式case1:/卫星模式case2:mapView.setTraffic(false);mapView.setSatellite(true);break;19.5系统功能实现系统功能实现469用户定位功能的实现用户定位功能的实现设置定位模块为Location类的步骤如下:(1)首先调整权限级别(2)获取MKLocationManager的实例MKLocationManagermLocationManager=null;mLocationManage
329、r=mapManager.getLocationManager(); /注册位置更新事件mLocationManager.requestLocationUpdates(this);/使用GPS定位mLocationManager.enableProvider(int)MKLocationManager.MK_GPS_PROVIDER);(3)在Location类中,首先通过GPS获取用户当前的经纬度信息,并显示用户当前位置。myLocationOverlay=newMyLocationOverlay(this,mapView);myLocationOverlay.enableMyLocatio
330、n();mapView.getOverlays().add(myLocationOverlay);19.5系统功能实现系统功能实现470地点搜索功能的实现地点搜索功能的实现搜索模块被设置成Search类,具体实现过程如下:(1)Search类首先调用setContentView(R.layout,search)打开地点搜索的操作界面。(2)创建好布局后就开始对这个活动进行编码,初始化搜索模块,注册监听事件,实现异步搜索服务,代码如下:mSearch=newMKSearch();mMKSearch.init(mBMapMan,newMySearchListener();(3)实现MySearch
331、Listener的onGetPoiResult展示检索结果,并在地图上做标记,代码如下:publicvoidonGetPoiResult(MKPoiResultresult,inttype,intiError)if(result=null)return;PoiOverlaypoioverlay=newPoiOverlay(MyMapActivity.this,mMapView);(4)查询出地点后,在该页面设计一个Meau菜单能够把当前位置保存到收藏夹,方便用户再次浏览查看。19.5系统功能实现系统功能实现471周边查询功能的实现周边查询功能的实现周边查询设置成poiSearch类,具体实现过
332、程如下:(1)poiSearch类首先调用setContentView(R.layout,poi_search)打开相关地点搜索的操作界面。(2)将输入的地点通过getGeoByAddress()方法解析成为地点的经纬度,关键代码如下:doublegeoLatitude=adsLocation.getLatitude()*1E6;doublegeoLongitude=adsLocation.getLongitude()*1E6;gp=newGeoPoint(int)geoLatitude,(int)geoLongitude);(3)实现MySearchListener的onGetPoiResu
333、lt()方法,在地图上标注出搜索到的兴趣点,部分代码如下:for(MKPoiInfopoiInfo:result.getAllPoi()sb.append(“名称:”).append(poiInfo.name).append(“n”);.sb.append(“炜度”).append(poiInfo.pt.getLatitudeE6()/l000000.0f).append(“n”);19.5系统功能实现系统功能实现472路径服务功能的实现路径服务功能的实现在使用路径规划服务之前首先要对检索相关的方法进行初始化。在使用检索服务时,要明确唯一的起点和终点,否则将不能搜到所需结果。 例如,检索从新华
334、书店到长城大厦的驾车路线,其核心代码如下:MKPlanNodestart=newMKPlanNode();start.pt=newGeoPoint(int)(39.915*1E6),(int)(116.404*1E6);MKPlanNodeend=newMKPlanNode();end.pt=newGeoPoint(40057031,116307852);mMKSearch.setDrivingPolicy(MKSearch.ECAR_TIME_FIRST);mMKSearch.drivingSearch(null,start,null,end);OverridepublicvoidonGet
335、DrivingRouteResult(MKDrivingRouteResultresult,intiError)if(result=null)return;.RouteOverlayrouteOverlay=newRouteOverlay(MyMapActivity.this,mMapView);routeOverlay.setData(result.getPlan(0).getRoute(0);mMapView.getOverlays().add(routeOverlay);mMapView.refresh();19.5系统功能实现系统功能实现473路径服务功能的实现路径服务功能的实现公交方
336、面还可根据公交线路的id对公交的详细信息进行搜索,具体步骤如下:(1)利用兴趣点搜索的方法获取待查公交线路的信息;mMKSearch.poiSearchInCity(“北京”,“717”);(2)获取公交线路的详细信息,并展示;publicvoidonGetBusDetailResult(MKBusLineResultresult,intiError)if(iError!=0|result=null)Toast.makeText(MyMapActivity.this,“抱歉,未找到结果”,Toast.LENGTH_LONG).show();return;.RouteOverlayrouteOv
337、erlay=newRouteOverlay(MyMapActivity.this,mMapView);routeOverlay.setData(result.getBusRoute();mMapView.getOverlays().clear();mMapView.getOverlays().add(routeOverlay);mMapView.refresh();mMapView.getController().animateTo(result.getBusRoute().getStart();小结小结474本章主要对Android系统平台以及应用结构进行了分析,详述了现有的各种定位技术的优劣性。在此基础上,介绍了一个基于百度地图SDK的一个简单的基于位置服务的系统。系统主要包括6个功能模块,地图浏览控制、视觉模式选择,用户定位、地点搜索、周边查询和路径查询等。对于每一个具体的模块给出了程序的界面布局、简单的实现原理和部分核心代码。