位置:51电子网 » 技术资料 » 通信网络

基于ARM处理器的HDLC通信的DMA实现

发布时间:2008/5/27 0:00:00 访问次数:553

作者:中国矿业大学 孙彦景 来源:《单片机与嵌入式系统应用》

摘要:以arm7tdmi为内核的samsung公司s3c4510b网络微控制器(networking mcu)为基础,重点论述如何通过dma(直接内存访问)方式实现hdlc通信。对软件设计中缓冲描述符、dma状态配置和控制、isr服务程序设计以及相关的硬件配置进行详细的描述,并讨论如何编写在操作系统下的驱动程序。 关键词:hdlc 缓冲描述符 循环链表 中断服务程序 dma 目前在嵌入式产品开发设计中,通常是在os(operating system)厂商提供的bsp基础上进行开发工作;对于底层硬件的操作,程序设计人员很少关注或只是少量的修改。实际上很多产品,我们完全可以抛开操作系统的模式,避免不必要的系统开销,而对底层的硬件直接进行处理。这样,可以节省资源提高利用率。当然,这样也会人为地增加系统开发设计的难度。但是从长远的角度看,进行这样的设计思考还是非常必要的。现在一些产品的设计开发中,所缺少的实际上就是深入了解底层操作,这样往往使我们丢失了创新的机会。 本文主要分析如何在硬件基础上直接进行程序设计,介绍如何在底层进行hdlc通信控制操作,以及如何处理数据结构等方面的问题。对于进行驱动程序的设计以及进行系统设计,都提供了良好的借鉴。 1 s3c4510b以及hdlc模块 s3c4510b是三星公司生产的以arm(advanced risc machines)16/32bits的risc arm7tdmi微处理器为内核的一种网络微控制器(netmcu,networking mcu),主要用于网络产品(如mub、router、homepna、soho)的开发设计。这款mcu在arm7tdmi处理器的基础上,外加2个通道的hdlc控制器、i2c总线和2个通道串行接口、1个mac控制模块以及统一的mii界面,提供10mhz/100mhz以太网的自适应连接。对于网络产品的设计提供了灵活的支持。 在软件开发设计方面,netmcu使用的是arm7tdmi处理器内核,所以支持arm的开发工具(如windriver的tornado、arm的armstd251等)都对其适用,方便用户开发设计,最大限度地获得支持资源。 1.1 s3c4510b中的hdlc模块 s3c4510b的hdlc(high-level digital link controller)控制器拥有2个串行通道。hdlc模块支持符合sdlc标准和hdlc标准的cpu/数据通道接口,包含2个dma引警;支持使用对应帧的缓冲区描述符结构,而且可以灵活地配置通道物理编码模式(nrz,fm,man),选择本地或者外部时钟;支持通过锁相环路从接收数据流提取时钟信号。使用的hdlc的帧结构如表1所列。

表1 开始标志 地址域 控制域 信息域 帧校验 结束标志 7eh 2/4 bytes 1byte 8 bit/byte 16 bit crc 7eh 图1是s3c4510b hdlc控制器功能结构,主要包括总线仲裁单元、dma控制器、8字的发送接收(tx/rx)fifo、状态/控制寄存器和物理收发器。总线总裁单元负责向cpu申请系统总线;dma控制器使用缓冲描述符在无cpu干预下控制数据帧的收发;8字(字=32bit)fifo结构对cpu和串行接口的数据进行立即存储;物理收发器控制hdlc通道的运行模式、编解码等;状态/控制寄存器是运行的核心,程序设计人员通过设置,检测这些寄存器控制数据的收发。 1.2 中断模式和hdma(hdlc dma)模式 (1)中断模式 htxfifo结构通过把帧数据分别写入“帧连续地址”和“帧结束地址”控制发送

作者:中国矿业大学 孙彦景 来源:《单片机与嵌入式系统应用》

摘要:以arm7tdmi为内核的samsung公司s3c4510b网络微控制器(networking mcu)为基础,重点论述如何通过dma(直接内存访问)方式实现hdlc通信。对软件设计中缓冲描述符、dma状态配置和控制、isr服务程序设计以及相关的硬件配置进行详细的描述,并讨论如何编写在操作系统下的驱动程序。 关键词:hdlc 缓冲描述符 循环链表 中断服务程序 dma 目前在嵌入式产品开发设计中,通常是在os(operating system)厂商提供的bsp基础上进行开发工作;对于底层硬件的操作,程序设计人员很少关注或只是少量的修改。实际上很多产品,我们完全可以抛开操作系统的模式,避免不必要的系统开销,而对底层的硬件直接进行处理。这样,可以节省资源提高利用率。当然,这样也会人为地增加系统开发设计的难度。但是从长远的角度看,进行这样的设计思考还是非常必要的。现在一些产品的设计开发中,所缺少的实际上就是深入了解底层操作,这样往往使我们丢失了创新的机会。 本文主要分析如何在硬件基础上直接进行程序设计,介绍如何在底层进行hdlc通信控制操作,以及如何处理数据结构等方面的问题。对于进行驱动程序的设计以及进行系统设计,都提供了良好的借鉴。 1 s3c4510b以及hdlc模块 s3c4510b是三星公司生产的以arm(advanced risc machines)16/32bits的risc arm7tdmi微处理器为内核的一种网络微控制器(netmcu,networking mcu),主要用于网络产品(如mub、router、homepna、soho)的开发设计。这款mcu在arm7tdmi处理器的基础上,外加2个通道的hdlc控制器、i2c总线和2个通道串行接口、1个mac控制模块以及统一的mii界面,提供10mhz/100mhz以太网的自适应连接。对于网络产品的设计提供了灵活的支持。 在软件开发设计方面,netmcu使用的是arm7tdmi处理器内核,所以支持arm的开发工具(如windriver的tornado、arm的armstd251等)都对其适用,方便用户开发设计,最大限度地获得支持资源。 1.1 s3c4510b中的hdlc模块 s3c4510b的hdlc(high-level digital link controller)控制器拥有2个串行通道。hdlc模块支持符合sdlc标准和hdlc标准的cpu/数据通道接口,包含2个dma引警;支持使用对应帧的缓冲区描述符结构,而且可以灵活地配置通道物理编码模式(nrz,fm,man),选择本地或者外部时钟;支持通过锁相环路从接收数据流提取时钟信号。使用的hdlc的帧结构如表1所列。

表1 开始标志 地址域 控制域 信息域 帧校验 结束标志 7eh 2/4 bytes 1byte 8 bit/byte 16 bit crc 7eh 图1是s3c4510b hdlc控制器功能结构,主要包括总线仲裁单元、dma控制器、8字的发送接收(tx/rx)fifo、状态/控制寄存器和物理收发器。总线总裁单元负责向cpu申请系统总线;dma控制器使用缓冲描述符在无cpu干预下控制数据帧的收发;8字(字=32bit)fifo结构对cpu和串行接口的数据进行立即存储;物理收发器控制hdlc通道的运行模式、编解码等;状态/控制寄存器是运行的核心,程序设计人员通过设置,检测这些寄存器控制数据的收发。 1.2 中断模式和hdma(hdlc dma)模式 (1)中断模式 htxfifo结构通过把帧数据分别写入“帧连续地址”和“帧结束地址”控制发送

相关IC型号

热门点击

 

推荐技术资料

耳机的焊接
    整机电路简单,用洞洞板搭线比较方便。EM8621实际采... [详细]
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!