前言
目前網上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能用的編譯器即可.
然後需要配置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}",
},
]
}
然後就可以除錯了