您的位置 首页 分销

LM3S9B96的μDMA高速网络驱动程序设计

针对Cortex―M3核的微控制器LM3S9B96,提出了一种基于μDMA的高速网络驱动程序的设计方案。在简要介绍LM3S9B96的以太网控制器、网络驱动程序的作用后,对该网络驱动程序设计的各个部分进

导言

LM3S9B96是德州仪器针对工业运用规划的Cortex—M3核的微操控器,运用领域包含长途监控、电子贩售机、测验和丈量设备、网络设备和交换机、工厂主动化以及火灾安防等。LM3S9B96的主频最高为80 MHz,功用可达100 DMIPS,其以太网操控器集成了媒体拜访操控器和物理层接口,以太网操控器遵从IEEE 802.3规范,彻底支撑10BASE—T和100BASE—TX规范。

德州仪器为微操控器LM3S9B96供给了轻量级TCP/IP协议lwIP下的网络驱动程序,该驱动程序运用数据仿制方法完成网络层与发送FIFO(TX FIFO)和接纳FIFO(RX FIFO)之间的数据交换,功率低,无法满意高速网络通讯的要求。文中详细描述了实时操作系统μC/OS—II环境下,依据微型直接存储器拜访(Micro Direct Memory Access,μDMA)传输的LM3S9B96网络驱动程序的规划,以进步网络层与底层FIFO之间数据交换的功率,完成高速网络通讯。

1 LM3S9B96的以太网操控器

LM3S9B96的以太网操控器包含媒体拜访操控器(Media Access Controller,MAC)层和网络物理层(Network Physical,PHY)2个部分,如图1所示,以太网操控器内部结构如图2所示。

a.JPG

12fd

LM3S9B96的以太网操控器包含了网络物理层的主动穿插校验MDIX、主动洽谈、时钟参阅、MAC LED操控、媒体独立接口(Media Indepen dent Interface,MII)寄存器组、发送编码、脉冲整形、时钟康复、接纳解码、载波感应和抵触检测等单元,用于完成10 BASE—T/100BA SETX的主动洽谈、MDI与MDIX校验、数据的编码发送和解码接纳,以及网络接口指示灯的操控;也包含了MAC层的TX FIFO、RX FIFO、接纳操控、发送操控、数据拜访、独体媒体接口操控、定时器支撑、MAC地址寄存器、中止操控等单元,用于完成MAC地址的设置、物理层MII寄存器组的设置、中止的发生和操控、网络层与MAC层FIFO之间数据的传输。

2 网络驱动程序的效果

网络驱动程序是网络层与物理层硬件的直接接口,它屏蔽了物理层硬件的细节,运用物理层硬件,为网络层供给了接纳和发送数据的接口,如图3所示。

uiuiui

网络数据发送时,网络驱动程序从网络层接纳数据包后,查看数据发送缓冲行列和TX FIFO是否为空,若均为空,程序会经过TX FIFO发送数据包;不然将数据包放入发送缓冲行列,等候TX FIFO为空时,网络中止触发数据发送。网络数据接纳时,RX FIFO从物理层接纳数据包后,触发网络接纳中止,网络驱动程序从RX FIFO读取数据包,并交由网络层处理。

3 依据μDMA的网络驱动程序的规划

LM3S9896内置一个直接存储器拜访(Direct Memory Access,DMA)操控器,称之为微型DMA(μDMA)操控器。μDMA操控器所供给的工作方法能够分载处理器参加的数据传输使命,然后愈加高效地运用内核以及总线带宽。

LM3S9B96的以太网操控器支撑μDMA功用,具有专用的μDMA通道,经过合理的编程装备,经过μDMA操控器,当需求时主动在网络操控器的TX FIFO、RXFIFO与存储器之间传输数据,使得以太网MAC具有更高的功用,并大大减轻LM3S9B96内核的数据传输担负。

LM3S9B96的μDMA网络驱动程序首要包含4个单元:初始化程序、数据包发送程序、数据包接纳程序和中止处理程序。

