Eclipse 4Diac 網站上有介紹將4diac的Forte 移植到freeRTOS 的簡單介紹,
https://www.eclipse.org/4diac/en_help.php?helppage=html/installation/freeRTOSLwIP.html
但是網絡上並沒有如何將forte 移植到STM32F上的詳細說明。我成功地將4diac 移植到了nucleo STM32H743 板上。分享我的方法:
開發平臺
在ubuntu OS 下開發,畢竟make,cmake gcc這些工具在linux OS 上感覺好一點。
用到的工具
cmake-gui
ST 公司的trueStudio 開發工具。它是基於eclipse 開發環境的,與eclipse 相容。
ST公司的STM32 CubeMx 工具
過程
下載forte 的源碼,我使用的是forte-incubation_1.11.0
在stm32 cubeMX下配置一個nucleo 74H743 的項目,上面包含一個freeRTOS和lwip 中間件,產生trueStudio的項目代碼
在 cmake 上Where is the source code 指向forte-incubation_1.11.0的目錄。
在forte-incubation_1.11.0的目錄中添加一個文件夾build,將CMake中的 Where to build the binaries 指向build。
按Configure 鍵,選擇C++和C的交叉編譯工具,這時要使用trueStudio 的工具。我的truestudo目錄是在/opt/下的。
/opt/Atollic_TrueSTUDIO_for_STM32_x86_64_9.3.0/ARMTools/bin/
C++ 選擇了/opt/Atollic_TrueSTUDIO_for_STM32_x86_64_9.3.0/ARMTools/bin/arm-atollic-eabi-c++
C 選擇了/opt/Atollic_TrueSTUDIO_for_STM32_x86_64_9.3.0/ARMTools/bin/arm-atollic-eabi-gcc
主要的難點
編譯過程中的主要難點是如何將forte 和stm32的項目結合在一起編譯。在4diac的論壇上有編譯成功的人提供了一個思路。就是將forte 編譯成爲一個靜態庫,然後結合到STM32F的項目中。我也決定採取這中方法。
配置cmake 的forte部分
1 FORTE ARCHITECTURE 選擇FreeRTOSLwip
2 勾選FORTE_BUILD_STATIC_LIBRARY,去掉原來的FORTE_BUILD_EXCUTABLE
3 重要的地方是下面的FORTE_FreeRTOSLwIP_INCLUDES 要將stm32項目中關於freeRTOS和LwIP的Include目錄包含進去。但是STM32項目的目錄結構好複製的樣子,搞了一個晚上都沒有搞定。第二天早上,我決定將STM32 的某些include 單獨拷貝到一個目錄中。供編譯forte時使用。
4 還有幾點
1 Inc 中的main.h 要去掉#include "stm32f4xx.h"
2 按照Cmake的提示。
freeRTOS with LwIP arch needs the following flags to be defined (please do it in lwipopts.h):
#define LWIP_COMPAT_SOCKETS 1
#define LWIP_IGMP 1 //to use IP_ADD_MEMBERSHIP
#define LWIP_TIMEVAL_PRIVATE 0
在lwipopts.h 中添加了這三個#define
5 在forte-incubation_1.11.0/build 的目錄下進入命令行程序:
>make
終於成功了
libforte-static.a 就是我們想要的東東。