Chinaunix首页 | 论坛 | 博客
  • 博客访问: 561087
  • 博文数量: 105
  • 博客积分: 3274
  • 博客等级: 中校
  • 技术积分: 1161
  • 用 户 组: 普通用户
  • 注册时间: 2010-02-21 12:14
文章分类

全部博文(105)

文章存档

2011年(1)

2010年(104)

分类: LINUX

2010-04-05 20:48:29

最近要写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。
 
 
阅读(2355) | 评论(3) | 转发(0) |
给主人留下些什么吧!~~

lishiyong1102010-04-12 23:24:36

恩 这两天把HPI的内容详细看了下 了解了他的工作方式。谢谢你的回答 以后驱动还有问题再向你请教,谢谢了!

zhanghonghu842010-04-12 21:22:41

lishiyong110 ,你好。 中断怎么用?这个范围比较广。 比如HPI驱动中,DSP的hint脚接到ARM的一个普通IO上,然后在linux下申请中断,中断函数里面再利用tasklet或者工作队列之类的来实现底半部机制。 中断当然可以不用了,但是你就要不断的查询,比较浪费CPU了

lishiyong1102010-04-11 21:09:35

你好,我现在也在写hpi的驱动。但是关于中断,我不知道怎么用,能否指点下。中断一定需要用吗?