计算机应用 | 古代文学 | 市场营销 | 生命科学 | 交通物流 | 财务管理 | 历史学 | 毕业 | 哲学 | 政治 | 财税 | 经济 | 金融 | 审计 | 法学 | 护理学 | 国际经济与贸易
计算机软件 | 新闻传播 | 电子商务 | 土木工程 | 临床医学 | 旅游管理 | 建筑学 | 文学 | 化学 | 数学 | 物理 | 地理 | 理工 | 生命 | 文化 | 企业管理 | 电子信息工程
计算机网络 | 语言文学 | 信息安全 | 工程力学 | 工商管理 | 经济管理 | 计算机 | 机电 | 材料 | 医学 | 药学 | 会计 | 硕士 | 法律 | MBA
现当代文学 | 英美文学 | 通讯工程 | 网络工程 | 行政管理 | 公共管理 | 自动化 | 艺术 | 音乐 | 舞蹈 | 美术 | 本科 | 教育 | 英语 |

ADSL接入及共享技术的实现网络毕业论文(4)

2013-09-06 01:12
导读:在修改阻塞状态时给予中断保护) 5.5 中断控制流程 SCC 工作在 UTOPIA 模式下的中断联接在 IDMA1上,使用函数 Intconnect(IV_IDMA1,(VOIDFUNCPTR)sarIntr,0) 就能够在 SAR
在修改阻塞状态时给予中断保护)

  5.5  中断控制流程

  SCC 工作在 UTOPIA 模式下的中断联接在 IDMA1上,使用函数

       Intconnect(IV_IDMA1,(VOIDFUNCPTR)sarIntr,0)

  就能够在 SAR 发生中断时调用 sarIntr 函数。此时我们将轮询整个 SAR中断表,并对相应中断进行处理,为避免该中断过多占用系统资源,我们将其放置在一个 netJob 任务中。同时,进入该任务后,屏蔽全局中断,直到所有的中断事件处理完毕。



  5.6  数据接收处理

  当 Utopia 接口收到来自于 DSP的数据后,会提取出 ATM 报文头部信息,如果是 AAL5 通道报文,则将报文存入相应的数据缓冲区中,设置相关寄存器值,并产生Utopia数据接收中断。

  系统收到中断请求后,将会进入 5.5 所示的中断例程进行处理,判断是接收事件时,提取产生事件的通道号,计算出该通道对应的 atmif  结构起始地址,作为参数调用 sarRecv 函数,在函数中进行数据报文处理。

  6.  AAL5 业务模块的实现

  作为系统(Vxworks)协议栈和SAR END驱动模块之间的接口,ATM AAL5业务网络服务子层主要完成如下功能:

  1)发送:向系统注册1483Bridged、1483Routed、ATMARP、PPPOA、PPPOE等不同类型接口(interface),根据各个接口的不同类型,对系统IP数据报文进行ATM链路封装,将封装后的数据报文发送到驱动模块并同时指示发送的VC通道;

  注: 因为 1483Bridged 封装的是以太网帧,解封装后可视为正常的以太网数据帧,直接交由协议栈处理,所以我们不需要再注册 1483Bridged 协议类型接口。

  2)接收:向系统注册业务类型,接收系统送来的数据报文(由驱动模块接收,并由系统根据接收的数据报文业务类型进行分发),根据接口属性对数据报文进行解封装后提交到系统协议栈或者交由其他模块处理,

  3)控制:接收系统对于接口上的控制操作(主要是根据vxworks network services 提供的规范完成),通过向mux接口注册重发例程实现数据报文重发。

  6.1   vxworks 网络服务子层编写规范

  vxworks 网络服务子层介于从 OSI 规范的网络层和链路层之间,主要负责处理系统网络协议栈和MUX 接口之间的数据报文。它包括接口初始化、数据结构初始化、数据收发处理、错误报告和流量控制(可选)等部分。

  6.1.1   接口初始化

  vxworks 系统协议栈通过调用网络服务子层初始化例程(函数名称为 xxxAttach())来激活相关网络接口。在这个例程开始处,我们需要先用 muxBind 函数将该服务子层绑定至相关的网络接口驱动上,使该服务子层能够从 MUX 层收发数据报文。

  6.1.2   数据结构初始化

  服务子层在收发相关数据报文时,可能需要或释放网络内存块。为避免系统正常运行期间频繁使用系统内存块操作导致效率降低或稳定性降低,可以在初始化时预先申请一个内存区域,由 netBufLib 所提供的net Buffer控制机制进行。

  其它如接口的状态、服务子层数据封装类型、MUX接口初始化 Cookie、服务子层地址映射表等参数结构也需要在这一步进行初始化。

  6.1.3   数据收发处理

  如上所述,网络服务子层通过 muxBind 函数将数据接收例程绑定至底层设备驱动。底层设备驱动接收到报文后,通过调用 stackRcvRtn 函数将数据经由 MUX 层查找特定协议类型返回至服务子层。服务子层处理该报文之后如果返回 FALSE,则系统将报文发往其它服务子层继续处理,否则,该报文被丢弃。

  数据报文被封装成 mBlk 形式从协议栈上层发送至网络服务子层,网络服务子层对报文进行处理后,再调用 muxSend 或 muxTkSend 函数将报文通过 MUX 层发送至该接口设备驱动。在这期间,网络服务子层可以通过调用该接口设备指定的地址解析函数获得二层目标地址,然后对数据帧进行二层封装。

  具体的数据收发处理实例可参见 6.2.3  AAL5 Service 协议数据处理流程。

  6.1.4   错误报告

    当设备驱动层向网络服务子层汇报收发或其它错误时,网络服务子层可以通过回调 stackErrorRtn 函数向上层报告这个错误。

  6.1.5  设备控制

  设备驱动程序需要增加相应的控制接口函数(如 xxxIoCtrl), 并注册至 MUX 层,网络服务子层就可以通过调用 muxIoCtl 控制底层设备驱动。

  6.2   AAL5 业务Service的实现

  Service 层主要实现如下相关协议类型:

  ATMARP Service.  用于收发 ATMARP 报文,绑定类型为 0x1577

      PPPOE  Service,  用于收发 PPPOE 报文,绑定类型为 0x8863,0x8864

  PPPOA  Service,  用于收发 PPPOA 报文,绑定类型为 0x2516

    如6.1 所介绍的,我们首先需要向 MUX 注册(绑定)这些 Service,然后在 Service 的收发中对相关协议的数据报文进行处理。

  6.2.1   向vxworks MUX 层注册Service

  1)  根据协议类型,初始化封装数据、大小等值

  2)  用muxBind 函数绑定接收函数,使某接口收到相应类型的报文时能够提        交该函数处理。例如(代码摘选自 atmSrv.c  atmSrv1483RoutedAttach

上一篇:计算机网络安全浅析网络毕业论文 下一篇:没有了