Skocz do zawartości

Czy, kiedy i dlaczego warto operować na rejestrach?


ethanak

Pomocna odpowiedź

Notka od administratora: poniższe posty zostały wydzielone z tego tematu: 

 

----

1 godzinę temu, Elvis napisał:

Chyba nie tylko na AVR można programować bezpośrednio do rejestrów

Pewnie. STM-y również, tylko po co? Pozwól więc, że rozwinę swoje stwierdzenie.

Po to wymyślili HAL żeby po rejestrach nie gmerać (przy czym nie mówię tu o wynalazku STM-a tylko o Hardware Abstraction Layer ogólnie). Po to Espressif opracował API, aby z niego korzystać.

Jeśli w danym języku programowania nie mam dostępu do owego API, to znaczy tyle, że ów język (w tym przypadku micropython) nie nadaje się do pewnych zastosowań.

Prosty przykład: stwórz w micropythonie na ESP32 zmienną, która przeżyje sprzętowy reset. Oczywiście nie chodzi mi o pchanie zmiennej do flasha czy jakiejś pamięci nieulotnej. Coś w rodzaju tego, co robię w Arduino IDE:

RTC_NOINIT_ATTR int zmienna;

 

Link do komentarza
Share on other sites

Mam dzisiaj przed sobą cały dzień zabawy rejestrami i to w układzie trochę bardziej skomplikowanym niż AVR, a w sumie ESP32 i STM32 razem wzięte również. Dlatego napisałem poprzedni komentarz 🙂

Nie wiem, czy to nie jest zbytni offtopic, ale mogę zapewnić, że nie tylko w przypadku AVR programowanie na poziomie rejestrów jest używane. Faktycznie często ma miejsce w HAL, czy też jądrze systemu, albo raczej sterownikach.

Ale i tak kiedyś trzeba do rejestrów się odwołać i ktoś to musi napisać. Więc przećwiczenie na ESP32 mogłoby być interesujące moim zdaniem.

  • Lubię! 1
Link do komentarza
Share on other sites

19 minut temu, Elvis napisał:

nie tylko w przypadku AVR programowanie na poziomie rejestrów jest używane

Elvis, błagam, nie łap mnie za słówka i sprawdź przy okazji znaczenie terminu "skrót myślowy".

A co do rejestrów ESP32... przypomina mi się pewna dykteryjka.

Sun Li uczył się u mistrza Ling Pao sztuki zabijania smoków. Po trzydziestu latach opanował tę sztukę do perfekcji. Cóż - nie było żadnego smoka, na którym mógłby znajomość owej sztuki wypróbować...

22 minuty temu, Elvis napisał:

i tak kiedyś trzeba do rejestrów się odwołać

Podaj konkretny przykład z ESP32 (pomijając ULP, ale tam też raczej fizycznymi rejestrami nie operujesz).

24 minuty temu, Elvis napisał:

Mam dzisiaj przed sobą cały dzień zabawy rejestrami

Możemy się zamienić - zabawa z tworzeniem filtrów do Adwordsów z uwzględnieniem błędnej pisowni i fleksji 🙂

 

Link do komentarza
Share on other sites

Nie chciałem niczego się czepiać, łapać za słówka, ani tym bardziej wywoływać _burzy. O ile wiem do micropythona można dopisywać własne moduły w innych językach, jak chociażby w C, więc napisanie odpowiedniej biblioteki do brakujących peryferiów jest pewnie możliwe. Taka biblioteka zapewne będzie odwoływała się do rejestrów, stąd moja opinia, że umiejętność posługiwania się takimi narzędziami bywa przydatna.

4 minuty temu, ethanak napisał:

Podaj konkretny przykład z ESP32

Biblioteka, jakkolwiek by się nie nazywała (SDK, HAL) wewnętrznie używa rejestrów. Jeśli ktoś potrafi z rejestrów korzystać, może bibliotekę rozbudować o brakujące funkcje - tak samo dla C, jak i dla micropythona, Rusta, Go, czy JavaScriptu.

Sterowniki zawarte w jądrze Linux-a operują bezpośrednio na rejestrach - a działają często na nieco bardziej rozbudowanych układach od AVR. Więc zabawa rejestrami bywa przydatna, tym bardziej że w kodzie jądra nie zawsze można używać dziwnych bibliotek dostarczanych przez producenta.

  • Lubię! 1
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

(edytowany)
9 minut temu, Elvis napisał:

Taka biblioteka zapewne będzie odwoływała się do rejestrów

No, w przypadku ESP32 raczej będzie albo wywoływać funkcje z ROM-u, albo korzystać z API Espressifa dla C. Tym bardziej, że ESP32 to nie "jeden konkretny procesor" a kilka różnych, z różnymi architekturami włącznie i nie jestem pewien, czy mapa rejestrów dla DOWD będzie aktualna w przypadku RISC...

Aha, żadnej burzy tu nie chcę, ja po prostu stwierdziłem że w danym przypadku użycie micropythona mija się z celem. Tyle.

Edytowano przez ethanak
Link do komentarza
Share on other sites

Nie znam niskopoziomowo ESP32, tym co mnie zawsze odpychało od tej architektury był właśnie brak dokumentacji dla niskopoziomowych funkcji - ale fakt że też nigdy za długo nie szukałem, więc jeśli coś np. dokumentacja asemblera jest dostępna, chętnie uzupełnię braki wiedzy.

A jeśli odpowiednie procedury są już w ROM, to użycie micropythona będzie jeszcze łatwiejsze - wystarczy je wywołać.

Link do komentarza
Share on other sites

