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.

[参考译文] 在 SYSBIOS 运行时可以启用怠惰堆栈

Guru**** 2928980 points

Other Parts Discussed in Thread: SYSBIOS

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1052750/can-lazy-stacking-be-enabled-while-sysbios-is-running

Thread 中讨论的其他器件:SYSBIOS

您好!

这是 之前有关 MSP432操作的旧帖子的后续帖子。

在我的代码中,在 启动 SYSBIOS [BIOS_start();]之前,我在 main()中启用怠惰 FP 寄存器堆栈[FPU_enableLazyStacking();]。

当 SYSBIOS 启动时、似乎会明确关闭怠惰堆栈、因为一旦 SYSBIOS 运行 FPCCR.Aspen = 0且 FPCCR.LSPEN = 0

因此、我的问题是、鉴于 SysBIOS 在启动时似乎显式关闭了怠惰堆栈、再次打开是否安全、或者这是否会导致操作系统故障?

谢谢

Julian

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

    怠惰堆叠是 ARM 的一项功能。 我想您可以在搜索"RTOS +怠惰堆栈"时找到有关此内容的更多说明。 如果您想打开它、则需要确保您是否使用了"Fpu"。

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

    G'Day E迅

    感谢你的答复。  

    我们的项目(包括浮点运算)使用在 MSP432 (M4F)器件上运行的 SYSBIOS。  

    我可以说的是、其他 RTOS 实现支持怠惰堆栈 (例如、FreeRTOS、ChibiOS)、但它不清楚 SYSBIOS 是否支持怠惰堆栈。

    实际上、SysBIOS 似乎明确关闭了怠惰堆栈。  请参阅 [SIMPLELINK] kernel\tirtos\packages/ti\SysBIOS\family\arm\m3\Hwi.c 行458 - 463。  

    #if (已定义(__TI_VFP_support__)||\
       (已定义(__VFP_FP__)&&!已定义(__SOFTFP__)||\
       已定义(_ARMVFP__)
       /*禁用控制寄存器中的怠惰堆栈模式 FP 指示*/
       Hwi_NVIC.FPCCR &=~0xC0000000;//清除 Aspen 和 LSPEN 位*/
    #endif

    我单步执行了此函数[Hwi_initNVIC()],我可以确认这是 SYSBIOS 关闭怠惰堆栈的地方。  

    我想我的问题是这样的。  SYSBIOS 是否支持怠惰堆栈?

    谢谢

    Julian

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

    尊敬的 Julian:

    感谢您澄清问题。 我认为它支持怠惰堆栈。 您可以使用定义的值进行双精度检查、如下所示。 您可以获取更多信息。

    伊斯天