当前位置:首页 > 嵌入式 > 嵌入式软件
[导读]本文介绍了PowerPC MPC8260工作在ATM模式的原理,给出了在VxWorks实时操作系统下的END模式的ATM驱动程序设计及实现,实验证实该驱动通过Mux层在IP层与链路层之间建立了数据传输通道。

摘 要:本文介绍了PowerPC MPC8260工作在ATM模式的原理,给出了在VxWorks实时操作系统下的END模式的ATM驱动程序设计及实现,实验证实该驱动通过Mux层在IP层与链路层之间建立了数据传输通道。

PowerPC MPC8260的

FCC工作在ATM模式的原理

MPC8260 PowerQUICCⅡ是飞思卡尔PowerPC系列CPU芯片主导产品,它的通信处理机模块(CPM)同时支持三个快速串行通信控制器(FCC),FCC支持同步高速率协议HDLC、Ethernet和ATM。FCC控制器工作在ATM模式时,通过UTOPIA接口与物理层连接,原理图如图1所示。

在设备接收数据时,对接收到的信元(cell,53字节)进行地址映射,把VPI/VCI映射为逻辑通道号,对应有缓冲描述符及缓冲内容。发送数据时,把带有数据缓冲信息的通道号通过ATM步长控制器调度,再由FCC发送到物理层设备,转换为光信号后通过光口发送出去。

VxWorks实时操作系统下

END程序框架设计

VxWorks是WindRiver 公司开发的高性能实时操作系统,其网络结构与OSI参考模型相比是在IP 层和链路层之间有一Mux层,屏蔽了网络层和数据链路的直接交互,通过END(增强型网络驱动:Enhanced Network Drivers) 实现IP 层与链路层之间的数据交互。END向上通过Mux 层与IP 层相连,向下与链路层直接相连,从而在IP 层与链路层之间建立一个数据传输通道。
END驱动程序的核心数据结构是END对象,即END_OBJ,在end.h中定义。驱动程序的装载函数返回一个指向数据结构END_OBJ的指针。这个数据结构为MUX提供了描述驱动程序的信息和指向数据结构NET_FUNCS的指针,而NET_FUNCS填充的是有关END驱动程序的标准进入配给函数。
END驱动程序输出到MUX的进入配给函数,即数据结构NET_FUNCS中用以输出到MUX接口的标准进入配给函数如表1所示。

ATM驱动程序的实现

驱动程序中重要的数据结构

DRV_CTRL

DRV_CTRL是定义的ATM设备控制结构,包括了MPC8260的FCC基地址、驱动的单元号、中断号、存储管理相关等信息。在驱动程序中,此结构是初始化、发送、接收、中断处理等主要函数的入口参数。
需要指出的是,此结构与以太网控制器中为其驱动定义的控制结构类似,不同之处在于以太网控制器是为一个FCC定义一个BD(缓冲描述符)链表;ATM要求每个通道都有一些特定参数并要求每个通道有一个BD链表。因此,需要定义连接控制结构来管理这些与通道相关的参数。

AtmConnectionData

连接控制结构是ATM建立链路时用到的最重要的数据结构,规定了链路的逻辑地址、信元速率等信元传输时用到的重要参数以及发送、接收数据帧时用到的BD表。在本驱动中,对每个通道建立了一个BD表,并采用了循环链表结构,提高了缓冲的利用效率。在建链前必须对该结构进行分配,并初始化。
驱动程序的实现

本END驱动主要是实现IP层与ATM层之间的数据交互,ATM网络是面向连接的,对于IPOA(IP over ATM)来说,TCP/IP只是将其作为像以太网一样的另一种物理网络来看待,因而,本驱动的设计可参考以太网驱动的设计思想。按照以上END的程序设计框架编制END所用到的全部基本函数,因这里的END 与地址处理无关,故endMCastAddrDel()、endMCastAddrGet()、endMCastAddrAdd()、endAddressForm()和endAddressGet()这几个函数可直接返回一个值即可。驱动程序大体分为四部分 :控制器的初始化、中断处理和内存管理、数据帧的接收和数据帧的发送 。

控制器的初始化

