czwartek, 21 listopada 2019

[2] STM32F0 - Riverdi Revelation Board - Projekt Eve dla System Workbench. Kompilacja projektu

Poniżej krótko opiszę sposób konfiguracji projektu Riverdi Eve pod STM32.


[Źródło: https://riverdi.com/wp-content/uploads/datasheet/Revelation_Board_Datasheet_Rev.1.1.pdf]


Pobranie projektu:


Na samym początku należy postępować zgodnie z instrukcją udostępnioną przez autora projektu na stronie GitHub:

  1. git clone https://github.com/riverdi/riverdi-eve.git

Następnie należy załadować projekt do programu System Workbench:

  1. File -> New -> Other -> C/C++ -> Makefile Project with Existing Code

Ostatnim elementem jest zmiana nazwy bądź zmiana komendy budującej program czyli zmiana nazwy pliku Makefile.stm32 na Makefile.

Teraz po kliknięciu przycisku Build All program powinien zbudować pliki wykonywalne w postaci *.hex oraz *.bin. Można je wgrywać na płytkę za pomocą programatora oraz programu STLink Utility.

Program po kliknięciu na poszczególne pliki projektu zacznie generować błędy. Można je pominąć ponieważ w ich przypadku kompilacja zakończy się powodzeniem. Dopiero jeśli w projekcie zostanie użyte elementy faktycznie powodujące błędy to nastąpi przerwanie kompilacji.

Jednak takie ilości wygenerowanych błędów mogą trochę zaciemniać obraz całego projektu. Wobec tego poniżej krótka instrukcja pozwalający na usunięcie wszystkich błędów zgłaszanych przez System Workbench.

Zanim jednak taka możliwość nastąpi należy zmodyfikować kilka ustawień w projekcie.

Na samym początku należy wprowadzić ustawienia wyświetlacza:

  1. #else
  2.   #error "Please define timings in riverdi/modules.h file for custom displays"
  3.   #define DispWidth      xxxL
  4.   #define DispHeight     xxxL
  5.   #define DispHCycle     xxxL
  6.   #define DispHOffset    xxxL
  7.   #define DispHSync0     xxxL
  8.   #define DispHSync1     xxxL
  9.   #define DispVCycle     xxxL
  10.   #define DispVOffset    xxxL
  11.   #define DispVSync0     xxxL
  12.   #define DispVSync1     xxxL
  13.   #define DispPCLK       x
  14.   #define DispSwizzle    x
  15.   #define DispPCLKPol    x
  16.   #define DispCSpread    x
  17.   #define DispDither     x
  18. #endif

W moim przypadku do testów wykorzystuje wyświetlacz 4'3 cale z sterownikiem FT801. W tym przypadku ustawienia będą następujące:

  1. #else
  2.   #define DispWidth      480L
  3.   #define DispHeight     272L
  4.   #define DispHCycle     548L
  5.   #define DispHOffset    43L
  6.   #define DispHSync0     0L
  7.   #define DispHSync1     41L
  8.   #define DispVCycle     292L
  9.   #define DispVOffset    12L
  10.   #define DispVSync0     0L
  11.   #define DispVSync1     10L
  12.   #define DispPCLK       5
  13.   #define DispSwizzle    0
  14.   #define DispPCLKPol    1
  15.   #define DispCSpread    0
  16.   #define DispDither     1
  17. #endif

Następnym elementem jest wybór sterownika graficznego:

  1. #if defined (EVE_1)
  2.   #define FT80X_ENABLE
  3. #elif defined (EVE_2)
  4.   #define FT81X_ENABLE
  5. #elif defined (EVE_3)
  6.   #define BT81X_ENABLE
  7.   #define FT81X_ENABLE
  8. #else
  9.   #error "Please choose generation of Embedded Video Engine (EVE_1, EVE_2, EVE_3)"
  10. #endif

Wobec tego do projektu dołączam:

  1. #define EVE_1

Dalej należy dołożyć definicję biblioteki w pliku stm32:

  1. #include "stm32f031x6.h"

Następnie należy dołożyć definicję biblioteki dla STM32 w pliku stm32/platform.h:

  1. #include "stm32f0xx_hal.h"

Kolejnym krokiem jest podanie ścieżek do bibliotek:


Po tej operacji należy przebudować indeks, wyczyścić projekt oraz najlepiej przed ponownym zbudowaniem projektu jeszcze raz uruchomić program. Po tych operacjach ilość zgłaszanych błędów powinna zostać zredukowana do zera.

W kolejnych postach postaram się przenieść projekt do obsługi innych procesorów STM32.