Minimální SBC

Minimální SBC
« kdy: 29. 06. 2021, 21:31:26 »
Doporučte prosím nějaký jednodeskový počítač, něco jako RPi, na čem by dokázal běžet Linux nebo Minix. Runlevel 5 nechci, stačí runlevel 2, možná i 1, stačí jedno jádro a raději bez GPU, frekvence CPU stačí stovky, možná i desítky MHz, ale to nejdůležitější je spotřeba. RPi je strašný žrout.
Soptřebu si představuji do 1mA v idle. Jinak za aktivního běhu nějakého proces, není spotřeba tak důležitá.
Dokážete někdo takovou desku doporučit ?
a kdyby se půdorysem vešla do stejné plochy jako RPi, tak by to bylo perfektní.


RDa

  • *****
  • 1 639
    • Zobrazit profil
    • E-mail
Re:Minimální SBC
« Odpověď #1 kdy: 29. 06. 2021, 22:47:03 »
Muzes pouzit WiFi SD kartu a preinstalovat na ni system
https://hackaday.com/2016/06/30/transcend-wifi-sd-card-is-a-tiny-linux-server/

Srandu stranou - low power treba uz nevyrabeny Intel Edison:
https://www.scivision.dev/measured-power-consumption-of-intel-edison/

Jeste me napadlo Quark X1000 na intel Galileo - ale vypada to, ze tam neco zere vic nez RPi, ktere je kolem 100mA:
https://learn.adafruit.com/embedded-linux-board-comparison/power-usage

K cemu to ma slouzit?
A proc nepouzijes obycejne MCU, protoze procesor s MMU + pameti pro plnohodnotny linux v takove spotrebe neni bezna vec. Pokud budu pocitat pamet, tak 1mA Iq prekroci uz samotna DRAM.

Re:Minimální SBC
« Odpověď #2 kdy: 29. 06. 2021, 23:35:39 »
Co nějaká deska s STM32?
Na tenhle procesor myslím nějaká verze linuxu existuje.

_Jenda

  • *****
  • 953
    • Zobrazit profil
    • https://jenda.hrach.eu/
    • E-mail