初始化包括两部分 ,一是配置:首先,在 config. h中定义 INCLUDE_ END,以保证在编译时加入 MUX接口 ;其次,在 configNet. h中定义指向本设备载入函数的宏 ,并定义初始化时要用到的字符串 ,定义增强型设备的列表结构体以保证正确登录本设备 。二是对本控制器设备加载,必须初始化一个 END_ OBJ结构体,载入函数首先要分配并初始化此结构体 ,以方便 MUX接口使用其中的工具管理堆栈及调用各接口函数。本控制器设备的初始化流程如下 :首先通过函数muxDevLoad()调用motFccEndLoad()实现对ATM驱动的加载,当成功加载后,接着用函数muxDevStart()调用motFccStart ()实现对驱动的启动,成功启动后,再接着用函数muxIoCtl()调用motFccIoCtl()实现对END网络接口控制,成功后用IpAttach函数将END 与IP 层相连。如果以上的步骤都能成功完成,在Shell 下输入muxShow 命令,将看到加载起的END(Device:motFccAtm,Unit:0)。
中断处理程序和内存管理

中断处理程序必须分为两个部分,第一部分是响应中断的函数,它需要被绑定到 BSP分配的中断向量上,不能有耗时较大的操作 (如对堆栈的操作 ) ,这是由中断的特点所决定的;第二部分是对数据帧的处理,这个函数可以用系统函数netJobAdd( )在响应中断的函数中向网络工作队列添加新的工作 ,这将唤醒网络处理任务去调用相应的数据帧处理函数(例如接收函数 )处理数据帧。

对于内存的管理,VxWorks定义了三种统一的存储结构:cluster(簇)、clBlk(簇模块)和 mBlk(存储模块)。其中簇是存储数据的最基本单元,长度灵活可变,在ATM控制器驱动程序中一般使用同样长度的簇,即最大的数据帧长9180字节。数据在协议栈内各层之间的传送过程中只需要传送数据帧的指针,这样,方便程序员设计数据的存储结构 ,并减少了在各层次之间数据的拷贝,节省了时间,提高了效率。VxWorks还给出了几个标准的系统函数统一管理内存的占用和释放,程序员可以很方便地调用这些系统函数创建这三级结构来接收数据帧,并在完成数据帧接收时调用相应系统函数释放内存。驱动程序中的内存管理函数是motFccInitMem()和motFccBdFree(),参数都为DRV_CTRL类型指针。motFccInit Mem()完成对存储池的初始化;motFccBdFree()由motFccStop()调用,释放与接收缓冲描述符链表相连的簇,以便在设备停止时彻底地释放资源。

数据帧的接收

一般情况下,数据帧的接收是用中断方式实现的 。当一个数据帧到来时触发一个中断,中断响应程序会向任务队列添加一个网络任务,这个任务将调用接收函数处理数据帧 。
接收函数负责将正确的数据帧放到利用系统函数取出的缓存中,然后将缓存交给 MUX接口的接收函数muxReceive( ),最后释放掉占用的缓存。循环以上过程直到将收到的数据全部处理完。
从数据帧经过的网络层次顺序看,数据帧先经过物理层到达数据链路层,在驱动中通过MUX接口调用函数motFccRecv(),在该函数中完成对链路层收到的ATM信元进行ATM适配层的处理(在本驱动中进行AAL5适配)并组装成IP 包,送到网络层 ,再经过 TCP协议层到达应用层 ,这就是数据接收的全过程 。
数据帧的发送

发送数据帧常常使用两种方式:轮询方式和中断方式。在本驱动中采用了轮询方式,从数据帧经过的网络层次顺序看,基本上是接收数据帧的反过程。数据帧由应用层开始产生,经过 TCP协议层和网络层的封装,通过 MUX接口调用本驱动程序中的发送函数motFccSend(),将IP包进行ATM适配处理并拆分为ATM信元然后交给物理层发出 。

结语

按照以上的方法,本文设计出了基于VxWorks实时操作系统的MPC8260的ATM控制器(提供一个155Mbps光口)驱动,并完成了主要功能的测试。测试函数中指定要建立的通道数、通道速率、发送的数据帧数、数据帧长度等参数,并让这些数据帧在以太网口和ATM端口间打环。实验数据显示设备工作正常。
调试中有几点注意事项:由于MPC8260为FCC提供的双口RAM容量有限,分配通道及对通道的各参数初始化时要特别小心,以免越界。由于ATM协议的复杂性,此驱动的很多函数的具体实现以及测试中还有很多复杂的细节,限于篇幅,本文只给出一些概述性的描述,以期和大家分享嵌入式驱动开发的一点心得

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