SKN MIPSA

FreeRTOS na STM32F100RB

Port FreeRTOS na STM32F100RB dla bleeding-edge-toolchain

STM32VLDiscovery

stm32f100rb

To bardzo popularna płytka rozwojowa z mikrokontrolerem STM32F100RB (STMICROELECTRONICS) dostępna już za około 50PLN. Umożliwia ona nie tylko realizację niezliczonej liczby projektów, ale jednocześnie pozwala na zapoznanie się z zaganieniami programowania wielowątkowego na przykładzie opensourcowego systemu FreeRTOS

 Toolchain

Oryginalny kod demonstracyjny dla kontrolera STM32F100RB, rozpowszechniany wraz ze źródłami systemu FreeRTOS, przygotowany jest dla środowiska Atollic TrueSTUDIO (toolchain bazujący na GCC). Bez większych trudności można go jednak dostosować do darmowych toolchainów, również bazujących na GCC. W naszym przypadku wybór padł na toolchain przygotowany przez Freddiego Chopina: bleeding-edge-toolchain.

W naszym pracach wykorzystaliśmy najnowszą wersję dostępną w momencie pisania tego artykułu (platforma Windows x86): gcc-arm-none-eabi-4_8-131228-win.7z. Archiwum należy rozpakować na dysku (najlepiej w katalogu głównym jednego z dysków) oraz dodać podkatalog X:\gcc-arm-none-eabi-4_8-131228\bin do ścieżki PATH systemu operacyjnego.

Kod Startowy

Wykorzystano nieco zmodyfikowany kod startowy przygotowany w projekcie stm32_blink_led na stronie Autora. Jedyna zmiana ogranicza się do wyeliminowania inicjalizacji stosu Process Stack. Domyślnie, po starcie, rdzeń Cortex-M3 wykorzystuje Main Stack. Po uruchomieniu schedulera systemu FreeRTOS każdy z wątków ma przydzielony odrędny stos na stercie zarezerwowanej przez system i zgodznie z zaleceniami ARM system wykorzystuje wskażnik PSP do obsługi stosu w kontekście każdego z wątków.

Skrypt Linkera

 Jak wyżej, bez problemów można wykorzystać skrypt linkera przygotowany przez Freddiego Chopina (modyfikując jedynie __main_stack_size oraz __process_stack_size).

Makefile

Ponownie jako punkt startowy warto wykorzystać Makefile dostępny w oryginalnym projekcie stm32_blink_led. Modyfikacje obejmują określenie definicji dla kompilatora C (-DSTM32F10X_MD_VL -DUSE_STDPERIPH_DRIVER) oraz konfigurację katalogów w sekcji INC_DIRS oraz SRCS_DIRS.

Pliki do pobrania

Ostatnia aktualizacja

piątek 23 wrzesień 2022, 22:29:56

On-line

Odwiedza nas 9 gości oraz 0 użytkowników.

Liczba odwiedzin

3666429
40
719
3671