这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » ucosii 求教:ucosii移植时,中断处理问题

共2条 1/1 1 跳转至

ucosii 求教:ucosii移植时,中断处理问题

院士
2006-09-17 18:14:16     打赏
ucosii 求教:ucosii移植时,中断处理问题



关键词: ucosii     求教     移植     中断     处理问题    

院士
2006-12-22 22:43:00     打赏
2楼

最近往44b0上移植ucosii,关于中断处理方法一直没弄明白,还望各位朋友点拨一下,谢谢。

ucosii中,只处理了系统时钟中断,那么对于具体的某个处理器,例如44b0,它还有其它很多中断如timer中断、uart发送接收中断、adc中断,这时ucosii如何识别和处理???例如来了一个ADC中断,ucos怎么识别它???

而且,OsIntNesting只和时钟节拍中断有关,万一有中断嵌套怎么办,例如在处理timer中断时,又来了一个adc中断,这时是不是要自己增加一个变量来标识嵌套关系???

看了一些例程,基本上都有一个ISR_Install函数,但我看主函数里,基本上只安装了tick中断处理函数,其它的中断处理函数都没有安装,这是怎么回事呢,难道其它中断都不管了???

一直没弄明白,很纳闷,请有移植过的或者对此有什么看法的,都发发话吧,谢谢啦!

1: 我在P...ARM 中发过一个帖子,你可以去参考一下测试过中断嵌套的。 2: reto 深思:

  谢谢。
  可否把你的帖子的链接地址帖上,不好意思,不太好找,呵呵!
  
  我现在主要是不明白如何处理其它中断,比如我在程序中要使用一个定时器中断,那么,如何设置这个中断呢?当发生这个中断时,是不是就打断ucosii多任务的运行呢?

  另外,由于tick中断发生的比较频繁,如果在处理其它中断时又来一个tick中断,那怎么办,这就是中断嵌套如何处理的问题

  各位大侠指点一下吧 3: 举个例子
比如说,我现在有以下几个任务:

一个任务进行ADC数据采集
一个任务将采集的数据在lcd上显示
另外一个监控按键是否有按下,如果有按下 ,则响应按键中断

我的adc进行三通道的采集,在某个通道采集结束后,在adc 中断处理函数里面通知进行通道转换,启动下一个通道的采集。

显然,这里除了系统时钟tick中断,还有adc转换结束中断,按键中断(实际上是外部中断)
那么这几个中断如何处理呢?这些中断发生时显然会打乱多任务的运行,所以这几个中断处理函数是不是又要用汇编程序来写,然后在汇编程序中保存任务上下文呢?另外,如果在adc中断处理程序中,又来了一个tick中断怎么办?这时就发生了中断嵌套。
4: 各中断速度很快,应该不会有影响吧? 5: reto local_ma:

   请教一下,各个中断响应多快,例如adc中断、uart中断,如果我在其中只是做一些状态位的清零或者置位,应该能到us级吧?

   而tick时钟节拍中断是s级还是ms级? 6: 弄明白了
弄明白如何处理其它中断了,和tick类似

如果要处理中断嵌套的话,比较麻烦,感觉还是关中断好点,不过这种情况下

中断处理程序应该设计得短小精悍,免得中断延迟太长,甚至丢失中断,影响

实时性 7: 外部中断也应该由ucos管理起来 8: to: ladybug怎么管?必须加汇编吗? 9: 珊瑚虫要是你不用嵌套中断地话,那么你就违背了OS的本意,嵌套中断只会加强实时信,你不敢用嵌套中断说明你还不明白OS多进程的意义 10: 学习学习在这方面VxWork还是不错,就是太昂贵... 11: 应该用中断嵌套     应该用中断嵌套,中断服务程序其实可以看作是被打断任务的一部分(子程序),进入中断以后打开中断,如果在有中断发生相当于任务又增加了一部分。中断嵌套起初学习起来,看似很乱,其实还是很清晰的,需精心分析。
        用汇编编写中断程序其实很简单,并且复杂些的算法可用c编写有汇编程序调用即可。
        关于混合编程的问题,应该去看编译器手册,一般说的都很清楚,只需套用就行。
         英文不好???
          学!!!!!!!!!
         12: 也不是回避中断嵌套   我个人认为:最好在设计的时候,把ticker定好,可以这样预估,在两个ticker之间,最好有足够的时间把所有任务跑一遍,而且留出40%的时间给idle任务,你可以自己做一个idle任务,比如LCD显示你的logo.或者你的大名。
   我正在做任务设计,等有结果了再交流 13: eleven11/*************************************************
要是你不用嵌套中断地话,那么你就违背了OS的本意,嵌套中断只会加强实时信,你不敢用嵌套中断说明你还不明白OS多进程的意义
**************************************************/

我不认为嵌套中断是OS多进程的意义所在。应该说嵌套中断能够更好的保证高优先级事件处理的实时性,而OS则在一个CPU上模拟出了并发执行的环境。

如果不支持嵌套中断,一般而言,会使软件更可靠一些,但会牺牲中断的实进性,所以高性能RTOS一般都会允许中断嵌套。

如果不支持嵌套中断,又想好获取较好的实时性,中断程序应该写的短小精悍,仅处理一些对实时性要求很高的部分,而将中断的其它部分处理通过信号、消息等方式交给高优先级任务来处理。更好的,可以借鉴一下linux的bottom-half机制



共2条 1/1 1 跳转至

回复

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