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.

[参考译文] C2000WARE:库中的无限循环

Guru**** 2589265 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1378949/c2000ware-infinite-loop-in-library

器件型号:C2000WARE

工具与软件:

客户注意到、库中采用无限 while 循环来等待硬件状态。如果硬件出现故障、固件将死锁。  对于任务关键型硬实时嵌入式系统、这并不是安全的实施。  

1.对于硬实时系统,有什么建议的解决方法?

2.对于 C2000Ware 发展蓝图、是否有计划加强这一目标而不是使用无限循环?

下面是 SCI 和 SPI 中的两个示例。  

 

位置:C2000Ware 的 driverlib、版本5.0.0.00

示例#1文件名:sci.c:函数: SCI_readCharArray (uint32_t base、uint16_t * 常量 数组、uint16_t 长度)

 

示例2: 文件名:spi.h:函数: SPI_writeDataBlockingFIFO (uint32_t base、uint16_t data)

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

    尊敬的 Eddie:
    该专家目前不在办公室、当他们 回来时、我们会与您联系。 谢谢你。

    此致、

    Aishwarya.

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

    尊敬的 Eddie:

    的  SCI_readCharArray () 函数、建议的用法是从 SCI RX ISR 调用此函数、在这种情况下、除非 RX FIFO 中存在正确数量的字节(或在非 FIFO 模式中、至少存在一个字节)、否则不会调用该函数。 该 while 循环实际上仅在用户正在使用轮询方法而不是中断方法时才包含、建议在时间关键型系统中不使用该方法。

    可以 通过实现  SPI_writeDataBlockingFIFO ()  这个函数应该永远不会卡在无限循环中。 while 循环将等待 、直到 SPI TX FIFO 中至少有一个可用点。 由于数据连续移出 TX FIFO、因此它始终最终脱离此循环。 在大多数情况下、该接口应该会立即退出环路。 如果用户希望确保始终不进入此循环、则可以从 SPI TX ISR 调用此函数、这样一来、仅当可写入正确数量的 FIFO 斑点时才会调用此函数。

    对于这两种情况、我不认为有计划更改 driverlib 函数中的 while 循环、因为阻止 对 FIFO 进行不必要的写入/读取非常重要。

    此致、

    Delaney

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

    尊敬的 Delaney:

    感谢您对此事的答复。 我会向客户反馈。  

    此致、

    John

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

    尊敬的 Ke:

    听起来不错、很高兴我能提供帮助。 我将暂时结束该主题、如果他们还有任何问题、可以随时发表另一个主题。

    此致、

    Delaney