现在,TI公司的DSP运用很广泛,跟着DSP的功用越来越强壮,片上外设品种及运用日趋杂乱。传统的DSP程序开发包含两方面程序:即装备、操控、中止等办理DSP片内外设、接口的硬件相关程序和依据运用的算法程序。这样的体系结构,运用程序与硬件相关程序严密的结合一同,约束了程序的可移植性和通用性,软件开发总要从零开始,存在许多重复作业。一旦硬件渠道有改变,往往与硬件程序绑缚一同的运用程序也需改动,代码的保护性和可移植性均不高。
经过树立硬件驱动程序的开发方法,可使上述现象得到改进。因而,本文介绍一种开发TI公司DSP片内及片外硬件外设驱动程序的办法,并以C5000 DSP的McBSP/DMA及TMS320C5509的USB驱动程序开发为详细目标,介绍这种办法的运用。
2 依据DSP/BIOS的IOM硬件驱动
在CCS运用环境中集成的实时操作体系DSP/BI-OS[1]中,硬件驱动程序终究以函数库的方法被封装起来,运用程序可不关怀底层硬件外设的详细操作,经过调用DSP/BIOS相关的规范API与不同外设接口。接口按一致规范界说,即在DSP/BIOS中创立并装备硬件设备驱动模块为IOM(I/O Mini-driver)方法。
IOM[2]是DSP/BIOS的设备驱动模块的一种接口方法,装备硬件设备驱动模块为IOM方法可在DSP/BIOS的图形化界面(GUI)中便利完结。IOM方法将设备驱动程序分为两个层次:上一层是类驱动程序(class driv-er),这部分程序担任对存储缓冲区办理、由DSP/BIOS各类规范的API函数与运用程序接口,与设备硬件无关。下一层是迷你驱动程序 (mini-driver),这部分程序集成了实践硬件相关的代码。IOM接口将迷你驱动程序与类驱动程序联络一同,包含界说I/O数据包 (IOM_Packet)以提交迷你驱动程序读写,界说功用函数包(IOM Fxns)完结相关初始化,翻开或封闭通道,提交I/O数据传输与操控等使命,保证迷你驱动程序与类驱动程序运转协调一致。
类驱动程序直接在运用程序中呈现,而且依据数据输入/输出的处理方法不同,有相应类驱动程序。主要是3种:流输入输出型类驱动(SIO)、管道型类驱动(PIP)和通用输入输出型类驱动(GIO)。
其间,SIO类驱动由两部分组成:SIO模块和DIO适配模块(Adapter),前者担任创立通道、数据流输入/输出,DIO供给担任缓冲办理、信号同步、将API及参数与基层迷你驱动程序接口;PIP类驱动由两部分组成:PIP模块和PIO适配模块(Adapter),前者创立管道、数据管道输入/输出,PIO供给担任缓冲办理、信号同步、将API及参数与基层迷你驱动程序接口。GIO类驱动是一种通用输入输出接口,调用的API函数,可经过堵塞线程读写数据,直接与迷你驱动通讯。
SIO,PIP,GIO模块集成在DSP/BIOS中,SIO通道、PIP管道可在DSP/BIOS的输入输出模块图形化界面(GUI)中静态设置并创立,也能够在运用程序中动态创立。DIO,PIO适配模块(Adapter)创立在DSP/BIOS的设备驱动模块图形化界面(GUI)中完结。
由上可见,类驱动程序均为规范的API函数,故编写驱动程序的重点是迷你驱动程序方面。迷你驱动经过创立一致接口规范的功用函数包 (IOM Fxns),运用程序就能够由DIO适配模块或PIO适配模块或GIO类驱动调用迷你驱动,操控底层硬件设备。这些一致接口规范的功用函数包含:
mdBindDev:设备与迷你驱动绑定函数;
mdControlChan:设备通道操控函数;
mdCreateChan:设备通道创立函数;
mdDeleteChan:设备通道删去函数;
mdSubmitChan:按IOM数据包指令履行函数;
mdUnBindDev:设备从迷你驱动开释函数。
IOM数据包是其间一要害数据结构,为IOM驱动程序内部数据的输入输出服务。运用程序自身不会触及IOM数据包拜访,是IO适配模块、PIO适配模块或GIO类驱动经过他拜访迷你驱动层,其间,数据结构的cmd项,即类驱动指令迷你驱动的mdSubmitChan功用函数履行硬件设备的读写等操作。迷你驱动完结相应操作,经过回调函数后向上回来该数据包。
3 McBSP/DMA驱动程序开发
这是依据C5000系列DSP的McBSP和DMA硬件驱动开发。体系以TMS320VC5410为CPU,TLC320AD50C为音频编解码芯片,TLC320AD50C与DSP的McBSP0通道接口,数据传输选用DMA方法。
在传统的软件开发结构中,运用程序一般经过DMA中止服务程序操控硬件设备及数据办理。传统的软件开发结构如图1所示。
在本文引荐的软件开发结构中,硬件设备驱动程序与运用程序隔脱离,他们之间经过DSP/BIOS的API接口,包含硬件设备初始化参数的传递。本体系软件开发结构如图2所示。
详细开发进程如下:
(1)IOM驱动程序
mdBindDev在DSP/BIOS启动时调用,详细完结硬件设备初始化参数传递、获取McBSP及DMA资源,McBSP及DMA的初始化参数用CSL装备,留意McBSP运用的是通道O。mdCreateChan在运用层与硬件设备创立两个逻辑通道,即DMA接纳、发送通道。别离设置初始化参数。mdSubmitChan按IOM数据包数据结构的cmd项,指令迷你驱动履行向硬件设备的IOM写操作,即经过McBSP0输出数据。相应工程编译链接生成驱动库函数,完结IOM驱动程序。
(2)DMA/McBSP运用程序
在运用工程中,首先在DSP/BIOS装备东西中User-Defined Devices项进行迷你驱动程序注册,命名为co-dec。特点如图3(a)所示。注册信息中设置了驱动程序的初始化函数、IOM函数包指针、设备参数指针的称号。本运用选用IOM驱动程序的流输入输出类驱动(SIO/DIO),DIO适配模块与上述迷你驱动程序codec”接口,DIO适配模块在DSP/BIOS装备东西中增加,命名为dio codec,特点如图3 (b)所示。