首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >软件中断和硬件中断之间的区别

软件中断和硬件中断之间的区别
EN

Stack Overflow用户
提问于 2017-11-15 21:21:20
回答 3查看 10.5K关注 0票数 2

我最近开始研究ARM Cortex微控制器。在互联网上阅读不同的文章时,我通常会发现两个常见的术语:软件中断和硬件中断。这两者的实际区别是什么?你能举个例子解释一下吗?

EN

回答 3

Stack Overflow用户

发布于 2017-11-15 21:34:23

硬件中断由物理信号产生,或者来自微控制器本身(例如,作为总线控制器的一部分),或者来自配置为中断的外部GPIO。这些中断通常与与微控制器外部的硬件的交互有关,例如当总线上发生事件时产生的SPI或I2C总线中断。这些硬件中断通常通过控制寄存器和中断屏蔽的组合来配置,控制寄存器指定硬件行为,中断屏蔽允许在任何时间点启用或禁用某些中断。电源事件、定时器等内部硬件事件也会触发中断。

软件中断由微控制器执行的指令产生。例如,在x86平台上,您可以使用INT3指令引发陷阱中断以进行调试。软件中断通常用作切换特权级别的方式,例如利用系统调用,因为在低特权模式下运行的代码可以触发在高特权模式下执行的中断,然后该中断可以适当地分派系统调用请求。

在这两种情况下,通常使用中断向量表配置中断处理程序。中断向量仅仅是指向处理每个中断的函数的指针。该表通常存在于微控制器的闪存或ROM空间中的固定内存位置,但在许多情况下,中断表位置可以配置为编程过程的一部分。通常,每种中断类型都有一个与其在中断表中的索引相对应的数字,因此您知道将每个处理程序的向量放在哪里。

票数 3
EN

Stack Overflow用户

发布于 2017-11-15 23:01:10

它们都是中断,它只与源有关。有些中断(这些也是信号)是由指令或故障等(未定义、未对齐等)生成的。以及一些对芯片供应商可用的。ARM制造IP而不是芯片,芯片供应商被提供了许多中断,他们可以选择使用他们想要的任何方式。它们通常与usb、gpio、uart、spi等外围设备绑定。

ARM有一个称为swi软件中断或svc的中断。就像x86中的软中断数量一样,例如,这是为了让应用程序可以进行服务调用。在全尺寸arm上,这可以在较低/最高执行级别执行,但由更高、更有特权的模式或执行级别提供服务。基本上允许你拥有一个操作系统。可以在cortex-m上使用此功能,但没有保护层,它提供了一个通用接口,例如,当您下载了rtos并想为其编写应用程序时,rtos是通用的,应用程序可以做您想要或需要完成的事情,并且可以使用此接口调用rtos (由rtos定义)。无论是arm还是x86,调用都是任意的,逻辑并不规定,软件规定,传统的x86有用于特定中断的bios处理程序,但这是任意的,你可以编写自己的bios/处理程序,这与传统不兼容,只要双方在接口上达成一致,它就会工作得很好,同样,arm的swi/svc调用不一定是标准的,linux可能有一个,但如果他们不想这样做,自由实时操作系统就不需要遵守这一点。

皮质-M的情况下的另一个不同之处在于,所谓的外部中断具有或可以具有额外的屏蔽层,使得您可以使用中断控制器来禁用它们,其中事件类型中断如未定义的、系统棒等,尽管只是信号不通过屏蔽层,但是在内核外部但通常与芯片供应商提供的项目相关的所谓外部中断是通用的或必要的。并不是所有供应商(arm、英特尔、mips等)的所有架构都适用,但如果我没记错的话,cortex m就是这样实现的。诚然,不断有新的内核出现,他们没有任何理由以相同的方式设计所有这些内核。

票数 3
EN

Stack Overflow用户

发布于 2018-12-17 01:35:05

硬件中断由soundchip等硬件触发,而软件中断由软件触发,因为它是程序指令

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47308496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档