【问题标题】:Concurrent interrupts in ARMARM中的并发中断
【发布时间】:2015-09-23 10:37:34
【问题描述】:

我是 ARM 处理器的新手。 Atmel ATSAMD20e 实现了基于 ARMv6 架构的 ARM cortex M0+ 处理器。它允许多达 32 个外部中断,中断信号连接到嵌套向量中断表 (NVIC)。是否可以使用 NVIC 进行并发中断?如果是这样,我们如何确定可以同时运行的最大中断数?有人可以指出任何解释并发中断处理的文档。谢谢

【问题讨论】:

    标签: concurrency arm interrupt interrupt-handling cortex-m


    【解决方案1】:

    可以“并发”运行的最大中断受堆栈空间、优先级数量和系统中的中断源数量的限制。你说你有 32 次中断,M0+ 有 192 级,我不知道你愿意牺牲多少堆栈来获得这种行为。 (而且“并发”确实是用词不当。它们是互相抢占,而不是同时运行)

    然而,在实践中,支持多个优先级并没有什么好处,即使是这样。仅当您的中断要求的截止日期短于最长的中断运行期时,您才需要这样做。

    请参阅此处 (http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0337e/Cihcbadd.html),了解当中断被其他中断抢占时堆栈上发生的情况。

    【讨论】:

    • 非常感谢您的准确回答和澄清。
    • 只是想添加一个注释,即使这是旧的。 M0+ NVIC 最多可支持 192 个优先级。实际上,大多数供应商只会实现几个优先位(因为这是供应商如何实现的可配置选项),因此可能有 4、8、16 等。例如,NXP Kinetis L 线仅实现 2 位意味着 4 个用户优先级。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多