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-F280039C:FreeRTOS

Guru**** 2460850 points
Other Parts Discussed in Thread: LAUNCHXL-F280039C, SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1499730/launchxl-f280039c-freertos

器件型号:LAUNCHXL-F280039C
主题: SysConfig 中讨论的其他器件

工具/软件:

我先从 FreeRTOS 开始、因为我立即需要它。 我尝试了 CCS 中 SysConfig 为  LAUNCHXL-F280039C 使用的示例代码。 即使我正确选择了电路板、它也无法正常工作。 还有一个示例、在没有 SysConfig 的情况下、相同过程可以正常工作。 然后、使用它的主代码、粘贴到 SysConfig 示例、即工作的主代码。 然后、我在那里尝试一个新任务、以运行我定义的类似任务、但它不起作用。

我还有其他一些问题、比如在某些工程中、当我尝试调试它们时、最终出现  "#10234-D:unresolved symbols remain"、我找不到它们。 最好给我一些方法来解决问题,以及如何处理问题,如果它发生在将来。  

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

    您好、

    我们已经测试并验证了 FreeRTOS ex1演示的 SysConfig 和非 SysConfig 版本均可在 F280039C LaunchPad 上正常工作。 您需要在 SysConfig 中将 GPIO 输出引脚更改为20和22以查看 LED 正确闪烁、因为这是 LaunchPad LED 引脚映射(此信息可在 device.h 中找到)。

    尝试先在项目中使用变量/函数、然后再先定义该变量/函数时、会出现错误#10234-D。 请验证错误消息下列出的所有符号均已正确定义、然后重新编译。

    此致、

    Arnav

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

    您好、

    感谢您的答复!

    关于#10234-D错误—编译器不会列出任何特定符号、因此很难跟踪。

    在 free RTOS 部分、我确实按照您的建议将 LED 引脚更改为20和22、在中 非 SysConfig 示例 一切都正常。 不过、在中 基于 SysConfig 的示例 、即使在正确更新针脚后、LED 仍然不闪烁。

    有趣的是,当我 替换main.c代码 在 SysConfig 工程(使用非 SysConfig 示例中的一个)中、它开始工作。 因此、该问题似乎与 SysConfig 如何与 FreeRTOS 集成有关。

    最初、我使用的是 macOS 上的 CCS 版本20 一方 SDK 5.4的帮助 SysConfig 1.23 但现在 我也尝试了 Windows (CCS v12) 我仍然面临着同样的问题。

    为了验证 SysConfig 是否执行了任何操作、我尝试了设置 直接在 SysConfig 中显示初始 LED 状态 并且该部件工作正常—LED 保持在初始状态。 但是、当我在调试模式下逐步执行代码时、它是一个示例 就会卡在里面的环路中 task.c、并且永远不会到达任务应运行的位置。

    我将附上与此相关的屏幕截图、以供进一步的上下文使用。

    非常感谢您帮助我们找出问题所在。

    此致、

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

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

    您好、

    您是否可以尝试在任务内放置断点、在 SysConfig 示例中放置计时器 ISR、以确保正确配置任务和中断? 您看到的循环是 FreeRTOS 空闲任务、因此调度器已成功启动。 您是否还可以链接您的.syscfg 文件以进行进一步的调试?

    此致、

    Arnav

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

    /**
     * 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 --board "/boards/LAUNCHXL_F280039C" --device "F28003x" --part "F28003x_100PZ" --package "100PZ" --context "system" --product "C2000WARE@5.04.00.00"
     * @v2CliArgs --board "/boards/LAUNCHXL_F280039C" --device "TMS320F280037C" --package "100PZ" --context "system" --product "C2000WARE@5.04.00.00"
     * @versions {"tool":"1.23.0+4000"}
     */
    
    /**
     * Import the modules used in this configuration.
     */
    const led       = scripting.addModule("/driverlib/board_components/led", {}, false);
    const led1      = led.addInstance();
    const led2      = led.addInstance();
    const cputimer  = scripting.addModule("/driverlib/cputimer.js", {}, false);
    const cputimer0 = cputimer.addInstance();
    const FREERTOS  = scripting.addModule("/kernel/freertos_tool/FREERTOS", {}, false);
    const FREERTOS1 = FREERTOS.addInstance();
    
    /**
     * Write custom configuration values to the imported modules.
     */
    led1.$name      = "myLED1";
    led1.$hardware  = system.deviceData.board.components.LED5;
    led1.gpio.$name = "LED1";
    
    led2.$name      = "myLED2";
    led2.$hardware  = system.deviceData.board.components.LED4;
    led2.gpio.$name = "LED2";
    
    cputimer0.$name                     = "timer1";
    cputimer0.enableInterrupt           = true;
    cputimer0.registerInterrupts        = true;
    cputimer0.timerPeriod               = 20000000;
    cputimer0.startTimer                = true;
    cputimer0.cputimerBase              = "CPUTIMER0_BASE";
    cputimer0.timerInt.interruptHandler = "timer1_ISR";
    cputimer0.timerInt.enableInterrupt  = true;
    
    FREERTOS1.$name                               = "myFREERTOS0";
    FREERTOS1.CPU_CLOCK_HZ                        = 120000000;
    FREERTOS1.MINIMAL_STACK_SIZE                  = 256;
    FREERTOS1.USE_MUTEXES                         = true;
    FREERTOS1.USE_RECURSIVE_MUTEXES               = true;
    FREERTOS1.USE_COUNTING_SEMAPHORES             = true;
    FREERTOS1.vTaskSuspend                        = false;
    FREERTOS1.STACK_ALLOCATION_FROM_SEPARATE_HEAP = true;
    FREERTOS1.tasks.create(2);
    FREERTOS1.tasks[0].$name                      = "redTask";
    FREERTOS1.tasks[0].taskPointer                = "LED_TaskRed";
    FREERTOS1.tasks[0].taskStackSize              = 256;
    FREERTOS1.tasks[0].taskPriority               = 2;
    FREERTOS1.tasks[0].taskParams                 = "0xDEADBEAF";
    FREERTOS1.tasks[1].$name                      = "blueTask";
    FREERTOS1.tasks[1].taskPointer                = "LED_TaskBlue";
    FREERTOS1.tasks[1].taskStackSize              = 256;
    FREERTOS1.tasks[1].taskPriority               = 1;
    FREERTOS1.tasks[1].taskParams                 = "0xBAADF00D";
    FREERTOS1.semaphores.create(1);
    FREERTOS1.semaphores[0].$name                 = "binarySem1";
    
    /**
     * Pinmux solution for unlocked pins/peripherals. This ensures that minor changes to the automatic solver in a future
     * version of the tool will not impact the pinmux you originally saw.  These lines can be completely deleted in order to
     * re-solve from scratch.
     */
    led1.gpio.gpioPin.$suggestSolution = "boosterpack1.12";
    led2.gpio.gpioPin.$suggestSolution = "boosterpack2.53";
    

    这是示例中以文本文件形式给出的 SysConfig。

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

    尊敬的 Arnav:

    可以了  已识别并修复问题

    即使为 LAUNCHXL-F280039C 板正确设置了 SysConfig、也事实证明是 默认情况下、为 LaunchPad 映射的引脚未激活 。 我通过检查确认了这一点device.h、我注意到了 特定于 LaunchPad 的引脚定义处于非活动状态

    为了解决这个问题、我进入了 工程属性 、导航至 Build→ C2000 Compiler→Predefined Symbols 和手动定义:

    LAUNCHXL_F280039C

    完成此操作后、特定于电路板的正确引脚变为活动状态、所有引脚都开始按预期工作。 您始终可以在中仔细检查正确的定义名称device.h

    再次感谢您的支持—希望这能帮助可能遇到相同问题的其他人!

    此致、

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

    您好、

    很高兴听到您能够解决此问题! 如果您有任何其他问题,请随时跟进,或创建另一个主题。

    此致、

    Arnav