1. 简介

system events是一个高优先级事件,必须由操作系统或hypervisor程序立即来完成,即使操作系统在其自己的临界区中执行(中断被屏蔽),系统事件可用于:

  • Platform error handling (RAS) 系统错误处理

    在任何时候,PE、内存或系统总线都可能产生错误。这些错误中的一部分可以在软件中纠正,并且可能需要不同的执行权限。固件优先处理Firmware first是一种常见的错误处理方法,其中更高的异常级别EL3提供初始错误处理,之后错误被委托给较低的异常级别EL2/EL1。

  • Software watchdog timer 软件看门狗定时器

    高优先级事件可用于实现软件看门狗定时器。

  • Sample based profiling 采样分析

    基于样本的分析对于那些屏蔽中断的临界区可能存在盲点。高优先级的基于事件的分析器可以消除这种盲点。

  • Kernel debugger 内核调试

    调试系统软件通常涉及检查执行路径、寄存器、和内存。软件调试经常受到中断屏蔽的影响,因为它可能会阻止调试器中断PE。带优先级的事件,即使系统处于临界区,也可以检查系统的状态。

The Software Delegated Exception (SDE)是一个可以抢占其它异常和独占机制,用来把特殊系统事件system events传递给操作系统(或hypervisor)的机制。Firmware收到system events后,使用SDEI通知Non-secure world,并执行注册好的handler

当一个异常需要不受中断屏蔽和临界区延迟的传递时,应使用 SDEI 而不是普通中断,就像上面的几个例子一样。

SDEI 提供了高优先级的事件传递机制,其优先级高于目标操作系统和hypervisor的中断。SDEI可以支持OS或/和hypervisor进行如下操作:

  1. 订阅并处理系统事件。
  2. 屏蔽系统事件。
  3. 将系统事件的处理迁移到不同的 PE。
  4. 添加或删除参与事件处理的 PE。
  5. 将现有中断转换为 SDEI 事件源。
  6. 生成软件事件。

注意:SDEI只使用system event管理,不适用设备中断处理。

2. SDEI 相关术语

  • RAS:Reliability, Availability, and Serviceability
  • SDEI: Software Delegated Exception Interface 软件委托异常接口
  • SDEI dispatcher:处理来自client的请求并向其委托事件
  • SDEI client:使用dispatcher提供的接口注册处理程序,接收事件通知并处理事件

3. SDEI 事件调度

SDEI事件调度有两种方式:

  1. 中断触发事件,由绑定到SDEI事件的中断触发
  2. 显式分配事件,由SDEI dispatcher调用sdei_dispatch_event() API将事件分配到SDEI client处理

中断触发事件调度

初始化阶段,SDEI客户端绑定一个非安全中断,SDEI调度程序返回一个平台动态事件编号。然后客户端为该事件注册一个处理程序并启用该事件,取消屏蔽当前PE上的所有事件。

当绑定的中断发生时,它会被trapped到EL3中,中断被移交给SDEI调度程序,然后分配执行客户端注册好的处理程序,执行完成后,客户端调用SDEI_EVENT_COMPLETE接口结束事件处理,恢复到事件发生前的程序继续执行。

显式分配事件调度

初始化阶段,SDEI 客户端为平台事件注册一个处理程序,启用事件,并取消屏蔽当前PE的所有事件。

与中断触发事件SDEI调度不同的是,这里不涉及中断绑定,因为绑定的或动态事件不能被显式调度,显式调度的事件应该是系统预先定义好的。

当关键事件发生(比如在接收到SError或同步外部中止时(SError or Synchronous External Abort))时会被trapped到EL3, EL3 执行事件的第一级分类并分配给RAS 组件承担进一步处理,RAS处理后需要非安全世界参与进一步处理,因此决定显式分派一个事件(客户端已经注册了该事件),于是调用sdei_dispatch_event API由SDEI调度程序分配执行客户端注册好的处理程序,将请求的事件分派给客户端处理,当处理程序完成时,恢复被抢占的执行程序。

4. 参考

TF-A SDEI: Software Delegated Exception Interface
ARM_DEN0054A_Software_Delegated_Exception_Interface

