1
1楼 zhanghonghu84 2010-04-05 最近要写at91sam9260与tms320vc5409的HPI驱动。
初步方案(简单实现功能):
(1)vmalloc()申请内存
(2)带并发控制的字符设备驱动
(3)中断编程,并使用poll/select
优化方案:
(1)利用slab与内存池;
(2)利用内存映射;普通的字符设备驱动传输大数据时相对慢一些
初步方案的程序写的差不多了,就差poll/select了。
HPI接口的控制寄存器HPIC中的hint可由DSP写1中断主机,也可由主机写1清0 hint.但是dspint只能由主机写1中断DSP,不管是主机读还是DSP读都是0;所以
DSP-->ARM 写完数据,置位HINT 然后ARM收到中断,读完数据,清0 HINT。DSP继续写数据时先读下HINT,如果HINT为1,就不继续写数据;稍后继续;若HINT为0,则可以写数据了。
ARM-->DSP 写完数据,置位DSPINT,然后DSP收到中断,读数据,但是DSPINT不能清0,怎么做呢?
目前暂时是约定一个地址,里面放一个flag,1标志数据未读,不能写;0标志数据已读,可写。
为了统一,ARM和DSP收到中断后,都检查flag。
2楼 lishiyong110
2010-04-11 21:09:35
你好,我现在也在写hpi的驱动。但是关于中断,我不知道怎么用,能否指点下。中断一定需要用吗? 3楼 zhanghonghu84
2010-04-12 21:22:41
lishiyong110 ,你好。 中断怎么用?这个范围比较广。 比如HPI驱动中,DSP的hint脚接到ARM的一个普通IO上,然后在linux下申请中断,中断函数里面再利用tasklet或者工作队列之类的来实现底半部机制。 中断当然可以不用了,但是你就要不断的查询,比较浪费CPU了 4楼 lishiyong110
2010-04-12 23:24:36
恩 这两天把HPI的内容详细看了下 了解了他的工作方式。谢谢你的回答
以后驱动还有问题再向你请教,谢谢了!
搜索墙@2009 www.pkwall.com all rights reserved QQ:276471788 [京ICP备09111534号]
声明:本站部分数据来源于网络,仅供参考,如有版权问题,请联系我们,我们将及时删除!转载本站请注明来源
| ||||||||||||||||||||||||||||||||||||||||||||