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.

[参考译文] MSP432E401Y:用于 MSP432的 FreeRTOS

Guru**** 2503125 points
Other Parts Discussed in Thread: SYSCONFIG, MSP432E401Y

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1415710/msp432e401y-freertos-for-msp432

器件型号:MSP432E401Y
主题中讨论的其他器件:SysConfig

工具与软件:

团队成员、您好!

我想在现有工程中实施 FreeRTOS、该工程用 driverlib (C:\simplelink_msp432e4_sdk_4_20_00_12__win\simplelink_msp432e4_sdk_4_20_00_12\source\ti\drivers 开发、而不是为 RTOS 提供的 TI 驱动程序。

我从 TI Resource Explorer 中删除了多个示例、但都使用 SysConfig 和 RTOS 创建了示例。

有没有使用 driverlib 实现 FreeRTOS 的示例?(如果是、请分享是否确实有用)或者我们是否可以只将 TI 驱动程序用于 RTOS?

提前感谢

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

    您好、Monica、

     通常、对于同一示例、您会找到四个版本。 例如、在以下有时间提示的示例中、有 freetos_ccs、freertos_gcc、tirtos_ccs 和 tirtos_gcc。 所有其他示例都是如此。  

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

    您好、Charles、

    我尝试了导入和编译上述项目。

    在编译 timerled_MSP_EXP432E401Y_FreeRTOS_CCS 时、我在下图中看到以下错误。 TI Explorer 中所有基于 FreeRTOS 的项目都是如此。

    此外、如果您在上述两个项目的屏幕截图中看到 Debug/syscfg 文件夹、则 FreeRTOS 项目中还缺少 obj 文件、.c、.h 文件

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

    为什么不尝试从 CCS 而不是使用 Resource Explorer 导入项目呢? 请参见下文。  

    导入后、我只需构建项目、就可以了。 我使用 CCS12。

    **** Build of configuration Debug for project timerled_MSP_EXP432E401Y_freertos_ccs ****
    
    "C:\\ti\\ccs1260\\ccs\\utils\\bin\\gmake" -k -j 8 all -O 
     
    Building file: "../timerled.syscfg"
    Invoking: SysConfig
    "C:/ti/sysconfig_1.5.0/sysconfig_cli.bat" --script "C:/Users/a0321879/Documents/CCS/MSP432E/My CCS12 MSP432E4 LaunchPad/timerled_MSP_EXP432E401Y_freertos_ccs/timerled.syscfg" -o "syscfg" -s "C:/ti/simplelink_msp432e4_sdk_4_20_00_12/.metadata/product.json" --compiler ccs
    Running script...
    Validating...
    Generating Code (timerled.syscfg)...
        '/ti/drivers' -> '/ti/devices/driverlib'
    Writing C:\Users\a0321879\Documents\CCS\MSP432E\My CCS12 MSP432E4 LaunchPad\timerled_MSP_EXP432E401Y_freertos_ccs\Debug\syscfg\ti_drivers_config.c...
    Writing C:\Users\a0321879\Documents\CCS\MSP432E\My CCS12 MSP432E4 LaunchPad\timerled_MSP_EXP432E401Y_freertos_ccs\Debug\syscfg\ti_drivers_config.h...
    Writing C:\Users\a0321879\Documents\CCS\MSP432E\My CCS12 MSP432E4 LaunchPad\timerled_MSP_EXP432E401Y_freertos_ccs\Debug\syscfg\ti_utils_build_linker.cmd.exp...
    Writing C:\Users\a0321879\Documents\CCS\MSP432E\My CCS12 MSP432E4 LaunchPad\timerled_MSP_EXP432E401Y_freertos_ccs\Debug\syscfg\syscfg_c.rov.xs...
    Finished building: "../timerled.syscfg"
     
    Building file: "../main_freertos.c"
    Invoking: Arm Compiler
    "C:/ti/ccs1260/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/bin/armcl" -mv7M4 --code_state=16 --float_support=FPv4SPD16 -me --include_path="C:/Users/a0321879/Documents/CCS/MSP432E/My CCS12 MSP432E4 LaunchPad/timerled_MSP_EXP432E401Y_freertos_ccs" --include_path="C:/Users/a0321879/Documents/CCS/MSP432E/My CCS12 MSP432E4 LaunchPad/timerled_MSP_EXP432E401Y_freertos_ccs/Debug" --include_path="C:/ti/simplelink_msp432e4_sdk_4_20_00_12/source" --include_path="C:/ti/simplelink_msp432e4_sdk_4_20_00_12/source/third_party/CMSIS/Include" --include_path="C:/ti/simplelink_msp432e4_sdk_4_20_00_12/source/ti/posix/ccs" --include_path="C:/ti/TivaWare_C_Series-2.2.0.295/third_party/FreeRTOS/Source/include" --include_path="C:/ti/TivaWare_C_Series-2.2.0.295/third_party/FreeRTOS/Source/portable/CCS/ARM_CM4F" --include_path="C:/Users/a0321879/Documents/CCS/MSP432E/My CCS12 MSP432E4 LaunchPad/freertos_builds_MSP_EXP432E401Y_release_ccs" --include_path="C:/ti/ccs1260/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include" --advice:power=none -g --diag_warning=225 --diag_warning=255 --diag_wrap=off --display_error_number --gen_func_subsections=on --preproc_with_compile --preproc_dependency="main_freertos.d_raw" --include_path="C:/Users/a0321879/Documents/CCS/MSP432E/My CCS12 MSP432E4 LaunchPad/timerled_MSP_EXP432E401Y_freertos_ccs/Debug/syscfg"  "../main_freertos.c"
    Finished building: "../main_freertos.c"
     
    Building file: "../timerled.c"
    Invoking: Arm Compiler
    "C:/ti/ccs1260/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/bin/armcl" -mv7M4 --code_state=16 --float_support=FPv4SPD16 -me --include_path="C:/Users/a0321879/Documents/CCS/MSP432E/My CCS12 MSP432E4 LaunchPad/timerled_MSP_EXP432E401Y_freertos_ccs" --include_path="C:/Users/a0321879/Documents/CCS/MSP432E/My CCS12 MSP432E4 LaunchPad/timerled_MSP_EXP432E401Y_freertos_ccs/Debug" --include_path="C:/ti/simplelink_msp432e4_sdk_4_20_00_12/source" --include_path="C:/ti/simplelink_msp432e4_sdk_4_20_00_12/source/third_party/CMSIS/Include" --include_path="C:/ti/simplelink_msp432e4_sdk_4_20_00_12/source/ti/posix/ccs" --include_path="C:/ti/TivaWare_C_Series-2.2.0.295/third_party/FreeRTOS/Source/include" --include_path="C:/ti/TivaWare_C_Series-2.2.0.295/third_party/FreeRTOS/Source/portable/CCS/ARM_CM4F" --include_path="C:/Users/a0321879/Documents/CCS/MSP432E/My CCS12 MSP432E4 LaunchPad/freertos_builds_MSP_EXP432E401Y_release_ccs" --include_path="C:/ti/ccs1260/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include" --advice:power=none -g --diag_warning=225 --diag_warning=255 --diag_wrap=off --display_error_number --gen_func_subsections=on --preproc_with_compile --preproc_dependency="timerled.d_raw" --include_path="C:/Users/a0321879/Documents/CCS/MSP432E/My CCS12 MSP432E4 LaunchPad/timerled_MSP_EXP432E401Y_freertos_ccs/Debug/syscfg"  "../timerled.c"
    Finished building: "../timerled.c"
     
    Building file: "syscfg/ti_drivers_config.c"
    Invoking: Arm Compiler
    "C:/ti/ccs1260/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/bin/armcl" -mv7M4 --code_state=16 --float_support=FPv4SPD16 -me --include_path="C:/Users/a0321879/Documents/CCS/MSP432E/My CCS12 MSP432E4 LaunchPad/timerled_MSP_EXP432E401Y_freertos_ccs" --include_path="C:/Users/a0321879/Documents/CCS/MSP432E/My CCS12 MSP432E4 LaunchPad/timerled_MSP_EXP432E401Y_freertos_ccs/Debug" --include_path="C:/ti/simplelink_msp432e4_sdk_4_20_00_12/source" --include_path="C:/ti/simplelink_msp432e4_sdk_4_20_00_12/source/third_party/CMSIS/Include" --include_path="C:/ti/simplelink_msp432e4_sdk_4_20_00_12/source/ti/posix/ccs" --include_path="C:/ti/TivaWare_C_Series-2.2.0.295/third_party/FreeRTOS/Source/include" --include_path="C:/ti/TivaWare_C_Series-2.2.0.295/third_party/FreeRTOS/Source/portable/CCS/ARM_CM4F" --include_path="C:/Users/a0321879/Documents/CCS/MSP432E/My CCS12 MSP432E4 LaunchPad/freertos_builds_MSP_EXP432E401Y_release_ccs" --include_path="C:/ti/ccs1260/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include" --advice:power=none -g --diag_warning=225 --diag_warning=255 --diag_wrap=off --display_error_number --gen_func_subsections=on --preproc_with_compile --preproc_dependency="syscfg/ti_drivers_config.d_raw" --include_path="C:/Users/a0321879/Documents/CCS/MSP432E/My CCS12 MSP432E4 LaunchPad/timerled_MSP_EXP432E401Y_freertos_ccs/Debug/syscfg" --obj_directory="syscfg"  "syscfg/ti_drivers_config.c"
    Finished building: "syscfg/ti_drivers_config.c"
     
    Building target: "timerled_MSP_EXP432E401Y_freertos_ccs.out"
    Invoking: Arm Linker
    "C:/ti/ccs1260/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/bin/armcl" -mv7M4 --code_state=16 --float_support=FPv4SPD16 -me --advice:power=none -g --diag_warning=225 --diag_warning=255 --diag_wrap=off --display_error_number --gen_func_subsections=on -z -m"timerled_MSP_EXP432E401Y_freertos_ccs.map" -i"C:/ti/simplelink_msp432e4_sdk_4_20_00_12/source" -i"C:/Users/a0321879/Documents/CCS/MSP432E/My CCS12 MSP432E4 LaunchPad/freertos_builds_MSP_EXP432E401Y_release_ccs/Debug" -i"C:/ti/ccs1260/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/lib" --diag_suppress=10063 --diag_wrap=off --display_error_number --warn_sections --xml_link_info="timerled_MSP_EXP432E401Y_freertos_ccs_linkInfo.xml" --rom_model -o "timerled_MSP_EXP432E401Y_freertos_ccs.out" "./main_freertos.obj" "./timerled.obj" "./syscfg/ti_drivers_config.obj" "../MSP_EXP432E401Y_FREERTOS.cmd"  -l"ti/display/lib/display.aem4f" -l"ti/grlib/lib/ccs/m4f/grlib.a" -l"third_party/spiffs/lib/ccs/m4f/spiffs.a" -l"ti/drivers/lib/drivers_msp432e4.aem4f" -l"third_party/fatfs/lib/ccs/m4f/fatfs.a" -lfreertos_builds_MSP_EXP432E401Y_release_ccs.lib -l"ti/devices/msp432e4/driverlib/lib/ccs/m4f/msp432e4_driverlib.a" -llibc.a 
    <Linking>
    warning #10247-D: creating output section ".pc_const" without a SECTIONS specification
    Finished building target: "timerled_MSP_EXP432E401Y_freertos_ccs.out"
     
    
    **** Build Finished ****
    

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

    您好、Charles、

    user4441152 说:
    为什么不使用 Resource Explorer 而不是从 CCS 导入项目。 请参见下文。  [报价]

    我正在以相同的方式导入它、并且还尝试从 TI 资源浏览器导入、但都无法正常工作。

    但现在运转良好、这是由于 FreeRTOS 包含路径。

    再澄清一点、

    MSP432 Simplelink SDK 中有两个不同的驱动程序 API。

    一个是特定于 MSP432E 的 Driverlib、位于 C:\ti\simplelink_msp432e4_sdk_4_20_00_12__win\simplelink_msp432e4_sdk_4_20_00_12\source\ti\devices\msp432e4\driverlib 中。这是我当前正在使用的驱动程序。

    其他为 C:\ti\simplelink_msp432e4_sdk_4_20_00_12___win\simplelink_msp432e4_sdk_4_20_00_12\source\ti\drivers 中的 TI 驱动程序

    我将 empty_MSP_EXP432E401Y_FreeRTOS_CCS 从线程修改为使用 TI 驱动程序格式的 LED 切换基本任务。 这起作用了。

    但我想使用 MSP432E Driverlib 运行 RTOS、因此在 empty_MSP_EXP432E401Y_nortos_ccs 项目中、我粘贴了在 empty_MSP_EXP432E401Y_freertos_ccs 中工作 的代码并将其修改为 MSP432 driverlib。

    运行代码时,它卡在 vTaskStartScheduler ()行之后的缺省处理程序中;

    /*这是在处理器收到意外 */时调用的代码
    /*中断。  这只是进入一个无限循环、从而保留了系统状态*/
    /*供调试程序检查。                                               */
    空 Default_Handler (空)

       /* ULP Advisor 豁免的故障陷阱*/
       #ifdef _TI_ARM__
          #pragma diag_push
          #pragma CHECK_ULP ("-2.1")
       #endif

       /*进入无限循环。 */
       while (1)
       {
       }

       #ifdef _TI_ARM__
          #pragma diag_pop
       #endif
    }

    附加代码供您参考。

    /*标准包括*/
    #include

    #include
    #include
    #include
    /*以字为单位的堆栈大小(非字节)*/
    第  1024章

    /*任务的函数原型*/
    void vTaskBlinkLED1 (void * pvParameters);
    void vTaskBlinkLED2 (void * pvParameters);
    uint32_t sysClock;
    /*
     *====  main ====
     */
    int main (void)

       /*初始化系统*/
       sysClock = MAP_SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz |)
                       SYSCTL_OSC_MAIN | SYSCTL_USE_PLL |
                       SYSCTL_CFG_VCO_480)、120000000);
       /*启用用于板载 LED 的 GPIO 端口*/
           MAP_SysCtlPeripheralEnable (SYSCTL_PERIPH_GPION);

           /*检查外设访问是否被启用*/
           while (! MAP_SysCtlPeripheralReady (SYSCTL_PERIPH_GPION)
           {
           }
           MAP_GPIOPinTypeGPIOOutput (GPIO_PORTN_BASE、GPIO_PIN_0|GPIO_PIN_1);
          /*配置 LED 引脚*/
           MAP_GPIOPinWrite (GPIO_PORTN_BASE、GPIO_PIN_0、~(GPIO_PIN_0));
           MAP_GPIOPinWrite (GPIO_PORTN_BASE、GPIO_PIN_1、~(GPIO_PIN_1));
       /*创建两个 LED 闪烁任务*/
       xTaskCreate (vTaskBlinkLED1、"BlinkLED1"、TASKSTACKSIZE、NULL、1、 null);
       xTaskCreate (vTaskBlinkLED2、"BlinkLED2"、TASKSTACKSIZE、NULL、2、 null);

       /*启动 FreeRTOS 调度程序*/
       vTaskStartScheduler();

       /*只有在没有足够的内存创建空闲任务时才能到达此处*/
     while (1)
     {

     }
    }

    /*任务1:使 LED 闪烁1 */
    void vTaskBlinkLED1 (void * pvParameters)

       while (1){

           MAP_GPIOPinWrite (GPIO_PORTN_BASE、GPIO_PIN_0、(GPIO_PIN_0));
           vTaskDelay (pdms_to_ticks (500));//延迟500ms

           MAP_GPIOPinWrite (GPIO_PORTN_BASE、GPIO_PIN_0、~(GPIO_PIN_0));
           vTaskDelay (pdms_to_ticks (500));//延迟500ms
       }
    }

    /*任务2:使 LED 闪烁2 */
    void vTaskBlinkLED2 (void * pvParameters)

       while (1){

           MAP_GPIOPinWrite (GPIO_PORTN_BASE、GPIO_PIN_1、(GPIO_PIN_1));
           vTaskDelay (pdms_to_ticks (1000));//延迟500ms

           MAP_GPIOPinWrite (GPIO_PORTN_BASE、GPIO_PIN_1、~(GPIO_PIN_1));
           vTaskDelay (pdms_to_ticks (1000));//延迟500ms
       }
    }

    我发现一切都很好,真的不明白,可能是什么原因.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价用户 id="577647" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1415710/msp432e401y-freertos-for-msp432/5428470 #5428470"]

    C:\ti\simplelink_msp432e4_sdk_4_20_00_12__win\simplelink_msp432e4_sdk_4_20_00_12\source\ti\devices\msp432e4\driverlib 这是我当前正在使用的驱动程序。

    其他为 C:\ti\simplelink_msp432e4_sdk_4_20_00_12___win\simplelink_msp432e4_sdk_4_20_00_12\source\ti\drivers 中的 TI 驱动程序

    [报价]

    driverlib 是特定于 MSP432E MCU 的最低外设驱动程序库。 ti/驱动程序是所有 TI MCU/MPU 产品通用的 SimpleLink SDK 驱动程序。 使用 ti/驱动器可实现从一个 TI 产品到另一个 TI 产品的轻松迁移。 ti/drivers 最终会调用 driverlib。 对于非 RTOS 工程、您应使用 driverlib。 对于基于 RTOS 的项目、您将使用 ti/drivers、虽然如果 ti/drivers 不支持  您要查找的特定功能、也可以直接调用 driverlib。 例如、ti/驱动器将不支持某些高级 QSSI 功能、如四路模式或高级保持。 在这个情况下、如果你希望使用这些特性、你将需要直接使用 driverlib。

    [报价 userid="577647" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1415710/msp432e401y-freertos-for-msp432/5428470 #5428470"]但我想搭配 MSP432E Driverlib 运行 RTOS、因此在 empty_MSP_EXP432E401Y_nortos_ccs 项目中、我粘贴了 empty_MSP_EXP432E401Y_freertos_ccs 中工作 的代码并将其修改为 MSP432[/报价]。

    如上所述、您可以使用 driverlib 运行 RTOS。 我建议您先从 FreeRTOS 或 TI-RTOS 项目开始。 首先确保它工作正常、然后添加使用 driverlib 函数的代码。  这里说过您从非 RTOS 工程开始、然后将 RTOS 代码添加到其中。 我认为这不是正确的方法。 RTOS 工程将根据非 RTOS 工程上未发生的.sysconfig 创建生成的代码。  

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

    您好、Charles、

    感谢这个建议,它是有效的。

    现在、我尝试集成我在没有 RTOS 的情况下开发的固件。 它卡在 lwip init 中。

    在 lwiplib.h 中、我可以看到一些用于创建以太网 中断任务以及 lwIPInterruptTask 的选项、但不确定如何使用。

    您能告诉我们如何在 MSP432E401Y 中将 FreeRTOS 与以太网 lwip UDP 配合使用吗?

    如果 lwip 和 FreeRTOS 有任何示例代码就好了、请分享一下...

    提前感谢。

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

    lwip 通过 RTOS 支持顺序式和基于 BSD 套接字的 API。 RTOS 也可以使用 RAW API。 有关详细信息、请参阅以下 lwIP 网站。 我们没有针对 FreeRTOS 的 lwIP 的示例。 我们有的示例是仅使用 lwIP 的原始 API 的裸机示例。  

    https://www.nongnu.org/lwip/2_1_x/group__lwip__os.html

    有一个 FreeRTOS 论坛讨论了 lwIP 集成。  

    https://forums.freertos.org/t/lwip-using-freertos/17339