您好,  [请登录] [QQ登录]  [支付宝登录[免费注册]

商品分类

分享到: 百度搜藏 搜狐微博 新浪微博 腾讯微博 QQ收藏 人人网 Facebook Twitter

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

发布日期:2011-04-17

    择要:在先容IEEE802.11MAC协议布局的底子上,给出协议开放的方案和步调,提出IEEE802.11MAC协议在32位ARM7TDMI微处理惩罚器S3C4510B上的一种移植方案,开辟出了嵌入式IEEE802.11MAC协议的IP核。同时,围绕着IEEE802.11MAC协议的原理和移植进程中硬件相干部分,先容ARM平台的布局、可用资源以及ARM的初始化进程等。

    关键词:IEEE802.11 MAC协议 ARM平台 无线局域网

小序

无线局域网被以为是下一代IT财产生长的是大推动之一,被IT业付与了极大的盼望。无线局域网802.11系列标准的MAC协议是一样的,只是在物理层上有差别,因此对802.11MAC协议的开辟,不论是在802.11b盛行的本日,还是802.11g大概会成为主流的将来,都是很故意义的。固然,ARM以其先辈的体系布局已经成为嵌入式市场的RISC标准,因此基于ARM的IEEE802.11MAC协议的开辟是很有实际意义的。

我们的开辟流程如图1所示。

PC软件开辟是指退出硬件的嵌入式软件开辟阶段。此阶段可以在种种IDE环境下举行开辟,并举行软仿真来验证软件的逻辑精确性。然后将开辟出来的PC软件连合硬件所必要的硬件相干代码向硬件平台举行移值调试。前两个阶段完成后就得到了开辟的终极成品。

1 协议布局

IEEE802.11MAC协议的SDL形貌可以分为以下几个成果模块,如图2所示。

*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端口通过信道模仿器连接到别的节点的用来监听信道状态的外部停止引脚上。

④UART。我们用UART来实现PC和ARM的通讯。一些办理下令,比方扫描、中计、认证、接洽干系、解认证、解接洽干系,节点的配置信息比方MAC地点等都可以从串口来发送给ARM。别的,全部发送的数据都市通过串口发送给ARM举行发送,全部吸取到的数据将通过串口回传给PC。

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

4 硬件仿真环境

图3中,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的初始化代码时要精确配置相应的存储区控制寄存器,并且完成代码的搬移和地点的重映射。



图3

    ARM的初始化代码包括:

*定义入口点(entry point)。

*定义非常向量表,用来处理惩罚种种CPU非常,此中包括停止。

*配置SDRAM和Flash的地点范畴、时序等参数,以使这些存储器能正常事变。

*代码搬移。步伐代码一样平常应从Flash调入SDRAM中运行,以进步体系的运行速率。同时,体系及用户堆栈、运行数据也都放在SDRAM中。

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

*初始化堆栈。

*初始化存储区。

*根据必要变化处理惩罚器事变模式。

*开停止。

*到C步伐代码入口点开始实行。

别的,移植进程中还要思量的一个题目是内存分派的题目。嵌入式体系中对内存的分派,一样平常来说请求快速可靠并且有效,实际上便是在采取静态分派内存还是动态分派存的题目。要是体系请求对及时性请求高并且不克不及容忍分派失败,这时就必要采取静态分派内存。采取静态分派一个不可克制的题目便是体系失去了机动性,必须在计划阶段就预先预计所必要的内存并对其作出分派,并且要思量到全部大概的环境。我们在移植进程中,思量到及时生和可靠性是我们的重要目标,并且我们的ARM平台具有较大的存储区,因而采取了静态分派的方法。

结语

如今,嵌入式协议开辟已经非常平凡,本文只是根据作者的实际经历,先容了嵌入式802.11MAC协议开辟的根本进程。如今开辟的协议已经在ARM平台上告成运行,并且性能精良。如今所利用的ARM平台是没有操纵体系支持的,所移植的协议硬件依赖性太大,下一步我们将在有操纵体系的ARM平台上举行协议移植,通过全长操纵体系提供的API接口来提供协议的可移植性。别的,连续优化代码,进步代码服从,进步及时性与可靠性,以更得当于嵌入式应用环境也将是我们下一步的目标