Przy okazji mała prośba do admina (@Treker) o wydzielenie offtopic-u. Strasznie zaśmieciliśmy wątek, a dyskusji o używaniu lub nie rejestrów o wiele bliżej do niedawno poruszanego wątku o programowaniu w asemblerze niż pytaniu o wybór platformy dla linefollowera.

Link do komentarza
Share on other sites

18 minut temu, Elvis napisał:

zawsze odpychało od tej architektury był właśnie brak dokumentacji dla niskopoziomowych funkcji

Hm... ostatnio chciałem sobie przypomnieć funkcje do ADC. Mam je tutaj: https://docs.espressif.com/projects/esp-idf/en/v4.2/esp32/api-reference/peripherals/adc.html

Nie wiem, czego jeszcze byś potrzebował, mi to wystarczy...

A z wydzieleniem postów zgadzam się w stu procentach.

 

Link do komentarza
Share on other sites

Ja po prostu lubię rozumieć jak działa dany układ. W przypadku STM32, ale i wielu innych mikrokontrolerów, dostępna jest pełna dokumentacja do poziomu rejestrów, czyli w przypadku STM32L4 przykładowo: https://www.st.com/resource/en/reference_manual/rm0394-stm32l41xxx42xxx43xxx44xxx45xxx46xxx-advanced-armbased-32bit-mcus-stmicroelectronics.pdf

Reference manual najczęściej dokładnie opisuje działanie danego modułu, w przypadku ADC i STM32L4 mamy prawie 80 stron opisu, a dopiero później listę rejestrów. To bardzo cenna wiedza, pozwalająca nauczyć się o wiele więcej o sprzęcie niż tylko opis którą funkcję wywołać i z jakim parametrem.

Nawet jeśli później wykorzystamy gotową bibliotekę, powiedzmy CubeHAL, LL, czy nawet biblioteki Arduino, sprzęt i tak będzie działał w sposób opisany w RM, a biblioteki mają najczęściej o wiele gorszą dokumentację od dostarczanej przez producenta układu.

  • Lubię! 1
Link do komentarza
Share on other sites

Jak pamiętacie napisałem w poście że podobno "nie warto" programować w arduino. zasłyszałem to od takiego jednego i dzisiaj udało mi się dopytać co miał na myśli. Stwierdził że mimo że arduino jest prostsze to jest mało przyszłościowe bo projektów komercjalnych na tym się już nie robi i na studiach lub przy pracy nad jakimś startupem też się go nie wykorzystuje. Moglibyście się do tego jakoś odnieść? Do pracy zawodowej jeszcze trochę daleko (do studiów 1,5 roku) ale może warto byłoby chociażby zdecydować się na esp idf ?

 

Link do komentarza
Share on other sites

Ciężko jest generalizować, ale w pracy nigdy nie widziałem projektu opartego o biblioteki Arduino, prawdę mówiąc nic na ESP32 też nigdy nie spotkałem. W sumie mniej mnie zaskoczy Arduino niż ESP - no chyba że jako moduł wifi.

Najlepiej jest przeglądać oferty pracy, wtedy można zobaczyć jakie technologie są poszukiwane i cenione. O ile wiem Python jest znacznie bardziej ceniony niż Arduino, a o ESP nigdy nie słyszałem.

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

Edit: czyli przykładowo wchodzimy na https://nofluffjobs.com/pl i wpisujemy:

ESP32 - brak ofert

Arduino - 2 oferty od 6k do 11k PLN

STM32 - 3 oferty 6k do 20k PLN

Micropython - brak ofert

Python - 16 stron z ofertami... na pierwszej do 42k PLN

To chyba sporo wyjaśnia w kwestii wyboru technologii - o ile oczywiście chcemy na tym zarabiać.

  • Lubię! 1
Link do komentarza
Share on other sites

21 minut temu, morteusz napisał:

Stwierdził że mimo że arduino jest prostsze to jest mało przyszłościowe bo projektów komercjalnych na tym się już nie robi

Moment, uściślijmy jedną rzecz.

Ty chcesz zrobić tego robota żeby pojechał na zawodach czy jako przygotowanie do przyszłej pracy? Bo jeśli to drugie - nie ma sensu pchanie się w ESP.

Jeśli natomiast chcesz żeby to pojechało na ESP - pchanie się w esp-idf to niespecjalnie dobry pomysł. Przede wszystkim z poziomu Arduino masz dostęp do 99.9% tego co daje esp-idf (te 0.1% to rzeczy, których raczej nie wykorzystasz), natomiast większość potrzebnych bibliotek jest właśnie pod Arduino. Poza tym przejście z Arduino na esp-idf jest w razie czego raczej bezbolesne (przecież nie ma różnicy czy daną funkcję z API wywołasz z kodu pisanego w Arduino czy nie), natomiast start jest łatwiejszy.

A zarabiać na ESP pewnie się da - w końcu to układ zaprojektowany przede wszystkim do IoT, a ta dziedzina ma raczej przyszłość. Nie wiem, nie sprawdzałem.

  • Lubię! 1
Link do komentarza
Share on other sites

Wiadomo że nie uczę się esp żeby wejść na rynek pracy ale nawet do własnych projektów zgodzisz się chyba że lepiej używać aktualnych  rzeczywiście używanych rozwiązań żeby w razie czego nie musieć się uczyć od nowa a podobno micropythona można stosować nie tylko w esp. W tym przypadku raczej nie ma mowy o uczeniu się "od nowa" bo zdaje mi się że micropython  i arduino to głównie kwestia języka i ewentualnie ogarnięcie nowego ide dlatego postawię faktycznie na ardu.

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.