zoukankan      html  css  js  c++  java
  • PowerPC-关闭中断后,还能报sc中断?

     
    一. 基本问题
     
    FreeRTOS有一个宏,portYIELD_WITHIN_API(), 意即在FreeRTOS的API中进行进程切换。
    API一般使用taskENTER_CRITICAL()和taskEXIT_CRITICAL()包裹。所以portYIELD_WITHIN_API()主要指的是在CRITICAL区间内进行进程切换。
     
    taskENTER_CRITICAL()会关闭中断,而进程切换也是依靠软件触发CPU中断进行,在PowerPC为System Call中断(ARM为SWI指令)。
     
    在关闭中断的情况下,CPU如何响应System Call中断呢?
    可以看到,portYIELD_WITHIN_API()所执行的进程切换动作与taskENTER_CRITICAL()的注释是矛盾的。
     
    二. 问题求解
     
    这个问题需要到芯片手册,甚至ISA手册中寻找答案。
     
    1.如何关闭中断?
    关中断一般是指关闭CPU对中断的响应,这里的中断一般指外部中断。PowerPC中,为MSR寄存器的EE位。
     
     
    从中可以看到,EE位为0时,则禁止External Input, Decrementer, and Fixed-Interval Timer interrupts. 即禁止外部中断打断CPU。这些不包括System Call中断。
     
    2. 外部中断与System Call
    EE是外部中断的使能位,约束不到System Call中断。他们的不同点如下:
    a.外部中断是异步的,而SC是同步的中断;
    b.外部中断和SC的IVOR偏移量不同;
     
     
     
  • 相关阅读:
    Iframe 自适应高度并实时监控高度变化的js代码
    asp.net下载文件几种方式
    C# 使用ffmpeg视频截图
    C# 读取Excel和DBF文件
    C# 多线程下载
    C# http get与post请求方法
    socket实例
    C# 汉字转为拼音
    读取Excel中数据
    【BZOJ2238】Mst 最小生成树+LCA+堆
  • 原文地址:https://www.cnblogs.com/wjcdx/p/9380232.html
Copyright © 2011-2022 走看看