论文首页哲学论文经济论文法学论文教育论文文学论文历史论文理学论文工学论文医学论文管理论文艺术论文 |
Intel IXP225、SamSung S5提供的软件支持较多,已支持for Tornado 的 1483Bridged 和 PPPOA 等协议,也有 NAT、PAT等网关路由应用模块,此外,还支持 Voice Over AAL2 功能。但芯片价格相比之下也高出很多。考虑到目前 VoAAL2 的应用并不明朗,很少有局端支持此项功能,所以暂不考虑这两款芯片。
Motorola PowerPC850SAR 是850 系列芯片针对 ADSL 接入推出的专用简化版本(此后又推出了性价比更高的 850DSL 芯片),价格较低,其提供的软件方面支持虽然较少,但已基本符合我们的需求,后续开发的难度不会太大。如果选择通用的 Tornado开发套件进行开发,以后可以方便地迁移至 Intel IXP225、Intel IXP425或SamSung 等系统平台,代码的重复利用率高。由此,我们决定采用 PowerPC 850SAR作为核心部件,ADSL接入前端则选择兼容性较好的 Alcatel DSP芯片组,总体架构如图4-1所示。
4.3 软件开发平台的选择
软件上目前流行的嵌入式操作系统有 vxworks、Psos、Rtos、QNX、ulLinux 等,由于vxworks 对 PowerPC、ARM 都有良好的支持,已经提供了针对 Motorola 开发评估板(ADS板)的 BSP 组件,并且其集成开发套件 Tornado 使用起来非常方便,可以有效地节省开发周期,也便于以后系统迁移,所以决定采用这款操作系统。
4.4 开发平台搭建简述
开发平台的准备包括硬件平台调试及底层驱动编写,因为篇幅有限,硬件平台的调试略过,底层驱动及软件开发环境的搭建工作仅作简单描述:
1)针对目标板与ADS板在 SDRAM、Flash、Ethernet等芯片的不同,更改相应的外围器件驱动,生成新的 BSP驱动,并编译生成 vxworks 系统的Boot 代码,使其可以在新的目标板上运行。
2)在此 BSP 基础上创建 Bootable 工程,编译 bootable 程序代码,使其可以正常下载至目标板中运行,并能正常启动 Target Shell。此后,就可以建立downloadable 工程,将应用程序以任务执行方式在目标板中进行调试。
3)编写 Alcatel DSP 驱动,调通 ADSL 层、ATM层(Utopia接口)的连接。这部分工作的要点在于 Alcatel DSP 内部寄存器和提供目标代码都是 Little Endian 模式,而 PowerPC 默认的总线是 Big Endian 模式,下载时需要对相应数据做字节或字交换。
本文来自中国科教评价网图 4-2 ADSL 共享接入系统软件架构示意图
这些部分调试完成后,就可以着手 SAR END驱动、网络层接口及网关应用层的开发了。软件架构系统如图4-2所示(深黑色所示部分为本文所要着重阐述的SAR END驱动、ADSL 业务驱动及 NAT 实现等模块)
5 SAR END 驱动的编写
SAR 驱动模块是参照 Vxworks 系统的 END 驱动模板编写的,基本符合 MUX 接口规范,其中主要的几个功能实现。
5.1 Utopia接口初始化
850SAR 内部参数的全局联系结构。是 SCC 各个参数表间的联系,由左至右是从上级表到下级表的关系,代码实现中,对这些参数表的初始化顺序则要相反,即先初始化下级表,再初始化上级表。具体初始化流程如下:
5.2 加载及初始化函数
sarEndLoad 由系统在加载muxDevEndLoad 时间接调用,是 END 驱动第一个被加载的例程,它根据入口参数 unit,对相应AAL5通道的atmif结构表进行初始化,并调用SarAAL5Add 增加相应的通道。
sarEndStart 由系统在运行 muxDevEndStart 时间接调用, 它根据入口参数unit 调用 SarAAL5Start 函数激活相应的 AAL5 通道,允许其正常开始收发。
SarAAL5Add 增加一条 AAL5通道,初始化这条通道的收发缓冲区,缓冲区描述字, TCT 及 RCT 表中的相关参数值。
SarAAL5Start 激活一条AAL5通道,根据通道对应的atmif结构设定 PVC, 上行速率。将通道 PVC MASK 放入 Lookup 表中,激活该通道进行接收;发送 Tx_Active 命令,激活该通道进行发送。
5.3 停止及卸载函数
在系统执行 muxDevUnload 或 muxDevStop 时间接调用这两个函数。
sarEndUnload 释放这个设备所占的 EndObject 结构资源。但通道所占的内存资源并没有释放。
sarEndStop 停止这个接口。并调用 sarAAL5Stop 函数关闭这条通道,执行与sarEndStart 相反的操作。
SarAAL5Stop 解激活并关闭这条通道。将通道 PVC MASK 移出 Lookup 表,解激活该通道,使其停止接收;发送 Tx_Deactive 命令,解激活该通道,使其停止发送。
5.4 数据发送函数
函数名称:sarEndSend
功能: 将数据发送到相应的AAL5通道中。
入口参数:指向通道的End Object设备结构指针,指向待发送的数据包 mBlk 结构指针。
返回: 发送成功,返回 OK;
阻塞状态返回 END_ERR_BLOCK;
其他情况返回 ERROR。
流程简介: 将 mBlk 指向的数据包进行加封装操作,将指针及长度填入当前发送 BD 中即可。(注:为防止重入,使用到发送指示信号量,并