Fórum Root.cz
Hlavní témata => Hardware => Téma založeno: 91314 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í.
-
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.
-
Co nějaká deska s STM32?
Na tenhle procesor myslím nějaká verze linuxu existuje.
-
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
-
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 ?
-
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.
-
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.
-
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.
-
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 (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.
-
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:
#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).
-
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.
-
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.
-
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.
-
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.
-
Taky doporučuju na domácí bastlení ESP32. Tato verze https://www.dfrobot.com/product-1590.html (https://www.dfrobot.com/product-1590.html) má v deep sleep módu 10μA.
-
Pokud už není požadovaná podpora pro linux, tak ESP32 je pro začátek opravdu fajn, dobrý výkon i výbava za pár peněz.
Dělal jsem na něm do práce už dva projekty, nonstop provoz, v každém připojeno více než 7 různých senzorů, odesílání dat přes Wifi nebo LTE modul a na větší problém jsem nenarazil (snad jen aktivní Wifi koliduje s využitím některých GPIO pinů, občas se nepovedlo napoprvé naflešovat aplikaci, na I2C se mi pohádaly dva konkrétní moduly s různými adresami a podobné drobnosti).
Sleep režimy jsem nezkoušel, neměl jsem nic s dlouhodobým provozem mimo napájení.
-
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.
Je ti doufám jasné, že RPi Pico je 32bit bare metal, stejný jako to STM32? (navíc v QFN pouzdře a s externí flashkou)
-
Myslím, že toho mám hodně co zkoumat,
dík za všem za všechny náměty.
-
co tento MIPS s malou spotřebou?
https://www.root.cz/zpravicky/jadro-5-14-pridava-podporu-pro-maly-a-usporny-sbc-s-mips/