基于S3C4510B的HDLC通道驱动程序的设计与实现

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:gusano1987
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:S3C4510B是一种以ARM7TDMI为内核的嵌入式网络微处理器。对S3C4510B的HDLC模块的基本结构和工作原理进行了阐述,对S3C4510B的HDLC控制器驱动程序的基本设计思想及具体实现进行了研究。
  关键词:S3C4510B;HDLC;驱动程序
  中图分类号:TP316文献标识码:A文章编号:1009-3044(2007)06-11606-03
  
  1 引言
  HDLC作为一种基于点到点/多点的数据链路层协议,常常用来连接路由器和网关等网络设备。三星公司生产的S3C4510B微处理器是当前应用非常广泛的嵌入式微处理器,良好的性价比和强大的通信与网络协议处理能力以及丰富的通信接口支持使其非常适合构建VOIP网关;特别是其具有HDLC功能模块,因此可以通过它的一个HDLC接口来为VOIP网关和信令网之间提供链路支持。VOIP作为一种基于IP的数据传输技术,广泛地利用Internet全球互连环境,将传统的PSTN电话网和Internet网络合二为一,因此可以有效地降低系统成本和管理成本。作为一种高效且经济的数据和话音通信方式,它是当前技术研究和开发的热点。本文介绍如何在S3C4510B开发板上实现HDLC控制器的驱动程序,从而为信令网和网关之间提供链路支持。
  
  2 HDLC简介
  HDLC是一个在同步网上传输数据并面向位的数据链路层协议,具有透明传输、可靠性高、传输速率高以及灵活性高等特点。它采用点对点或多点(多路播送或一对多)连接的主/从结构,要求每个从站都唯一的地址,从站只有在允许通信时才能且只能和主站通信,这就消除了串行线路上由于几个从站同时发送引起冲突的可能性。其它的通用的二层协议如SS#7、AppleTalk、LAPB、LAPD等都是基于HDLC及其帧结构的。HDLC帧结构如图1所示。
  图1 HDLC帧结构
  Flag (F):标志位,每个HDLC帧以8位序列(01111110)标志帧的开始和结束,这是HDLC中仅有的两个包含连续六个1的可能组合。为了避免在其它域中出现这种组合,HDLC采用了一种叫作位插入的办法实现组合,即每发现有连接五个1时便在下一位自动插入一个0,接收器在收到连续五个1之后又自动删去插入的0。标志位除了标志帧的开始和结束外,还可用作时钟同步,接收设备不断地搜寻标志位,以实现帧同步,从而保证接收部分对后续字段的正确识别。另外,在帧与帧的空载期间,可以连续发送这种标志序列,用作时间填充。
  Address (A) Field:目的地址位,用于指示报文发往何站。每个从站必须有唯一的地址,主站必须知道每个从站的指定地址。全“1”构成的地址在HDLC中定义为广播地址,全“0”构成的地址在
  HDLC中定义为无站地址,用于测试数据链路的状态。
  Control (C) Field:控制位,用于系统初始化、标志帧的序号,并在报文发送完成后通知从站响应,
  对以前发送帧进行应答。尾随控制段的信息通常用于报文传输、出错报告和其它各种功能,这些功能由控制段的格式完成。有三种格式可供使用:报文格式、监控格式和无序号格式。
  Information (I) Field:信息域,是可选的。如果信息存在,它必须有8位整数数量的长度。
  Frame Check Sequence (FCS) Field:帧校验位,长度为16位,帧校验序列用于对帧进行循环冗余校验,其校验范围从地址字段的第一比特到信息字段的最后一比特的序列,并且规定为了透明传输而插入的“0”不在校验范围内。
  HDLC常被用来向X.25、ISDN和帧中继网等提供信令和控制数据链路。
  
  3 S3C4510B及其HDLC模块
  S3C4540B是三星公司生产的一种通用的16/32位嵌入式网络控制器。它是以RISC体系结构为基础并在片内集成有微处理器和多种外设接口的专用通信芯片,具有强大的通信和网络协议处理能力,可广泛应用于各种通信和网络产品中。它主要由ARM7TDMI内核、2个通道的HDLC控制器、I2C总线和2个串行通道接口、一个MAC控制模块组成,提供10MHz/100MHz以太网的自适应连接,对于网络产品的开发设计提供了灵活的支持。
  S3C4510B的HDLC(High- level Digital Link Controller)控制器拥有2个串行通道。HDLC模块支持符合SDLC标准和HDLC标准的CPU/数据通道接口,包含2个DMA引擎;支持使用对应帧的缓冲区描述符结构,而且可以灵活地配置通道物理编码模式(NRZ,FM,MAN),选择本地或者外部时钟;支持通过锁相环路从接收数据流提取时钟信号。
  图2是S3C4510B HDLC控制器功能结构,主要包括总线仲裁单元、DMA控制器、8字(1字=32 bit)的发送接收(Tx/Rx)FIFO、状态/控制寄存器和物理收发器。总线仲裁单元负责向CPU申请系统总线;DMA控制器使用缓冲描述符在无CPU干预下控制数据帧的收发;8字FIFO结构对CPU和串行接口的数据进行立即存储;物理收发器控制HDLC通道的运行模式、编解码等;状态/控制寄存器是运行的核心,程序设计人员通过设置,检测这些寄存器控制数据的收发。
  注:A/B为地址总线,D/B为数据总线,C为控制线
  图2 S3C4510B的HDLC模块
  
  4 驱动程序的设计思想及其实现
  这里选择uClinux作为本CPU板的操作系统。uClinux是一种可移植、可裁减的嵌入式操作系统,以其良好的可靠性和开放性被广泛应用。因此,程序的设计必须按照这个操作系统的结构来构建。本文的主要目的是使用S3C4510B处理器的HDLC功能模块,以支持uClinux操作系统下的HDLC通信,所以程序的设计主要围绕这个目的进行,在此并没有按照传统驱动的模式构建驱动程序,而是直接对硬件进行操作。当驱动程序运行时,首先要进行HDLC通道的初始化,然后才开始执行收发功能,在这当中要加上中断控制。按照这个程序的基本流程,具体的实现分为下面几步
  4.1 HDLC通道初始化
  HDLC通道的初始化分为七个步骤;①HDLC通道复位,恢复其默认配置;②设置工作模式寄存器(HMODE)来配置HDLC工作模式;③设置控制寄存器(HCON)来控制HDLC通道的工作;④设置中断控制寄存器(HINT)来控制HDLC通道的中断产生;⑤设置站址寄存器(HSAR0-HSAR3)和站址屏蔽寄存器(HMASK),以完成接收操作的地址比较功能;⑥建立DMA方式的发送和接收BUFFER描述符链表结构,并初始化DMA发送BUFFER描述符指针寄存器(HDMATxPTR)和DMA接收BUFFER描述符指针寄存器(HDMARxPTR);⑦使能HDLC通道的收发功能。
  4.2 HDLC通道数据发送及中断处理的实现
  4.2.1数据发送
  DMA方式下HDLC通道的数据发送通过以下几个步骤实现:
  (1)读取发送帧描述符指针寄存器HDMATxPTR,得到当前发送帧描述符的地址,进而得到整个发送帧描述符的内容。
  (2)得到发送帧描述符中帧数据BUFFER起始地址。
  (3)将准备好的HDLC帧拷贝到BUFFER中。
  (4)设置当前帧描述符中的相应控制位。
  (5)将发送帧描述符的OWERSHIP位设置为DMA所有。
  (6)使能HDLC的DMA发送。
  完成上面各步骤后,HDLC通道的DMA机制会自动将BUFFER中的数据拷贝到HDLC通道TxFIFO中发送出去。一帧发送完毕后,S3C4510B自动将已使用的发送BUFFER描述符的OWERSHIP位设置为CPU所有,并将帧描述符指针寄存器HDMATxPTR中的内容更新为下一个未使用的发送BUFFER描述符地址。
  4.2.2 数据发送的中断处理
  当一帧数据通过DMA方式发送完毕,或者发送过程中出现了可引起中断的异常情况,此时软件会进入中断处理程序。引起中断的情况由中断控制寄存器的设置决定。在编程实现中,HDLC通道的中断处理主要完成以下工作:
  (1)进入中断后,首先清除S3C4510B中断指示寄存器INTPEND中相应的标志位。
  (2)如果DMA发送成功,则进行数据帧发送成功状态计数,并清除HDLC通道状态寄存HSTAT中的相应状态位。如果发送出现异常,则完成相应的异常状态计数,并清除HDLC通道状态寄存器HSTAT中的相应位。其中有两个异常会影响以后的DMA操作,a.发送下冲异常(TxU),发生此异常时,处理器会自动禁止DMA发送功能,因此下一次发送时必须重新使能DMA发送功能;b.下一个发送帧描述符指针为空异常(DTxNL),发生此异常时,说明建立的DMA发送BUFFER描述符链表结构出现了错误,因此需要重新初始化DMA发送BUFFER描述符链表结构。
  (3)做完上述处理可关闭HDLC通道的DMA发送功能,等待有数据需要发送时再重新打开,也可以不关闭。
  4.3 HDLC通道数据接收及中断处理的实现
  4.3.1 数据接收
  DMA方式下HDLC通道的数据接收工作主要在HDLC通道初始化和DMA接收中断处理中完成.在编程实现中,HDLC通道数据接收主要完成以下工作:
  (1)通道初始化阶段,我们建立并初始化了HDLC接收BUFFER描述符链表结构,并将链表头节点的地址写入到HDLC接收BUFFER描述符指针寄存器HDMARxPTR,这是正确完成DMA方式接收的前提,下面的工作都是在这个前提下自动完成的。
  (2)当有数据到来时,DMA机制会从HDMARxPTR指向的接收BUFFER描述符中找到接收BUFFER起始地址,然后把收到的数据写入到BUFFER中。
  (3)如果接收无误,S3C4510B自动更新HDMARxPTR寄存器的值,使其指向下一个还未使用的接收BUFFER描述符,以备下一次接收使用。使用过的接收BUFFER描述符的OWERSHIP位将自动设置为CPU所有,因此为了能再次使用这个接收BUFFER描述符,必须将它的OWERSHIP位重置为DMA所有。
  4.3.2数据接收的中断处理
  DMA方式下HDLC通道接收完一帧数据,或者接收过程中出现了可引起中断的异常情况,此时软件会进入中断处理程序。引起中断的情况由中断控制寄存器的设置决定。在我们的编程中,HDLC通道接收中断处理主要完成以下工作:
  (1)进入中断后,首先清除S3C4510B中断指示寄存器INTPEND中相应的标志位。
  (2)如果DMA接收正确,则进行数据帧接收成功状态计数,并清除HDLC通道状态寄存器HSTAT中的相应状态位。对接收到的数据帧作相应的处理后,要重新将是用过的接收BUFFER描述符的OWERSHIP位设置为DMA所有。
  (3)如果接收出现异常,则完成相应的异常状态计数,并清除HDLC通道状态寄存器HSTAT
  中的相应位。其中有两个异常会影响以后的DMA操作,a.DMA接收BUFFER描述符不属于DMA所有(DRxNO);b.DMA接收BUFFER描述符指针空(DRxNL)。发生这两个异常时,说明接收BUFFER描述符双向环形链表结构出现错误,处理器会自动禁止DMA发送功能,因此建议重构接收BUFFER描述符双向环形链表结构并重新使能DMA发送功能。
  
  5 总结
  S3C4510B是一款性价比很高的ARM处理器,功能丰富,编程简单,并且可以配合几种嵌入式实时操作系统,如pSOS,NUCLEUS等。我们使用S3C4510B和uClinux操作系统,完成了底层控制软件,经过调试,该软件性能稳定。
  随着各种电子,通讯产品对性能要求的日益提高,基于先进的ARM架构的各种32位微处理器也将得到越来越广泛的应用。因此,掌握了ARM处理器的使用和编程方法,必然能在工作中事半功倍,得到良好的结果和收益。
  参考文献:
  [1]三星公司.著.三星S3C4510B用户手册[M].北京:北京三星公司,1999.
  [2]李驹光.ARM应用系统开发详解[M].北京:清华大学出版社,2004.
  [3]Alessandr Rubini & Jonathan Corbet.著. 魏永明.等.译.LINUX设备驱动程序设计[M].北京:中国电力出版社,2002.
  本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。
