【ACCESS精品源码栏目提醒】:网学会员为需要ACCESS精品源码的朋友们搜集整理了【精品】基于Xilinx Virtex II的蓝牙协议配置(无线通信协议) - 大学课件相关资料,希望对各位网友有所帮助!
基于 Xilinx Virtex II 实现的蓝牙协议摘要: 现在,市场有一种将许多功能整合到一台设备上的强烈趋势。
传统上这些目标的实现是通过使用强大的通用处理器来处理额外工作实现的。
然后,引进特别针对应用的处理器(协处理器或硬件加速器)来减轻和更有效率的处理任务。
当前,这种趋势正朝着包含可重组处理器承担不需要同时处理的任务方向发展。
通过这种方式,可以节省很多成本,并减少特别处理器的使用。
在后两个应用方法中,应用概况首先要确定以决定是用基于计算的还是基于数据存储的硬件实现。
本文,我们展示了基于蓝牙标准的实现的概况结果。
据我们所知,这是第一次关于蓝牙协议的概况结果的讨论。
首先,我们仅关注蓝牙协议,并确定计算/数据存储操作/函数。
第二步,我们将考虑由于蓝牙代码根据系统整合需要所作的附加功能。
我们的结果显示六个函数模块是最重要的。
当包括操作系统系统后(不包括相关干扰功能),最重要的函数是 memcpy。
关键字:无线协议,蓝牙协议,配置,可重组的硬件I. 引言 现在,我们正在见证一种持续不断整合许多功能到一个设备上的趋势。
特别的,在移动设备上整合了许多功能,如:议事日程功能,音乐,游戏,无线连接功能等。
根据设备周围的网络情况,可以使用许多功能,如:无线网(Wi-Fi)GPRS.UMS蓝牙等。
传统上有两种方式实现整合功能。
第一,强大的通用处理器(GPP)可以应对新添加功能的需求。
第二,不同的特别处理器可以提升 GPP 的作用,并针对处理计算或存储部分。
需要指出的是,两种方法并不排斥,可以结合两种方法达到更好的结果。
而且,通常来说扩展的 GPP 将会更通用,但性能不好。
另一方面,ASP 可提供很好的处理性,但缺乏通用性。
最后,GPP 被用作控制任务的处理,而 ASP 用作计算任务的处理。
图 1 展示了这种传统的方法。
图1 传统方法 仅包含大量处理器这种整合方法将导致大型、笨重、缺乏处理能力的设备。
一种另外的解决办法是,把计算和数据存储任务用可重构处理器处理(RP),而把其他任务(通常是控制相关的任务)交给 GPP 处理。
图 2 展示了该方法的简图。
图2 可重组方法 使用 RP 需要的条件是任务量足够大并需要同时处理(或者不要要实时处理时就使用小型的可重组处理器)。
使用 RP 的好处是,通过使用特殊的硬件电路设计,对于它支持的任务将能提供很好的处理。
其他的优势是产品整体成本的下降,以及无需添加硬件进行升级。
更重要的是,面向市场的时间大大缩短。
像使用传统的 ASP 一样,怎样把 RP 跟 GPP 结合起来需要由计算、数据的繁复程度以及应用和网络标准状况来决定。
因为之前没有蓝牙标准概述,我们把蓝牙标准作为我们研究的起点。
当运用蓝牙协议观测处理过程时,我们的结果显示有六个函数是最为中要的。
对蓝牙实现的观测将和 Linux 操作系统紧密结合起来。
因此,我们的概况结果包括了在蓝牙处理过程中对系统函数的调用(但不包括相关的干扰函数),而最重要的函数是 MEMCPY 论文组织结构如下:II 部分介绍了蓝牙堆和它的实现情况。
在 III 中,我们介绍描述了系统和检索概况信息。
在 IV 中,我们讨论了蓝牙标准相关的概况结果。
在 V 中,我们讨论了当包括操作系统函数时的结果,并且我们把函数候选等同于在 RP 上的实现。
最后,在VI 中我们得出了一些结论。
II 蓝牙标准 蓝牙标准最初是为了代替线缆而设计的。
除此之外,蓝牙开发和使用者都一直在发掘其它适于蓝牙标准的应用设备。
这些设备包括:LAN 节点接入(Lan
Access Point),文件传输等。
蓝牙允许在 100m 之内最多 7 台设备之间的通信,并且它们中有一个主设备,通信速率为 723.2Kbps. 蓝牙设备应用的广泛性说明了现有很多蓝牙软件层。
底层(如:射频基带,链路控制,链路管理)和空中传输非常相似。
它们可以处理侦测到的错误和重发信息,以及管理设备之间的链接。
它们还可以提供语音链接,以及两个或更多设备之间的数据通道。
为了简化将蓝牙整合到已有设备中区,蓝牙协议提供了中间层可供隐藏部分无线通信的复杂性。
图3 蓝牙堆层 蓝牙无线技术的基本层(见图 3)是:射频基带,链路控制和管理,逻辑链路控制,适应协议(L2CAP),发现服务协议(SDP)。
在这些层之上,根据不同的需要可以选择不同的层(见图 4)。
每种配置都调用更高层。
图4 每个配置中所涉及到的层 更低的队层位于蓝牙软件狗,而高的堆层位于主控端(如果该产品是移动的,主控端也就是 PC 或微处理器)。
蓝牙软件狗通过主控界面和主控端通信,该界面位于下层和上层之间。
HCI 不属于软件层,但它是一个通信转发协议,它的目标是解决不同厂商之间的交互操作性问题。
L2CAP 层把两个或更对设备之间的上层数据多路传输到异步少链接处(ACL),在主控状态时,引导数据进入从属状态。
它还可以把数据分割重组为数据簇,以适应 HCL 的最大有效载荷。
通常,每一个 L2CAP 逻辑通道都有一个独立识别通道器(CID)。
L2CAP 只处理数据封包,而不是声音,通过所有的通道发送,但不是广播发送(从一个主控端向所有的从属端同时发送)。
位于 L2CAP 之上的堆层可以由服务协议多路转接器(PSM)的值识别。
远程设备需要和特殊的 PSM 链接。
L2CAP 分配一个 CID。
而且会有很多开放的通道传送相同的数据。
每一个蓝牙协议定义的位于 L2CAP 之上的层都有它自己的 PSM。
SDP - 0x0001 RFCOMM - 0x0003 TCS-Bin - 0x0005 or 0x0007 ,通过 L2CAP 通道仿真 RFCOMM(一个面向射频,来自于 PC 机串并口仿真的名字)了 9 针 RS232 通信。
主设备必须为每一个从属端有独立的 RFCOMM 模块,来进行串型通信。
二进制控制协议技术规格(TCS-Bin)包括从组管理到接受信号标记的一系列信号命令,也包括声音链接的建立和终端。
SDP 层区别于其它所有的位于 L2CAP 之上的层,因为它是以蓝牙为中心的。
设计它不是用来和协议中的更高层会话,而是发出蓝牙操作的特殊需求:在连接设备上查找可用服务。
SDP 层就像一个服务数据库。
本地设备负责在数据库中注册可用服务,并保持更新。
远程设备询问数据库,查询可用服务和如何连接它们。
蓝牙系统是一个多任务系统。
因此,会有很多任务需要同时处理:链路管理信息必须处理;接受到的信息必须马上处理;待发送信息必须交给基带;如果有一个通过 HCI 的分离于主机的通讯,则这个需要马上通告;所有这些都需要同时处理。
为了处理多任务,任何一个多任务操作系统都有一个调度表。
在系统中包含调度表的一种解决办法是使用操作系统。
我们将会看到蓝牙技术和 Linux 操作系统的协同优势。
蓝牙是一个开放的标准,而 Linux 是一个开源的操作系统。
我们可以使用免费软件来减低设备费用。
最近,Linux 内核在它的驱动中包括了蓝牙堆。
在 2001 年,发布了基于 Linux 的蓝牙工程的
源码,很快 2.4.6 内核就涵 ,并且它包含 HCL、L2CAP、RFCOMM 驱动,以及 SDP盖了它。
这项工程称作 BlueZ【2】应用软件。
III 测量环境 为了跟踪蓝牙标准的配置数据,我们在两个系统上安装了 BlueZ 堆。
做此实验的系统如下: 台式机 Intel Pentium 4 CPU 2.80 GHz 安装 Linux2.4.22系统,Xilinx Platform StudioRelease 7.1.1 ,iMPACT H.40 Release 7.1.02i Xilinx Embedded Development Kit 7.1.3. The Xilinx ML310 Embedded Development Platform 4,Virtex-II Pro FPGA ,两个强劲PC 405 CPU300 MHz其中一个装 Linux MontaVista 2.4.245.第二个PPC在该试验中没有使用。
在蓝牙中可以实现的最有用的功能是文件传输。
这项功能将用到底层软件,L2CAP和SDP.在该试验中,我们使用的是Conceptronic公司的蓝牙USB适配器,也需要HCL层,来传输蓝牙层的底层和上层之间的通信信号。
正如所料,文件传输时要使用linux的TCP/IP部分。
为了完成文件传输,我们创建了一个50MB的文件在蓝牙设备之间传输。
用来跟踪使用信息的事件分析器是Linux内核的一部分,而能够解释该信息的软件也是内核的内建的一部分,readprofile。
为了识别蓝牙的功能,该软件堆必须有选择的链接到ML310平台的Linux内核上。
由于我们考虑在Linux操作系统上实现蓝牙,我们必须考虑这个操作系统不是一个确定的软件。
由于系统状态的不同,系统的反应也会不同。
因此,为了跟踪有价值的数据,我们进行了20个相类似的实验。
整个实验过程中,没有重启电脑,而事件分析器在每次试验时重启。
IV 蓝牙应用结果 图5中,前面45排是三次实验中的一次配置信息,被数字编码后排序放置在图中。
Ticks N是一个事件分析器返回的结果, 该结果表明当系统被打断去处理事件分析器时,调用函数的次数。
图6说明了加载通常任务时的前45排数据,该数据由事件分析器返回。
它是根据函数的编码分解得到的,该编码是跟据函数的长度在内存中的地址空间决定的。
因此,我们可以假设编号高的函数在处理器中占的空间大。
图5根据数字排列的配置前45排 图6根据标准负载排列的配置前45排 从图5和图6中,我们可以清楚的看到蓝牙的6个功能:hci usb rx complete l2cap recvacldata hci usb rx submit hci send to sock hci rx task 和 hci acldata packet. 图7展示了统计数据的平均值, 以及蓝牙函数编码数的标准背离情况。
对每一个函数都有一个集合。
定义如下:实验按照y的间隔以x的置信水平会和于一线。
这意味着根据学生T测试估计的信赖区间的结果,其宽度少于平均值x,该平均值的置信水平为y。
得到的集合将展示这些20个实验的数据是多么珍贵。
V 全局配置结果 根据图5和图6分析可得,系统函数是由OS,TCP/IP,以及蓝牙函数综合调用的结果。
我们可以看出,在大部分时间里,处理器都在处理中断(如_sti_end_ sti占据了时间的95)或者是执行时间(如hc_interrupt speedo_ interrupt trident_interrupt)或者拷贝数据的时间(如memcpy)。
和中断相关的函数是最重要的一部分,然而,它们却并不适合在可重组处理器上实现。
因为,每当中断发生时,OS处理它的状态都不一样,而这是由系统状态决定的。
因此,每次虽然引发的中断相同但执行代码却不同。
由于我们并不能事先知道那部分代码得到执行,所有我们并不能在可重组处理器上实现。
剩下的是memcpy函数,它用来根据地址负责数据拷贝(C代码如下): / This function is defined in linux-2.4/lib/string.c Copy one area of memory to another dest: Where to copy to src: Where to copy from count: The size of the area. You should not use this function to
access IO space use memcpy_toio Fig. 6. The _rst 45 rows of the pro_ler sorted by Normalized Load or memcpy_fromio instead. / void memcpyvoid destconst void src size_t count char tmpchar dest schar src while count-- tmp s return dest 该函数被几个蓝牙堆函数调用,但也同样被TCP/IP和系统函数调用。
图8是一个简化的图表,它展示了部分称作memcpy的函数。
传送50MB的文件,意味着从发送端缓冲区发出的每一帧数据都要传送到其他区域,然后在传送完成后,该文件才能被获取。
Memcpy被调用多次,它占用处理器的时间长短取决于移动的数据大小。
正因为这些,memcpy是能够在可重组处理器上实现的函数的最佳选择。
VI 结论 我们发现正在由一种越来越强将大量功能集成在一个设备上的趋势。
这种趋势意味着将要使用通用处理器,以及通过使用特殊应用处理器来提高处理效果。
当前,趋势正在朝着包含可重组处理器的方向发展,代替了大量特殊应用处理器。
为了使用可重组处理器(也包括对通用处理器和特殊用途处理器的融合方案),就需要应用信息的概况。
本文主要关注于蓝牙标准。
我们展示了两个蓝牙设备之间的关于文件传输的应用信息概况。
在用蓝牙标准看待处理过程,我们的结果显示有六个函数是最重要的。
考虑OS函数在内(但不包括中断函数)最重要的函数是memcpy。
由上所述,这就是需要在可重组处理器上实现的函数。