Re:Minimální SBC
« Odpověď #3 kdy: 30. 06. 2021, 00:19:23 »
To je dost problém, k této spotřebě se blíží některé androidí smartphony, ale deska s normálním Linuxem žádná. Máš podle mě dvě možnosti:

 - vybrat nějaký smartphone na který se ti podaří naportovat normální Linux a bude to vyhovovat (máš to jednodušší v tom, že nepotřebuješ třeba displej, a tedy neřešíš drivery na něj)

 - koupit si nějakou nadějně vypadající destičku s procesorem co umí low-power (např. https://www.acmesystems.it/aria) a pokusit se to implementovat

Re:Minimální SBC
« Odpověď #4 kdy: 30. 06. 2021, 08:26:32 »
Cílem je sběr a částečné zpracování dat v terénu, kde není napájení, dlouhý provoz na baterku, nebo z malého solárka.
Nakonec by mi úplně stačilo i RPi Zero, pokud by umělo suspend to ram a probouzel bych ho z AVR, které by číhalo na čidlech a počítalo čas. Bohužel, RPi suspend neumí, nebo alespoň o tom nevím, a boot při každé události by byl energeticky moc náročný.

Je ale pravda, že mít to vše přímo na MCU, bez OS a univerzálních knihoven, se správným usínáním a buzením na čidla a časovač, by asi bylo energeticky nejúspornější, bohužel, umím jen AVR a 8051 a ty mají na zpracování některých dat na místě moc málo RAM.  Možná ten STM32 by byl řešení, doporučíte mi nějaký tutoriálek ?



Yetel

Re:Minimální SBC
« Odpověď #5 kdy: 30. 06. 2021, 08:44:13 »
Tohle je na jeden low-power mcu ideální aplikace.
A kolik RAM bys tam potřeboval? Co nějaká externí paměť? EEPROM, SD karta, SRAM, ... Kolem Ardiuna jsou taky všelijaké knihovny - kvalita různá, ale dá se od toho třeba odpíchnout.

xPoli

Re:Minimální SBC
« Odpověď #6 kdy: 30. 06. 2021, 09:11:55 »
Tohle nevypadá na úlohu s linuxovým SBC. Kontinuální sběr dat a 1x za 10 minut report na server pomocí NB v rozsahu <100B mi teď včetně komunikace žere průměrně cca 300uA a ještě je tam prostor na snížení spotřeby v řádu nižších desítek uA. MCU je STM32.

Re:Minimální SBC
« Odpověď #7 kdy: 30. 06. 2021, 11:52:38 »
Tohle nevypadá na úlohu s linuxovým SBC. Kontinuální sběr dat a 1x za 10 minut report na server pomocí NB v rozsahu <100B mi teď včetně komunikace žere průměrně cca 300uA a ještě je tam prostor na snížení spotřeby v řádu nižších desítek uA. MCU je STM32.

Kolik má to STM32 RAM ? a dá se na to pohodlně vyvíjet bez nějakého komplexního IDE ? bylo by možné doporučit nějaké tutoriálky? příklady? něco od čeho se odpíchnout ?  mám mnohaleté zkušenosti jen s 8-bitovými MCU, ale IDE nemám rád, pro AVR (Arduino) i pro 8051, používám jen CLI nástroje.

xPoli

Re:Minimální SBC
« Odpověď #8 kdy: 30. 06. 2021, 12:44:57 »
V tomto projektu má MCU 20kB RAM, využito mám méně než polovinu z toho drtivá většina na komunikační buffery mezi jednotlivými komponentami.

Pohodlně vyvíjet bez IDE je pro mě oxymoron, ale můj setup by určitě šel snadno obsluhovat i pouze z CLI.

Mám projekty založené na cmake, od ST jsem použil linker skript, system_stm32xxx.c, startup_stm32xxx.s a základní headery, abych nemusel přepisovat adresy a položky registrů a zakazovat přerušení assemblerem (core_cmFunc.h, core_cmInstr.h, core_cmxxx.h, stm32xxxx.h, system_stm32xxx.h, stm32xxx.h). Překlad pomocí gcc (arm-none-eabi-gcc). Nadstavbové knihovny typu HAL, Cube a podobné nepoužívám.

Na začátku jsem se odpíchnul od tohoto: https://github.com/jobroe/cmake-arm-embedded nyní to mám více custom, jedním sestavením se vytváří zpravidla několik cílů atd.

mhi

  • ****
  • 374
    • Zobrazit profil
Re:Minimální SBC
« Odpověď #9 kdy: 30. 06. 2021, 12:47:16 »
STM32 je cela rada kde SRAMka je od 1kB az nekam mozna k MB, to same flash.

Jsou i varianty kam se da pripojit SDRAM, ma to MMU, takze na tom rozjedete i Linux, ale to bude uz dost slozita deska.

Ja STM32 veci kompiluju s gcc (dpkg z Debianu) a mam odnekud ziskane CMSIS knihovny (jen headerfiles s definicemi registru). U STM32 jsou chyby v dokumentaci i v headerfilech, ale da se to prezit. Muzu poskytnout co mam pro zacatek.

Priklad:
Kód: [Vybrat]
#ifdef __arm__
  CAN_TxMailBox_TypeDef  *mbox;

  // xxx fixme neresime plnost bufferu, atd. CAN_TSR
  mbox = &CAN->sTxMailBox[(CAN->TSR & CAN_TSR_CODE_Msk)  >> CAN_TSR_CODE_Pos];

  mbox->TIR  = 0; /* reset TXRQ bit */
  mbox->TIR  = stm32fxxx_makecanid(cantx_id);
  mbox->TDLR = cantx_d[0] | (cantx_d[1]<<8) | (cantx_d[2]<<16) | (cantx_d[3]<<24);
  mbox->TDHR = cantx_d[4] | (cantx_d[5]<<8) | (cantx_d[6]<<16) | (cantx_d[7]<<24);
  mbox->TDTR &= ~CAN_TDT0R_DLC;
  mbox->TDTR |= (cantx_dlc & CAN_TDT0R_DLC);
  mbox->TIR |=  CAN_TI0R_TXRQ;  /* transmit message             */


Mozna bych se kouknul po RPI PICO, nevim tedy jak to ma se suspend mody, ale k tomu je celkem slusna dokumentace a taky to jde prekladat s gcc bez toho jejich kitu (opet mohu poskytnout).

_Jenda

  • *****
  • 953
    • Zobrazit profil
    • https://jenda.hrach.eu/
    • E-mail
Re:Minimální SBC
« Odpověď #10 kdy: 30. 06. 2021, 14:05:20 »
Problém se STM32 je, že se přestaly vyrábět, a optimistické odhady hovoří o obnovení v roce 2022, pesimistické o 2024.
Kolik má to STM32 RAM ?
Podle modelu 16-256 kB.
a dá se na to pohodlně vyvíjet bez nějakého komplexního IDE ?
Ano, jak jejich "HAL" (low-level knihovna s bohužel nesvobodným generátorem konfigurace (nastavení pinů, hodin, periferií) - stmcubemx), tak různé RTOSy co na to jsou používají Makefile a kompilují se standardním GCC pro ARM.

Příklady bohužel nemohu doporučit, nemám s tím moc zkušenosti. Mohu ale nedoporučit Arduino Core STM32 - je zabugované a funkce v Arduino API moc nepasují na funkce tohoto procesoru.

Re:Minimální SBC
« Odpověď #11 kdy: 30. 06. 2021, 14:47:22 »
Uznávám dva extrémy, buď Bare-metal, což dělám vždy na 8-mi bitech, nebo plný konfort jako linux, ten ale asi bez velké spotřeby možný nebude a externí paměť k Arduino (stavebnice), zrovna tak jako STM32, znamená si přilinkovat cizí, nespolehlivý bordel. Tak že mi RPi Pico připadá asi jako nejnadějnější cesta k cíli a asi jí zkusím.

Díky za náměty.

Re:Minimální SBC
« Odpověď #12 kdy: 30. 06. 2021, 17:00:40 »
A co ESP32? Má velký výkon a dobrý suspend. RPI je žrout, to možná párkrát denně probudit a provést postprocessing, pokud to je potřeba a dává smysl.

Re:Minimální SBC
« Odpověď #13 kdy: 30. 06. 2021, 17:06:08 »
Cílem je sběr a částečné zpracování dat v terénu, kde není napájení, dlouhý provoz na baterku, nebo z malého solárka.

Nejjednodušší je na tohle ESP32.
  • 4 MB flash pro program a fixní data
  • stovky kB RAM (podle verze 300-420 kB)
  • některé moduly mají "externí" RAM (PSRAM) - třeba další 4 MB
  • jedno- či dvoujádrové CPU s rychlostí  240 MHz

ESP32 má základní výhodu - integrované WiFi. A přitom je to standardní MCU - tedy nízká spotřeba (30 mA pro 80 MHz bez WiFi), sleep režimy, konfigurovatelné I/O piny....

Programuje se to nejjedoduššeji přes Arduino IDE.

Re:Minimální SBC
« Odpověď #14 kdy: 30. 06. 2021, 19:32:34 »
Taky doporučuju na domácí bastlení ESP32. Tato verze https://www.dfrobot.com/product-1590.html má v deep sleep módu 10μA.