首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 单元电路介绍 > 其它电路
蓝牙局域网接入点的嵌入式实现
来源:本站整理  作者:佚名  2011-07-26 07:28:37



四. 协议栈的实现

  篮牙协议栈的设计主要包括:结构设计,重要数据结构的设计,任务的管理,内存的管理等等。

  1) 结构设计:系统采用单进程的结构,由主程序循环的调用几个任务。当一个任务执行完之后,才会进入对下一个任务的执行。任务的执行不影响中断的产生和中断服务程序的调用,可以保证系统对外部事件的响应,构成典型地前后台系统。

  2) 重要数据结构的确定:根据对蓝牙协议的分析可知,协议的中心任务是建立和管理几个蓝牙设备之间的连接,建立通讯链路,并借此传输数据。因此对这种连接的建立,维护和参数管理是软件最基本的功能。根据蓝牙规范中连接的属性和各种协议数据包的定义,可以确定对应的数据结构。例如可以用结构l2cap_con来描述逻辑链路控制和适配协议层的对等层间的连接通道。

  struct l2cap_con {

  BD_ADDR remote_bd; /* 6 bytes */

  unsigned short LOCal_cid;

  unsigned short remote_cid;

  int current_state;

  unsigned short psm;

  unsigned short remote_mtu;

  unsigned short flush_timeout;

  …

  };

  其中BD_ADDR是一个6字节的结构,记录连接中另一方的蓝牙地址,local_cid是逻辑信道本地端设备信道标示符,remote_con是远端信道标示符,current_state表示目前的连接状态,psm是协议/服务复用段,remote_mtu是远端最大传输单位等等。还有其他一些变量用来说明这个连接的一些属性和状态。通过这个数据结构,可以描述在L2CAP 对等层间的数据通道。除了结构l2cap_con之外,还有许多用来描述各层协议数据包属性的结构也都是系统的核心结构,这里不再详细列出。

  3) 任务管理:针对协议任务和事件数量多,并且之间相关性大的特点,使用有限状态机的方法来处理,并采用过程驱动方案来实现有限状态机,为每个输入状态启动一个过程。当某一个事件发生时,系统利用当前状态来选取一个适当的动作,该动作处理输入事件并更新当前状态变量值。如图四所示是L2CAP的面向连接信道的状态机,显示了由哪一个事件导致状态转换,以及在状态转换时采取哪一个动作。信道的操作共有七个状态:关闭、高层连接请求、L2CAP层连接请求、配置、打开、高层断开连接请求、L2CAP层断开连接请求。

  4) 内存管理:内存管理通常是操作系统的核心任务之一,由于本系统没有使用操作系统,所以这部分任务是系统必需而重要的任务。输入的数据包必须被保存在内存中,并将其传递给适当的任务作进一步的处理。同时,应用程序产生的输出数据也必须以数据包的形式存储在内存中,并将其传递给硬件设备传送出去。设计要做到快速分配存储空间,并且避免数据包在各层协议之间移动时的数据复制。针对本系统处理的实际情况:蓝牙协议数据报只有一些固定的大小的包类型,因此采用系统分配大小固定的缓冲区的方案。这样作可以杜绝内存碎片。需要缓冲区的时候,系统调用allot_bt_buffer函数。只要缓冲区分配完成,需要保存的仅仅是指向缓冲区的指针,所以归还缓冲区到空闲缓冲区列表的时候,系统调用unallot_bt_buffer,将被释放的缓冲区的指针交还给它。采用这种方法,协议软件只需传递指向该缓冲区的指针,处理过程统一,并且避免了处理过程中数据的移动。

  从一般软件设计分类的角度来看,设备管理和系统资源管理是操作系统的任务。在综合考虑系统简单性和成本等因素之后,本系统中没有使用独立的实时操作系统,而是由嵌入式软件完成部分应该由操作系统完成的功能。

  五. 结束语

  本嵌入式局域网访问点已可以应用于对机器人的远程访问上。如果将现有接入点进行适当改动和扩展,就能实现其他功能,例如给它扩展上一个语音解码芯片后很容易扩展到语言信号的传输。

上一页  [1] [2] 

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)
Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:19,773.44000 毫秒