Skocz do zawartości

Czy warto się uczyć 8 bitowców po STM32 i Rassbery Pi?


Pomocna odpowiedź

Postanowiłem, że będę się uczył StdPeriph ponieważ jest bliżej sprzętu i powoli będę migrować na rejestry. Na początek sterowanie GPIO i małymi kroczkami powoli do przodu 🙂.

Proponowałbym jednak naukę HAL lub LL. ST się przyznało, że SPL to jedna wielka wtopa 🙂

A ciekawi mnie jeszcze jak sprawa wygląda w kontekście programowania zawodowego mikrokontrolerów. Czy stawia się bardziej na wydajność i pisanie na rejestrach? Czy podobnie jak w branży języków wysokopoziomowych stawia się na szybkość developmentu, czystość kodu i co za tym idzie korzysta się z bibliotek jak HAL, generatorów kodu CubeMX?

(Z własnego doświadczenia) Żeby szybko wystartować projekt używa się generatorów, ale z czasem okazuje się, że nie wszystko da się w nich zrobić i wtedy następuje przejście na ręczną konfigurację, przy czym nadal część modułów się powiela. Po pewnym czasie developmentu powstaje pewna warstwa abstrakcji, która pozwala całkowicie się odciąć od sprzętu i skupić na samej aplikacji. Wtedy nie ma już potrzeby zabawy z rejestrami.

We wszystkich przypadkach czystość kodu jest priorytetowa, aby nie tracić czasu na jego "dekodowanie" przy ewentualnym debugu lub rozwijaniu.

(Z własnego doświadczenia) Żeby szybko wystartować projekt używa się generatorów

Zapoznałem się z CubeMX, ale generowany kod jest paskudny (zresztą jeszcze nie widziałem narzędzia które generowałoby ładny kod). Zresztą, przecież sam HAL bardzo skraca kod i jakoś nie widzę potrzeby korzystania z CubeMX.

Proponowałbym jednak naukę HAL lub LL. ST się przyznało, że SPL to jedna wielka wtopa 🙂

Nie wiem o co wszystkim chodzi z SPL... co jest z tą biblioteką nie tak?

O co chodzi z tym LL? Rozumiem, że jest to biblioteka trochę bardziej niskopoziomowa niż HAL? Ściągnąłem sobie example, ale na pierwszy rzut oka nie wygląda to jak biblioteka niskopoziomowa. Warto się tego uczyć, korzysta się z tego w ogóle?

Zapoznałem się z CubeMX, ale generowany kod jest paskudny (zresztą jeszcze nie widziałem narzędzia które generowałoby ładny kod). Zresztą, przecież sam HAL bardzo skraca kod i jakoś nie widzę potrzeby korzystania z CubeMX.

No właśnie dlatego moją preferowaną praktyką jest wygenerować sobie kod tylko po to, żeby podejrzeć jak są konfigurowane i uruchamiane poszczególne peryferia.

O co chodzi z tym LL? Rozumiem, że jest to biblioteka trochę bardziej niskopoziomowa niż HAL? Ściągnąłem sobie example, ale na pierwszy rzut oka nie wygląda to jak biblioteka niskopoziomowa. Warto się tego uczyć, korzysta się z tego w ogóle?

Ja sobie mówię, że to jest bardziej czytelna zabawa na rejestrach 😋

Ja sobie mówię, że to jest bardziej czytelna zabawa na rejestrach 😋

No tak faktycznie jak podejrzałem kod przykładowej procedury z LL to w środku znajduje się tylko operacja na jednym rejestrze.

W sumie dobrze to wygląda. Rozumiem, że można miksować HAL i LL?

W STM32CubeMX można wybrać używaną bibliotekę dla każdego peryferium indywidualnie, więc zgaduję, że tak 🙂

Jeżeli chodzi o programowanie mikrokontrolerów komercyjnie to faktycznie do prototypów można użyć generatora, a docelowe rozwiązanie często jest napisane na rejestrach. Pisząc komercyjnie musimy brać pod uwagę poza szybkością wykonania jeszcze takie aspekty jak licencja i możliwość certyfikacji np. zgodność z MISRA C. To ostatnie szczególnie ważne jeżeli piszemy coś wojskowego, medycznego, automotive itp.

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...