基于vscode搭建freertos环境

前言

目前网上windows仿真freertos的资料都是比较久远的,不太适合现有的开发,因此重新整理了一下资料.

目标:

使用Vscode进行FreeRTOS开发和仿真.

关键词: freertos, vscode,llvm,cmake,windows

环境配置

编译器目前使用的是llvm-MinGW-msvcrt:Releases · mstorsjo/llvm-mingw (github.com)

FreeRTOS使用的最新版20240601-LTS:Release 202406.01-LTS · FreeRTOS/FreeRTOS-LTS (github.com)

Vsocde就常用的插件,这里调试用的codeLLDB,自己下载下.

编译器下载了加入环境变量,这里就不细说了

代码解压后,这里只关注FreeRTOS-Kernel

代码编译

使用code打开FreeRTOS-Kernel\examples\cmake_example,使用cmaketools正常配置,选择windows能用的编译器即可.

image-20240807121958853

然后需要配置windows的port.c. 之前移植时需要自己加入编译目录,现在可以直接在Cmakelists.txt中配置.

# Select the heap port.  values between 1-4 will pick a heap.
set(FREERTOS_HEAP "4" CACHE STRING "" FORCE)

# Select the native compile PORT
set(FREERTOS_PORT "MSVC_MINGW" CACHE STRING "" FORCE)

修改成MSVC_MINGW

然后还要修改编译器设置

    # Suppressions required to build clean with clang.
    $<$<COMPILE_LANG_AND_ID:C,Clang>:-Wno-unused-macros>
    $<$<COMPILE_LANG_AND_ID:C,Clang>:-Wno-padded>
    $<$<COMPILE_LANG_AND_ID:C,Clang>:-Wno-missing-variable-declarations>
    $<$<COMPILE_LANG_AND_ID:C,Clang>:-Wno-covered-switch-default>
    $<$<COMPILE_LANG_AND_ID:C,Clang>:-Wno-extra-semi-stmt>
    $<$<COMPILE_LANG_AND_ID:C,Clang>:-Wno-unsafe-buffer-usage>
    $<$<COMPILE_LANG_AND_ID:C,Clang>:-Wno-missing-noreturn>
    $<$<COMPILE_LANG_AND_ID:C,Clang>:-Wno-cast-align> )

不然会报错

然后就可以编译运行了

这里在main.c里修改一些代码

static void exampleTask( void * parameters )
{
    /* Unused parameters. */
    ( void ) parameters;

    for( ; ; )
    {
        printf("example test\r\n");
        /* Example Task Code */
        vTaskDelay( 100 ); /* delay 100 ticks */
    }
}

运行结果:

."FreeRTOS-Kernel/examples/cmake_example/build/example.exe"
Example FreeRTOS Project
example test
example test
example test
example test
example test

调试

新建launch.json

加入以下代码

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "windows",
      "type":"lldb",
      "request": "launch",
      "program": "${command:cmake.launchTargetPath}",//通过cmake获取可执行文件名
      "args": [],
      "cwd": "${workspaceFolder}",
    },
  ]
}

然后就可以调试了

image-20240807122652246

posted @ 2024-08-07 12:30  USTHzhanglu  阅读(404)  评论(0编辑  收藏  举报