基于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

集成

很多时候freertos是作为依赖集成到其他项目中使用,要在windows上集成很简单.

新建Cmake项目

随便新建一个Cmake项目:

  1. 在vscode中按下ctrl + shift + P
  2. 找到Cmake:Quick start,
  3. 创建C项目
  4. 创建可执行文件即可

加入依赖库

将下载的FreeRTOS-Kernel复制一份到项目根目录下
cmake_exampleCmakeLists.txt改名为freertos.cmake复制到项目根目录下
cmake_examplemain.c复制到项目根目录下,替换原有main.c
template_configuration里的FreeRTOSConfig.h复制一份到项目根目录下

项目文件如下文所示

rtos_cmake>ls
CMakeLists.txt  FreeRTOS-Kernel  freertos.cmake  FreeRTOSConfig.h  main.c

修改配置

打开freertos.cmake,主要修改以下点,注意编译器配置按照上文修改

#project(example)
#set(FREERTOS_KERNEL_PATH "../../")
set(FREERTOS_KERNEL_PATH "./FreeRTOS-Kernel")
# Add the freertos_config for FreeRTOS-Kernel
add_library(freertos_config INTERFACE)

target_include_directories(freertos_config
    INTERFACE
#    "../template_configuration"
    "./"
)
...
#add_executable(${PROJECT_NAME}
#    main.c
#)

主要是把原来的可执行文件配置移除,把路径修改为实际路径
打开CmakeList.txt,将freertos引入进来.注意放到add_executable下面,不然会报错

cmake_minimum_required(VERSION 3.10.0)
project(hello VERSION 0.1.0 LANGUAGES C)

add_executable(hello main.c)
include(${CMAKE_CURRENT_SOURCE_DIR}/freertos.cmake)

然后就可以编译生成了

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