我用的是powerPC处理器,ATA控制器用的是siI0680,我已经在vxworks下实现了pio方式,
想请教一下,如果想用dma方式,需要修改哪些地方呢?
Tornado2.2里提供的驱动是ataDrv.c,不过这个驱动只支持pio方式,不知道workbench里是否支持dma方式.
因为没写过使用dma的驱动,感觉比较迷茫,请高手指点,谢谢.
我用的处理器是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读写就可以了.是这样吗?目前觉得没有什么办法了.
谢谢版主的热心解答。
我用cf卡装载地图文件,所以需要读取速度快才好。我用的tornado2.2.1,内核是5.5.1的,里面提供的驱动是ataDrv.c,这个文件中初始化部分有和dma相关的操作,但是具体的扇区读写(实际上就是函数ataRW)是用pio实现的,我想改成dma的,但是没找到相关的源码,数据手册上说的也不清楚,大概是要建立一个PRD表,来存放用来进行dma操作的缓冲区的地址,还要把这个表的地址填写到一个寄存器中,数据手册上提到了这个表的结构,但是没有源码做参考,总觉得手册上说的很模糊。
看了Linux中ata驱动程序里的dma操作,但是相关数据结构太复杂了。也看不太透,有什么描述ata 驱动中的dma操作的源码吗?
哪位兄弟帮帮忙啊?
有奖活动 | |
---|---|
【EEPW电子工程师创研计划】技术变现通道已开启~ | |
发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
【EEPW在线】E起听工程师的声音! | |
“我踩过的那些坑”主题活动——第001期 | |
高校联络员开始招募啦!有惊喜!! | |
【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
送您一块开发板,2025年“我要开发板活动”又开始了! | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
【我踩过的那些坑】STM32的硬件通讯调试过程的“坑”被打赏50分 | |
【我踩过的那些坑】晶振使用的问题被打赏100分 | |
【我踩过的那些坑】电感选型错误导致的处理器连接不上被打赏50分 | |
【我踩过的那些坑】工作那些年踩过的记忆深刻的坑被打赏10分 | |
【我踩过的那些坑】DRC使用位置错误导致的问题被打赏100分 | |
我踩过的那些坑之混合OTL功放与落地音箱被打赏50分 | |
汽车电子中巡航控制系统的使用被打赏10分 | |
【我踩过的那些坑】工作那些年踩过的记忆深刻的坑被打赏100分 | |
分享汽车电子中巡航控制系统知识被打赏10分 | |
分享安全气囊系统的检修注意事项被打赏10分 |