在RTOS里,应用程序堆栈和芯片内核中断服务的堆栈是一样的吗?

2019-12-21 12:09发布

如题,比如,任务1,堆栈在01开始的地址,任务2堆栈在10开始的地址,在执行任务1是发生中断,当中断来后,入栈地址是01里还是中断服务原有的地址?不知我有没有表达清楚……
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
xivisi
1楼-- · 2019-12-21 13:57
看怎么设计的。抢占式的每个线程基本独享栈,协作式是共享的。中断一般是独享。至于堆,通常是共享
12tangyang12
2楼-- · 2019-12-21 16:22
中断一般是独享的,但是,在执行任务1时,SP是指向了任务1的栈,这时候发生中断,进入中断服务前会将上下文压入堆栈1,,
12tangyang12
3楼-- · 2019-12-21 19:32
xivisi 发表于 2018-2-22 20:23
看怎么设计的。抢占式的每个线程基本独享栈,协作式是共享的。中断一般是独享。至于堆,通常是共享 ...

中断一般是独享的,但是,在执行任务1时,SP是指向了任务1的栈,这时候发生中断,进入中断服务前会将上下文压入堆栈1,,任务2也同样这样。理论上应该怎样处理的?
Scarlette
4楼-- · 2019-12-21 20:20
12tangyang12 发表于 2018-2-22 22:46
中断一般是独享的,但是,在执行任务1时,SP是指向了任务1的栈,这时候发生中断,进入中断服务前会将上下 ...

( ̄◇ ̄;)……你先看下Cortex-Mx(M0/3/4随意)的手册好吗,从线程模式切入中断模式的时候是压PSP栈,退出中断后从PSP出栈。任务切换的玩法,就是在中断里改PSP。
aozima
5楼-- · 2019-12-21 21:29
 精彩回答 2  元偷偷看……
security
6楼-- · 2019-12-22 01:22
主流的设计,这两个栈是要分开的。
看看 Cortex-M 的设计,应该可以窥视出来。

一周热门 更多>