基于ARM平台的MAC协议IP核设计

发布者:书卷气息最新更新时间:2011-07-18 关键字:IEEE802.11  MAC协议  ARM平台  无线局域网 手机看文章 扫描二维码
随时随地手机看文章

  引言

  无线局域网被认为是下一代IT产业发展的是大推动之一,被IT业赋予了极大的希望。无线局域网802.11系列标准的MAC协议是一样的,只是在物理层上有差异,因此对802.11MAC协议的开发,不论是在802.11b流行的今天,还是802.11g可能会成为主流的将来,都是很有意义的。当然,ARM以其先进的体系结构已经成为嵌入式市场的RISC标准,因此基于ARM的IEEE802.11MAC协议的开发是很有现实意义的。

  PC软件开发是指脱离硬件的嵌入式软件开发阶段。此阶段可以在各种IDE环境下进行开发,并进行软仿真来验证软件的逻辑正确性。然后将开发出来的PC软件结合硬件所需要的硬件相关代码向硬件平台进行移值调试。前两个阶段完成后就得到了开发的最终成品。

  1 协议结构

  IEEE802.11MAC协议的SDL描述可以分为以下几个功能模块。

  *MAC数据服务模块:向LLC层提供MAC层的数据服务接口。

  *MPDU生成模块:将MSDU(MMPDU)生成MPDU,并对MPDU分段、加密以及进行排队管理。

  *协议控制模块:完成DCF、PCF下的各种协议控制功能,包括RTS/CTS、ACK、ATIM、CF-ACK等,并根据信道状态请求退避,在传送数据挫败后控制重传等。该模块还负责对所有接收到的MAC帧进行分类,按不同的类型送到不同的模块进行处理。

  *发送模块:将MAC帧以字节流的形式发送到物理层,完成实际的发送过程。这个模块中要完成对整个发送帧产生CRC校验,向发送的beacon帧中加入时戳用来进行时间同步。这个模块还负责处理底层获得的当前信道的状态,完成协议要求的随机退避功能。

  *接收模块:对从物理层接收到的帧进行CRC校验。如果正确接收的话,则进行地址过滤,丢弃目的地址不是自己的帧。如果数据是经过分段的话,还有进行数据分段的重装,然后将接收帧送往协议控制模块进行分类处理。同时,这个模块还要提取接收帧中的信道保留信息,结合信道上有无载波的状况综合判断信道的状态,并把信道的状态送往发送模块来协调退避功能的完成。

  *MAC管理实体模块:是管理核心,完成所有的管理功能,包括扫描、入网、认证、解认证、关联、解关联、重新关联、beacon帧的发送、站点状态管理等功能。

  *MAC管理服务模块:提供MAC管理接口,包括MIB库的管理,对MIB库的访问,并将管理接口传来的管理服务请求送到MLME模块进行实际处理,将结果返回给管理接口。

  2 协议实现

  IEEE802.11MAC协议的SDL流程中各模块之间的交互是通过信号的方式来完成的,模块之间通过交互信息来协调工作,并且完成各种MAC帧的结构之间的传递。我们将信号定义为Signal(PID,SID,Param)参数PID用来标准信号的目的模块,SID用来标志信号在目的模块中由哪个函数来处理,参数Param是一个指向存储区的指针,存储区里存放的是信号所要传递的信息。为了能使整个协议在信号的驱动下运行,需要由一个功能实体来完成信号的处理过程。这里采用的是一个循环队列来存放产生的信号,由主循环程序来不断检测队列中的信号,根据信号的PID和SID调用相应模块里的信号处理函数进行处理。

  协议中还涉及大量的比较判断和定时操作,当比较成立或定时到期后,进入相应的处理程序。其实,我们可以认为当比较成立或时间到期产生相应的信号,然后由信号处理机制来完成后续的工作。我们所要做的只是定义一个比较队列和一个定时队列,比较操作加到比较队列中,定时操作加到定时队列中,由主循环检测这两个队列。当某个比较判断成立时或某个定时期时从相应的队列中取出,然后再以信号方式加入到信号队列中去。因此我们将比较操作和定时操作分别定义为:

  Compare(PID,SID,Param11,Param12,Param21,Param22,Param31,Param32);

  Timer(PID,SID,Time);

  PID、SID标志比较成立或定时到期时产生的信号,Paramil、Parami2(i=1,2,3)为比较操作中需要进行比较的几对数据。Time为定时操作中设定的定时值。

  上面介绍的机制建构了协议框架,然后在这个框架基础上按照SDL流程编写相应的信号处理函数就要吧实现整个协议。

  前期协议开发了验证逻辑上的正确性。我们在Microsoft Visual C++环境下进行开发并进行了软仿真,结果表明所开发的设计在逻辑上是正确可行的。

  3 协议向ARM平台的移植

  我们所使用的ARM硬件平台ARM anywhere II采用的是三星公司的ARM芯片S3C4510B。S3C4510B是采用ARM7TDMI核的高性价比RISC微控制器,特别适用于网络应用系统。

  我们开发了一个软件模块PHY来模拟物理层收敛过程子层(PLCP),对于物理介质依赖子层(PMD)我们没有实现。这并不影响MAC协议的开发。LLC层的数据通过PC串口发送到ARM平台来模拟,数据经过MAC处理后送到PLCP子层,然后由PLCP子层直接发送。数据发送通过ARM的通用I/O来实现,发送速率由S3C4510B的定时器来控制。

  在将802.11MAC协议向ARM平台的移植方案中,有一部分代码的执行是依赖于ARM平台的。这部分代码的移植工作需要特别注意,包括以下几个方面:

  ①定时器。协议中要求的随机退避过程需要底层周期性的送slot来进行,这个周期性 slot需要用定时器来实现。协议中的网络分析矢量NAV需要用定时器来实现,以判断NAV的状态。协议中定义的几种帧间隔IFS(SIFS、DIFS、PIFS、EIFS)也需要利用定时器来实现。

  ②外部中断。802.11MAC协议中一个重要部分就是载波监听。当信道状态变化时(由忙到闲,由闲到忙)都要给负责监听信道状态的模块一个指示(CCA),指示当前的信道状态。这个过程可以由S3C4510B ARM芯片的外部中断来很好地实现。由于S3C4510B ARM芯片可以对中断检测方式进行配置,可以将中断检测方式配置为上升沿和下降沿均触发中断,这些就能很好地模块协议的中物理载波监听(CS)。

  ③I/O。模拟PLCP子层的数据收发,一共用到8个I/O端口,一次发送8位。在发送数据时,还使用了一个I/O端口作为发送指示。这个I/O端口通过信道模拟器连接到其它节点的用来监听信道状态的外部中断引脚上。[page]

 ④UART。我们用UART来实现PC和ARM的通信。一些管理命令,例如扫描、入网、认证、关联、解认证、解关联,节点的配置信息例如MAC地址等都可以从串口来发送给ARM。另外,所有发送的数据都会通过串口传送给ARM进行发送,所有接收到的数据将通过串口回传给PC。

  ⑤以太网控制器。以太网控制器在AP中是比较有用的。由于AP之间是通过有线的骨干网(backbone)来进行连接的,从而组成了分布式系统(DS),以太网控制器已经集成了IEEE802.11接口,就为实现这个有线的backbone提供了便利。

  4 硬件仿真环境

  IEEE802.11MAC协议和PLCP子层模拟模块都都在ARM平台上,串口通信程序运行在PC上。它和ARM的UART进行通信用于模拟LLC层数据服务和上层的管理服务,同时它还可以显示节点的运行状态和当前的网络状态。

  下面介绍一下我们使用的简易信道模拟器的原理。信道模拟器对应每个节点(ARM平台)有一套接口,其中有8个I/O用于数据传输。由于无线信道是开放式的,一个节点发送时其它节点都能收到,因此在信道模拟器中每个节点的8个I/O是两两相通的,这样就能保证一个节点发送时其它节点都能收到。另外,由于要模拟信道上的载波监听过程,我们用到了ARM上的外部中断用做载波监听位(CS),然后用一个I/O发送指示(TR)。这样,信道模拟器上要维持任何一个节点的CS位,都与其它节点的TR有一定的逻辑关系,例如,当一个节点发送时,将其TR置为0(0表示信道变忙,ARM引脚初始电平为高电平1),则这个0应该立即能反映到其它节点的CS位上从而产生中断,其它节点都会知道信道变忙而开始从信道接收数据。同时,当节点发送完毕后将TR置为1,其它节点就会产生中断并且检测到CS位为1从而知道信道变闲,接收结束。

  实际的信道模拟支持两个基本服务区(BSS)组成的分布式系统(DS),每个BBS内支持1个AP和2个普通节点。这内部的逻辑关系用可编程逻辑器件实现。

  5 移植过程中的注意事项

  PHY软件模块模拟PLCP子层,负责完成要求的载波监听和数据收发时的定时控制。这些功能都是采用中断方式实现的,因此要求代码执行速率要快。这里使用汇编语言开发来提供代码的执行效率。

  为了获得较高的代码执行速率和快速的中断响应,要求所有协议代码和中断服务程序都在SDRAM中执行。这就涉及到在设计ARM的初始化代码时要正确配置相应的存储区控制寄存器,并且完成代码的搬移和地址的重映射。

  ARM的初始化代码包括:

  *定义入口点(entry point)。

  *定义异常向量表,用来处理各种CPU异常,其中包括中断。

  *配置SDRAM和Flash的地址范围、时序等参数,以使这些存储器能正常工作。

  *代码搬移。程序代码一般应从Flash调入SDRAM中运行,以提高系统的运行速度。同时,系统及用户堆栈、运行数据也都放在SDRAM中。

  *对SDRAM进行地址重映射,从初始时地址空间的高端搬移到0x0开始的位置。

  *初始化堆栈。

  *初始化存储区。

  *根据需要改变处理器工作模式。

  *开中断。

  *到C程序代码入口点开始执行。

  另外,移植过程中还要考虑的一个问题是内存分配的问题。嵌入式系统中对内存的分配,一般来说要求快速可靠并且有效,实际上就是在采用静态分配内存还是动态分配存的问题。如果系统要求对实时性要求高并且不能容忍分配失败,这时就需要采用静态分配内存。采用静态分配一个不可避免的问题就是系统失去了灵活性,必须在设计阶段就预先估计所需要的内存并对其作出分配,并且要考虑到所有可能的情况。我们在移植过程中,考虑到实时生和可靠性是我们的主要目标,并且我们的ARM平台具有较大的存储区,因而采用了静态分配的方式。

  结语

  目前,嵌入式协议开发已经非常普通,本文只是根据作者的实际经验,介绍了嵌入式802.11MAC协议开发的基本过程。目前开发的协议已经在ARM平台上成功运行,并且性能良好。现在所使用的ARM平台是没有操作系统支持的,所移植的协议硬件依赖性太大,下一步我们将在有操作系统的ARM平台上进行协议移植,通过全长操作系统提供的API接口来提供协议的可移植性。另外,继续优化代码,提高代码效率,提高实时性与可靠性,以更适合于嵌入式应用环境也将是我们下一步的目标。

