位置:51电子网 » 技术资料 » D S P

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

发布时间:2008/5/27 0:00:00 访问次数:575

l 引 言

  目前,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中断服务程序控制硬件设备及数据管理。

  在本文推荐的软件开发结构中,硬件设备驱动程序与应用程序隔离开,他们之间通过dsp/bios的api接口,包括硬件设备初始化参数的传递。

具体开发过程如下:

(1)iom驱动程序

  mdbinddev在dsp/bios启动时调用,具体完成硬件设备初始化参数传递、获取mcbsp及dma资源,mcbsp及dma的初始化参数用csl配置,注意mcbsp使用的是通道o。mdcreatechan在应用层与硬件设备创建两个逻辑通道,即dma接收、发送通道。分别

l 引 言

  目前,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中断服务程序控制硬件设备及数据管理。

  在本文推荐的软件开发结构中,硬件设备驱动程序与应用程序隔离开,他们之间通过dsp/bios的api接口,包括硬件设备初始化参数的传递。

具体开发过程如下:

(1)iom驱动程序

  mdbinddev在dsp/bios启动时调用,具体完成硬件设备初始化参数传递、获取mcbsp及dma资源,mcbsp及dma的初始化参数用csl配置,注意mcbsp使用的是通道o。mdcreatechan在应用层与硬件设备创建两个逻辑通道,即dma接收、发送通道。分别

相关IC型号

热门点击

 

推荐技术资料

业余条件下PCM2702
    PGM2702采用SSOP28封装,引脚小而密,EP3... [详细]
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!