其他文献
摘要:基于UML 的ATM系统面向方面模型,能够把关注从系统中分离出来,形成一个独立于系统的方面模块。面向方面编程(AOP)技术允许把设计好的方面模块根据特定需要重新织入系统,组合为完整系统。模型扩展了UML来表达方面元素概念,并从系统的静态结构模型和方面织入建模ATM系统。  关键词:统一建模语言;面向方面编程;横切;方面模型  中图分类号:TP311文献标识码:A文章编号:1009-3044(
期刊
摘要:在分析入侵检测系统、技术以及其它正在研究的入侵检测方法的基础上,对现行入侵检测系统存在的问题进行了分析研究。  关键词:入侵检测系统,基于网络的入侵检测系统,基于主机的入侵检测系统,异常检测,误用检测  中图分类号:TP309文献标识码:A文章编号:1009-3044(2007)06-11564-01    1 引言  目前采用的入侵检测系统主要有基于网络的入侵检测系统,基于主机的入侵检测系
期刊
摘要:用VHDL语言设计交通灯控制系统,并在MAX+PLUS II系统对FPGA/CPLD芯片进行下载,由于生成的是集成化的数字电路,没有传统设计中的接线问题,所以故障率低、可靠性高,而且体积小。体现了EDA技术在数字电路设计中的优越性。  关键词:VHDL硬件描述语言;可编程逻辑器件;FPGA/CPLD;交通灯控制系统  中图分类号:TP27文献标识码:A文章编号:1009-3044(2007)
期刊
摘要:本文设计并实现了一种基于XML的电子订单安全方案,用XML加密实现了订单敏感信息的保密性,用XML签名保证了电子订单数据的完整性、身份验证性和不可否认性。对于加密、签名次序可能产生的验证错误,使用XML签名的解密变换来解决。  关键词:电子商务;XML加密;XML签名;解密变换  中图分类号:TP393文献标识码:A文章编号:1009-3044(2007)06-11569-03    1 引
期刊
摘要:超宽带(UWB)技术是目前热点研究的一种无线个域网(WPAN)技术,而其MAC协议对网络的整体性能有着极重要的作用。文中运用NS网络仿真软件搭建了完整的UWB网络环境,实现了一种融合物理层编码技术的MAC协议,并与几种传统的MAC协议进行了仿真分析比较。仿真结果表明,该协议可使网络吞吐量得到较大提高。最后提出未来设计UWB MAC协议的方向。  关键词:超宽带;无线个域网;媒体接入控制;跨层
期刊
摘要:本文研究了一种基于FPGA的WM8731的I2C配置模块的设计方案。该设计利用数字系统设计自动化(EDA)技术实现了全硬件结构的I2C配置模块的功能。系统具有集成度高、稳定性好、设计灵活和设计效率高等优点。  关键词:FPGA;I2C总线;SOPC;WM8731  中图分类号 TP391文献标识码:A文章编号:1009-3044(2007)06-11622-02    1 引言  随着SOP
期刊
摘要:由于HTTP协议的无状态性,在开发基于HTTP的B/S结构的Web应用程序时,就需要解决状态管理的问题。在ASP.NET中有客户端状态管理和服务器端状态管理两种状态管理技术。本文中通过对ASP.NET的客户端状态管理技术的特点进行分析与比较,指出了各种技术的优缺点,并给出了一些实用的使用建议。  关键词:状态管理;ASP.NET;Web应用程序  中图分类号:TP311 文献标识码:A文章编
期刊
摘要:作为PC机连接外设的接口,现在普遍应用USB和P1394接口。其中,USB是以PC机为核心的通用串行总线接口,各个结点设备受主机控制。P1394也是串行总线,可它的每个结点设备都可具有总线控制权,是目前唯一既能连接PC机外围设备,又可连接数字化AV设备的高速接口,本文从工作原理出发,介绍其工作机制,比较两者的优点和特点,从传输速度,电缆可靠性以及占用主机资源等角度进行分析比较,P1394由于
期刊
摘要:GUI能提供友好界面,使得计算机称为大多数人都能够使用和接受的工具。在一些界面功能要求简单的嵌入式系统中,可以自行编写一些函数集,来进行位图转换,图形,文字的显示以及中文的显示。文章对利用GUI的这些功能进行简单的界面设计,利用平台的键盘编写键盘控制程序实现对界面间的跳转,达到所需界面进行介绍。  关键词:Interface design;嵌入式系统;uC/GUI  中图分类号:TP311文
期刊
摘要:在分析大多数工作流管理系统的现状以及移动Agent技术特点的基础上,提出一种基于移动Agent的工作流系统架构,并利用IBM的移动Agent系统——Aglet实现原型系统。该架构采用移动Agent的安全机制,同时通过RSA公开密钥加密算法保护移动Agent所携带的信息,提高了安全性能。实践证明,基于移动Agent的工作流管理系统是可行的和先进的,能够有效地解决现有工作流管理系统中存在的效率问
期刊