社区导航

 

搜索
查看: 738|回复: 1

[原创] 【RT-Thread读书笔记】6. RT-Thread 学习7章读后感

[复制链接]

477

TA的帖子

1

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

发表于 2019-5-4 22:19 | 显示全部楼层 |阅读模式
【RT-Thread读书笔记】6. RT-Thread 学习7章读后感
---临界段的保护
1.临界段的定义:一段代码在执行的时候不能被中断被称为临界段。

为什么会在RTOS中定义临界段, 是因为实时操作系统中有一些优先级非常高,或者说非常重要的任务或者线程需要运行,且不能被中断。

那么什么情况下临界段会被打断?一个是系统调度,还有一个就是外部中断。在RT-Thread,系统调度,最终也是产生PendSV中断,在PendSV Handler里面实现线程的切换,所以还是可以归结为中断。既然这样,RT-Thread对临界段的保护就处理的很干脆了,直接把中断全部关了,NMI FAULT 和硬FAULT除外。

2.Cortex-M内核快速关中断指令
1.JPG

3.关中断怎么关?也是很有讲究的。
因为临界段也可能会嵌套,什么意思呢? 就是临界段中嵌套临界段,就像中断里面嵌套中断一样,这时要怎么处理呢?
RT-Thread是这样做的:
  1. ;/*
  2. ; * rt_base_t rt_hw_interrupt_disable();
  3. ; */
  4. rt_hw_interrupt_disable    PROC
  5.     EXPORT  rt_hw_interrupt_disable
  6.     MRS     r0, PRIMASK
  7.     CPSID   I
  8.     BX      LR
  9.     ENDP

  10. ;/*
  11. ; * void rt_hw_interrupt_enable(rt_base_t level);
  12. ; */
  13. rt_hw_interrupt_enable    PROC
  14.     EXPORT  rt_hw_interrupt_enable
  15.     MSR     PRIMASK, r0
  16.     BX      LR
  17.     ENDP
复制代码

二级嵌套临界代码段:
嵌套.JPG

一重临界段代码的保护:
一重临界代码段的保护.JPG

临界段的保护是比较重要的东西,理解它就行,特别是关开中断的顺序,应当充分理解这些指令以及指令的范围。

此内容由EEWORLD论坛网友传媒学子原创,如需转载或用于商业用途需征得作者同意并注明出处




回复

使用道具 举报

1178

TA的帖子

3

TA的资源

五彩晶圆(初级)

Rank: 7Rank: 7Rank: 7

发表于 2019-5-5 08:14 | 显示全部楼层
不错不错

回复

使用道具 举报

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

关闭

站长推荐上一条 /5 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2020-1-17 21:26 , Processed in 0.121021 second(s), 18 queries , Gzip On, MemCache On.

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