Project

General

Profile

Actions

UsingAmazonFreeRtos

FreeRTOSはSTM32CubeMX上で組み込むことができます。しかし、将来Ethernetにつなぐことを考えるとAmazonがgitリポジトリで配布しているFreeRTOSを使うほうが楽そうです。
CubeMXで作るのはピン設定の自動生成だけにして、それとAmazon FreeRTOSを合体させてみます。

細かい修正内容は リポジトリ の SHA-1: 0566437 から SHA-1: bcca325 までの差分を参考にしてください。

ドキュメントのありか

FreeRTOS ドキュメント

CubeMXプロジェクトの設定

SVC_Handler, PendSV_Handler, SysTick_Handlerの重複を避けるために、以下の設定をします。

  • System Core - NVIC の Code Generationタブで、 System Service~ と Pendable Request~ と System tick timer のチェックを外します

Amazon FreeRTOSのgitリポジトリをクローン

自分で作ったgitリポジトリのworkフォルダの中で、submoduleとして https://github.com/aws/amazon-freertos.git の tag 202007.00 をクローンします。

Makefileの設定

BUILD_DIRのあとに、AMAZON_DIRを追加します。

BUILD_DIR = build
AMAZON_DIR = ../../amazon-freertos

C_SOURCES および C_INCLUDES に、以下のようにFreeRTOSのソースを追加します。

C_SOURCES =  \
$(AMAZON_DIR)/freertos_kernel/portable/MemMang/heap_4.c \
$(AMAZON_DIR)/freertos_kernel/portable/GCC/ARM_CM4F/port.c \
$(AMAZON_DIR)/freertos_kernel/croutine.c \
$(AMAZON_DIR)/freertos_kernel/event_groups.c \
$(AMAZON_DIR)/freertos_kernel/list.c \
$(AMAZON_DIR)/freertos_kernel/queue.c \
$(AMAZON_DIR)/freertos_kernel/stream_buffer.c \
$(AMAZON_DIR)/freertos_kernel/tasks.c \
$(AMAZON_DIR)/freertos_kernel/timers.c \
Core/Src/main.c \
...

C_INCLUDES =  \
-I$(AMAZON_DIR)/freertos_kernel/portable/GCC/ARM_CM4F \
-I$(AMAZON_DIR)/freertos_kernel/include \
-ICore/Inc \
...

main.cでやること

タスクを作って、 USER CODE BEGIN 2 の中で vTaskStartScheduler() を呼び出します。


累計表示回数:119

Updated by mole lord 3 months ago · 4 revisions