找回密码
 注册
搜索
查看: 2779|回复: 9

[讨论] HISR迷惑

[复制链接]
发表于 2008-11-16 23:12:10 | 显示全部楼层 |阅读模式
请教大峡们一个迷惑问题:HISR和LISR我们怎么去理解它呢?为什么除了中断注册一个HISR,其他TASK也有个HISR!
发表于 2008-11-17 09:14:33 | 显示全部楼层
LISR一般是由硬件促发的,一般比较短小,处理速度较快。[em09]
点评回复

使用道具 举报

发表于 2008-11-17 16:23:43 | 显示全部楼层
我是这样理解的,LISR是硬件触发的,处理比较短,当需要其他的处理时,往往会激活一个HISR,这样可以保证中断处理能力。常用的方法就再LISR的处理函数里面调用drv_active_hisr激活HISR。
而drv_active_hisr是通过kal_activate_hisr激活事件(EVENT)的方式触发的HISR调用。

这里面还有一个问题请达人指点,就是HISR的处理函数运行在那个TASK里面?
点评回复

使用道具 举报

发表于 2008-11-17 22:44:42 | 显示全部楼层
lisr就是我们常说的中断处理程序ISR,HISR是NUCLEUS 的一种特殊概念,从设计架构上来讲是实现了一种异步处理过程,从而减轻isr的处理时间,hisr是一种线程任务的概念,不是一个函数的概念,可以理解为优先级高的task,大家工作过程如有解决不了问题欢迎求助俺,顺便说一下,俺是收费的,收费是为了更好的服务~~~

http://www.52rd.com/bbs/Detail_RD.BBS_141623_15_1_1.html
点评回复

使用道具 举报

发表于 2009-4-12 12:10:54 | 显示全部楼层
To jeric:
     your are right.
     LISR就是baseband内部IRQ来触发 在最新的MT6225/MT6226 08B的软件中有个isrentry.c里有具体中断号。
     HISR只能有外部中断EINT来触发。
     以上只是我的一点愚见。
点评回复

使用道具 举报

发表于 2009-4-12 14:25:05 | 显示全部楼层
LISR和HISR是针对OS中断处理不同层次需要而设计的,LISR在硬件中断时立即从Vector表产生,对其执行时间必须要求相当苛刻,所以一般是什么都事都不干,仅仅做一个中断触发标记(当然也有例外,对于有些时间要求更高的FIQ的ISR,必须使其放在LISR处理)。而HISR其实是一个独立于TASK之外而比TASK高级的服务例程,它进行真正的中断处理,因此,它会在LISR完的下一次OS线程调度时触发出来,但是,HISR对执行时间要求也很短。个人感觉NUCLEUS的LISR/HISR概念是有些类似于LINUX里所谓Top Half/Bottom Half中断处理的方式。
点评回复

使用道具 举报

发表于 2009-4-12 19:25:59 | 显示全部楼层
推动起来,大家积极讨论。
点评回复

使用道具 举报

发表于 2009-4-13 16:54:09 | 显示全部楼层
顶,请各位大侠继续!
点评回复

使用道具 举报

发表于 2009-4-13 21:20:47 | 显示全部楼层
顶,请各位大侠继续!
小弟学习中……
点评回复

使用道具 举报

发表于 2009-4-14 15:36:49 | 显示全部楼层
这个问题看一下源代码就很容易区分了
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-12-27 10:28 , Processed in 0.047022 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表