嵌入式技术论坛
直播中

刘超

7年用户 1372经验值
私信 关注
[问答]

RTT在LPC2478上的移植代码不支持中断嵌套吗

看了关于移植部分的代码, 有几个问题想请教下:

1 移植中关于中断部分 现在的移植代码应该是中断中不支持中断嵌套的吧。

2 移植中 在任务上下文切换的汇编程序中 为什么CPSR 和 SPSR都需要保存呢? 还有在切换到新任务时的最后两句 MSR CPSR, R4 LDMFD SP!, {R0-R12, LR, PC} 如切换到的新任务在保存上下文时是允许中断的 则在MSR CPSR_cxsf, R4语句后 就可以立即响应中断了 这样会不会存在些隐患?

还望详细解答下

回帖(1)

倪love

2022-4-2 10:14:50
1. 不支持中断嵌套的。因为这个是由ARM7TDMI构架决定的,在handle IRQ时,CPSR中的I位已经置位,所以新的IRQ会被pending起来,在出了IRQ中断时将响应下一个中断。

有些系统会采用进IRQ时立刻离开IRQ模式的方式,RT-Thread并不采用这类方式,相类似的,可以直接唤醒一个高优先级的任务,由任务去做中断中耗时比较多的处理。

2. 不会。这两条指令是原子的,只有一种可能,即前面一条指令执行完因中断到来而发生抢占。这个时候会把以这个点为开始的上下文环境都保存下来。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分