SDEI (Software Delegated Exception Interface) 软件委托异常接口相关推荐

  1. 13-SDEI: Software Delegated Exception Interface

    引流关键词: 中断.同步异常.异步异常.irq.fiq.BL1,BL2,BL3,BL31,BL32,BL33,AP_BL1,AP_BL2,AP_BL3,AP_BL31,AP_BL32,AP_BL33, ...

  2. SDK(Software Development Kit, 即软件开发工具包 )

    SDK(Software Development Kit, 即软件开发工具包 )一般是一些被软件工程师用于为特定的软件包.软件框架.硬件平台.操作系统等建立应用软件的开发工具的集合 SDK是一些被软件 ...

  3. dll domodal运行时异常_软件运行异常时的多种排查思路与方法

    软件发生异常,排查起来毫无头绪和思路时,该怎么办呢?结合多年的开发经验,我来告诉你们几个常用的方法,不妨用这些方法去试一试!希望能帮到你们. 1.通过安装软件不同时间的版本对比一下 这个方法有点笨,但 ...

  4. BSD:Berkeley Software Distribution,伯克利软件套件

    目录 BSD简介 许可协议 开源项目 BSD分区概述 BSD (Berkeley Software Distribution,伯克利软件套件)是Unix的衍生系统,在1977至1995年间由加州大学伯 ...

  5. 软件_git异常错误[博]

    原创博客地址:软件_git异常错误[博] 删远端分支报错remote refs do not exist或git: refusing to delete the current branch解决方法 ...

  6. OpenCV imread读取图片,imshow展示图片,出现cv:Exception at memory location异常

    OpenCV imread读取图片,imshow展示图片,出现cv:Exception at memory location异常 参考文章: (1)OpenCV imread读取图片,imshow展示 ...

  7. trycatch 不能捕获运行时异常_软件运行异常时的多种排查思路与方法

    软件发生异常,排查起来毫无头绪和思路时,该怎么办呢?结合多年的开发经验,我来告诉你们几个常用的方法,不妨用这些方法去试一试!希望能帮到你们. 1.通过安装软件不同时间的版本对比一下 这个方法有点笨,但 ...

  8. exception 类 java_Java 常见异常种类

    1.什么是异常 结构不佳的代码不能运行,这是Java的基本理念. 发现错误的理想时机是在编译期.然而,编译器并不能发现所有的错误,余下的问题就需要在程序运行时解决.这就需要错误能通过某种方式,把适当的 ...

  9. 解决win10用户权限导致软件启动异常问题

    解决win10用户权限导致软件启动异常问题 前段时间因为双硬盘都是win10,切换启动导致其中一个操作系统的'c:/'用户文件目录权限改变,OneNote 报告"缓存文件没有权限,启动异常& ...

最新文章

  1. UUID的使用及其原理
  2. 为什么需要权重初始化(weight initialization)?常见的权重初始化方式有哪些?启发式权重初始化的好处?
  3. 开源网络备份软件bacula数据恢复(二)
  4. 60+ 实用 React 工具库,助力你高效开发!
  5. java恐怖游戏_分享个经典恐怖游戏系列
  6. 线程:信号量 sem_wait sem_post
  7. NYOJ399 - 整除个数
  8. 自己选择的路,不后悔
  9. Selenium3笔记-WebDriver源码初探
  10. Routerboard/DR4019S-Qualcomm-IPQ4019-2T2R-Dual-Band-2-4GHz-5GHz-support-OpenWRT-802.11ac-Wave-2.
  11. 大工20春《计算机应用基础》在线测试,大工20春《计算机应用基础》在线测试1...
  12. matplotlib绘制风能玫瑰图
  13. 故障树FTA(fault tree analysis)工具链
  14. Python: 计算百分比
  15. 2017东北四省赛G题
  16. python学生姓名添加删除_python-函数-实现学生管理系统,完成对学员的增,删,改,查和退出学生管理系统。...
  17. BaseAdapter notifyDataSetChanged()
  18. 一页两个uEdit编辑器写法记录
  19. [代码积累]解决HL7协议、TCP/IP通讯、16进制转字符串,中文乱码的问题。
  20. 2010计算机软件二级考试,2010年全国计算机等级考试全攻略

热门文章

  1. 阿里云服务器搭建python web环境_《Python入门》Linux 下 Python Web开发环境搭建笔记-阿里云开发者社区...
  2. 计算机应用基础一 b卷答案,计算机应用基础试题(2004年) B卷(无答案)
  3. 用户研究如何获取更为真实的用户信息
  4. fvwm-themes的应用
  5. 深度学习AI克隆人声模型
  6. mmap()函数参数详解
  7. java jsoup抓取百度图片保存到本地,并压缩到指定大小(可指定宽高或者流大小)
  8. 下载Dubbo源码包打包安装Dubbo-admin
  9. 我的苹果开发帐号(公司型)成功申请经历——不用传真营业执照、免费获取邓白氏编码
  10. PO VO DTO 转换神器替代BeanUtils 了