3.1 初始化程序

网络驱动初始化程序首要用于初始化网络接口、设置μDMA参数和网络中止,具体工作如下:

①初始化网络接口结构体的各个参数,如网络接口称号、MAC地址、接口层发送函数地址等。

②设置MAC地址及其长度、最大传输单元巨细、网络接口时钟。

③装备以太网操控器操作参数,此处需求使能双工传输、发送填充、主动CRC校验发生、多播数据接纳等。

④使能μDMA单元并设置μDMA操控表基地址。

⑤制止以太网发送通道μDMA,并设置该通道μDMA操控参数逐个传输巨细32位,源地址以32位巨细自增,方针地址不添加,裁定巨细8位。

⑥制止以太网接纳通道μDMA,并设置该通道μDMA操控参数——传输巨细32位,源地址不添加,方针地址以32位巨细自增,裁定巨细8位。

⑦设置网络中止类型,并使能网络中止等功用,为了简化中止处理,此处仅使能网络接纳和发送中止,制止发送过错、接纳过错、接纳溢出等其他中止类型。

3.2 数据包发送程序

网络数据的发送,是在中止处理程序的帮忙下由网络数据包发送程序完成。

数据包发送程序首要包含2个函数:网络数据输出函数stellarisif_output()和网络数据传输函数stellarisif_transmit(),函数流程如图4(a)、(b)所示。

yewtwtw

stellarisif_output()函数并不进行实践的数据发送,它仅仅将数据包放入缓冲行列,或许是调用网络数据传输函数进行数据发送。如图4(a)中标示,该函数需求留意:

①一个新的网络数据包,有必要查看当时发送缓冲区是否为空。假如发送缓冲区不为空,即便TX FIFO为空,也要把待发送的网络数据包放入发送缓冲区,这样才干确保网络数据先进先出的发送次第。

②标明实践进行网络数据发送的是stellarisif_transmit()函数。

stellarisif_transmit()函数进行实践的网络数据发送,它以DMA方法仿制网络数据到TX FIFO,标识中止处理程序设置网络发送标志,发动网络数据的物理层传输;或以内核履行仿制方法仿制网络数据到TX FIFO,并置位网络发送标志,发动网络数据的物理层传输。如图4(b)中标示,需求留意:

③因为以太网发送通道μDMA的传输巨细被初始化32位(即传输数据宽度为4个字节),而μDMA传输要求源地址、意图地址有必要依照传输数据宽度对齐。因而进行μDMA传输前,应首要判别数据的源地址(即被传输的净荷数据地址)是否为4字节鸿沟对齐(以太网发送通道μDMA的意图地址为TX FIFO的地址,即0x40048010,已为4字节对齐,无需查看)。若为4字节地址对齐,才干进行μDMA数据传输,不然不能进行μDMA传输,只能进行由LM3S9B96内核履行的数据仿制。需求阐明的是,经过合理分配LWIP协议栈的堆内存、缓冲及待发送数据的地址,是能够确保净荷数据地址为4字节对齐的。

④设置μDMA通道为以太网发送通道,主动传输形式,源地址为净荷数据地址,意图地址为TX FIFO地址,传输长度(以传输数据宽度为单位,即以32位或4字节为单位,实践传输的字节总长度=传输长度x传输数据宽度)。

3.3 数据包接纳程序

网络数据的接纳,是在中止处理程序的帮忙下,由网络数据包接纳程序(首要由网络数据接纳函数stellarisif_receive()构成)完成。

stellarisif_receive()函数担任以μDMA或内核履行仿制方法,从RX FIFO读取网络数据帧到接纳缓冲区pbuf。其流程如图4(c)所示,该函数完成需求以下阐明:

⑤即便分配接纳缓冲区pbuf失利,也需求从RX FIFO中清空该数据帧,避免影响后续的数据帧接纳。

