Skocz do zawartości

W czym pisać profesjonalnie / komercyjnie kody dla mikrokontroerów?


vtor

Pomocna odpowiedź

2 godziny temu, szymonw napisał:

Zawsze staraj się pisać programy w środowisku zalecanym przez producenta np.STMicroelectronics.

Jeśli bawisz się amatorsko / hobbistycznie to nie ma to większego znaczenia, ale jeśli zależy Ci na możliwości przenoszenia kodu między procesorami różnych producentów to używanie dostarczanych przez nich środowisk jest co najmniej niepraktyczne. A weź to jeszcze podepnij pod jakieś CI/CD, gdy masz do dyspozycji jedynie pliki projektu ze środowiska bazującego np. na Eclipsie. Ciarki przechodzą na samą myśl o tym 🙂

Link do komentarza
Share on other sites

Jeśli decydujesz się na programowanie  mikrokontrolerów to w którymś momencie musisz podjąć strategiczną decyzję dotyczącą procesora.Jak już będziesz wiedział na  jakim procku to coś ma działać to prostą konsekwencją decyzji jest narzędzie,które zastosujesz.Czasy narzędzi do programowania mikrokontrolerów  za które trzeba płacić dość duże pieniądze powoli przechodzą do historii.Sukces Arduino polega  właśnie na open source.Ilość bibliotek dla Arduino  napisana przez użytkowników jest ogromna.Za tym sukcesem idzie Microchip a teraz STMicroelectronics.Cechą wspólną tych platform jest język C/C++.Program blink skompilowany dla STM32 w Arduino zajmuje ponad 14kB pamięci w STM32 Cube trochę ponad 8,5kB.Widać różnicę oraz sposób sterowania.Konfiguracja urządzeń peryferyjnych w STM32 Cube jest drastycznie prosta i precyzyjna.Masz możliwość decydowania o zużywanej energii co ma znaczenie podczas pracy  przy zasilaniu bateryjnym i nie tylko bateryjnym.Nie wiem czy w Arduino jest to osiągalne w tak prosty sposób.Nie wiem czy  w ogóle jest to osiągalne.Poznanie różnych środowisk programistycznych jest bardzo rozwijające bez względu na to czy jesteś hobbystą czy nie.Mówiąc o niepraktyczności sugerujesz ,że poznanie kilku języków nie ma sensu a jednak główny nurt cywilizacji idzie dokładnie w odwrotnym kierunku niż to co sugerujesz . A teraz pytanie czy już rozumiesz dlaczego warto znać narzędzie,które jest dedykowane jakiejś rodzinie kontrolerów?

Link do komentarza
Share on other sites

3 minuty temu, szymonw napisał:

Jeśli decydujesz się na programowanie  mikrokontrolerów to w którymś momencie musisz podjąć strategiczną decyzję dotyczącą procesora.Jak już będziesz wiedział na  jakim procku to coś ma działać to prostą konsekwencją decyzji jest narzędzie,które zastosujesz.

Tak uważasz? To jak wytłumaczysz zmianę procesora (i producenta) celem wygenerowania oszczędności na poziomie 100k€ rocznie? Wystarczy, że przy rocznym zapotrzebowaniu jednego miliona sztuk mikrokontrolerów znajdzie się coś tańszego o zaledwie 10 eurocentów. I co? Pozostaniesz wtedy przy pierwszym wyborze, bo podjąłeś STRATEGICZNĄ decyzję o wyborze procka + środowiska od danego producenta? Czy może lepiej wykorzystać DARMOWE środowisko uniwersalne (również open source), podmienić tylko warstwę sprzętową i czerpać korzyści?

16 minut temu, szymonw napisał:

Program blink skompilowany dla STM32 [...] w STM32 Cube trochę ponad 8,5kB.

Uważasz, że to mało? Tyle pamięci to wystarczy do implementacji algorytmu wektorowego sterowania silnikami bezszczotkowymi.

22 minuty temu, szymonw napisał:

Masz możliwość decydowania o zużywanej energii co ma znaczenie podczas pracy  przy zasilaniu bateryjnym i nie tylko bateryjnym.

Litości... Kilka linijek kodu. Serio, do tego nie potrzeba środowiska typu STM32CubeMX.

31 minut temu, szymonw napisał:

Mówiąc o niepraktyczności sugerujesz ,że poznanie kilku języków nie ma sensu.

Nie dopisuj mi proszę czegoś czego nie powiedziałem. Mówiłem o środowiskach, nie o językach programowania. A co do samych języków to nie ma zbyt dużego wyboru: assembler, C, C++ i kilka innych niszowych by się może znalazło, przy czym i tak nie ma to znaczenia, bo wszyscy producenci skupiają się wokół języka C.

24 minuty temu, szymonw napisał:

A teraz pytanie czy już rozumiesz dlaczego warto znać narzędzie,które jest dedykowane jakiejś rodzinie kontrolerów?

Owszem, warto znać takie narzędzia, tylko po to, żeby wiedzieć jakim szerokim łukiem je omijać. Biblioteki typu HAL od ST są zbyt pamięciożerne. Czas wykonywania kodu w tych bibliotekach jest za długi. Używając środowiska od producenta jestem związany z tym producentem, a tego nie chcę. Całe te środowiska nadają się ewentualnie, żeby podejrzeć jak dane peryferium obsłużyć i tylko tyle.

 

Link do komentarza
Share on other sites

No dobrze,zmieniłeś sobie  procek zaoszczędziłeś 45 gr/szt a co z płytką,którą już masz pod tamten kontroler.Ten nowy kontroler ma swoje wyprowadzenia i w żaden sposób nie pasuje do wyprowadzeń na płytce.Płytkę musisz na nowo zaprojektować,przetestować czyli wywrócić cały projekt go góry nogami.A tu czas płynie i już masz miesiąc albo dwa w plecy.No chyba,że płytka  jest za free ale o ile wiem to nigdy  nie jest za darmo. Na rynku kontrolerów zmiany nie są tak szybkie a ceny stabilne.Przy 1mln szt. w Chinach kupisz najtaniej,no chyba ,że w interesach  kierujesz się sentymentami i kupujesz w Europie u znanego dystrybutora,który z Ciebie zdziera.Ale żeby kupić u Chińczyka trzeba do niego pojechać i porozmawiać i wiesz co trzeba poznać środowisko,zaprzyjaźnić się ale wtedy może okazać się,że nie opłaca się lokować produkcji w Europie tylko w Chinach.Co do blinka to uważam,że powinien zająć co najwyżej 200 bajtów. 166 bajtów i 7 bajtów RAM dla st7flite39.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Przy produkcji masowej koszty projektowania i prototypowania są zazwyczaj tak niskie, że zwyczajnie znikają. Dominują koszty materiałów i logistyki, oraz takich rzeczy jak formy do plastiku. Dwa miesiące na przeprojektowanie płytki pod inny mikrokontroler to trochę dużo, zazwyczaj zrobisz to w kilka dni, wliczając czekanie na prototypy. Ale przecież nawet wtedy to nie jest czas "w plecy", bo cały czas produkujesz i sprzedajesz poprzednią wersję, więc w najgorszym razie jesteś w takiej sytuacji jakbyś nic nie zmieniał.

Link do komentarza
Share on other sites

Nie padło w tym wątku nic o PlatformIO, na które relatywnie niedawno trafiłem. Jak to oceniacie? Sam edytor wydaje się znacznie wygodniejszy, wręcz sensowny IDE w porównaniu do pisanego na kolanie Arduino IDE. Ma lokalne biblioteki, więc dla różnych projektów można mieć różne wersje bez ryzyka kolizji i braku zgodności. Łatwiej można wypchnąć taki projekt mając w konfiguracji spisane zależności (coś jak npm/yarn dla JS). Jedyny "minus", to trzeba pisać bardziej zgodnie ze standardem C/C++ (pliki .cpp a nie .ino, załączamy Arduino.h, definicje funkcji muszą być przed ich wykorzystaniem, więc nie ma "hoisting" znany z JS i robiony w tle przez Arduino), ale to raczej drobne zmiany i jak ktoś zna C, to będą oczywiste.

Ostatnio przeniosłem sobie jeden projekt z Ardu pod PIO i testuję.

Edytowano przez Marooned
Link do komentarza
Share on other sites

Hmm, aż tak się nie wgryzałem, może i ma taką opcję, ale u mnie normalnie kompilował lokalnie.

Może chodzi Ci o ich opcje "Remote Development"? Nie patrzyłem na tę możliwość, nie mam takiej potrzeby obecnie. Aczkolwiek ten punkt: `Easily share devices with friends or colleagues across your organization` wydaje się ciekawy. U mnie w firmie swego czasu kilku ludzi pracowało nad jakimś RPi z dodatkami, robili PoC z zakresu IOT. Obecnie, gdy wszyscy pracują z domu, taki zdalny dostęp do jednego urządzenia i możliwość programowania przez zespół brzmi ciekawie.

Edytowano przez Marooned
Link do komentarza
Share on other sites

5 godzin temu, Marooned napisał:

Nie padło w tym wątku nic o PlatformIO, na które relatywnie niedawno trafiłem. Jak to oceniacie? Sam edytor wydaje się znacznie wygodniejszy, wręcz sensowny IDE w porównaniu do pisanego na kolanie Arduino IDE.

Korzystam z VSCode + PlatformIO już od nieco ponad dwóch lat i jestem bardzo zadowolony. VSCode jako edytor jest świetnym narzędziem i niechętnie przesiadałbym się na coś innego. Z samym PlatformIO nigdy nie miałem większych problemów. Na czystym systemie w ciągu kilkunastu minut mamy gotowe środowisko do pracy ze wszystkim co potrzebne - bez różnicy czy jest to Windows czy Linux. PlatformIO wspiera też framework unit testów postaci Unity co pozwala nam na odpalanie testów zarówno na targecie jak i na maszynie na której pracujemy co też jest ciekawą opcją. Przez plik projektu (.ini) mamy też do pewnego stopnia ingerencję w system budowania - więc można dodawać lub usuwać argumenty podawane do kompilatora. Sam proces budowania jest natomiast błyskawiczny - PlatformIO samo wyszukuje zależności i pod tym kątem optymalizuje cały proces. O ile nie wykonujemy za każdym razem "clean build" to kod kompilujemy w ciągu sekund.

Największe problemy w mojej opinii to, brak możliwości wskazania co ma zostać zbudowane - np. nie korzystamy z softu obsługującego SPI a on i tak zostanie zbudowany łącznie z pozostałymi bibliotekami dla danej płytki. Drugi problem to to że struktura plików projektu może mieć tylko dwa poziomy głębokości (zakładając że root to główny katalog projektu) - wtedy pliki możemy najgłębiej mieć na poziomie root/include/module/*.h/c/cpp natomiast w przypadku gdy źródła mamy w katalogu root/include/module/sub_dir/*.h/c/cpp to nie zostaną one zbudowane, bo PlatformIO nie bierze ich pod uwagę.

5 godzin temu, deshipu napisał:

Kompilator "w chmurze" mnie przeraża.

Jak wskazał @Marooned jest to dodatkowa usługa o nazwie "Remote Development" (i coś kojarzę że chyba nawet płatna). Natomiast przy "normalnym" użytkowaniu biblioteki do danej płytki + toolchain + wszystkie narzędzia np. do uploadu pobiera PlatformIO lokalnie i aktualizuje gdy pojawia się nowa wersja.

Edytowano przez Matthew11
  • Lubię! 2
Link do komentarza
Share on other sites

4 minuty temu, Matthew11 napisał:

O ile nie wykonujemy za każdym razem "clean build" to kod kompilujemy w ciągu sekund.

Poczytam o tym, bo zapomniałem o tym wspomnieć w pierwszym poście. Mi na 90% budowało wszystko od zera nawet jeśli zmieniłem tylko jedną prostą linijkę, więc czekałem 10x dłużej niż w Arduino, które kompilowało tylko zmieniony plik. PIO ciągle kompiluje mi biblioteki, których przecież nie zmieniałem. Może domyślnie mam coś źle ustawione.

A, no to skoro już o problemach, to żenujący problem.. Aby zmienić katalog, w którym trzymamy nasze projekty, trzeba to zrobić ukrytą opcją z wewnętrznej konsoli (!), nie da się ot tak "zapisz jako" i wybrać katalogu.. co więcej, konsola nie obsługuje polskich znaków (pewnie ogólnie unicode?), więc nie da się ustawić ścieżki z polskimi literami - dość żałosne jak na rok 2020. Specjalnie dla PIO musiałem stworzyć osobny katalog. Jeśli ktoś ma pod Windows polską literę w nazwie użytkownika, to nie będzie mógł zapisywać w swoim profilu, a jeśli dodatkowo nie ma admina, to nigdzie nie zapisze. Tu akurat spora farsa moim zdaniem i absolutnie niezrozumiałe utrudnienie tak banalnej rzeczy, jak "katalog projektów".

Link do komentarza
Share on other sites

30 minut temu, Matthew11 napisał:

Drugi problem to to że struktura plików projektu może mieć tylko dwa poziomy głębokości

Kiepsko to widzę w większych projektach 😄

23 minuty temu, Marooned napisał:

a jeśli dodatkowo nie ma admina, to nigdzie nie zapisze

Dobrze zrozumiałem? Wymagane są uprawnienia admina, żeby w ogóle zapisywać pliki?!

Link do komentarza
Share on other sites

1 godzinę temu, Marooned napisał:

Poczytam o tym, bo zapomniałem o tym wspomnieć w pierwszym poście. Mi na 90% budowało wszystko od zera nawet jeśli zmieniłem tylko jedną prostą linijkę, więc czekałem 10x dłużej niż w Arduino, które kompilowało tylko zmieniony plik. PIO ciągle kompiluje mi biblioteki, których przecież nie zmieniałem. Może domyślnie mam coś źle ustawione.

To jest w sumie ciekawe. Przez cały ten okres kiedy używam PIO, zauważyłem, że robi clean build tylko w trzech przypadkach:

  • dodasz nowy plik do projektu
  • zmienisz coś w pliku projektu .ini
  • budujesz projekt po wcześniejszym clean'ie

Może to jedna z tych opcji?

1 godzinę temu, Marooned napisał:

Specjalnie dla PIO musiałem stworzyć osobny katalog.

Ja akurat zawsze mam projekt w innym katalogu niż domyślny. I w sumie nigdy nie miałem z tym problemu (może dlatego, że 90% czasu korzystam z PIO na Linuxie?). Trzeba tylko otworzyć VSCode w katalogu z plikiem projektu (.ini) albo wyklikać ten folder z poziomu VSCode. Od razu pro tip jeśli chcemy mieć otwartych kilka projektów w VSCode i móc je równolegle edytować to żeby to zadziałało z PIO trzeba każdy katalog projektu dodać do Workspace VSCode - inaczej extension PIO się nie aktywuje (bo nie widzi pliku projektu).

35 minut temu, Luuke napisał:

Kiepsko to widzę w większych projektach 😄

Otóż to!

PIO ma coś takiego jak Library Dependency Finder (LDF) i na nim opiera się cały mechanizm wyszukiwania zależności. Może istnieje jakiś sposób żeby to zmienić - mi natomiast po kilku próbach nie udało się tego dokonać. A ruszanie struktury plików w aktywnym projekcie to czasami kilka godzin zabawy 😄 

Edytowano przez Matthew11
Link do komentarza
Share on other sites

9 godzin temu, Marooned napisał:

Jak to oceniacie?

Bardzo dobrze. Nie miałem żadnych problemów tu opisanych, ale działam na Ubuntu. Robiłem jednak tylko prostsze rzeczy, nawet nie uruchamiałem nigdy tam debuggera.

Link do komentarza
Share on other sites

Hm, to mógłby być dobry pomysł na artykuł, opisanie PIO jako alternatywy dla Arduino IDE, przeniesienie projektu, ustawienie katalogów roboczych, walka z polskimi literami w ścieżkach, głębokie zagnieżdżenie, nie widziałem wielu opisów tych problemów, a środowisko wydaje się warte uwagi i przenosin. Może udałoby się zebrać dobrą bazę wiedzy, a część problemów zgłosić do projektu z nadzieją na poprawę.

Tak sobie głośno myślę 😉

 

  

4 godziny temu, Luuke napisał:

Dobrze zrozumiałem? Wymagane są uprawnienia admina, żeby w ogóle zapisywać pliki?!

Wg moich prób nie da się ustawić katalogu z polskimi znakami. Jeśli zatem ktoś utworzył sobie pod Windows użytkownika powiedzmy `Żółty`, to najprawdopodobniej nie da się ustawić ścieżki `c:\users\Żółty\costam\projekty`, zatem trzeba by wybrać katalog wyższy niż swój profilowy, a nie mając praw admina nie można zapisywać poza `c:\users\<swój profil>`. Nie sprawdzałem tej tezy, ale skutecznie odrzucało moje próby ustalenia `c:\users\Marooned\tu-coś-z-polskimi-diakrytykami` i znalazłem podobne zgłoszenia w sieci.

Edytowano przez Marooned
Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.