Tuż po rozpoczęciu wyzwania Stu dni w kolorze bardzo dokładnie rozważaliśmy jaką platformę sprzętową wybrać. Braliśmy pod uwagę wydajność, możliwości rozbudowy, dostępne biblioteki software’owe oraz ilość zewnętrznych interfejsów. Ostatecznie zdecydowaliśmy się na rodzinę mikrokontrolerów STM32F4, a ściślej na jej przedstawiciela w postaci układu STM32F407VGT6.
Mimo początkowych estymat zużycia czasu oraz zasobów procesora, może czasami okazać się, że możliwości zastosowanego układu są zbyt małe w stosunku do realnych wymagań. I na taki problem natrafiliśmy dziś w naszym projekcie…
Czyżby problemem była niewystarczająca wydajność rdzenia ARM Cortex-M?
Absolutnie nie. Taktowane zegarem 168MHz CPU ma ogromną rezerwę mocy obliczeniowej. Problem niestety leży w ilości RAMu, którym dysponujemy – nasz układ posiada aż i jedynie 192kB pamięci operacyjnej typu SRAM. Zapotrzebowanie aplikacji użytkownika, backendu danych czy systemu graficznego na pamięć nie jest zbyt duże (łącznie około 16kB) – faktycznym sprawcą zamieszania są liczne elementy grafiki: ikony, tła, czcionki… To one pochłaniają niemalże 70% dostępnych zasobów.
Dodatkowo, zmiana interfejsu wyświetlacza LCD ze zwykłych portów GPIO na magistralę FSMC mocno utrudniła przydzielanie pinów procesora poszczególnym interfejsom oraz co za tym idzie znacznie skomplikowała routing płytki drukowanej.
Znaleźliśmy się więc w punkcie, w którym konieczne jest podjęcie trudnej decyzji o przesiadce na inny mikrokontroler z rodziny STM32 – w ten sposób zachowamy przynajmniej częściowo przenoszalność kodu źródłowego. Migracja nie jest nigdy procesem łatwym i bezbolesnym, jednak dzięki konsekwentnemu rozdzielaniu warstw systemu oraz wprowadzeniu abstrakcji sprzętu na pewno uda się uniknąć dużej części potencjalnych kłopotów.
Oczywiście nadal będziemy kontynuować pracę na bieżącym systemie, jednak w międzyczasie musimy skupić część uwagi na znalezieniu następcy układu STM32F407 – od tego zależy sukces projektu.