当前位置:首页 > 嵌入式 > 嵌入式硬件
[导读]目前,TI公司的DSP应用很广泛,随着DSP的功能越来越强大,片上外设种类及应用日趋复杂。传统的DSP程序开发包含两方面程序:即配置、控制、中断等管理DSP片内外设、接口的硬

目前,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)所示。[!--empirenews.page--]

 


本应用选择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硬件驱动开发方法,通过构建应用程序与硬件外设输入输出的统一数据接口,将接口代码层次化。当硬件设备改动后,应用程序可不做修改,应用程序的通用性、可移植性大大加强,硬件驱动程序也具有反复利用的特点。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