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.

[参考译文] LAUNCHXL-F28P65X:65x 中的 FreeRTOS 实现

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1421775/launchxl-f28p65x-freertos-implementation-in-65x

器件型号:LAUNCHXL-F28P65X
主题中讨论的其他器件:SysConfigC2000WARE

工具与软件:

大家好!

我正在尝试对我的裸机代码实施 FreeRTOS。 我使用了 针对 F28P65x 的 FreeRTOS 示例代码并针对我的应用程序进行了修改。 任务函数正在完美地执行 ,表明我的 FreeRTOS 实现是好的,但我的 ISR 不再执行. 在示例代码的主体, DINT 和 IER , IFR ,其中设置为0x0000 . 但我在初始化板和 REST 后重新启用全局和实时中断。 到底什么是停止我的 ISR 执行, FreeRTOS  有一个不同的方式来处理外设中断. 有人可以发送有关 FreeRTOS 的更详细的文档。 我浏览了大部分可用文档、但我不确定是什么原因导致了我的问题。

提前感谢您

Ashwin Bhaskar A.

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

    尊敬的 Ashwin:

    FreeRTOS 不处理硬件外设中断、这些中断应该正常发生。 您是否在 FreeRTOS 应用程序中的任何位置禁用中断/输入关键段? 此外、您正在使用哪些外设中断、并且为了阐明、这些中断在没有 FreeRTOS 的情况下可以按预期工作?

    如果您能够附加示例代码、这也有助于加快调试速度。

    谢谢!

    Arnav

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

    您好、Arnav、

    我尚未禁用中断或输入任何关键部分到目前为止。 我实现了 FreeRTOS、以查看它是否与 SCI 中断配合使用。  

    我正在附加代码  

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    //
    // Included Files
    //
    #include "driverlib.h"
    #include "device.h"
    #include "FreeRTOS.h"
    #include "board.h"
    #include "c2000_freertos.h"
    #include "stdio.h"
    //
    //User Defines
    //
    #define BUFFER_SIZE 10
    #define FIFO_LEVEL 1
    //
    //Function prototypes
    //
    void vApplicationStackOverflowHook(TaskHandle_t pxTask, char *pcTaskName);
    void vApplicationMallocFailedHook(void);
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    裸机代码运行正常、但当我启用 FreeRTOS 时、不再处理中断。 这到底是什么原因?

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

    您好、Arnav、

    [报价 userid="524707" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1421775/launchxl-f28p65x-freertos-implementation-in-65x/5450172 #5450172"]此外、您正在使用哪些外设中断、为了阐明这些中断在没有 FreeRTOS 的情况下能按预期工作?

    SCI 中断在没有 FreeRTOS 实现的情况下可以正常工作。

    CPU 计时器中断也适用于 FreeRTOS。 只有通过 PIE 配置的中断似乎才有问题。

    所附的代码只是一个示例代码,我是为了看看 FreeRTOS 是否与外设中断一起工作,这是我遇到这个问题的时候

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    #include "driverlib.h"
    #include "device.h"
    #include "FreeRTOS.h"
    #include "board.h"
    #include "c2000_freertos.h"
    #include "stdio.h"
    //
    //User Defines
    //
    #define BUFFER_SIZE 10
    #define FIFO_LEVEL 1
    //
    //Function prototypes
    //
    void vApplicationStackOverflowHook(TaskHandle_t pxTask, char *pcTaskName);
    void vApplicationMallocFailedHook(void);
    void error(void);
    //
    //Task functions
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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

    尊敬的 Ashwin:  

    在 SysConfig 中、能否确保所有中断的"Enable interrupt in PIE (在 SysConfig 中启用中断)"选项已打开。 默认情况下、此设置为关闭。  

    谢谢!

    Arnav

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

    您好、Arnav

    它已启用、我使用 SysConfig 检查了所有可能的情况。 我已经实现了所需的一切。

    这不是问题解决方法。 此外、TI 的免费 RTOS 文档也非常有限。 特别是外设中断,还有什么我在代码中遗漏应该做的? .

    您能否与外设中断共享自由 RTOS 实现的工作代码? 此任务应该被中断抢占并执行 ISR。  

    谢谢!

    Ashwin Bhaskar A.

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

    尊敬的 Ashwin:

    我能够按原样运行您的代码、并且 ISR 按预期执行。

    以下是使用的 SysConfig 设置。 请注意、我在回送模式下使用 SCI 模块。

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    /**
    * These arguments were used when this file was generated. They will be automatically applied on subsequent loads
    * via the GUI or CLI. Run CLI with '--help' for additional information on how to override these arguments.
    * @cliArgs --device "F28P65x" --part "F28P65x_256ZEJ" --package "256ZEJ" --context "CPU1" --product "C2000WARE@5.03.00.00"
    * @v2CliArgs --device "TMS320F28P659DK-Q1" --package "256ZEJ" --variant "TMS320F28P659DK8-Q1" --context "CPU1" --product "C2000WARE@5.03.00.00"
    * @versions {"tool":"1.21.0+3717"}
    */
    /**
    * Import the modules used in this configuration.
    */
    const sci = scripting.addModule("/driverlib/sci.js", {}, false);
    const sci1 = sci.addInstance();
    const sci2 = sci.addInstance();
    const FREERTOS = scripting.addModule("/kernel/freertos_tool/FREERTOS", {}, false);
    const FREERTOS1 = FREERTOS.addInstance();
    /**
    * Write custom configuration values to the imported modules.
    */
    sci1.$name = "SCIX";
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    请告诉我同样的方法是否适合您。 此外、您使用的是哪个版本的 C2000Ware?

    谢谢!

    Arnav

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    告诉我同样的做法是否适合您。 此外、您使用的是哪个版本的 C2000Ware?[/QUOT]

    您好、Arnav、

    我将再次使用 sys config 重新检查它并返回给您。

    我认为 C2000Ware 版本是5.03