这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 请教vxWorks系统CF卡驱动里的DMA问题,谢谢

共5条 1/1 1 跳转至

请教vxWorks系统CF卡驱动里的DMA问题,谢谢

菜鸟
2007-07-23 07:18:01     打赏

我用的是powerPC处理器,ATA控制器用的是siI0680,我已经在vxworks下实现了pio方式,

想请教一下,如果想用dma方式,需要修改哪些地方呢?

Tornado2.2里提供的驱动是ataDrv.c,不过这个驱动只支持pio方式,不知道workbench里是否支持dma方式.

因为没写过使用dma的驱动,感觉比较迷茫,请高手指点,谢谢.




关键词: 请教     vxWorks     系统     驱动     问题     谢谢    

菜鸟
2007-07-24 02:44:00     打赏
2楼

都有DMA的支持,6.x的ataDrv.c支持的模式要多一些,有了自动探测功能。

要使用DMA模式,关键是在BSP中实现DMA的驱动,比如MPC5200、MPC107、970、440等。如果BSP中DMA驱动做好了,则根据ataDrv的要求,在syaAta文件中提供相应的ATA的DMA接口函数就可以了,函数命名和功能与dma驱动函数是一致的。


菜鸟
2007-07-30 17:46:00     打赏
3楼

我用的处理器是PowerPC8540,ata控制器(sii0680)接在PCI总线上。目前我使用的bsp是支持dma操作的,这个已经用视频采集卡验证过了.但是,taonado2.2.1里面提供的ataDrv.c不支持dma(就是说ataRW这个函数是用pio方式实现的)。我没有找到dma操作CF卡的驱动例程,您的意思是6.x的ataDrv.c中支持dma操作吗,如果是,可以给我发一份吗?wanghao_luke@163.com.非常感谢。

我已经实现了pio方式,从下到上分三个层次,ATA读写,块设备,文件系统.我觉得只要在ATA读写那个层面上加入dma读写就可以了.是这样吗?目前觉得没有什么办法了.


菜鸟
2007-07-31 11:00:20     打赏
4楼

vxWorks对PPC的处理方式在6.x中已经做了很大的改动。

5.5.1的ata驱动支持DMA方式,虽然可选的方式比较少。

6.x中可以自动探测。

是否你对CF卡的读写速度要求很高呢?如果是这样,我觉得出了DMA以外,还可以考虑把磁盘的读写缓冲做好一些,可以增加寿命和提高性能。如果数据十分零散地写入CF卡,使用DMA对性能地改善也是不明显的。

 


菜鸟
2007-08-03 13:20:30     打赏
5楼

    谢谢版主的热心解答。
    我用cf卡装载地图文件,所以需要读取速度快才好。我用的tornado2.2.1,内核是5.5.1的,里面提供的驱动是ataDrv.c,这个文件中初始化部分有和dma相关的操作,但是具体的扇区读写(实际上就是函数ataRW)是用pio实现的,我想改成dma的,但是没找到相关的源码,数据手册上说的也不清楚,大概是要建立一个PRD表,来存放用来进行dma操作的缓冲区的地址,还要把这个表的地址填写到一个寄存器中,数据手册上提到了这个表的结构,但是没有源码做参考,总觉得手册上说的很模糊。
      看了Linux中ata驱动程序里的dma操作,但是相关数据结构太复杂了。也看不太透,有什么描述ata 驱动中的dma操作的源码吗?
哪位兄弟帮帮忙啊?


共5条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]