ESP32-C3 (RISC-V) vs ESP32 (Tensilica Xtensa LX6)

mhi

  • ****
  • 369
    • Zobrazit profil
ESP32-C3 (RISC-V) vs ESP32 (Tensilica Xtensa LX6)
« kdy: 28. 08. 2021, 22:35:13 »
COVID zpusobil zamrznuti jednoho projektu postaveneho na ESP32 s LX6. Vyuzivaji se tam Wifi, CAN-BUS, UART, nejake saskarny s GPIO, nic svetoborneho. Nejedna se o aplikaci, kde je vyzadovana 100% spolehlivost (on jen ten CAN-BUS jim treba uplne nechodi jak by mel). Pouziva se tam +- jen to jejich IDF. Projekt jako takovy byl funkcne vicemene hotovy, co chybelo je doladeni uzivatelske privetivosti.

Ted resim vzkriseni tohoto projektu a zvazuji pouziti RISC-V varianty, ESP32-C3, ze bych to jeste preportoval (vyrabet se bude jen nejaka stovka kusu, ale nechci do budoucna resit nutnost noveho firmware). Ma cenu se tim zabyvat? Nechci usetrit $2 na modulu, spis mi jde o dostupnost do budoucna, treba za 5 let, proto pokukuji po novejsi soucastce.



A jeste mam otazku, mate nekdo u ESP32 ("stareho" i -C3) vyreseny nejak chytre bootloader, aby to nebylo ze je firmware A a firmware B, ale skutecne neco co treba umi z aplikace stazenim z nejakeho URL preflashovat aplikaci (tedy aplikace preda bootloaderu URL, skoci do nej, ten si stahne bez re-autentizace novy fw a flashne ho, a pak do nej skoci) ?

V pripade selhani je OK kdyz to zustane tupe viset v bootloaderu, ktery treba rozjede nejakou docasnou wifi pro rucni nahrani pres formular, apod.


Re:ESP32-C3 (RISC-V) vs ESP32 (Tensilica Xtensa LX6)
« Odpověď #1 kdy: 29. 08. 2021, 18:49:41 »
Tak nevím, když je to projekt využívající CAN bus, jestli vám nebude vadit, že dle letmého nahlédnutí do specifikace ta C3 nemá vestavěný CAN controller.....

mhi

  • ****
  • 369
    • Zobrazit profil
Re:ESP32-C3 (RISC-V) vs ESP32 (Tensilica Xtensa LX6)
« Odpověď #2 kdy: 29. 08. 2021, 19:02:58 »
Mel by to mit, rikaji tomu TWAI viz https://www.espressif.com/sites/default/files/documentation/esp32-c3_datasheet_en.pdf ("Compatible with ISO 11898-1 protocol")

On se zmenil nazev fci i mezi ruznymi IDF, bylo potreba opravit zdrojaky.

Re:ESP32-C3 (RISC-V) vs ESP32 (Tensilica Xtensa LX6)
« Odpověď #3 kdy: 29. 08. 2021, 21:51:33 »
Tak to se omlouvám.
O tom přejmenování jsem už cosi slyšel, ale při kontrole na mobilu jsem to v těch periferiích přehlédl...

mhi

  • ****
  • 369
    • Zobrazit profil
Re:ESP32-C3 (RISC-V) vs ESP32 (Tensilica Xtensa LX6)
« Odpověď #4 kdy: 31. 08. 2021, 01:03:51 »
Netreba se omlouvat, dekuji za snahu.

Nicmene ... nikdo ?! Opravdu nikdo na serveru kde se opevuje RISC-V nepouziva zrejme pro hobbiky nejdostupnejsi SoC s touto ISA ?


mhepp

Re:ESP32-C3 (RISC-V) vs ESP32 (Tensilica Xtensa LX6)
« Odpověď #5 kdy: 31. 08. 2021, 11:02:02 »
Hele, jestli ono to nebude tím, že máš docela exotický požadavek. ESP32 zde nejspíš používá docela dost lidí, ale bude to v hobby sféře, bude to s xtensa architekturou a podobně... Každopádně bez požadavků na složitý zavaděč a podobně.

Napadá mne, že inspiraci bys mohl najít v zařízení Odroid Go - je postavené na esp32 a má docela chytrý „zavaděč“, který umí vybírat z více image uložených na data partition. Při startu si vybereš, kterou image chceš nastartovat...

Web zde: https://wiki.odroid.com/odroid_go/odroid_go, dá se tam proklikat ke zdrojákům.

Edit: pardon, image ne na data partition, ale na SD kartě...
« Poslední změna: 31. 08. 2021, 11:03:34 od mhepp »

Re:ESP32-C3 (RISC-V) vs ESP32 (Tensilica Xtensa LX6)
« Odpověď #6 kdy: 31. 08. 2021, 11:21:17 »
Opravdu nikdo na serveru kde se opevuje RISC-V nepouziva zrejme pro hobbiky nejdostupnejsi SoC s touto ISA ?

ISA je přece naprosto irelevantní. Napíšu C/Zig program, dám ho kompilátoru, jeho výstup do čipu... a je mi jedno, jestli to je ARM nebo něco jiného. V drtivé většině případů to ani nepoznám, ono i v GDB to vypadá velmi podobně.

Nejdostupnější RV SoC je GD32VF103, už díky tomu, že je pin- a source-compatible s nejrozšířenějšími STM32F103. Opravdu jen v build systému vyměním arm-none-eabi prefix za riscv-none-embed, upravím CFLAGS a volání pro upload.

mhi

  • ****
  • 369
    • Zobrazit profil
Re:ESP32-C3 (RISC-V) vs ESP32 (Tensilica Xtensa LX6)
« Odpověď #7 kdy: 31. 08. 2021, 13:06:31 »
Napadá mne, že inspiraci bys mohl najít v zařízení Odroid Go - je postavené na esp32 a má docela chytrý „zavaděč“, který umí vybírat z více image uložených na data partition. Při startu si vybereš, kterou image chceš nastartovat...

Web zde: https://wiki.odroid.com/odroid_go/odroid_go, dá se tam proklikat ke zdrojákům.

Edit: pardon, image ne na data partition, ale na SD kartě...

Nejsem si jist zda jsem to nasel, nicmene je to zase resene pres SDKcko (IDF), tzn. asi nic moc pro mne.

Ten bootloader si nejak vyresim, jsem na to zvykly, alespon se clovek neco nauci delat na trochu nizsi urovni. Kdyztak to asi pujde udelat na prasaka, ze pri preskoku app->bootloader se wifi+tcp plne reinicializuje. Idealni by bylo samozrejme predat nejak stav wifi (wpa) a tcpip (dhcp).

ESP32-C3 dneska dorazi, vyzkousim jestli to pujde nejak rychle naportovat.

Re:ESP32-C3 (RISC-V) vs ESP32 (Tensilica Xtensa LX6)
« Odpověď #8 kdy: 01. 09. 2021, 09:53:29 »
A jeste mam otazku, mate nekdo u ESP32 ("stareho" i -C3) vyreseny nejak chytre bootloader, aby to nebylo ze je firmware A a firmware B, ale skutecne neco co treba umi z aplikace stazenim z nejakeho URL preflashovat aplikaci (tedy aplikace preda bootloaderu URL, skoci do nej, ten si stahne bez re-autentizace novy fw a flashne ho, a pak do nej skoci) ?
V pripade selhani je OK kdyz to zustane tupe viset v bootloaderu, ktery treba rozjede nejakou docasnou wifi pro rucni nahrani pres formular, apod.

Tvé zadání je jiné, než ESP32 implementuje - a dělá to lépe. Výrobcem vymyšlené řešení je následující:
  • jsou tam dvě samostatné sekce (partitions) flash pro aplikaci
  • z jedné z nich je nabootováno
  • OTA aktualizaci stahuje tvoje aplikace (máš to plně pod kontrolou) do té "druhé" sekce flash
  • teprve, když celou aktualizaci úspěšně nahraješ, ověříš hash atd, tak řekneš, že je ready a přebootuješ
  • načte se aplikace z "nové" partition
  • pokud tvá aplikace po rebootu doběhne správně do checkpointu (esp_ota_mark_app_valid_cancel_rollback()), aktuální partition se označí jako finálně aktivní (= vždy už bude bootovat nová verze)
  • pokud nedoběhne a dojde k rebootu dřív, nadále se používá stará verze

Tj. stav, kdy to "tupě zůstane viset v bootloaderu" by nikdy neměl nastat. Buď se update podaří a běží nová verze, nebo selhal a běží stará verze. (Jediný scénář, kdy by to bylo napikaču, by byla situace, kdy "nová" aplikace zůstane někde v nekonečné smyčce - pak někdo musí manuálně udělat reset/power cycle. Ale pak už zase naběhne stará verze.)

Samozřejmě musí být aplikace tak malá, aby se do flash vešly dvě kopie aplikace a potřebný filesystém.

Info: https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/system/ota.html


Re:ESP32-C3 (RISC-V) vs ESP32 (Tensilica Xtensa LX6)
« Odpověď #9 kdy: 01. 09. 2021, 09:59:47 »
Nicmene ... nikdo ?! Opravdu nikdo na serveru kde se opevuje RISC-V nepouziva zrejme pro hobbiky nejdostupnejsi SoC s touto ISA ?

Jestli to nebude tím, že ESP32-C3 je pro retail dostupné pár týdnů a většina lidí ho tudíž ještě nedostala do ruky, a třeba podpora pro Arduino IDE pro něj vyšla teprve včera?

Re:ESP32-C3 (RISC-V) vs ESP32 (Tensilica Xtensa LX6)
« Odpověď #10 kdy: 01. 09. 2021, 10:23:44 »
"Nicmene ... nikdo ?!"

Moje troška do mlýna je, že jsem v posledních letech nakoupil různé varianty ESP8266, ESP32, ESP32-S2 a po různých (vesměs nedokumentovaných) trablích* jsem své projekty překopal na Raspberry Pi Pico. Ekosystém okolo ESPxx mi přijde plný dobrodružství a překvapení; u RP2 věřím, že projekty na něm postavené budou více futureproof.

*) Sériový převodník modulu ESP32-WROOM nahodile vkládal jeden byte (0xFF) asi tak jednou za megabyte přenesených dat. Rozbíjelo mi to komunikaci způsobem, který se extrémně těžko debugoval. To pro mne byla poslední kapka.

mhi

  • ****
  • 369
    • Zobrazit profil
Re:ESP32-C3 (RISC-V) vs ESP32 (Tensilica Xtensa LX6)
« Odpověď #11 kdy: 01. 09. 2021, 10:27:47 »
Samozřejmě musí být aplikace tak malá, aby se do flash vešly dvě kopie aplikace a potřebný filesystém.

Jak funguje OTA samozrejme vim, znam to, problem je presne v tomto co cituji.

Dale bugy ESPcek - ano, souhlasim s tim, mam podobnou zkusenost. Jeste bych k tomu pridal ze mi hodne vadi jejich hodne "sverazna" implementace nekterych features.

Na seriozni projekty se to myslim moc nehodi.