Rust czy C++ do Embedded

0

Koduje w Embedded już od kilku lat, tylko i wyłącznie w C. Chciałbym spróbować jakiejś nowej technologii, ale wciąż związanej z Embedded. Zaszaleć i sprawdzić tego Embedded Rusta czy gra nie warta świeczki i lepiej postawić na C++?
Zawsze chciałem nauczyć się C++ już nawet nie dla samego embedded, ale jak patrzę na ten język to mam wrażenie, że żeby tam dobrze klepać to trzeba być bardzo na bieżąco, a standardy coraz to nowsze. Najzwyczajniej w świecie trochę mi się nudzi czyste C i bym się "pomocował" z innym językiem na bare-metalu na jakimś ARMowym Cortex-M w ramach odskoczni.

Chyba, że znacie jakieś inne dające mocną frajdę technologię? :D .. nie cierpię webdevu jak coś.

3

Generalnie problem z językiem C++ w embedded polega na tym, że np. spora cześć STLa bazuje na alokacjach pamięci, które raczej na małych mikrokontrolerach specjalnie korzystne nie są i np. musiałbyś stosować własne implementacje czy to STLa czy alokatorów. Niemniej, kodzić się da w tym nowoczesnym C++ całkiem skutecznie, taki np. DistortOS jest żywym tego przykładem.

1

Zdaję tak trochę relację z tego Rusta w Embedded. Na razie jest trochę ciężko, ale powoli powoli oswajam się z klimatem...
Udało mi się coś już podebugować pod gdb oraz w samym VSCode z dodatkiem Cortex Debug.
Nie tylko na Nucleo, ale także na takim chipie zwykłym na PCBie.

Tak w jak w C wiem jak wszystko się "odprawia" od samego początku w mikrokontrolerach (skrypt linkera, kod startupowy, wektory przerwań i ich obsługa, diassembly...) tak tutaj trochę jeszcze tak się czuję jak bym po omacku coś pisał i nagle działa, ale spokojnie dokopię się do bebechów.

Zacząłem sobie pisać aplikację taką prostą do zapisywania jakiś notatek/zadań i nawet ciekawie się to pisze.
Na pewno cargo na tle jakichś #include'ów to jest niebo a ziemia. Komunikaty kompilatora są o niebo przejrzystsze, ale to chyba kosztem czasu kompilacji (C się o wiele szybciej kompiluje).

1

Może to przyśpieszy Ci trochę czas kompilacji: https://github.com/mozilla/sccache

1


1

Wydaje się że na dzień dzisiejszy Rust będzie dużo lepszym zastępnikiem dla C niż C++ w działce embedded.

Zajrzyj na:
https://www.rust-lang.org/what/embedded
https://docs.rust-embedded.org/book/

0

Arduino to też embedded? (tak pytam, nie znam się). W sensie czy to, co jest mówione o embedded, można zastosować do arduino? (planuję się pobawić tym w ciągu najbliższych miesięcy).

0

@vpiotr: A co do linków to dzięki. Znam je, już nawet trochę porobiłem na nucleo. Tylko mam wrażenie że powinienem najpierw zrobić deep dive w samego Rusta bo powoli mi idzie bo nie znam dobrze filozofii. W każdym razie Rust skomplikowany jest dość moim zdaniem. Na tle C, którego używam na co dzień.

1

@LukeJL: nie wiem czy mnie ktoś zaraz nie zlinczuje, ale uważam że Arduino to się nadaje jak ktoś nie chce wchodzić właśnie w naukę embedded, a chce coś wykonać na sprzęcie elektronicznym albo jako taki pierwszy widok czym to jest. Ja na przykład nie miałem w swoim życiu ani jednego Arduino i raz tylko kumplowi pomagałem bo chcial sobie coś zbudować z tutoriala step by step i mu nie działało. Mimo to technicznie rzecz biorąc jest to embedded bo na płytce jest mikrokontoler i można go programować.

1

Arduino (jako biblioteka) technicznie to taki zbior gotowych funkcji. A jako sprzet to po prostu jakas atmega, pewnie 328p (arduino uno) z wyprowadzonymi pinami na plytce. Mozesz wziac dokumentacje AVR i krok po kroku pisac odpowiednie wartosci do rejestrow albo od razu wywolac funkcje i zajac sie tym co ma robic uC. Niekoniecznie jak ma to zrobic z dokladnoscia do bita w rejestrze. Ale tak poza tym to nie masz OS, masz takie same ograniczenia pamieciowe itd.

2

Tak, to jest zdecydowanie embedded. W złym stylu często, z wieloma bibliotekami poniżej poziomu mułu, ale jak chcesz coś na szybko wychałturzyć to ma prawo to zadziałać. Tylko niejednokrotnie okazuje się, że zrobienie czegokolwiek bardziej niestandardowego i tak kończy się pisaniem wszystkiego od zera na rejestrach ;P

0

Pamiętajcie że jest arduino
https://www.arduino.cc/
oraz arduino pro
https://www.arduino.cc/pro
To drugie, dużo lepiej nadaje się do zastosowań profesjonalnych

Samo arduino w swojej historii miało być z założenia prostą platformą do prototypów

1

Rust? Byle nie ""Rust on bare metal"! Już sama nazwa jest ostrzeżeniem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1