Skocz do zawartości

Premiera: Raspberry Pi Pico (za 4$) z nowym układem RP2040


Pomocna odpowiedź

Nie widzę dla siebie zastosowania dla takiej płytki (super proste rzeczy AVR/Arduino, a ostatnio i tak wszystko podpinam pod domową sieć, a więc ESP z WiFi), ale rzeczywiście te układy PIO to dla mnie całkowita nowość i wydaje się, że dają duże pole do popisu. Oczyma wyobraźni widzę niezłą bibliotekę wspierającą masę protokołów i innych funkcji, które w ogóle nie zaprzątają głównych rdzeni i tu widzę chyba największą przewagę Pico - czy słusznie, czas pokaże.

  • Lubię! 1

Obawiam się, że możliwości PIO są jednak nieco zbyt ograniczone jak na "niezłą bibliotekę wspierającą masę protokołów i innych funkcji" - z tego co widziałem w dokumentacji mamy do dyspozycji pamięć na 32 instrukcje "asemblera", w dodatku ta pamięć jest dzielona przez 4 maszyny stanowe. Nie zmienia to jednak faktu, że nawet przy tak małych zasobach na pewno uda się ciekawe zastosowania dla PIO znaleźć.

Taka elastyczność PIO może być też interesująca dla osób chcących nieco dokładniej poznać działanie protokołów - więc do nauki to może być super rozwiązanie.

  • Lubię! 2

Ja czytałem, że 32 bity to ma kolejka FIFO, nic o 32 instrukcjach nie trafiłem, ale fakt, nie przedzierałem się przez całą dokumentację, a jedynie przeczytałem krótki opis z paroma przykładami. Ale może jeśli takie PIO się przyjmą, to w kolejnych iteracjach zobaczymy wersje rozbudowane.

  • Lubię! 1

Może mi się coś przewidziało, wczoraj na szybko przeglądałem dokumentację. Wydawało mi się, że pamięć programów dla PIO jest bardzo ograniczona, ale teraz tego nie widzę.

Jestem ciekaw jakie będą zastosowania tego RPi. To coś pomiędzy STM32F0/1/2/3/4 a STM32F7 lub ESP32/RPi0.

Może to jakiś początkowy etap współpracy fundacji Raspberry z ARM czyli Nvidia. I za jakiś czas zobaczymy RPi na autorskim chipie posiadającym CUDA. Takie RPi Jetson - połączenie dokumentacji i wsparcia Raspberry z możliwościami Nvidii.

  • Lubię! 1
Dnia 22.01.2021 o 15:42, Elvis napisał:

Może mi się coś przewidziało, wczoraj na szybko przeglądałem dokumentację. Wydawało mi się, że pamięć programów dla PIO jest bardzo ograniczona, ale teraz tego nie widzę.

Nie przewidziało ci się, z drugiej strony na tych 32 instrukcjach da się sporo zdziałać. 
PIO nie są dodatkowymi rdzeniami ogólnego przeznaczenia, dużo lepiej jest myśleć o nich jak bardziej zaawansowanej wersji USART czy USI (tak to chyba nazywało się u atmela) ot bardzo elastyczny blok komunikacyjny. Z drugiej strony jeżeli społeczność pokaże pazur w tej kwestii a fundacja postanowi wypuścić nowy układ z tej seri, to myśle że spokojnie możemy oczekiwać w nim PIO o większych możliwościach.

  • Lubię! 1
(edytowany)

Super sprawa jeżeli skopiowany plik kodu można edytować, 133 Hz  to juź coś w porównaniu z esp32 80hz, też na plus. 3 wejścia alogowe to trochę mało, ale zawsze można rozszerzyć. Łatwiej na pewno zacząć z micropytchonem dlatego zamawię. Podejrzewam że te dwa rdzenie to lipa marketingowa jak w esp32. Ciekawe czy te 133hz jest osiągalne przy jednym rdzeniu. Bo większość programów bedzie pisana pod jeden rdzeń.

Edytowano przez rafalmrok

@rafalmrok witam na forum 🙂 Dla formalności - oczywiście w Twoim poście chodzi wszędzie o MHz, a nie Hz - domyślam się, że to literówka, ale "prostuję", aby nie wprowadzać innych w błąd.

  • Lubię! 1
2 godziny temu, rafalmrok napisał:

Super sprawa jeżeli skopiowany plik kodu można edytować, 133 Hz  to juź coś w porównaniu z esp32 80hz, też na plus. 3 wejścia alogowe to trochę mało, ale zawsze można rozszerzyć. Łatwiej na pewno zacząć z micropytchonem dlatego zamawię. Podejrzewam że te dwa rdzenie to lipa marketingowa jak w esp32. Ciekawe czy te 133hz jest osiągalne przy jednym rdzeniu. Bo większość programów bedzie pisana pod jeden rdzeń.

Według dokumentacji "RP2040 Datasheet":

  • Dwa rdzenie to nie lipa.
  • Część peryferiów jest bezkonfliktowa (podpięta pod AHB, pamięci, flash, PIO, USB, DMA), część jest konfliktowa (podpięta pod APB, praktycznie wszystkie peryferia). Magistrala AHB ma 4 mastery (C0, C1, DMA-Read i DMA-Write) i jak długo dobierają się do różnych urządzeń, tak długa pracują całkowicie równolegle - między innymi dlatego RAM jest pocięty na małe kawałki (po 64kB), żeby każdy master mógł chodzić na swoim "banku" bez konfliktów. [str 14, rozdział 2.1. Bus Fabric].
  • Rdzenie spięte są fajnym interfejsem SIO (2x jednokierunkowe FIFO 32x32, 32 spinlocki do synchronizacji, rejestr zwracający numer rdzenia czytającego ten rejestr plus parę dodatkowych modułów obliczeń asynchronicznych) [str 24, rozdział 2.3.1. SIO]
  • Firmware zbudowany jest tak, że po włączeniu rdzeń 0 normalnie działa, a rdzeń 1 natychmiast usypia. Jak jest potrzeba, to za pomocą FIFO (zapis do FIFO generuje przerwanie, które z kolei budzi rdzeń) C0 wysyła do C1 bazę przerwań, wskaźnik stosu i adres programu do wykonania i C1 rusza od wskazanych ustawień. [str 152, 2.8.2. Processor Controlled Boot Sequence]

@Elvis@Marooned - Tak, każdy z dwóch PIO ma własną pamięć instrukcji (32 słowa 16-bitowe) współdzieloną przez własne 4 maszyny stanów. I dużo i mało. Na pewno pojawi się szybko duża biblioteka implementacji różnych protokołów (mnie najbardziej ucieszyła "sprzętowa" implementacja protokołu LEDów WS-xxxx). Biorąc pod uwagę, że fundacji Raspberry dała plik SVD do tego procesora, pewnie szybko pojawią się biblioteki do Rusta i implementacja języka PIO jako makro DSL.

  • Lubię! 1
5 godzin temu, rafalmrok napisał:

ipa marketingowa jak w esp32

Czemu uważasz że to lipa? Natknąłeś się na wersję z jednym rdzeniem (bo takie istnieją i wyraźnie jest to w dokumentacji zaznaczone)?

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...