关键字:IEEE802.11  MAC协议  ARM平台  无线局域网 引用地址:基于ARM平台的MAC协议IP核设计

上一篇:Energy Micro新增12款Cortex-M3低功耗MCU
下一篇:ARM微控制器LPC210X的LCD接口技术

推荐阅读最新更新时间:2024-03-16 12:38

ARM推出全新开发套件协助业者缩短移动游戏平台上市时程
符合业界标准的ARM Mali SDK软件开发套件为绘图应用开发业者提供先进的软硬件及工具组合   ARM于日前在美国加州旧金山举办的游戏开发者大会中,发表其最新推出的ARM Mali 软件开发套件(Software Development Kit, SDK)。该套件能够协助游戏开发业者,从一般应用开发快速移转至能立即使用在各种手机上的设计方案。手持式装置制造商都希望在其新产品推出的同时,各种相关的游戏软件配套措施也已准备就绪。而Mali SDK的推出,正使开发业者能够在取得硅组件之前,便着手进行游戏软件的开发与测试,以确保新游戏能与手机同步问市,并延长游戏的销售周期。   Mali SDK为ARM绘图系列产品之最新力作,特别
[新品]
移植 ffmpeg 到 ARM 平台
一、下载yasm: 到 http://www.tortall.net/projects/yasm/wiki/Download 下载yasm0.7.2(x264需要用到的汇编编译器) for x86: ./configure --enable-shared --prefix=/usr/local make make install for arm: ./configure --enable-shared --prefix=/usr/local/ --host=arm-linux make make install 下载安装x264 到 ftp://ftp.videolan.org/pub/videolan/x264/s
[单片机]
基于ARM9内核的软硬件平台设计
嵌入式应用系统设计包括硬件平台和软件平台两部分。前者是以嵌入式微控制器/微处理器为核心的硬件系统;后者则是围绕嵌入式操作系统构建的软件系统。两者在设计上是密不可分的,并且需要在设计之间进行权衡优化,根据实际应用进行外扩和裁剪。 基于ARM926EJS内核的LPC3180内部集成了丰富的外设资源,为嵌入式系统构建提供了很大的设计空间。本文结合笔者开发LPC3180嵌入式平台的实际经验,将具体介绍该系统的实现、结构组成和实验结果。 1LPC3180芯片特性介绍 LPC3180 是Philips公司新推出的一款ARM9微控制器。它采用90nm工艺技术,片内集成ARM9EJS处理器内核,具有高计算性能、低功耗的特性,这使得在很
[单片机]
基于<font color='red'>ARM</font>9内核的软硬件<font color='red'>平台</font>设计
linux 2.6.32 在arm9(s3c2440)平台的移植2 -- Kconfig和Makefile(2)linux
Linux内核源码树的每个目录下都有一个Kconfig和Makefile, 分布到各目录的Kconfig构成了一个分布式的内核配置数据库, 每个Kconfig分别描述了所属目录源文档相关的内核配置菜单. 在linux目录执行内核配置make menuconfig时, 从Kconfig中读出菜单, 用户选择后保存到linux-2.6/.config的内核配置文档中. 在内核编译时, 主Makefile调用这个.config, Kconfig就是对应着内核的每级配置菜单. 添加新的驱动时需要修改有两种( 1如果添加的只是文件, 则只需修改当前层Kconfig和Makefile文件; 2如果添加的是目录, 则需修改当前层和新添目
[单片机]
无线WLAN监测与测试特点及其测试内容
  无人再对WLAN是目前网络界最热门的技术与市场持怀疑态度了,但是,无线WLAN的监测和测试仍然是一个常被人忽略的问题,人们甚至还在用笔记本加无线网卡的方法来测试和验收无线工程,这不由得让我们想起早期以太网时代的测试情景。下面就无线测试的基本概念与大家做一个讨论。事实上,从发展渊源来看,无线局域网与以太网同出一源,从MAC层协议特点上看,无线局域网与有线以太网有着共享同一传输通道的共同的特点,从应用来说,目前无线局域网的企业应用大部分是用于有线网的补充。因此,无线局域网的测试与有线以太网也有很多相似之处。       WLAN的特点      尽管无线局域网的MAC层协议与以太网不同,以太网的传输协议是(CSMA/CD),无线网络
[测试测量]
802.11B的无线网卡在DSP系统中的实现
   引 言   无线局域网是指以无线信道作为传输媒介的计算机局域网;无线网络是有线联网方式的重要补充和延伸,并逐渐成为计算机网络中一个至关重要的组成部分,广泛应用于需要可移动数据处理或无法进行物理传输介质布线的领域。随着IEEE802.11无线网络标准的制定与发展,使无线网络技术更加成熟与完善;能够给用户提供更加安全可靠、移动、高效、远距离的网络互联方案,并已成功应用于众多行业。无线网络的强大加密技术和极低的辐射以及可以自由架设的2.4 GHz自由频段,可使无线网络得到进一步发展。下面介绍一种在嵌入式数字信号处理器(DSP)OMAP5912上实现无线网络802.11B的方法。DSP对PC机数据或者直接采样语音信号,通过无线网
[嵌入式]
基于Linux平台下的FPGA的ARM驱动开发方法
Linux操作系统的全称是GNU/Linux,它是由GNU工程和Linux内核两个部分共同组成的一个操作系统。该系统中所有组件的源代码都是自由的,可以有效保护学习成果,因而在嵌入式领域得到了广泛的应用。 FPGA是英文Field Programmable Gate Array的缩写,即现场可编程门阵列,该器件是作为专用集成电路ASIC (Application Specific Integrated Circuit)领域中的一种半定制电路而出现的,它的出现既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。在通信行业、传输网、医疗仪器、各种电子仪器、安防监控、电力系统、汽车电子以及消费类电子中都大面积使用。随着产品
[工业控制]
基于Linux<font color='red'>平台</font>下的FPGA的<font color='red'>ARM</font>驱动开发方法
平台安全架构:下一步实现安全物联网的行业通用框架
作者:Arm副总裁暨物联网设备IP事业群总经理Paul Williamson 核心信息: 首套针对广泛应用的物联网设备的PSA威胁模型和安全分析(TMSA)文档,将在2018年嵌入式世界大会(Embedded World)上正式发布 首个符合固件规范的开源参考Trusted Firmware-M将于3月底发布 安全,毋庸置疑是物联网行业面临的最为关键的问题。然而,如今众多供应商林林总总各自发布的一系列安全申明令人感到困惑,如何有效实施安全措施变得无从入手。2017年10月,Arm宣布了平台安全架构(PSA)——PSA是一个行业通用框架,允许物联网生态系统中的每位成员以更高的、可扩展的安全性以及更强大的信心向前迈进。 PSA
[嵌入式]
<font color='red'>平台</font>安全架构:下一步实现安全物联网的行业通用框架
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved