AVR vs STM32 (wydzielone z wątku „Może czas zmienić nazwe forum?”)

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
Awatar użytkownika
Circuit Chaos
-
Posty: 18
Rejestracja: 12 lut 2021, 0:54
Kontakt:

AVR vs STM32 (wydzielone z wątku „Może czas zmienić nazwe forum?”)

Post autor: Circuit Chaos » 07 kwie 2022, 21:55

Wydzieliłem temat z https://forum.elportal.pl/viewtopic.php?t=16945, bo się offtop zrobił.
es2 pisze:
07 kwie 2022, 15:50
Rozwinę temat R0 i SREG w IRQ.
Obejrzyj procedury IRQ o różnym stopniu skomplikowania. Większość będzie używała rejestrów różnych od R0 i R1 (R2..R4, R17, R18 itp). Po co więc do zachowania SREG używać R0 zamiast jakiegoś innego rejestru?
Tak, to prawda. Ja raczej zastanawiałbym się, dlaczego większość kodu używa rejestrów różnych od R0 i R1. Przecież to R0 został wybrany jako tymczasowy.
es2 pisze:
07 kwie 2022, 15:50
W artykułach pokazywałem moje modyfikacje prologu i epilogu IRQ przy okazji obsługi WS2812 na przerwaniach w AVR. Da się? Da! Trzeba tylko" myśleć. Niestety, twórcy AVR-GCC mają z tym problem.
Wybór R1 na ZERO to totalna głupota!
Zakładam, że jest jakiś powód, dla którego tak wybrali. Zastanawiam się po prostu jaki. Wytłumaczenie, że zrobili to zanim wprowadzono do AVR instrukcje mnożenia, jest jakimś pomysłem – wtedy ten rejestr był dobry jak każdy inny.
es2 pisze:
07 kwie 2022, 15:50
Czy nie można było użyć R16 lub innego z tej grupy? R0-R15 są bardziej uniwersalne od R16-R31 (trochę inaczej jest w bardzo małych AtTiny, które mają tylko 16 rejestrów). Poświęcono uniwersalny rejestr zamiast mniej przydatny.
Część instrukcji (ANDI, ORI, CBR, CPI, LDI, SBCI, SUBI, SBR, SER, STS, LDS, MULS) może działać tylko na rejestrach R16…R31. ADIW i SBIW mogą działać tylko na rejestrach R24…R31, poza tym R26…R31 są też używane jako wskaźniki (X, Y, Z). Wydaje mi się, że przed wprowadzeniem MUL, MULS, MULSU, FMUL, FMULS i FMULSU rozsądny był wybór rejestru z grupy R0…R7.
es2 pisze:
07 kwie 2022, 15:50
Jak już koniecznie chcieli poświęcić rejestr uniwersalny, to dlaczego ne robili tego "od góry" jak każda poważna firma?
Sam chętnie bym się dowiedział, czemu wybrali R0 i R1 zamiast np. R6 i R7.
es2 pisze:
07 kwie 2022, 15:50
Podobnie jak stos, jest na końcu pamięci a nie na początku. Pominę chory pomysł Intela, stosu od dołu w 8051 (w 8048 pewnie też).
Kwestia przyjętego ABI.
es2 pisze:
07 kwie 2022, 15:59
Zgodzę się, że na 100 projektów znajdę kilka, gdzie AVR sprawdzi się lepiej od ARM ale pytanie, jak będzie skala produkcji?
U mnie najczęściej jednostkowa.
es2 pisze:
07 kwie 2022, 15:59
Czy opłaca się inwestować w sprzęt, naukę, dłuższe pisanie softu?
Jeśli mówisz, tak jak niżej piszesz, o rozwiązaniach profesjonalnych, to może i tak – lepiej utrzymywać zasoby dla jednej platformy, niż dla dwóch, jeśli ta druga miałaby być używana sporadycznie. W moim przypadku (hobbysty) sprzęt już mam, nauczyć też już się nauczyłem, a raczej nie podejrzewam, że ktoś inny będzie utrzymywał po mnie kod pisany hobbystycznie.

Zastanawia mnie to dłuższe pisanie softu. Nad czym spędzałeś czas pisząc na AVR, a nie spędzasz na STM32?
es2 pisze:
07 kwie 2022, 15:59
Równo 20 lat temu, będąc na rozmowie rekrutacyjnej, zapytałem, dlaczego w roli dekodera adresowego nie używają GAL'i. Byłoby taniej, lepiej, nowoczesnej. Odpowiedź "Musiałbym posadzić człowieka, który by programował gale i wkładał w podstawki.".
No to jest argument – oszczędzi się na elementach, a wyda się w procesie produkcji.
es2 pisze:
07 kwie 2022, 15:59
Ja patrzę przez pryzmat profesjonalisty projektującego urządzenia produkowane w dużych ilościach i nawet robiąc projekty dla siebie czy małych serii nie stosuję rozwiązań "partyzanckich".
Może po prostu inaczej rozumiemy partyzantkę…
es2 pisze:
07 kwie 2022, 16:04
Podobnie jak ja, tyle, ze AVR-ami zająłem się później. Wynikało to z tego, że trzeba było utrzymywać projekty na 8051. Najczęściej używałem 89C2051 (nawet emulator zbudowałem) oczywiście 89C5x, 89S8252 ale najbardziej podobał mi się P89C51RD2 Philipsa (wtedy jeszcze Philipsa). To był (wtedy) chyba JEDYNY, który mógł programować sam siebie. Późnej Atmel zrobił podobny jak już Philips był NXP.
Ja nigdy nie miałem serca do 8051. Zawsze ta architektura wydawała mi się toporna. Może to wynika z tego, że miałem wcześniej duże doświadczenie w assemblerze dla x86.

es2
Użytkownik
Posty: 186
Rejestracja: 13 mar 2018, 9:47

Re: AVR vs STM32 (wydzielone z wątku „Może czas zmienić nazwe forum?”)

Post autor: es2 » 08 kwie 2022, 4:31

Circuit Chaos pisze:
07 kwie 2022, 21:55
es2 pisze:
07 kwie 2022, 15:50
Czy nie można było użyć R16 lub innego z tej grupy? R0-R15 są bardziej uniwersalne od R16-R31 (trochę inaczej jest w bardzo małych AtTiny, które mają tylko 16 rejestrów). Poświęcono uniwersalny rejestr zamiast mniej przydatny.
Część instrukcji (ANDI, ORI, CBR, CPI, LDI, SBCI, SUBI, SBR, SER, STS, LDS, MULS) może działać tylko na rejestrach R16…R31. ADIW i SBIW mogą działać tylko na rejestrach R24…R31, poza tym R26…R31 są też używane jako wskaźniki (X, Y, Z). Wydaje mi się, że przed wprowadzeniem MUL, MULS, MULSU, FMUL, FMULS i FMULSU rozsądny był wybór rejestru z grupy R0…R7.
Rozsądniejszy R16..R31 ale tym razem "od dołu".

Circuit Chaos pisze:
07 kwie 2022, 21:55
es2 pisze:
07 kwie 2022, 15:50
Podobnie jak stos, jest na końcu pamięci a nie na początku. Pominę chory pomysł Intela, stosu od dołu w 8051 (w 8048 pewnie też).
Kwestia przyjętego ABI.
Stos od dołu to głupoto bo zmienne rezerwuje się od dołu co jest naturalne.

Circuit Chaos pisze:
07 kwie 2022, 21:55
es2 pisze:
07 kwie 2022, 15:59
Czy opłaca się inwestować w sprzęt, naukę, dłuższe pisanie softu?
Jeśli mówisz, tak jak niżej piszesz, o rozwiązaniach profesjonalnych, to może i tak – lepiej utrzymywać zasoby dla jednej platformy, niż dla dwóch, jeśli ta druga miałaby być używana sporadycznie. W moim przypadku (hobbysty) sprzęt już mam
Z zakupem sprzętu taki problem, że jak się przechodzi z AVR na STM to jest ok, bo debuger kosztuje poniżej 20zł, w drugą stronę ból bo dla AVR ok 500zł

Circuit Chaos pisze:
07 kwie 2022, 21:55
Zastanawia mnie to dłuższe pisanie softu. Nad czym spędzałeś czas pisząc na AVR, a nie spędzasz na STM32?
Na AVR trzeba wiecej sztuczek, bo:
- Sprzęt kiepski i to co STM robi sprzętowo w AVR trzeba robić programowo np pomiar czasu impulsu i jego okresu.
- Jednopoziomowy (pomijam najnowsze AVR) system przerwań (oj miałem z tym problem i to duży przy WS2812 na przerwaniach i obsłudze UART).
- Używanie zmiennych w przerwaniu i poza mim gdy są typu ponad 8-bit.
- Brak FPU (kombinowanie z arytmetyką stałoprzecinkową).
- Brak DMA (kombinowanie w wstawkami ASM aby przerwania działały szybko).
- Brak sprzętowego dzielenia (kombinowanie z przesuwaniem i dodawaniem bądź odejmowaniem).
Jest dużo więcej.
piszesz proste programy to nie napotykasz problemów ale zrób coś w rodzaju AVT3275 i już polegniesz na tym, że AVR ma mało timerów w dodatku ani jednego 32-bit.

Circuit Chaos pisze:
07 kwie 2022, 21:55
Ja nigdy nie miałem serca do 8051. Zawsze ta architektura wydawała mi się toporna. Może to wynika z tego, że miałem wcześniej duże doświadczenie w assemblerze dla x86.
x86 to syf tak jak Z-80 czy 8080.
Pisałeś w ASM na MC680x0? Na 99,9999% nie bo jakbyś pisał nie wspominałbyś z nostalgią badziewia jakim jest a raczej był x86 (chodzi zwłaszcza o 8086, 80286.

pbu
-
Posty: 27
Rejestracja: 27 mar 2022, 18:46

Re: AVR vs STM32 (wydzielone z wątku „Może czas zmienić nazwe forum?”)

Post autor: pbu » 08 kwie 2022, 7:18

Wszystkie niby błędy są opisane na stronie gcc dla arm: https://gcc.gnu.org/wiki/avr-gcc
Nie ma więc sensu marudzić, że R1 mi się nie podoba, a gdyby użyli R16 to AVR byłyby lepsze od STM32. Projektanci gcc musieli przyjąc pewne założenia i tyle, nie ma co narzekać.
Natomiast gcc to projekt otwarty, jeśli faktycznie wybór R1 jest zły, warto zgłosić swoje poprawki do kodu. Osoby zajmujące się projektem na pewno będą zadowolone ze zgłoszenia konstruktywnych uwag. Obawiam się jednak, że to całe narzekanie jest absolutnie bez sensu i wyboru R1/R16 oraz pozostałych argumentów nikt zajmujący się profesjonalnie kompilatorami nie potraktuje poważnie.

es2
Użytkownik
Posty: 186
Rejestracja: 13 mar 2018, 9:47

Re: AVR vs STM32 (wydzielone z wątku „Może czas zmienić nazwe forum?”)

Post autor: es2 » 08 kwie 2022, 19:44

pbu pisze:
08 kwie 2022, 7:18
nikt zajmujący się profesjonalnie
nie użyje AVR.
Widzą to zarówno twórcy AVR-GCC jak i Bascom. Nie ma sensu dalej rozwijać produktów dla "umierających" uC.
Kiedy była ostatnia aktualizacja AVR-GCC?
Kiedy ARM-GCC?
I wszystko jasne!

es2
Użytkownik
Posty: 186
Rejestracja: 13 mar 2018, 9:47

Re: AVR vs STM32 (wydzielone z wątku „Może czas zmienić nazwe forum?”)

Post autor: es2 » 08 kwie 2022, 19:50

Dodam jeszcze dlaczego soft dla AVR pisze się dłużej niż dla STM32:
- Brak CAN
- Brak ETH
- Praktycznie brak USB. Jak jest USB to nie ma np CAN albo mało RAM czy FLASH.
- Praktycznie brak sterowników LCD (statycznych/dynamicznych) jedyny mi znany Mega169.
- Bus 8-bit a TFT często są 16-bit.
- Jak już wspomniałem o TFT, śladowe ilości pamięci RAM. Nawet jakby AVR miał DMA to bez większej RAM nic ono praktycznie nie daje. Ile maksymalnie RAM ma AVR, nawet Xmega? STM32 1MB. Czy podłączę SDRAM do AVR, o jakiej wielkości i jaki będzie czas dostępu? Będą transfery blokowe z SDRAM do TFT?
- Brak interfejsu kart SD (tryb 2 i 4 bit).
- Brak obsługi przycisków pojemnościowych.

Pewnie niektóre funkcjonalności już są w nowych DROGICH AVR ale co to daje? Od dawna były w o WILE TAŃSZYCH STM32. Microchip się spóźnił tak o dekadę lub więcej!

PIC32 miał być konkurencją dla ARM i co? I nie jest z wielu powodów.
Króluje ARM (na szczęście) czy się tego chce czy nie i żadne "wynalazki" jak nowe wersje AVR w przestarzałej i drogiej technologi tego nie zmieni!

pbu
-
Posty: 27
Rejestracja: 27 mar 2022, 18:46

Re: AVR vs STM32 (wydzielone z wątku „Może czas zmienić nazwe forum?”)

Post autor: pbu » 08 kwie 2022, 21:00

Może i mikrokontrolery z rdzeniem AVR mają mniej modułów peryferyjnych niż nowsze rozwiązania z rdzeniem Cortex-m - jak chociażby STM32. Ale to wcale nie znaczy że są gorsze, po prostu jeśli potrzebny jest przykładowo moduł CAN to trzeba wybrać odpowiedni układ.
Gdyby zakładać, że te układy które "mają więcej" są pod każdym względem lepsze, to STM32 są o wiele gorsze niż wspomniany StrongARM, czy inne Cortex-A.
Więc nie zostaje nic innego niż używać tylko Raspberry Pi, a wszystkie konstrukcje oparte o STM32 wyrzucić do kosza bo są przestarzałe i zupełnie do niczego.

es2
Użytkownik
Posty: 186
Rejestracja: 13 mar 2018, 9:47

Re: AVR vs STM32 (wydzielone z wątku „Może czas zmienić nazwe forum?”)

Post autor: es2 » 08 kwie 2022, 21:16

pbu pisze:
08 kwie 2022, 21:00

Więc nie zostaje nic innego niż używać tylko Raspberry Pi, a wszystkie konstrukcje oparte o STM32 wyrzucić do kosza bo są przestarzałe i zupełnie do niczego.
Masz klapki na no czach!
Ile startuje RPi? 20-30 sekund? Ile STM32? 10-100ms?
Widziałeś sterowanie poduszką powietrzną na RPi?

Nie rozumie dlaczego amatorzy tak usilnie bronią AVR podobnie jak Arduinowcy Arduino? Może dlatego, że nic innego nie znają?
Pisałem jakie rodziny CPU i uC znam. Nie tylko CPU/uC ale i układy programowalne. Kto zna tyle co ja? Jak zna tyle co ja możemy podyskutować a jak ktoś zna jedną, zwłaszcza jedyną (AVR) dyskusja nie ma sensu! Jak mam przekonać niewidomego od urodzenia, że są kolory?

pbu
-
Posty: 27
Rejestracja: 27 mar 2022, 18:46

Re: AVR vs STM32 (wydzielone z wątku „Może czas zmienić nazwe forum?”)

Post autor: pbu » 08 kwie 2022, 21:20

es2, właśnie pokazałeś swój brak wiedzy i zrozumienia układów opartych o mikroprocesorach. Rpi nie jest najlepszym przykładem ze względu na rozbudowany GPU, ale porównywalne układy jak chociażby płytki beaglebone mogą startować w czasie rzędu 1 sekundy z pełnym Linuksem na pokładzie. Nikt nie każe na Cortex-A uruchamiać pełnego OS-a, można pisać jak na STM32, czyli bez systemu, ewentualnie w oparciu o RTOS - wtedy czas startu będzie minimalnie dłuższy niż w przypadku Cortex-M.
Czasem lepiej siedzieć cicho i nie pokazywać swojej niewiedzy...

es2
Użytkownik
Posty: 186
Rejestracja: 13 mar 2018, 9:47

Re: AVR vs STM32 (wydzielone z wątku „Może czas zmienić nazwe forum?”)

Post autor: es2 » 08 kwie 2022, 21:45

pbu pisze:
08 kwie 2022, 21:20
es2, właśnie pokazałeś swój brak wiedzy i zrozumienia układów opartych o mikroprocesorach. Rpi nie jest najlepszym przykładem ze względu na rozbudowany GPU, ale porównywalne układy jak chociażby płytki beaglebone mogą startować w czasie rzędu 1 sekundy z pełnym Linuksem na pokładzie. Nikt nie każe na Cortex-A uruchamiać pełnego OS-a, można pisać jak na STM32, czyli bez systemu, ewentualnie w oparciu o RTOS - wtedy czas startu będzie minimalnie dłuższy niż w przypadku Cortex-M.
Czasem lepiej siedzieć cicho i nie pokazywać swojej niewiedzy...
Pokaż swoje projekty na RPi (o tym pisałem) startujące w sekundę. Jeśli nie masz taki to "siedź cicho" aby się nie ośmieszać!

pbu
-
Posty: 27
Rejestracja: 27 mar 2022, 18:46

Re: AVR vs STM32 (wydzielone z wątku „Może czas zmienić nazwe forum?”)

Post autor: pbu » 08 kwie 2022, 21:56

Poczytaj kurs dla studentów: https://www.cl.cam.ac.uk/projects/raspb ... orials/os/

Napisałem, że z Rpi problemem jest GPU, który jest głównym procesorem - cortex to tylko dodatek. W przypadku innych Cortex-A jest o wiele łatwiej i uboot jest uruchamiany o wiele szybciej. Natomiast linuksa można optymalizować do startu poniżej sekundy, polecam doczytać np. https://www.e-consystems.com/articles/P ... niques.asp

Umiejętność uruchomienia raspbiana to nie koniec możliwości jakie daje Raspberry, ale warto od tego zacząć. I jak napisałem wcześniej, Cortex-A nie jest wcale lepsze w każdym zastosowaniu niż Cortex-M. Tak samo jak Cortex-M nie jest lepszy niż AVR.

es2
Użytkownik
Posty: 186
Rejestracja: 13 mar 2018, 9:47

Re: AVR vs STM32 (wydzielone z wątku „Może czas zmienić nazwe forum?”)

Post autor: es2 » 08 kwie 2022, 22:57

pbu pisze:
08 kwie 2022, 21:56
Poczytaj kurs dla studentów: https://www.cl.cam.ac.uk/projects/raspb ... orials/os/

Napisałem, że z Rpi problemem jest GPU, który jest głównym procesorem - cortex to tylko dodatek. W przypadku innych Cortex-A jest o wiele łatwiej i uboot jest uruchamiany o wiele szybciej. Natomiast linuksa można optymalizować do startu poniżej sekundy, polecam doczytać np. https://www.e-consystems.com/articles/P ... niques.asp

Umiejętność uruchomienia raspbiana to nie koniec możliwości jakie daje Raspberry, ale warto od tego zacząć. I jak napisałem wcześniej, Cortex-A nie jest wcale lepsze w każdym zastosowaniu niż Cortex-M. Tak samo jak Cortex-M nie jest lepszy niż AVR.
Czy nie widzisz, że się nie znasz lub, że kłamiesz!
Bajki o rdzeniach itp, jakie są niuanse między M0 a np M4?
Wymienisz?
Realnie, piszę kod (w C) migający diodą, czy jest różnica pomiędzy M0 a M4?
Kiedy tą różnicę zobaczę

pbu
-
Posty: 27
Rejestracja: 27 mar 2022, 18:46

Re: AVR vs STM32 (wydzielone z wątku „Może czas zmienić nazwe forum?”)

Post autor: pbu » 09 kwie 2022, 8:13

Gdzie ja niby kłamię? Podałem przykłady, że na mikroprocesory można programować niskopoziomowo tak samo jak na mikrokontrolery oraz że start systemu Linux można bardzo skrócić. Podawanie linków to chyba nie kłamstwo.
Kłamstwem można natomiast nazwać wypisywanie głupot o 56 latach doświadczenia z mikrokontrolerami... Więc to raczej przypisywanie swoich win innym.

es2
Użytkownik
Posty: 186
Rejestracja: 13 mar 2018, 9:47

Re: AVR vs STM32 (wydzielone z wątku „Może czas zmienić nazwe forum?”)

Post autor: es2 » 09 kwie 2022, 12:53

pbu pisze:
09 kwie 2022, 8:13
oraz że start systemu Linux można bardzo skrócić.
Pokaż swój system Linux startujący w ciągu sekundy!
Ja pokaże, na powolnym AVR, urządzenie z ETH, startujące w mniej niż sekundę.
AVR ma zegar 16MHz ok 12 MIPS. Wykorzystuje mniej niż 64kB FLASH i 2kB RAM
Jakie zasoby wykorzystuje Linux?

pbu
-
Posty: 27
Rejestracja: 27 mar 2022, 18:46

Re: AVR vs STM32 (wydzielone z wątku „Może czas zmienić nazwe forum?”)

Post autor: pbu » 09 kwie 2022, 13:04

Nie zamierzam nic nikomu pokazywać, przeczytaj to co podlinkowałem. Jeśli poszukasz w sieci to znajdziesz wiele przykładów rozwiązań opartych o mikroprocesory i startujące o wiele szybciej niż standardowy Raspbian.

Ale cieszę się że sam napisałeś o możliwości użycia ETH w przypadku AVR. Wcześniej pisałeś, że przewagą STM32 nad AVR i jednym z argumentów za używaniem STM32 był właśnie brak ETH w AVR. Jak widać jednak można - czyli wracając do początku, AVR w zupełności wystarczą do wielu zastosowań, a tam gdzie wystarczy Attiny, nie ma potrzeby używania STM32, ani tym bardziej Raspberry Pi - chociaż oczywiście można to wcale nie trzeba i niekoniecznie warto.

es2
Użytkownik
Posty: 186
Rejestracja: 13 mar 2018, 9:47

Re: AVR vs STM32 (wydzielone z wątku „Może czas zmienić nazwe forum?”)

Post autor: es2 » 09 kwie 2022, 13:37

pbu pisze:
09 kwie 2022, 13:04
Nie zamierzam nic nikomu pokazywać
Atak jest najlepszą formą obrony. Jesteś z PiS?
pbu pisze:
09 kwie 2022, 13:04
Ale cieszę się że sam napisałeś o możliwości użycia ETH w przypadku AVR. Wcześniej pisałeś, że przewagą STM32 nad AVR i jednym z argumentów za używaniem STM32 był właśnie brak ETH w AVR. Jak widać jednak można
Czy siebie słyszysz?
Chyba nie!
AVR NIE MA ETH!
Musiałem "na piechotę" rzeźbić IP poczynając od ICMP (ARP) przez UDP do TCP itd. Zajęło to ok 6 miesięcy. W STM32 mam ETH WBUDOWANY a nie zewnętrzną kartę a STM udostępnia BEZPŁATNIE biblioteki, których wykorzystanie zajmie co najwyżej kilka dni.
Widzisz różnicę 6 miesięcy a kilka dni?
Widzisz różnicę AVR za 30zł + karta sieciowa za ok 20zł a STM32 za 15zł + driver (nie karta) za 10zł ?

Nie znasz się na różnych rodzinach uC!
Nie wiem po co zabierasz głos?

ODPOWIEDZ