硬汉嵌入式论坛

 找回密码
 立即注册
查看: 4861|回复: 1
收起左侧

[QQ群问题解答] 中断切换和任务切换的区别,请教

[复制链接]

92

主题

76

回帖

92

积分

初级会员

积分
92
发表于 2014-4-1 10:41:44 | 显示全部楼层 |阅读模式
请教:这个问题不针对某个系统.
最近看了一些书有些疑惑.

以前用ASM时,写中断,一开始就是保护现场(PUSH入某些寄存器之类),然后是中断里面可能用到的寄存器,内存等.处理完服务程序后,就POP出.

现在用C写中断服务程序,编译器是自动根据用户写的程序所用到的资源自动完成保护现场的代码的.

一旦用操作系统时,任务切换,中断切换,需要调用所谓"切换函数"(ASM写的).

但是我怎么知道究竟需要保存什么现场呢?不可能把所有寄存器都保存下来吧?我又不知道任务里面或者中断服务程序里面用了什么寄存器和RAM(C环境下)

不可能每次更改中断又去改一下那个"切换函数"吧?

头脑混乱,不知道大家明白我说什么不?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107034
QQ
发表于 2014-4-2 10:29:22 | 显示全部楼层
1. 的确是这样的,每次任务的切换得把所有的寄存器全部进行保存,如果不把所有的寄存器进行保存,
    而是保存部分寄存器,这时问题就出现了,大家怎么知道哪些是需要保存的寄存器呢,如果查询
    一下哪些寄存器需要保存岂不是更加的麻烦。
2. 现在的Cortex-M3/M4处理器一供有16个寄存器,有8个寄存器是可以自动入栈的,速度还是很快的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-15 06:25 , Processed in 0.207969 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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