您当前的位置:首页 > 行业资讯

DSP/BIOS中的IO设备驱动编程技术

时间:2014-12-12  来源:扁平线圈电感厂家  点击:

LIO函数不考虑数据的转送方向,也就是说仅执行输出设备、仅执行输入设备和能执行输入、输出的设备执行的是同样的函数。输入与输出之间的主要不同点是传送到缓冲区队列函数的参数意义不同。既然所有其它的操作都是同样的,大多数控制代码能在单个驱动程序中被所有通道共享。

2.1 总体设计、设想和命名规范

所有的驱动程序函数都不能设置成全局中断。驱动程序应不影响全局中断使能标记的状态,仅影响由它控制的外设所能触发的中断所对应工字电感使能标记的状态。这样可以阻止一个驱动程序与其它驱动程序或应用程序争夺CPU资源。

为了避免由不同驱动程序使用同一函数名引起的命名空间冲突,也为了改变驱动程序而不需再编译应用程序代码,可以通过函数表访问驱动程序函数。用这种方式,仅需要为每个驱动程序定义一个外部符号。这种符号有其命名规范。此命名规范通过接线板、在片外设、LIO接口等来区分。如包含应用程序注释的源代码为TI TMS320VC5402 DSK的AD50音频编解码器执行基于DMA的驱动程序,驱动程序函数表名是DSK5402_DMA_AD50_TI_ILIO。

设备驱动程序支持的各通道半双工(输入或输出)通道。每个函数对应一个通道变量。一个能执行输入和输出电感器生产的物理设备,如连接到音频编解码器的DSP串口,可通过两个半双工通道(一个输入,一个输出)来访问。一一体成型电感个驱动程序支持多少个物理设备和通道依具体实现而实。一般一个驱动程序应能控制一个物理设备,此设备可能有多个通道。通道号与物理设备通道的映射执行时确定。通道号应约定从0开始。对I/O设备,一般约定偶数号为输入,奇数号为输出。

2.2 三类函数

LIO接口中有三类函数:控制函数、缓冲区和队列管理函数、信令函数。

2一体成型电感.2.1 控制函数

控制函数用来实现设备的启动、关闭和控制。其初始函数为驱动程序保存资源(物理外设和内存)。它使用结构指针作为可选变量,此结构是一种设备的特殊变量结构。

2.2.2 队列管理

假定每个设备至少有一个用来传送数据的缓冲区。许多设备(如McBSP和DMA)带有允许双缓冲的缓冲队列。图1是一个有三个存储单元的LIO驱动程序,驱动程序中有:由外设填满或清空的缓冲区“todevice”(到设备)队列,将传送的缓冲区返回到应用程序的缓冲区管理程序的“from device”(来磁芯电感自设备)队列和当前传送数据的缓冲区。在虚线框里的认为是在驱动程序里面。当前传送数据的缓冲一般由外设寄存器控制,如DMA源寄存器或目标寄存器,在图1中画在“外设”中。含硬件队列(如DMA重新如载寄存器)的设备也会含一个或多个存储单元用业存储指针为以后传送用,此队列为“to device”队列。能包含缓冲区指针的第三个存储单元是“from device”队列,在驱动程序中为一变量。当设备准备传送缓冲区时,缓冲区从输入队列传送到外设寄存器。这些缓冲区然后移到输出队列以完成传送,作为对CPU中断的响应。

PutBuf()将缓冲区从应用程序传送到驱动程序的输入队列。GetBuf()从输出队列得到缓冲区。IsEmpty()和IsFull()返回输入队列、输出队列的状态。如果输入队列满,因为无空间装新缓冲区,调用putBuf()会返回错误代码。若IsFull()返回false,接下来可调用putBuf()。如果IsFull()返回true,但若在IsFull()返回true和调用putBuf()之间完成传送,则调用putBuf()也可能会成功。

2.2.3 信令

如图1所示,当传送结束一般会触发CPU中断。此中断会使应用程序将传送的缓冲区转移到输出队列,然后调用calback()传到驱动程序。Callback()应向应用程序发信号告知传送完毕。

3 LIO驱动程序例子

音频处理如语音压缩、呼叫过程音调检测等,是DSP的一般应用。本例是使用TMS320C5402 DSK上的DMA将音频编解码数据从McBSP移到缓冲区中。

当驱动程序响应应用程序调用和设备中断时,采用数据结构跟踪驱动程序的状态。有效状态是设备驱动程序缓冲区队列的状态,如图1所示。

图2给出了此模式中最简单的传送状态集。圆圈中单词表示设备驱动程序缓冲区队列的状态。第一个单词是“to device”队列,第二个表示外设占用缓冲区指针,第三个是“from device”队列,第二个表示外设占用缓冲区指针,第三个是“from device”队列。E表示空,F表示满,EEE是起始状态。

大电流电感

关于LED电源次级恒流方案的总结随着LED照明现在越来越热,作为LED的生命支柱--LED驱动电源也越来越受到人们的关注。一直听到有很多人这么说:LED电源是个特殊的电源,跟普通电源有很大的不同,所以做LED电源要找专业的LED电源

电除尘电压采样相关问题电除尘高压输出采样遇到点问题,高压输出采用高压包,我想采样高压包的输出电压。高压包输出电压最高为20KV,我想采用电阻分压方式来采样(三个耐压值为5KV的1M玻璃釉电阻和一个1K

求教,mp1583 act4060 电感响 差模滤波后纹波反而power
最近做一个车上用的一个产品,12v降压输出3.3和1.8v,因为车上的电源噪声大,用了共模滤波和差模滤波,在稳压电源上测试,感觉纹波反而增大了;搭建一个迟滞比较器,控制mp1583的on

注塑加工厂


上一篇基于Blackfin533的CCSDS图像压缩算法编码优化

下一篇Verilog HDL与VHDL及FPGA的比较分析


  
  温馨提示
网站首页 | 产品展示 | 科技前沿 | 行业资讯
本公司专业研发、设计、生产、销售贴片电感、插件电感、功率电感、大电流电感、扁平线圈电感、一体成型电感。
专业电感生产制造商,品质优异、交期快。
在线客服
热线电话