开发DSP硬件驱动程序的一种方法

本应用选择DMA通道4,5,设置TLC320AD50C的4个控制寄存器初始化参数,即迷你驱动程序注册信息的设备参数指针所指内容。

然后,应用程序通过调用DSP/BIOS的API,动态创建DMA/McBSP输入、输出通道,如:

SIO输人、输出通道均采用双缓冲管理。获取双缓冲资源,管理缓冲数据的工作,同样由SIO相关API完成,API的使用方法可参见参考文献中所列手册。
4 USB驱动程序开发
这是基于C5000系列DSP(TMS320C5509A)的USB硬件驱动开发。TMS320C5509A内部集成符合USB 2.0标准的全速模式USB接口。SIE[3](Serial Interface En-gine)负责将数据按照USB物理电平信号串行转并行输入或并行转串行输出,并且具有错误校验机制。UBM(USB
Buffer Manager)负责数据缓冲管理,管理数据在SIE和缓冲RAM的输入输出,CPU或USB的DMA控制器在缓冲RAM收发数据。
本硬件驱动的软件开发结构与上述McBSP/DMA硬件驱动开发类似,上层为类驱动,即DSP/BIOS GIO,SIO,或PIP模块,提供针对USB的迷你驱动的各种输入输出请求。迷你驱动是基于DSP/BIOS关于USB模块的CSL(Chip Support Library),调用CSL的API完成底层硬件各种复杂操作。
(1)IOM驱动程序
C5509 USB mdBindDev在DSP/BIOS启动时调用,完成USB初始化参数传递,中断向量设置,初始化USB模块;C5509 USB mdControlChan接受如SIOcontrol等类驱动命令,可复位USB数据通道,连接主机USB接口等工作;C5509 USB mdCreateChan创建某个USB端点的数据通道及配置数据传输方向;C5509 USB mdSubmitChan负责USB数据流输入输出管理。
(2)USB应用程序
在DSP/BIOS配置工具中User-Defined Devices项进行迷你驱动程序注册,命名为usb。属性如图4(a)所示。本应用也采用流输入输出(SIO/DIO),DIO适配模块与上述迷你驱动程序usb接口,DIO适配模块在DSP/BIOS配置工具中添加,命名为dio_usb,属性如图4(b)所示。

应用程序动态创建USB的某端点为输入、输出通道,如:

由上可知,应用层类驱动程序开发的通用性是很强的。
5 结 语
本文推荐的这种DSP硬件驱动开发方法,通过构建应用程序与硬件外设输入输出的统一数据接口,将接口代码层次化。当硬件设备改动后,应用程序可不做修改,应用程序的通用性、可移植性大大加强,硬件驱动程序也具有反复利用的特点。
评论