This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS570LC4357:如何生成浮点除以零的异常/中断。

Guru**** 2468610 points
Other Parts Discussed in Thread: HALCOGEN

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1086780/tms570lc4357-how-to-generate-exception-interrupt-for-floating-point-divide-by-zero

部件号:TMS570LC4357
“线程:HALCOGEN”中讨论的其它部件

R5 MCU 的 ARM 技术手册指出,可以通过写入辅助控制寄存器中的 DZC 位来禁用除零例外掩码。 [4-26]。  

如何检查是否正在调用异常/中断? 我使用的是 CCS 9.3.0版的卤化合物。

我已经验证了 DZC 设置为1,并且编译器没有优化零除法。 下面是我用来测试此功能的代码和装配体步进的屏幕截图。

挥发性浮子 x = 0.0;
挥发性浮子测试= 12.2 / x;

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,泰勒

    1. 需要在 C15辅助控制寄存器中设置 DZC 启用,以允许 FPSCC.DZC 状态标志生成中断请求。 Cortex R4/5 TRM 包括从该寄存器读取和写入的组装说明示例:

           MRC  P15,  0,   r0,    C15, c0,  0  
           Orr  r0,     r0,      #0x000200     
           MCR  P15,  0,   r0,    C15, c0,  0  

    2.启用映射到 FPU 中断的 VIM 通道47。 在 HalCoGen conf GUI 中,您需要为此 INT 定义 ISR:

    3.清除 CP15控制寄存器(SCTLR)的第19位,以禁用生成 未定义指令异常

    MRC P15,0,<Rd>,C1,c0, 0;读取 SCTLR
    MCR P15,0,<Rd>,C1,c0, 0;写入 SCTLR

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="495095" url="~ë/support/icls/arm-based 微处理器组/基于 ARM 的微控制器/f/arm-based 微控制器-forume/1086780/tms570lc4357-how-to-generate-exception-interrup-for-float-point-diver-ze-zero’]如何检查所谓的异常[引用/引用]

    为了补充 QJ Wang 所说的话, 在 TMS570LC4357:浮点溢出和下溢检测中 有一个指向示例程序的链接。