soicer 发表于 2010-1-4 19:06

关于uCOS-II中OSISRStkPtr

我在官方下载的MSP430F5438的PORT.内核是2.86版uCOS-II.

在Tick ISR中, 有个变量叫做OSISRStkPtr. 我理解这应该是独立中断堆栈的指针,但是在uCOS-II中,其他堆栈都是有大小的,或者说是有范围的,而OSISRStkPtr则没有明确构建中断堆栈.

在os_cpu.h中,有如下代码:
/*
************************************************************
* GLOBAL VARIABLES
*************************************************************/

OS_CPU_EXT OS_STK *OSISRStkPtr;   /* Pointer to top-of ISR stack */

然后汇编里就直接使用这个变量了. 其他的堆栈不都是构建一个数组吗?这样使用OSISRStkPtr会不会造成堆栈溢出啊. 有没有高人指点一二:D

soicer 发表于 2010-1-4 20:35

自回.
OSISRStkPtr只保存指向堆栈的指针,而不指向堆栈. 因为在各任务堆栈之外,IAR会自动生成一个堆栈CSTACK,用前后台方式编程时, 中断和调用使用的堆栈就是这个. OSISRStkPtr指向的就是此堆栈. 这个堆栈的大小可以在IAR项目中设置.

自己拿分走人:lol

soicer 发表于 2010-1-4 20:39

唉,自己不能给自己分啊;P

下面回复的前4名兄弟,每人5分,来拿啊

desert_hawk 发表于 2010-1-4 23:09

这个堆栈是不是只在中断里使用? 中断的堆栈和任务堆栈分开好一些,能节省点RAM。等楼主送分,呵呵。

soicer 发表于 2010-1-5 20:42

大伙都很谈定,20分都给你吧:D

desert_hawk 发表于 2010-1-5 21:14

thank you very much.:D

郁海难填 发表于 2011-9-11 10:43

1# soicer

楼主,我在网上下载的一个能运行的5438的ucos-ii 2.86的工程,可惜没有发现有中断管理的那一部分。。。哎,这个UCos感觉好怪。。。
页: [1]
查看完整版本: 关于uCOS-II中OSISRStkPtr