⑥进行以太网接纳通道的μDMA传输前,也需求查看接纳缓冲区pbuf的地址是否为4字节鸿沟对齐。在LWIP协议栈的堆内存、缓冲分配合理时,每次都以4字节整数倍的长度恳求分配接纳缓冲区pbuf,是能确保pbuf地址为4字节鸿沟对齐的,然后完成每次网络数据接纳都经过μDMA完成RX FIFO至pbuf数据仿制,无需LM3S9B96内核参加。

⑦设置μDMA通道为以太网接纳通道,主动传输形式,源地址为TX FIFO地址,意图地址为接纳缓冲区pbuf地址,传输长度(以传输数据宽度为单位,即以32位或4字节为单位,实践传输的字节总长度=传输长度×传输数据宽度)。

⑧需求等候中止处理程序发送的网络接纳μDMA传输完毕信号量,成功获取该信号量,才干标志此次μDMA传输的完毕。

3.4 中止处理程序

中止处理程序为lwIP协议栈处理以太网中止,从底层接纳网络数据包,提交给上一层来处理,查看网络发送缓冲行列、经过以太网MAC层进行数据包发送。

中止处理程序首要包含2个部分:以太网中止服务程序lwIPEthernetIntHandler()和以太网中止使命lwIPInterruptTask(),流程如图5所示。

d.JPG

LM3S9B96的以太网中止发生时,内核主动跳转至中止向量表的57号处(LM3S9B96的以太网中止向量号),该处界说了“DCD lwIPEthernet IntHandler”,从而转入中止服务程序lwIPEthernetIntHandler()履行。如图5(a)中标示,此程序依据3种不同类型的中止源进行相应的处理:

①处理网络接纳和发送中止。网络接纳、发送中止发生后,程序开释一个网络中止服务信号量,以太网中止使命获取该信号量后,调用stellarisif_receive()函数读取数据帧,或调用stellarisif_transmit()函数发送数据帧。

②处理网络接纳通道的μDMA中止。该中止发生,标明从RX FIFO至接纳缓冲区pbuf的μDMA传输完毕,此刻应开释传输完毕信号量,以免除stellarisif_receive()函数的传输完毕等候。

③处理网络发送通道的μDMA中止。该中止发生,标明从发送缓冲区pbuf至TX FIFO的μDMA传输完毕,此刻应置位网络发送恳求标志,发动网络数据的物理层传输。

lwIPinterruptTask()函数担任从RX FIFO读取网络数据帧,并提交上层协议处理;或许从发送缓冲行列读取并调用stellarisif_trans mit()函数发送网络数据帧,其流程如图5(b)所示,该函数完成也需求留意:

④以太网中止使命以堵塞形式等候网络中止服务信号量,直至网络接纳或发送中止发生时,lwIPEthernetIntHandler()开释该信号量,使命才免除堵塞,开端履行网络数据帧的接纳、发送操作。

⑤不管以太网中止源为接纳中止,仍是发送中止,以太网中止使命总是首要调用stellarisif_receive()函数读取网络数据帧(若成功读取数据帧,则提交上层协议处理),然后查看TXFIFO和网络发送缓冲行列,满意发送条件时,进行数据帧发送操作。此种处理方法,形似没有对网络发送与接纳中止进行有效地区别处理,但事实上,在一起处理很多网络数据的接纳、发送时,具有极高的履行功率。

结语

本文针对德州仪器的微操控器LM3S9B96,提出了一种面向高速网络的、依据μDMA的网络驱动程序规划方案,该规划方案充分运用了LM3S 9B96的μDMA、网络中止等资源,大大进步了TCP/IP协议栈的网络层与底层FIFO之间数据交换的功率。试验测验标明,该网络驱动规划方案较之内核仿制方法完成的网络驱动程序,通讯功率进步了十余倍。

因为大多数德州仪器Cortex—M3核的微操控器的以太网操控器结构都十分类似,因而文中针对微操控器LM3S9B96提出的网络驱动程序规划方案,可适用于大多数德州仪器Cortex—M3核的微操控器的网络驱动程序规划。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/bandaoti/fenxiao/291604.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部