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.

[参考译文] EK-TM4C1294XL:TivaWare,TI-RTOS-TivaC和DriverLib之间的一般关系

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1099320/ek-tm4c1294xl-relationship-between-tivaware-ti-rtos-tivac-and-driverlib-in-general

部件号:EK-TM4C1294XL

背景

我正在构建一个基于TM4C的测试夹具,用于使TI基于mmWave的平台的某些功能实现自动化。 测试装置(TM4C)和mmWave设备之间的主要通信是UART。 因此,在我深入了解之前,我想验证几个有关TivaWare,DriverLib以及与TI-RTOS的关系的假设。

这是一个非常广泛的主题,因此为了缩小范围,这个问题的重点将是与UART具体相关。

思考过程

在较高的层面上,我看到有三个图书馆在发挥作用;

  1. TivaWare SDK (DriverLib):例如 C:\ti\tivaware_c_series_2_1_4_178\driverlib

  2. TI-RTOS-TivaC (DriverLib为RTOS重建)。 例如: C:2.1 \tirtos_tivac_2_16_00_08\products\TivaWare_C_Series-Tiv.1.71b\driverlib

  3. TI-RTOS驱动程序。 例如: C:\tirtos_tivac_2_16_00_08\products\tidrivers_tivac_2_16_00_08\packages\ti\drivers

问题:

正确的说法是,TivaWare的标准DriverLib库不是线程安全的。 因此,在符合线程安全的TI-RTOS-TivaC中提供了驱动程序子集。 这些驱动程序可在 \ti\drivers中找到,例如 ti\drivers\UART.h?

 就DriverLib而言,2.1 开发人员可能应该使用tos_tivac (C:\tirtos_tivac_2_16_00_08\products\TivaWare_C_Serie-C1.71b\driverlib)中的捆绑版本,而不是直接进入 C:\tivaware? 我必须将TI-RTOS中的DriverLib版本与标准TivaWare DriverLib进行比较,以了解是否有任何差异。  

总之,在TI-RTOS中为TM4C开发应用程序时,允许使用哪些驱动程序。 您应该只尝试专门使用RTOS驱动程序的子集,还是直接使用DriverLib驱动程序可以? 另外,沿着相同的行,您是否通常省略ROM_或MAP_指令,因为RTOS可能已经在内部映射了这些指令?

示例:

为了让事情完整地循环,我想最好的例子是。

假设您正在利用DMA来促进UART上的串行通信。 DriverLib的UDMA实现中提供的一个选项是通过UDMA_MODE_Pingpong设置ping-pong风格的控制模式,同时使用主  缓冲区和次缓冲区进行存储。

但是,TIVA的TI-RTOS在其UARTivaDMA驱动程序中没有此类功能,因此您可能是独自使用的情况?

我想,一旦我了解了什么可以使用和不可以使用的基本概念,那么剩下的拼图就应该就位了。

谢谢!

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

    您好,

    引用来自LiberWare库的标准,这句话是否安全不正确[DriverWare]。

    您的理解是正确的。 TivaWare不是线程安全的,但您可以使用同步来保护访问相同TivaWare API的多个线程。  

    为此,TI提供了一个安全的RTOS子集,即tivac线程。 这些驱动程序可在 \ti\drivers中找到,例如 ti\drivers\UART.h?

    是的,TI-RTOS是线程安全的。 但是,TI-RTOS中仅提供驱动程序子集的原因是它实现了所有TI产品的共同标准。 图像在不同的TI产品上有许多不同的UART实施,这些TI-RTOS驱动程序在所有TI产品上具有相同的接口。 TI-RTOS驱动程序中没有内置特殊或高级功能。  

    在2.1 系列中,可能会直接使用spirvac_lib_1?  [/引述]

    与TI-RTOS版本2.16 捆绑的底层TivaWare版本。0.18 是TivaWare版本2.1。1.71b。 原因是2.1 .1.71b是经过完全验证的文件。 可以使用较新版本的TivaWare,但它们未经验证。  您可以浏览最新TivaWare版本的发行说明,了解与以前版本相比所做的更改。  

    综上所述,您在开发TI/RTOS应用程序时,可以使用的原因是什么。

    如果您使用TI-RTOS驱动程序,我建议您使用TI-RTOS的有效版本,即TI-RTOS捆绑的2.1 .1.71b。  

    您是否应该直接使用RTOS驱动程序子集或专门使用其驱动程序? [/引述]

    如果您不打算使用TI-RTOS驱动程序,而是直接使用TivaWare,您可以使用最新的TivaWare版本,即2.2。0.295。 请使用必要的同步以保护线程安全。  

    此外,您是否已经在RTOS映射中省略了这些指令?

    如果您直接调用TivaWare驱动程序,则可以使用MAP_或ROM_。  

    假设您正在利用DMA来促进UART上的串行通信。 DriverLib的UDMA实现中提供的一个选项是通过UDMA_MODE_Pingpong设置ping-pong风格的控制模式,同时使用主  缓冲区和次缓冲区进行存储。

    但是,TIVA的TI-RTOS在其UARTivaDMA驱动程序中没有此类功能,因此您可能是独自使用的情况?

    [/引述]

    您的理解是正确的。 还有一些TM4C模块没有TI-RTOS驱动程序。 例如,CAN,ADC,QSSI,LCD等。 您需要在TI-RTOS中使用TivaWare驱动程序。  

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

    谢谢你Charles! 这正是我想要的。