abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 13:11 | Nová verze

    Svobodná webová platforma pro sdílení a přehrávání videí PeerTube (Wikipedie) byla vydána v nové verzi 6.1. Přehled novinek i s náhledy v oficiálním oznámení a na GitHubu. Řešeny jsou také 2 bezpečnostní chyby.

    Ladislav Hagara | Komentářů: 0
    dnes 12:33 | Zajímavý software

    Lennart Poettering na Mastodonu představil utilitu run0. Jedná se o alternativu k příkazu sudo založenou na systemd. Bude součástí systemd verze 256.

    Ladislav Hagara | Komentářů: 1
    včera 23:22 | Nová verze

    Hudební přehrávač Amarok byl vydán v nové major verzi 3.0 postavené na Qt5/KDE Frameworks 5. Předchozí verze 2.9.0 vyšla před 6 lety a byla postavená na Qt4. Portace Amaroku na Qt6/KDE Frameworks 6 by měla začít v následujících měsících.

    Ladislav Hagara | Komentářů: 5
    včera 21:44 | Komunita

    Ubuntu 24.10 bude Oracular Oriole (věštecká žluva).

    Ladislav Hagara | Komentářů: 9
    včera 20:22 | Nová verze

    Byla vydána nová verze 2.45.0 distribuovaného systému správy verzí Git. Přispělo 96 vývojářů, z toho 38 nových. Přehled novinek v příspěvku na blogu GitHubu a v poznámkách k vydání. Vypíchnout lze počáteční podporu repozitářů, ve kterých lze používat SHA-1 i SHA-256.

    Ladislav Hagara | Komentářů: 0
    včera 13:33 | IT novinky

    Před 25 lety, ve čtvrtek 29. dubna 1999, byla spuštěna služba "Úschovna".

    Ladislav Hagara | Komentářů: 0
    včera 01:00 | Nová verze

    Byla vydána nová verze 24.04.28 s kódovým názvem Time After Time svobodného multiplatformního video editoru Shotcut (Wikipedie) a nová verze 7.24.0 souvisejícího frameworku MLT Multimedia Framework. Nejnovější Shotcut je vedle zdrojových kódů k dispozici také ve formátech AppImage, Flatpak a Snap.

    Ladislav Hagara | Komentářů: 0
    28.4. 16:33 | Nová verze Ladislav Hagara | Komentářů: 0
    28.4. 03:22 | Zajímavý článek

    V aktuálním příspěvku na blogu počítačové hry Factorio (Wikipedie) se vývojář s přezývkou raiguard rozepsal o podpoře Linuxu. Rozebírá problémy a výzvy jako přechod linuxových distribucí z X11 na Wayland, dekorace oken na straně klienta a GNOME, změna velikosti okna ve správci oken Sway, …

    Ladislav Hagara | Komentářů: 0
    28.4. 00:11 | Nová verze

    Rakudo (Wikipedie), tj. překladač programovacího jazyka Raku (Wikipedie), byl vydán ve verzi #171 (2024.04). Programovací jazyk Raku byl dříve znám pod názvem Perl 6.

    Ladislav Hagara | Komentářů: 7
    KDE Plasma 6
     (75%)
     (8%)
     (2%)
     (15%)
    Celkem 884 hlasů
     Komentářů: 4, poslední 6.4. 15:51
    Rozcestník
    Štítky: není přiřazen žádný štítek


    Vložit další komentář
    5.3.2023 01:00 Pavel Píša | skóre: 18 | blog: logic
    Rozbalit Rozbalit vše Re: Jaký systém, RTOS, HAL, atd... volit pro menší MCU
    Aktuálně mi díky členství ČVUT v RISC-V International mají na návrh využití pro experiment využitelnosti pro motion control pod NuttXem přijít destičky ICE-V (ICE40UP5K+ESP32-C3). Hledám studenty na ČVUT, kteří by si to vzali v rámci nějaké školní práce. Při investici studenta do pořádné přípravy projektu, se je velká šance, že by i na mé doporučení mohl být projekt vybraný pro financování z Apache, NuttX slotu Google Summer of Code. A vzhledem k tomu, že zatím zájem mezi studenty ČVUT FEL není, rád budu dělat mentora i někomu, kdo to bude myslet vážně, z jiné univerzity. CAN do QEMU jsem založil s GSoC studentem z Číny, grafiku pro RTEMS se studentem z Rumunska atd...
    5.3.2023 09:13 gsnak | skóre: 22 | blog: gsnak
    Rozbalit Rozbalit vše Re: Jaký systém, RTOS, HAL, atd... volit pro menší MCU
    Používam arduino ide pre stm8, stm32, esp32 a attiny asi 2 roky. Funguje v pohode, pre domáceho bastliča naprosto dostatočné riešenie. Spravil som v tom ladičku, merač odporov, kuchynský budík, nastaviteľný pwm generátor, autíčko s fpv kamerou a wifi ovládaním cez mobil, detektor kovov, atď. Nenechajte sa odradiť snobizmom a spravte svoj prvý blikač. Odporúčam stm32+stlink+usb2serial dongle z aliexpresu za cca 6 euro a môžete bastlit.
    Čo Rys, to vrah!
    5.3.2023 10:50 Pavel Píša | skóre: 18 | blog: logic
    Rozbalit Rozbalit vše Re: Jaký systém, RTOS, HAL, atd... volit pro menší MCU
    Díky za názor. Jak, případně z jakého IDE, řešíte ladění aplikace přes ten ST link. Jasně i Arduino aplikaci bych sám dokázal krokovat třeba z řádkového GDB přes OpenOCD zcela v pohodně. Ale předpokládám, že to nebude na úrovni zdroje INO, ale až překlopeného CPP. Jaká je přenositelnost třeba aplikace s I2C, TCP/IP, SPI a grafikou mezi několika targety? Pokud potřebuji složitější stavovou komunikaci pro TCP/IP, jak to řešíte? Mám zkušenosti s LwIP bez OS, ale pak řešení vede v hlavní smyčce na sadu neblokujících stavových automatů, a to je na návrh na schopnosti mnohem náročnější než použít nějaký RTOS/task switcher a komunikaci řešit sekvenčním kódem ve vedlejším vláknu. Ano pro jednoduchou aplikaci, která se může zasekávat, v době komunikace se blokuje lokální ovládání tlačítky, dovoluje jen jedno spojení atd. atd... je možné volat nějaký zabastlený socket, send, receive (také nejspíš vespod z LwIP) z hlavní smyčky. Ano, na první hraní to asi i v pořádku, ale ti, co takto začnou, tak se toho drží i dále a pak to vede k rokům neštěstí. Ale je možné, že již Arduino nabízí vlákna, synchronizaci s priority inheritancí atd... Rád se to dozvím.

    Na NuttXu se mohu připojit do shellu systmu třeba paralelně s aplikací, přes ps, ls atd zkoumat, co se děje. Přitom na rozdíl od FreeRTOS, MBed a dalších mohu ně jen do nich zabastlený LwIP, ale i vytváření vláken a další realizovat podle přenositelného standardu POSIX, který je veřejně dokumentovaný na OpenGroup a lze se ho naučit a testovat na GNU/Linuxu, MAC OS, třeba i Andoridu a nakonec i na s nějakými omezeními s alternativní C knihovnou na na Windows nebo naplno ve WSL.

    Obecně souhlasím s tím, že není jednoduché začátečníkům nějaké přívětivé prostředí nabídnout, a třeba bych i bral snad i ten grafický Scratch, ale ať pod tím je prostředí, které pak umožní přejít dále a především ať špatná volba základu nenutí schopné vývojáře runtime environmentů, aby nemuseli dělat vše možné i nemožné, aby pěkný HW s možností systémového přístupu nelámali do omezujícího API. Tam mizí podle mě řádově více času, než je správné a přitom pak jejich výsledky pro již profesionálnější řešení jsou ztracené.
    5.3.2023 19:29 ehmmm
    Rozbalit Rozbalit vše Re: Jaký systém, RTOS, HAL, atd... volit pro menší MCU
    Zrovna nedavno jsem tohle resil s kamaradem. Nevim jak gsnak, ale ja proste nekrokuju. Je hezke, ze stm8 ma swim, stm32 swdio+swclk, ale me tyhle piny staci pro nahravani. Jsem konzerva a sledovat, co se deje, zvladnu pomoci nejakeho vypisu na seriovy port nebo blikani diodou nebo osciloskopem. Taky se na techto jednoduchych procesorech do nepoustim do zadnych slozitosti.

    Kdyz jsem zkousel nejake to STMXYCube, tak jsem v tom nedokazal naklikat ani novy projekt. Skoncil jsem jako vzdycky, vzal jsem PDF od procesoru, textovy editor, kompilator a jel jsem. Samozrejme ze nejake potrebne hlavickove soubory, pripadne i knihovny, abych videl, jak to delaji ostatni, jsem si vygooglil. (To je zase zvyk z Arduina, peclive koukat do knihoven z internetu, protoze vetsinu z nich patlali snad jeste vetsi pitomci nez jsem ja.)
    5.3.2023 11:00 Martin Vystrčil
    Rozbalit Rozbalit vše Re: Jaký systém, RTOS, HAL, atd... volit pro menší MCU
    Zajímal by mě Váš názor na RIOT OS. Dostal jsem se k němu přes - ve Vašem příspěvku zmíněný - Contiki.
    5.3.2023 12:13 Pavel Píša | skóre: 18 | blog: logic
    Rozbalit Rozbalit vše Re: Jaký systém, RTOS, HAL, atd... volit pro menší MCU
    Přesto, že git mám u sebe stažený někdy z roku 2015, tak se nemohu se vyjádřit kompetentně.

    Podle rychlého scanu aktuálního stavu to vypadá, že se posunul od dob jednoduché alternativy k TinyOS a Contiky hodně dopředu. Interní kernel API s jednodušším thread_create vypadá rozumně. Přitom pro aplikace již nabízí POSIX API s mutexy s PTHREAD_PRIO_INHERIT a plnohodnotným pthread_create.

    V historii vidím nyní i 10 commitů od Keith Packard. To je primárně špičkový vývojář velkých systémů, mnoho let držel nad vodou X11 a další. Přitom jako hobby si začal hrát s raketami a i přes volbu eztra slabých MCU nezačal Arduiny a podobnými, ale napsal s malý systémek z nuly. Pak, myslím, používal Contiky nebo možná TinyOS a pokud na své hraní používá nyní RIOT-OS, tak je to značný argument pro.

    Přehled podporovaných MCU zatím spíš k senzor networks než k industry řízení, ale LPC a SAMD5 a další tam jsou. Z našeho aktuálního pohledu je kritické, že chybí SAMv7/SAME7(x). Což po selhání NXP s dodáním i vzorků S32, kam nás sami pro nedostupnost CAN FD na imxRT bez BGA nahnali, je aktuální volba PiKRONu a Elektroline.cz... Za cenu investice by to šlo napravit. (poznámka stranou, nelíbí se mi, že adresář cpu je flat, není rozdělený podle ISA,a le je to detail).

    V core/sched.c nalézám _get_prio_queue_from_runqueue a runqueue_bitcache. To znamená, že i pro větší počty ready vláken je výběr rychlý. Výhoda proti NuttX. (..., kontrola, ano stále, CLZ ani fls() v sched NuttXu nenacházím). Riot OS, runqueue_bitcache je globalní, nikoliv per CPU core, tak SMP také nebude na větší CPU... Chtělo by to zkontrolovat zatřiďování do muttex priority inheritance queue. Ale nepředpokládám sofitikované řešení, na jednoty tasků i to ubohé lineární co je v NuttXu. Jinak RTEMS jak scheduller, tak ticket spin locky a solidně implementované dědění priorit u mutexů. Linux ještě o třídy dále a pro velké procesory to bez toho nejde, pro procvičení mozkových závitů doporučuji zkrácený popis, který přesvědčil Linuse pro zařazení. Ale souhlasím, že pro jednotky vláken to takto solidně být nemusí.

    Drivery v RIOT OS vypadají, že jsou přímo datové struktury na míru dané periferie, na které se volají specifické funkce. Z hlediska overheadu je to výhoda, ale zdá se třeba že ani ADC (typedef struct adcxx1c, ) nemá nějakého společného předchůdce. To znamená, že aplikace je natvrdo vázaná na daný HW, minimálně v nějaké adaptační vrstvě. Nemusí to být nevýhoda, na NuttXu je třeba ADC, SPI a další registrované do souborového namespace a API je mezi různými čipy shodné, takže třeba pro pysimCoder je možné použít shodný ADC blok pro libovolný čip a sadu kanálů (CodeGen/nuttx/devices/nuttx_ADC.c). To je velká výhoda, že pro nástroje vyšší úrovně se podpora daného typu periferie píše jen jednou. Ale zase je tam overhead a některé funkce dostupné jen přes IOCTL specifická pro daný čip/periferii atd... Zkuste ukázat příklady, jak třeba vypadá nějaký kód v RIOT OS, Arduinu atd. který využívá ADC, I2C atd.. na třech zcela odlišných MCU. Zajímalo by mě to právě i pro to porovnání a doporučení začátečníkům.

    RIOT OS je pak pod licencí LGPL 2.1, to je z pohledu udržení jeho vývoje dobrá volba, ale pro firmy to znamená buď aplikaci šířit otevřeně nebo jako object file linkkit. To asi většina nebude chtít, i když my (PiKRON) jsme nakonec dali světu i náš core business základ v plné podobě... Ale i pro nás to pro některé partnery nejde. RTEMS byl LGPL také, ale každý kód byl implementovaý z nuly nebo z BSD a k LGPL bylo přidané linking exception. To znamená, že binárka roti nepozměněným .a statickým knihovnám a jejich API se považuje za shodný stav, jako zavřený program proti LGPL... Ale nakonec RTEMS za cenu mnoha jednání a hledání autorů přechází na BSD 2 clauses. NuttX je Appache, takže také volnější... Toto je otázka složitá....

    Takže to je výsledek mého dalšího asi hodinového scanu RIOT OS. Ale rád se o něm dozvím více a vypadá slušně vedený a použitelný.
    5.3.2023 14:41 Pavel Píša | skóre: 18 | blog: logic
    Rozbalit Rozbalit vše Re: Jaký systém, RTOS, HAL, atd... volit pro menší MCU
    ještě k té RIOT OS bitmapě, měl jsem zmínit že řešení přes int32_t omezuje počet priorit na 31+iddle. Třeba RTEMS má na na default priority do 256 bitmapu hierarchickou s hledáním ready tasku s nejvyšší prioritou na dvě CLZ nebo FLS a lze volit i menší rozsah třeba jen jednoúrovňový pro snížení paměťových nároku na malých MCU.
    6.3.2023 08:28 trekker.dk | skóre: 72
    Rozbalit Rozbalit vše Re: Jaký systém, RTOS, HAL, atd... volit pro menší MCU
    Arduino je skvělé, na všechno jsou knihovny. Pak se do té knihovny člověk podívá a neomylně - vlastně jsem nepotkal jedinou, kde by to tak nebylo - veškerý kód běží v hlavním vláknu a pauzy si dělá pomocí busy-loop. Jako na leccos jsem nadšenec a zároveň si rád ušetřím práci, ale tohle teda nebrat.
    Quando omni flunkus moritati
    6.3.2023 09:27 Pavel Píša | skóre: 18 | blog: logic
    Rozbalit Rozbalit vše Re: Jaký systém, RTOS, HAL, atd... volit pro menší MCU
    Děkuji za potvrzení mých obav. Je to opravdu tak hrozné í na všech těch Arduion kompatibilních, rozuměj zcela přepsaných běhových prostředích na plnohodnotných 32-bit systémech (Cortex-M, ESP32), které jsou nalámané do Arduiono API? Případně pro důkaz sporem, zná někdo řešení, kde je to jinak, třeba i nad tím FreeRTOS nebo MBedem s vlákny? Nebo poctivě stavovými mašinkami? Sám mám sysle aplikace (např. robotický kontrolér LX_RoCoN), kde běží 4 kHz řízení v přerušení a paralelně až pět spojení LwIP, komunikace přes dva sériové porty a USB, na pozadí I2C pro konfiguraci a atd. v hlavní smyčce a vše je neblokující. Stejně tak jinde třeba grafika se signal sloty, paralelně USB na RS-485 uLAN bridge a pod přerušením pak na pozadí až po ten debugging uLAN protokol, časový uživatelský program a celkem komplexní řízení přesného čerpání a přesným časováním ventilů, komunikace s AD převodníky atd... Ano i takto lze lze bez operačního systému programovat. Ale již při návrhu první drobné knihovny je potřeba myslet na to, že vše je buď event driven z hlavní smyčky nebo to běží z přerušení. Je potřeba promýšlet, která data lze do a z přerušení předávat jen přes atomická čtení a zápisy a kdy je potřeba zákaz přerušení a složitější konstrukce. Ano vyrostl jsem takto na 8051, kde to z pohledu výkonu a rozsahu aplikací jinak než takto a v assembleru nešlo a odnesl jsem si toto programování s minimálním overheadem i na H8S, ARM atd.. Ale vím, jak extrémně těžké a časově náročné to je jak takové věci jiní píší s chybami. Přitom nad určitou složitost, to pak rozumně nejde a jak je extrémně jednodušší použít RTEMS, NuttX nebo GNU/Linux a o kolik je jednodušší zajistit přenositelnost, když základ rovnou najede do shellu bez nutnosti řešit spodek.

    Takže se o tuto zkušenost chci poděli a šetřit dalším čas. A představa, že mnoho lidí setrvává u toho blokujícího návrhu s jednou špatně navrženou smyčkou a knihovnami mě děsí. Přitom firmy jako Nordic, Espressif si toto uvědomují jejich SDK, IDF atd... buď nabízí event driven (na Nordicu i s podporou HW) řešení nebo API s FreeRTOSem. Ale zase investice do každého a implementace kódu s jeho využitím pak při změně výrobce znamená psát vekou část aplikací znova. Přitom ta zmíněná grafika SuiTk mi běží na system-less, RTEMSu i terminálech v Linuxovém framebufferu z jednoho kódu.

    Rád budu slyšet protiargumenty. Ale zatím stále vidím Arduino po prvním testu blikání LEDkou nebo jednoduché demo aplikace na daný HW jako cestu do říše temnot a slepoty. A přitom je i někde tento přístup základem výuky magisterských studentů na vysoké škole. Výuky lidí, kteří mají aplikace s podobnou nebo nyní vyšší složitostí než mnou odkazované profesionálně navrhovat.
    6.3.2023 10:57 ehmmm
    Rozbalit Rozbalit vše Re: Jaký systém, RTOS, HAL, atd... volit pro menší MCU
    Obavam se, ze zijete v jinem vesmiru.

    Arduino je (respektive byl) svet osmibitovych procesoru s cca 2 kB RAM a cca 16 kB flash. Jak tu nekdo nahore zminil attiny (taky jsem si ho zkusil, kdyz jsme se synem delali semafor), tak tam jsou tusim 2 kB flash a ted nevim, jestli 128 bajtu RAM. Rychlost cca 8 nebo 16 MHz.

    Pro zacatecniky to je dokonale. Vystacite si z prikazy setMode(), digitalRead(), digitalWrite(), analogRead(), delay() a pak uz staci jen Ctrl+U pro upload.

    Pouze ti zvedavejsi si pozdeji najdou zdrojaky od digitalRead()/Write(), pozvraci se a potom bud usoudi, ze jim to pro jejich potrebu staci, nebo zacnou pristupovat primo na piny pomoci registru. Ale z knihoven jsem neco takoveho videl pouze v jedne pro ovladani LCD displeje pres SPI.

    To same s delay(). Jakmile potrebujete delat vic veci najednou, tak zjistite, ze existuje milisekundovy citac a odpocitate si to od nej.

    Z pohledu bastlicu se tohle zmenilo s prichodem ESP32 (respektive jeho predchudce 2866?), ale s tim nemam zkusenost. Tam uz je vykonu hromada. Z meho pohledu uz to je neco jako RaspberryPi a to uz je jiny sport. Taky to uz nebude fungovat nekolik mesicu nebo let na baterku. (Jinak za muj osobni majstrstyk povazuji na 16 MHz atmeze zpracovat 1 MHz pulsy a vyrobit z nich jine pulsy. Vzhledem k tomu, ze jmp na konci ma dva tiky, tak na zpracovani signalu jsem mel 7 tiku, pak dalsich 7 tiku na druhou hranu a 2 na jump. 16 tiku = 1 mikrosekunda.)

    A co se tyka vyuky, tak to tak neprozivejte. Kolik lidi z rocniku si myslite, ze se tim bude zivit? Mozna tak jeden a ten si to nastuduje sam, az to bude potrebovat. Od Vas potrebuje jenom takove intro, aby vedel, co ma googlit. Ostatni potrebuji hlavne kredity a kdyz jim nahodou zustane neco v hlave, tak jen dobre.
    6.3.2023 11:26 Pavel Píša | skóre: 18 | blog: logic
    Rozbalit Rozbalit vše Re: Jaký systém, RTOS, HAL, atd... volit pro menší MCU
    Ti studenti dostávají diplom s potvrzením, že jsou experti v oboru. Mnoho z nich pak jde do STM nabízet firemní podporu zákazníkům, další budou ta CUBE, EmbeddedBeans a další přímo vyvíjet a přitom nemají základní představu. Vidím ty tragédie ve velkých firmách a vlastně by mě to mělo těšit, že moje expertíza bude nedostatková. I když pak jsem požádaný řešit ty problémy, kdy to dále nejde a shledávám se s regulátory motorů v hlavní smyčce programů kdy si ani pisatel neuvědomuje, že by tam nějaké časování být mělo atd... To je u robotů a dalšího veřejné ohrožení zdraví a majetku... a přitom by stačilo jen trošku myslet a dokázat si třeba i s tím Arduinem pohrát, ale plně i uvědomovat, o co se jedná a rovnou pracovat na lepším přístupu.

    A moc by mě těšilo nalézt alternativu, jak mít alternativy jak začít sice stejně jednoduše ale na lepším základu... Ale všeobecná inklinace těch méně schopných k Arduinu a spol nakonec nutí ty schopné místo investice do zpohodlnění těch alternativ portovat a parasit vývoj pro ten rozjetý v{l|r}ak a tak se pořád utužuje jeho pozice.

    Zkouším investovat a nabízet ty alternativy, jasně také s omezeními, chybami atd. tak chci alespoň aby ti s otevřenější hlavou o nich věděli a chápali co je pro dlouhodobější věci důležité.
    6.3.2023 12:36 ehmmm
    Rozbalit Rozbalit vše Re: Jaký systém, RTOS, HAL, atd... volit pro menší MCU
    Diplom nerika nic o tom, jestli jsou nebo nejsou experti. Je to jenom znamka toho, ze maji vydrz, umi cist, psat, trochu pocitat a mozna maji nejake zaklady v oboru.

    Samotneho by me zajimalo, jak by ta stejne jednoducha ale lepsi alternativa mela vypadat. Obavam se, ze tak jednoduche jako priklad na blikani diodou v Arduinu to nikdy nebude.

    Kdyz jsme u toho, tak vloni se po me chtelo, abych udelal neco s STM32. Tak jsem nasel tenhle tutorial a delal podle toho: bare-metal-stm32-programming-part-1-hello-arm Postupne jsem ten turoial prochazel, az jsem se dostal k: bare-metal-stm32-programming-part-6-multitasking-with-freertos Ale usoudil jsem, ze pro to, co se po me chce, to vubec nepotrebuju.
    7.3.2023 11:38 chytra horakyne
    Rozbalit Rozbalit vše Re: Jaký systém, RTOS, HAL, atd... volit pro menší MCU
    Nedelam uz moc embedded SW, ale zase vice vidim kam smeruje business svet.

    Co takhle postupne committovat do Arduino ekosystemu prepsane knihovny/rutiny stavajiciho API s pouze s minimalnimi zmenami (idealne pouze rozsireni toho API aby byla zachovana zpetna kompatibilita), ktere by vsak "zalepily" velkou cast (nikoliv vsechny ani drtivou vetsinu) tech stavajicich nedostatku. Proste API by melo reflektovat princip 80/20 (a nikoliv 30/20 jako to nyni Arduino API ma, ale take nikoliv 99/150 jako RTEMS a take nikoliv 95/110 jako NuttX).

    Hlavne musi clovek prekousnout, ze cilem neni 90+/klidne_100 ale fakt pouze 80/20. Vyse navrzeny pristup "postupne opravovat Arduino ekosystem" mi prijde mnohem mene narocny (casove i znalostne) a s kolosalne vetsim pozitivnim dopadem na uzivatele nez investovat do NuttX nebo RIOT atd. Co vy vsichni tady na to?
    7.3.2023 15:38 Pavel Píša | skóre: 18 | blog: logic
    Rozbalit Rozbalit vše Re: Jaký systém, RTOS, HAL, atd... volit pro menší MCU
    Pokud je ne jen základ, ale i komunitní duch nastavený špatně, tak se člověk akorát udře a nakonec bude rád za to, že nějaký lepší HW dokáže nabídnout zakrytý kompatibilním API se všemi původními omezeními. Prostě se to sejde na tom nejhorším ze všech prvků...

    To mi připadá lepší investovat do NuttXu, což masivně děláme, nebo třeba toho RiotOS a pro začátečníky zkusit nabídnout rozumnou předpřipravenou konfiguraci a třeba rozvnou práci v micropythonu, což dnešní "malá" a i levná MCU v pohodě zvládnou...

    Jen by bylo dobré, aby si tu past uvědomovalo více z těch, kteří mají nadání její alternativy rozvíjet.

    Jinak opravdu i jen monitoring zabezpečovačky tramvají, motion control, infúzní pumpy a další i nad 100x přepsaným, ale Arduino IDE a kompatibilitou svázaným základem navrhovat je ne jen ztráta času, ale i závažný trestný čin, když jsou mrtví, tak jsou souzení za nedbalost i vývojáři. A sám potřebuji, aby mi kromě hraní ten základ na tyto uvedené věci zbyl...

    Takže Vám navrhuji, pochopte co Arduino komunita potřebuje, a přepište IDE (ono stačí pustit/nakonfigurovat třeba Codium - sám ho neumím a nemusím, ale na RFVfpga semináři to chodilo velmi pohodlně) a těch pár knihoven nad nějaký slušný RTOS základ. Ještě zvažte, jestli v těch API třeba nechybí parametry, pokud máte více než jedno I2C, sériový port, nějaká DMA a pak je také nahraďte lepšími.... No a nakonec zjistíte, že tam kam ten zbytek Arduina odešel, nezůstalo vůbec nic, zůstává jen POSIXOvé API... a třeba návod jak ho použít.
    7.3.2023 18:01 rad
    Rozbalit Rozbalit vše Re: Jaký systém, RTOS, HAL, atd... volit pro menší MCU
    Tak já nevím, ale přijde mi, že jste se musel zbláznit.

    Já vždycky chápal Arduino jako ekosystém, který nabízí lidem s prakticky nulovou znalostí elektroniky a programování možnost postavit si za jedno odpoledne nějaký jednoduchý projekt. A vy tady operujete infuzní pumpou a dopravním zabezpečením. Raketoplán byste tím řídit nechtěl?

    A jako alternativu nabízíte projekty, kde stráví člověk dva týdny studiem dokumentace aby to pak nakonec vzdal, protože se v tom nezvládne zorientovat. A korunujete to výrazy jako populismus a propaganda.

    Jasně, co se týče kvality, tak to bude asi opravdu odpad, ale přijde mi, že se tu zapomíná na to, že tenhle projekt umožnil obrovskému množství lidí dělat něco co do té doby nebylo možné. A opravte mě, pokud se pletu, ale alternativa s podobně nízkou vstupní bariérou pořád neexistuje, nebo ano?
    7.3.2023 19:25 Aleš Kapica | skóre: 51 | blog: kenyho_stesky | Ostrava
    Rozbalit Rozbalit vše Re: Jaký systém, RTOS, HAL, atd... volit pro menší MCU
    Raketoplán byste tím řídit nechtěl?

    Proč ne? Ty krabičky dnes mají mnohem větší výpočetní výkon než měl počítač Apola 11

    7.3.2023 19:31 Pavel Píša | skóre: 18 | blog: logic
    Rozbalit Rozbalit vše Re: Jaký systém, RTOS, HAL, atd... volit pro menší MCU
    Dívám se na to z pohledu, jak něco rozumného i těm začátečníkům dát a přitom aby to bylo na základu, kdy to pro mě není jen ztráta času. A zároveň jsem přesvědčený, že ten Arduino přístup je natolik škodlivý i pro další rozvoj těch začátečníků, které potom roky drží v doméně stavění lodiček v láhvi, to je strašně omezeném prostředí, kde nakonec je něco i pro ně potřebného napsat extrémně těžké. To je stejné jako vymyslet jak rozjet Doom na Raspberry Pi Pico. Ano, pokud to dělá někdo se zájmem procvičit svoje schopnosti na maximum, tak je to pěkné hobby. Ale pokud k takto obtížnému přístupu svádí právě ty, kteří tu ambici předvést vyždímání maxima z nevyhovujícího HW nemají, tak je to podle mě špatně.

    Plné RPi je pro začátečníky v pořádku, ale i tak mě děsí, jak se lidi se strachem z většího rozhledu i v korporátní sféře a na místech kam nepatří jak teplotními rozsahy, tak ETHERNETem na USB (na čtyřce již OK), drží mnoho z těchto lidí RPi, které jediné umí, a přitom na místech kam rozhodně nepatří a kde nakonec žebrají o pomoc, aby se jim pomohlo a problémy s SD-kartou, CANem, RT neměli. A lze jim již buď říci, že dělají zcela špatná rozhodnutí a nebo jim zkusit trochu pomoci za cenu velkého nasazení a výsledek je stejně napůl.

    Prostě lidé se drží toho, co se naučili prvně a není možné je přesvědčit.

    Ale souhlasím, že ta řešení, která mě technicky připadají lepší mají také určité startovací nároky.

    Mám kolegu, který se držel AVR roky, když to nešlo dále, tak od nás převzal ekosystém nad LPC bez operačního systému. Dotáhl to velmi daleko, ale Webem a dalším až daleko za míru, kdy je rozumné udělat krok dále alespoň k NuttXu, ale není toho pro to zasekání se tím stavěním lodičky v láhvi přispět a ani převzít nic z toho dalšího.

    Toto vidím jako hlavní problém.
    19.3.2023 17:29 PetebLazar | skóre: 33 | blog: l_eonardovo_odhodlani
    Rozbalit Rozbalit vše Re: Jaký systém, RTOS, HAL, atd... volit pro menší MCU
    Na záčátku Raspberry Pi snad byla skupina lidí z UK, několik desítek tisíc liber a kontakty v Broadcomu. Co brání lidem z komunity okolo mikrokontrolérů tento úspěch zopakovat, tentokrát však podle jejich představ?
    9.3.2023 12:55 chytra horakyne
    Rozbalit Rozbalit vše Re: Jaký systém, RTOS, HAL, atd... volit pro menší MCU
    Pokud je ne jen základ, ale i komunitní duch nastavený špatně, tak se člověk akorát udře a nakonec bude rád za to, že nějaký lepší HW dokáže nabídnout zakrytý kompatibilním API se všemi původními omezeními. Prostě se to sejde na tom nejhorším ze všech prvků...
    Ale houbelec. Vis jak by Arduino komunita rvala hrdosti kdyby se dozvedela, ze jejich API zacalo podporovat rizeni jaderek (odpurci jadra si dosadi "rizeni solaru/elektro_aut/..."), infuznich pump atd.? Vsichni by ty nove casti API chteli vyzkouset.

    Komunitni duch jako neco "established" je dezinformace. Komunita bude delat to, co jim IDE/plug&play/HW naserviruje v tom momente, kdy tu danou verzi poprve spusti. Staci zmenit API ( vydat novou verzi IDE/HW/...") a bude okamzite i komunita k nepoznani jina.

    Nezapomen, ze Arduino komunita je "moderni spotrebni" - tedy zadna ultimatni prenositelnost, nybrz "koupim novy HW vydany dneska a k tomu odpovidajici nove verze IDE/kompilatoru/API/...). Easy peasy, jede se dal.

    ... No a nakonec zjistíte, že tam kam ten zbytek Arduina odešel, nezůstalo vůbec nic, zůstává jen POSIXOvé API... a třeba návod jak ho použít.
    Aha, takze zase nic (psala jsem "Hlavne musi clovek prekousnout, ze cilem neni 90+/klidne_100 ale fakt pouze 80/20.").
    9.3.2023 14:47 Pavel Píša | skóre: 18 | blog: logic
    Rozbalit Rozbalit vše Re: Jaký systém, RTOS, HAL, atd... volit pro menší MCU
    No tak pak není problém to API rovnou vyhodit a začít znova, když tvrdíte na kompatibilitě nezáleží.

    Souhlasím, že s tím ideálně jednoduchým startovacím IDE a API to není úplně jednoduché. Ale nad VisualCode jsem viděl různé pěkné nadstavby. jsem k tomu ochotný i přispět, ale zkušenosti s tou obálkou mám malé, neb jí pro sebe nepoužívám.

    Akorát si myslím, že tím, že se odpojí od všech začátečnických blogů, knížek a videí, tak to nepůjde, zároveň možná bude problém se známkou Arduino. Takže Vaše tvrzení si nakonec vlastně protiřečí a je potřeba se nejdříve zbavit lpění na té značce...

    Jinak moc rád pomohu někomu, kdo dá dohromady přechodné knihovny na NuttX, které by přechod vyřešily.

    U NuttXu je pak dos zásadní zrada nastavení konfigurace. Pokud se vybere HW, kde se natvrdo řekne, toto bude PWM, toto jsou piny SPI atd. a taková konfigurace se připraví, tak je to jednoduché. U složitějších procesorů ale nastavení může být pro začátečníky těžké. V tom mají tu startovací výhodu CUBE, HalCoGen atd.. bohužel kromě nastavení se místo obecnějších lnihoven a API snaží nabídnout templáty na vepisování kódu a přenositelnost k jiné firmě třeba přes POSIX je také logicky nezajímá.

    Arduino na Espressif IDF to asi tak nějak řeší...
    6.3.2023 13:22 Lyco | skóre: 14 | blog: Lyco
    Rozbalit Rozbalit vše Re: Jaký systém, RTOS, HAL, atd... volit pro menší MCU
    Na tohle jsem narazil taky. U svého prvního pokusu s Arduinem. Jako naprostý začátečník.

    Banální problém: řízení otáček větráku (4drát Noctua) potenciometrem, ATTiny85. Potřebuju periodicky číst analogovou hodnotu, přepočítat na střídu a generovat PWM s frekvencí cca 25 kHz.

    První dva kroky (přečíst z ADC, přepočítat) nejsou problém. Ale PWM nemá garantovanou frekvenci, jako že vůbec (hardwarově závislá), a na tomhle procesoru to je cca 250 Hz. Takže nemůžu použít zabudovaný analogWrite.

    Fajn, procesor má cca 16 MHz, času fůra, budu generovat PWM softwarově. Jenže ouha, ADC není moc rychlý a konverze mu může trvat až cca 2 ms. Teoreticky to není problém, ADC umí generovat po dokončení konverze přerušení, takže v hlavním vlákně budu PWMovat a v přerušení updatuju parametry (přesná frekvence toho PWM není nutná, malý jitter tolerujeme). Až na to, že čtení z ADC je implementované jako busy loop, takže mě limituje na 1 kHz. Definitivní řešení vyžadovalo nastudování manuálu k procesoru a zápis do konfiguračních registrů časovače (ATTiny má hardwarovou podporu pro PWM se skoro libovolnou frekvencí), což ale rozbije zabudované funkce jako delay().

    Takže co vypadalo jako jednoduchý problém nakonec znamenalo čtení zdrojáků Arduina a studium manuálu, a Arduino mi nepomohlo skoro s ničím. Proč to je tak blbě? Já myslel že Arduino se používá i na věci napájeno z baterií, proč je podpora event-driven programování (kde hlavní smyčka jen uspí procesor a práce se děje v přerušeních a hardwarových periferiích) v podstatě nulová?

    *sadface*
    Příspěvek se rázem stává až o 37,5 % pravdivější, je-li pod ním napsáno reálné jméno.
    6.3.2023 15:00 ehmmm
    Rozbalit Rozbalit vše Re: Jaký systém, RTOS, HAL, atd... volit pro menší MCU
    Jo, takhle nějak to v Arduinu chodí.

    Minimálně pomáha Arduino v tom, že dostaneš aspoň nějaký kompilátor a ládovač. (A hromady knihoven a diskuzí na netu, ze kterých se dá občas vyzobat něco užitečného.)

    Co se týká provozu na baterky, tak dělal jsem dvě takové akce, jednu s atmegou a jednu s stm8 a v obou případech jsem usínal, až když jsem měl úplně hotovo. Vzhledem k tomu, že vlastní činost trvala milisekundy, tak nebylo potřeba během např. AD převodu vypínat jádro. Prostě jsem při probuzení všechno potřebné zapnul, před usnutím všechno vypnul. Je to špatně, ale stačilo to.
    6.3.2023 15:55 Aleš Kapica | skóre: 51 | blog: kenyho_stesky | Ostrava
    Rozbalit Rozbalit vše Re: Jaký systém, RTOS, HAL, atd... volit pro menší MCU
    A hromady knihoven a diskuzí na netu, ze kterých se dá občas vyzobat něco užitečného.

    A přesně o tom to je. Není čas přebírat se hromadama hnoje a hledat co je validní a co ne. To je stejné jako s nejrůznějšími programovacími frameworky. Než řešit jejich problémy, je mnohem jednodušší si to zpracovat sám. Chápu, že někomu, kdo generuje tuny identických věcí šetří čas. Jenže zastarávají tak rychle, že pro mne nemá vůbec smysl se jimi zabývat.

    Jinak pokud jde o téma blogpostu.

    Nejsem student. Pro Pavlovy „krabičky” zajišťuji pouze infrastrukturu, ale to téma rezonuje s tím co si myslím i já. Nevím. Možná ho k sepsání tohoto textu přiměla právě naše debata, kdy jsem žehral na to jak neskutečný oser přináší dlouhodobá údržba nějakého řešení, pokud bylo postaveno na nějakém, ve své době „cool” řešení.

    To, jakým způsobem Pavel nutí studenty aby porozuměli tomu co dělají, je podle mne jediná správná cesta jak vychovat budoucí inženýry, co nebudou k tomu co se válí všude možně po internetu přihazovat další kupky zbytečně matoucích informací, které se s každou další novou verzí proprietárního klikacího softu stávají víc a víc neaktuální.

    Jinak by neuškodilo, kdyby Pavel ten text udělal nějak rozumně strukturovaný. Kdyby mě to nezajímalo, tak bych to zabalil po prvním odstavci.

    7.3.2023 22:19 ehmmm
    Rozbalit Rozbalit vše Re: Jaký systém, RTOS, HAL, atd... volit pro menší MCU
    Ta dlouhodoba udrzba by me zajimala. Kazda doba ma sve cool reseni a je jasne, ze za 10 nebo 20 let uz to reseni proste cool nebude. Jak bys chtel moderne udrzovat 25 let stary system? Ja jsem cca 5 let zpatky musel vzit notebook s Windows 98, doufat, ze v nem zustalo vsechno nainstalovano a funkcni, programator eprom na lpt, hw klic na lpt (k dosovskemu kompilatoru), zasobu rezervnich eprom, pro jistotu i uv mazatko (kdyby me cca 10 pokusu nestacilo) a vyrazil jsem do fabriky upravovat sw ridiciho systemu. Jak bys tohle chtel delat moderne? Jak si predstavujes, ze budes upravovat sw cca v roce 2045 v krabickach instalovanych letos? Neumim si predstavit nic jineho, nez ze nekde vyhrabu disk (nebo image) z roku 2023 a pokusim se ho strcit do neceho, v cem to nabootuje. Fakt by me to zajimalo. Ja jsem jenom prosty clovek, ktery resi pouze aktualni problemy.

    Co se tyka hromad hnoje, tak s trochou zkusenosti dost rychle poznas, ktere reseni si vybrat a ohnout.

    Cele nedorozumeni je nejspis v tom, ze Arduino bylo puvodne mysleno na fakt male 8bitove procesory s minimem pameti, zatimco pan Pisa, tady ma na mysli spis nejake stroje s necim jako operacnim systemem. Uz jenom jim zminovany micropython se na svem webu chlubi tim, ze mu staci "jen" 256 kB flash a 16 kB RAM. Tolik zadne Arduino jeste nedavno nemelo.
    8.3.2023 00:45 Aleš Kapica | skóre: 51 | blog: kenyho_stesky | Ostrava
    Rozbalit Rozbalit vše Re: Jaký systém, RTOS, HAL, atd... volit pro menší MCU

    Když jsem nastoupil v r. 2008, bylo to jak o kouhoutkovi a slepičce. Proto jsem zvolil k dokumentaci MediaWiki. Dnes patří k nejdéle kontinuálně provozovaným wiki které nejsou udržovány nadací WikiMedia, s tím že po poslední aktualizaci na MW 1.39+ je šance že do r. 2026 nemusím nic moc extra řešit.

    Systém OpenIntranet, který jsme s kámošem naprogramovali pro ÚMOb Ostrava-Jih v roce 2003, se rovněž používá dodnes. Byl to vůbec první CMS na světě s podporou WYSIWYG editace stránek. Dodnes překonává sračky typu Drupal či Wordpress svou modularitou a jednoduchostí kódu. A když se tak koukám na ty omalovánky kolem, možná by ho i dnes stálo za to oprášit, ovšem to by musel tenhle krok učinit on, protože jde primárně o jeho kód.

    Zhruba stejně starý je systém, který oprašuje další můj kámoš. A to je fakt peklo. Dlouhé roky k tomu nechtěl nikoho pustit a dnes marně loví duši, která by se toho ujala protože šel jinou cestou než my. Dnes si musí přiznat, že ten jeho návrh byl nedomyšlený. Bohužel alternativa neexistuje. Ne že by ji nebylo možné vytvořit, ale stálo by to ranec.

    Ad notebooky a OS. Mám tady Sony Vaio s aktuální Linuxovou distribucí a normálně jede. I když dnes by už s tak pomalým strojem každý pohrdal. Jo, to není jak v průběhu 90. let, když kámoš nechal něco na kompu renderovat, šel na šichtu, na pivo a když se druhý den vyhajal, byl obrázek hotový. A to si ještě všichni sedali na zadek z toho, jaké má doma dělo.

    Já takové nároky nemám. Mně stačí, když všechno funguje.

    Maličkost, že? Bohužel vděku se nikdo nedočká. Lidi velice rychle parchantí a pokud něco funguje po řadu let, aniž by o tom slyšeli, ztrácí pro ně hodnotu. Ale to mi je fuk. Pro mne je podstatné, že když nastane problém, zpravidla není u mne – protože se nic nemění. Usnadňuje to řešení. Bohužel však narážíme na to, že některé problémy číhají i několik let než vyhřeznou a pak se velice těžko se hledá příčina, protože se za tu dobu změnilo milion věcí a je to jako hledat jehlu v kupce sena. Ty věci jsou už prostě tak sofistikované, že už téměř není s kým se poradit.

    Fakt si nedovedu představit jak to bude vypadat za dalších 20 let, ale jedno vím jistě. Od toho co používám teď se to moc lišit nebude, protože nic lepšího není. Ostatně, Pavel Píša byl ten, který mne k tomu před těmi téměř 15 lety přivedl. Já to jenom během těch prvních 4 let dotáhl do stavu, který nás zbavil stressových situací. Prubířským kamenem byl rok 2020, kdy jsem využil situace, že byly laborky bez studentů k tomu abych tu infrastrukturu připravil na plně vzdálený přístup. Bohužel jsme zase po dvou letech klidu zpět ve starých kolejích, kdy marně hledám časové okno abych si vůbec mohl dovolit něco vyzkoušet a otestovat. Ale mně to nevadí. Mám i jiné projekty co mě baví.

    Ano. Pavel Píša je blázen. Protože chce aby studenti co prolezou jeho kurzy patřili mezi TOP inženýry. A já s ním souhlasím. Na jeho místě bych byl totiž vůči nim mnohem tvrdší. Na můj vkus si je moc hýčká a proto tak těžce nese, když se pak osamostatní a utečou za lepšíma prachama. Má taky svoje mouchy. Někdy je umanutý jako malé děcko a jen velmi těžko připouští, že se hrne do slepé ulice. Ovšem pokud jde o tuhle oblast, moc konkurence nemá. A bohužel ani nástupců.

    Doporučuji v tomto směru k přečtení text Johna Hargravea z r. 1923. Už jsem tady o něm psal v roce 2012. Nebyl to žádný inženýr, ale vizionář a ve své době rovněž nepochopený a nařčený později zcela absurdně z inklinace k fašismu.

    10.3.2023 18:15 ehmmm
    Rozbalit Rozbalit vše Re: Jaký systém, RTOS, HAL, atd... volit pro menší MCU
    No jo, kdyz ja myslel, ze se bavime o jednocipech. A kdyz o tom ted premyslim, tak mi uplne zatrnulo, ze momentalne STM programuru pres nejaky dongle za par dolaru do USB-A. A ze za tech 20 let bude mozna problem ten dongle nekde rozchodit. Problem nebude ani tak v tom USB-A, ale ze nikdo nebude chtit udrzovat ovladac pro budouci operacni system.
    6.3.2023 17:37 trekker.dk | skóre: 72
    Rozbalit Rozbalit vše Re: Jaký systém, RTOS, HAL, atd... volit pro menší MCU
    Za mě - protože nevyhrává to nejlepší, ale to, co okolo sebe nabalí nejvíc nadšenců, co běhají po světě a rozhlašují, jak je to skvělé.

    I když - to se zas musí uznat - způsob, jak jednoduše začít, udělá hodně. A ten Arduino poskytlo v době, kdy alternativou byly drahé vývojové desky nebo pájení drátků ke kabelu do paralelního portu, který počítače už většinou neměly.
    Quando omni flunkus moritati
    6.3.2023 21:45 TechnikTom
    Rozbalit Rozbalit vše Re: Jaký systém, RTOS, HAL, atd... volit pro menší MCU
    No vidíte, v tom je nevýhoda Arduina, že vás nejprve navnadilo k tomu jednoduchému řešení pomocí jeho knihoven. ( Ale je to opravdu jeho chyba? )

    U jiných frameworků by vás to ani nenapadlo a rovnou byste musel jít studovat datasheet daného procesoru a první písmena kódu začal psát možná až po 14 dnech.

    Podle mne, kdo ví, co činí, může pro psaní kódu prostředí Arduina klidně použít a kde je třeba ukročí stranou, kdo neví, tak jednoduché věci také nějak udělá a složité by neudělal nikde.

    Na vyšších procesorech je možné i v Arduinu provozovat multitasking, na ESP32 spouštět kód nezávisle a paralelně na obou jádrech atd.

    Záleží na každém, kde se zastaví nebo jestli zůstane jen u dodávaných knihoven.

    Samozřejmě, že profesionál by měl používat nějaké profi řešení, ale tím profesionálem se nejdřív musí stát.

    A možná právě školství by mohlo některých špatných vlastností knihoven Arduina využít k názorné ukázce, že jednoduché řešení není někdy ideální, má takové a takové nevýhody a problémy a je lépe to udělat jinak a ukázat jak.
    Jendа avatar 8.3.2023 21:57 Jendа | skóre: 78 | blog: Jenda | JO70FB
    Rozbalit Rozbalit vše Re: Jaký systém, RTOS, HAL, atd... volit pro menší MCU
    Ale PWM nemá garantovanou frekvenci, jako že vůbec (hardwarově závislá), a na tomhle procesoru to je cca 250 Hz. Takže nemůžu použít zabudovaný analogWrite.
    Krátké googlení okamžitě odhalí, že to je často řešený problém a frekvenci lze snadno zvýšit zápisem do jednoho registru. TCCR5B = (TCCR5B & B11111000) | B00000010; (na AtMega328; na AtTiny bude ten registr asi jiný, zjistíš v manuálu)
    Takže co vypadalo jako jednoduchý problém nakonec znamenalo čtení zdrojáků Arduina a studium manuálu, a Arduino mi nepomohlo skoro s ničím.
    Protože když se tohle pokusíš frameworkem, tak z toho bude další jaderná elektrárna. Nebo jak by se to mělo řešit? Takhle sis to napsal ručně, stejně jako bys to dělal jinde.
    9.3.2023 12:02 Pavel Píša | skóre: 18 | blog: logic
    Rozbalit Rozbalit vše Re: Jaký systém, RTOS, HAL, atd... volit pro menší MCU
    Pokud má být Arduino trochu obecné API, tak jak je možné že PWM nemá možnost nastavení periody.

    Na NuttXu třeba rovnou ze shellu si natavíte periodu a skupiny PWM příkazem
    pwm -f frequency -c channel1 -d duty
    
    Když si to odladíte z řádky, tak si pak zkopírujete operace do svého kódu z

    https://github.com/apache/nuttx-apps/blob/master/examples/pwm/pwm_main.c

    Z té diskuze jak to vidím, je Arduino ještě mnohem větší tragedie něž jsem si myslel. Ano NuttX v tomto případě má větší o něco overhead, ale pokud se nejedná o výrobu miliónu systému třeba na battery management, kde i dnes se třeba řeší snížení potřeby Flash z 2 kB na 1 kB tak, že to někdo intrukci po instrukci půl roku ladí (náklady na práci >0.7 Mkč) tak nepatrně dražší procesor pro hobistu není problém. I když mu 500 kč ušetří den trápení, tak to má smysl. Auduino podle přístupu odpovídá někde začátku 80.let...

    Jinak to kompletní API PWM takto s multichannel at. možná vypadá složitě, ale tam kde potřebujete synchronně nastavit více výstupu na PMSM nebo krokový motpor tak to je potřeba.

    Jinak my to v pysimCoderu zakryjeme přetažením bločku z knihovny a nastavením frekvence jako parametr. jeho kód je zde

    https://github.com/robertobucher/pysimCoder/blob/master/CodeGen/nuttx/devices/nuttx_PWM.c

    Opět je to složitější, protože se nastavuje kanálů více. Jeden kanál by byl něco jako
    int set_pwm(int chan, int freq, int duty)
      struct pwm_info_s info;
    
      int fd = open(/dev/pwm0, O_RDONLY);
      info.frequency = freq;
      info.channels[0].channel = chan;
      info.channels[0].duty = duty;
      if (CONFIG_PWM_NCHANNELS > 1)
        info.channels[1].channel = -1;
      return ioctl(fd, PWMIOC_SETCHARACTERISTICS,
                  (unsigned long)((uintptr_t) &info));
    
      close fd;
    }
    
    Pokud to pak chce někdo chce používat úplně jako Arduino, tak si tuto funkci může natáhnout z nějaké knihovny... Tu by vlastně nějaký propagátor Arduina mohl napsat, nebylo by to těžké a nešťastníci z tohoto světa by pak mohli své aplikace převést na NuttX a postupně přestat Arduino API používat.

    Jinak příklad je neefektivní, PWM se vyplatí otevřít jednou, frekvence se také nastaví jednou a v dalších se vynechá atd...

    IOCTL přístup má výhodu, že i při kompilaci NuttXu s MMU to bude chodit stejně. A je to vlastně stejně jako na GNU/Linuxu...

    Ale souhlasím, že MBed a ESP-IDF to bbude mít jednodušeji a s menším overheadem. Ale i obecný kód na správu vláken a další bude proti API, které bude dále nepřenositelné. U NuttXu a RTEMSu je často možné až po jednoduchý webový embedded server kód kompilovat s minimálními úpravami jak na BSD. GNU/Linuxu tak RTEMSu a NuttXu....
    Jendа avatar 9.3.2023 12:19 Jendа | skóre: 78 | blog: Jenda | JO70FB
    Rozbalit Rozbalit vše Re: Jaký systém, RTOS, HAL, atd... volit pro menší MCU
    Pokud má být Arduino trochu obecné API, tak jak je možné že PWM nemá možnost nastavení periody.
    Protože někdo vymyslel že je to out of scope. (není to nastavení jednoho registru, ale obecná funkce vyžaduje řešení, že různé procesory s různou taktovací frekvencí budou umět PWM jenom třeba pro nějaké konkrétní frekvence, ne?)
    Ano NuttX v tomto případě má větší o něco overhead
    Arduino neoptimalizuje na overhead (viz naprosto příšerně pomalé funkce digitalWrite), i když teda teď si nemůžou moc vyskakovat protože se zasekli na AtMegách s 32 KiB flash a 2 KiB RAM. Arduino optimalizuje na vstupní bariéru.
    10.3.2023 12:00 trekker.dk | skóre: 72
    Rozbalit Rozbalit vše Re: Jaký systém, RTOS, HAL, atd... volit pro menší MCU
    Problém bych viděl v tom, že pokud se bavíme o Arduinu na Attiny85, tak NuttX je mimo téma, protože ten procesor nepdoporuje. Co vidím na webu, podporují akorát ATmega128 s "port partially completed".

    Quando omni flunkus moritati
    9.3.2023 23:31 Lyco | skóre: 14 | blog: Lyco
    Rozbalit Rozbalit vše Lyco
    Ale PWM nemá garantovanou frekvenci, jako že vůbec (hardwarově závislá), a na tomhle procesoru to je cca 250 Hz. Takže nemůžu použít zabudovaný analogWrite.
    Nebo jak by se to mělo řešit? Takhle sis to napsal ručně, stejně jako bys to dělal jinde.
    Kdybych měl vymýšlet API které by se mi líbilo, tak bych si představoval něco takového: pwm_out(pin, duty_cycle, hz=256, timer=timer0) pwm_out_exact(pin, duty_cycle, hz=256, timer=timer0)

    set pin as PWM output, implemented by the specified hardware timer.

    The pin must be configured for output beforehand, using the pinMode() function.

    By default, it uses timer0 that is also used by delay() and similar functions: this won't cause them to malfunction (as the resulting program stores enough information to calculate necessary delays internally), but can cause decrease the available granularity. If this is an issue, use a dedicated timer.

    The available frequencies are hardware-specific: the pwm_out() function uses the closest available frequency provided by hardware, the pwm_out_exact() fails if the requesrted frequency can't be configured (the failure is reported when the program is compiled: it is guaranteed to never fail at runtime). Officially supported board packages report the closest available frequency in the error message: we encourage independent implementors to do the same.

    Jako určitě to není triviální na naprogramování, ale Arduino není C ani C++, takže můžou do toho jazyka přidat featury které C ani C++ nemá, jako třeba statickou kontrolu platnosti argumentů nebo příčetný makrosystém (tak bych to řešil já: potřebné výpočty by dělalo makro, a to by taky mohlo vrátit chybu etc). Pro každou desku mají podpůrné knihovny, takže technicky by to možné být mělo. Myslím že tohle by bylo přístupné i začátečníkům (díky statické kontrole a rozumným defaultům) a zároveň jim to zpřístupnit i pokročilejší funkce.

    Nebo by aspoň mohli mít v dokumentaci odkaz co hledat v manuálu, jak ty timery používají interně a garantovat co se rozbije a co ne když některý překonfiguruju: když jsem to tehdy řešil, tak informace byly "rozbije se delay() a další podobné" a nikde jsem nenašel konkrétní seznam.
    Arduino neoptimalizuje na overhead [...]. Arduino optimalizuje na vstupní bariéru.
    To není tak docela pravda: Arduino optimalizuje na vstupní bariéru jen pro některá použití, a za cenu toho že každá jen trochu složitější věc je celá na tobě. Viz ten můj příklad: nemohl jsem PWMovat softwarově kvůli blbé implementaci analogRead(). Myslím si, že sofistikovanější systém by mohl být přístupný pro začátečníky a přitom zpřístupnit i pokročilejší funkce hardwaru (tj. být přístupnější pro víc lidí).
    Pokud má být Arduino trochu obecné API, tak jak je možné že PWM nemá možnost nastavení periody.
    Protože někdo vymyslel že je to out of scope.
    No a to právě kritizuju. Scope měl být širší. S hromadou HW komunikuje pomocí PWM, a obvykle ten HW má nějaké požadavky na frekvenci.
    Příspěvek se rázem stává až o 37,5 % pravdivější, je-li pod ním napsáno reálné jméno.
    9.3.2023 23:39 Lyco | skóre: 14 | blog: Lyco
    Rozbalit Rozbalit vše Re: Lyco
    Asi bych měl ještě dodat, že sice tvrdím jak by všechno šlo a jak bych to dělal, ale ve skutečnosti jsem začátečník s názorem, ne že bych byl doopravdy schpný to naprogramovat ¯\_(ツ)_/¯
    Příspěvek se rázem stává až o 37,5 % pravdivější, je-li pod ním napsáno reálné jméno.
    Jendа avatar 9.3.2023 23:45 Jendа | skóre: 78 | blog: Jenda | JO70FB
    Rozbalit Rozbalit vše Re: Lyco
    Arduino není C ani C++
    Tohle čtu už poněkolikáté a pořád nevím co si pod tím představit. Já když kompiluju pro AVRkové Arduino, tak to pouští avr-g++ a nic dalšího. To je jejich bundlované avr-g++ nějak brutálně opatchované? Když jsem si trochu četl jejich základní knihovny, tak mi to taky přišlo jako normální C s trošičkou C++.
    S hromadou HW komunikuje pomocí PWM, a obvykle ten HW má nějaké požadavky na frekvenci.
    Já jsem PWM potřeboval 2x v životě, jednou pro topení, kde jsem navíc potřeboval cyklovat pin mezi HI a TRI, takže jsem si to stejně musel dělat softwarově, a jednou pro větráky; v obou případech byla frekvence buřt (byť těch defaultních 450 Hz nebo kolik bylo pro ty větráky málo, bzučely, tak jsem to zvedl popsaným způsobem; pak jsem se ale na PWM vykašlal a jenom přepínám mezi 12V a 24V větví, protože se mi nechtělo řešit EMI, přechodové jevy u mosfetů a kdo ví co dalšího by to způsobilo).
    Viz ten můj příklad: nemohl jsem PWMovat softwarově kvůli blbé implementaci analogRead(). Myslím si, že sofistikovanější systém by mohl být přístupný pro začátečníky a přitom zpřístupnit i pokročilejší funkce hardwaru (tj. být přístupnější pro víc lidí).
    Jasně, bohužel konkurence co se o tohle snažila taky nebyla moc úspěšná, tak je to asi složitější problém než jak to vypadá.
    10.3.2023 10:25 ehmmm
    Rozbalit Rozbalit vše Re: Lyco
    No jo, kdyz proc se s tim PWM delat tak univerzalne, kdyz na jinech procesorech jsou jine timery a maji jine moznosti.

    Mozne problemy:

    * U nekterych procesoru ruzne timery mohou preklapet ruzne vystupy. Podle toho, jaky potrebujes pin si musis vybrat spravny timer.

    * Nektere timery umoznuji nastavit dve hodnoty, pri kterych se ma preklapet vystup. Nemusi to byt pokazde pri preklopeni timeru.

    * Na to navazuje, ze na jeden timer muzes navazat vic vystupu. Jeden preklapi v casech t0 a t1, druhy treba v t2 a t3.

    * Nektere timery umoznuji brat hodnoty pro PWM pres DMA z RAM. (A do RAM to muzes pres jiny DMA kanal cpat treba z ADC.)

    * Nektere timery neumi nic z toho, pouze vyvolat preruseni.

    * Kdyz budes chtit preklapet vystup pri preruseni, tak zase musis resit, jaky procesor ma jaka preruseni a ktera ma obsazena necim jinym. Schvalne se nekdy podivej, jak je v Arduinu napsana funkce tone(). Vetsina kodu resi, jaky pouzit casovac a jake preruseni. (Ostatne z podobnych duvodu jsou debilni i ty funkce digitalRead()/digitalWrite(), protoze pro jistotu provadi vsechny mozne kontroly za uzivatele. I kdyz tusim, ze zrovna u attiny tyhle kontroly nejsou, protoze tam na ne neni prostor.)

    Proste at to vymyslis jakkoliv, tak stejne se za chvili objevi Lyco2, ktery zacne remcat, ze jeho procesor umi jeste neco jineho. Tak se v Arduinu proste rozhodli, ze skonci u analogRead() a analogWrite() a hotovo.

    A co se tyka dokumentace, tak si vsimni, ze kdyz hledas na webu Arduina popis parametru funkce, tak nezatezuji ctenare ani tim, jakeho typu ty parametry jsou. Tohle je fakt jen pro zacatecniky.

    Jinak Arduino je C++. Pouze nechteli zacatecniky strasit hromadou includu a smyckou v main(). Takze navenek je videt pouze setup() a loop(). Ale vespod je ukryty main(), ktery na zacatku jednou zavola setup() a pak porad dokola vola loop(). (Jenze u toho loopu ma takovou rezii, ze jeden z prvnich kroku programatora amatera je, ze si pise svoji nekonecnou smycku na konci setup().) Ale kdyz kouknes do knihoven, tak je to C++, objekty, dedicnost, pretezovani funkci. Stejne se to nakonec kompiluje gcc/g++.

    Ja osobne chvalim Arduino za to, ze dostanu v praci procesor, zjistim, ze Arduino ho podporuje, napisu do kofigurace Arduina nejake vygooglene URL, Arduino si stahne vsechno, co je potreba pro tento procesor, ja si najdu spravne adresare a vytahnu si z nich, co potrebuju. Nejdriv si samozrejme zkusim naprogramovat blikani ledkou primo v Arduinu, pak bez Arduina a pak uz jedu podle datasheetu.
    10.3.2023 10:55 Pavel Píša | skóre: 18 | blog: logic
    Rozbalit Rozbalit vše Re: Lyco
    Na jednu stranu ano, na druhou stranu nastavení frekvence a duty je základ přenositelný téměř všude. Pod to NuttX API jsme dostali velmi rozdílné periferie a pysimCoder nad tím má jeden společný blok, viz.

    A jasně, frekvence a duty se zaokrouhlí podle schopností daného HW. Ale tím, že se zadávaji v Hz a procentech, tak je to celkem přenositelné. Pokdu má skupina jen jeden zdroj, tak poslední nastavené frekvence změní frekvenci všem, musí se to vědět. Pokud, jako na imxRT může být každé PWM s nezávislou periodou, tak se to využije. V konfiguraci OS jsme pak přidali, že lze nastavit sesynchronizování PWM dohromady a dále lze přes právně nastavená čísla propojů událostí z konfigu nastavit čas spouštění ADC a další, bez čehož složitelnější řízení nelze udělat.

    Takže i nechopnost nabídonout takto jednoduchou funkci nastavení frekvence PWM konzistentně přes těch několik málo Arduino targetů jen potvrzuje i zde uvedená pozorování, že návrh je vrcholem amaterismu a pro mě, že nelze opravit bez změny základu a i API, ale pak nic nezbude.
    10.3.2023 12:49 ehmmm
    Rozbalit Rozbalit vše Re: Lyco
    Evidentne to kazdy vidime jinak.

    Vy si nechte svoje stomegahertzove procesory s tunou pameti a provozujte si na nich prenositelne realtimove posixove systemy a (micro)python. A lette si s infuzni pumpou na Mars.

    Detem a kutilum nechte procesory s mensimi desitkami megahertzu a par kilobajty pameti, at si blikaji ledkama.

    A nekde mezi je skupina, ktera naprogramuje temer cokoliv podle datasheetu a my si zalezeme nekam na root k panu Tisnovskemu do diskuze o Z80 a jak usetrit 4 clocky na ukor 2 bajtu.

    Jen je problem, ze pokud se tim nekdo zivi, tak to obvykle neni nekdo, kdo se naucil programovat az na VS. Obvykle to jsou ty deti s ledkama, ktere se postupne vypracovaly (pod vedenim rodicu, ucitelu a kolegu). Dnes, kdyz temer kazdy matla nejake frontendy a backendy, budme radi za kohokoliv, kdo si chce zablikat.

    Kdyz Vam vadi, ze na to studenti kaslou, tak se jich schvalne zeptejte (ale jestli chcete pravdu, tak az po zkousce nebo zapoctu), proc si vlastne ten Vas predmet vybrali. (A kolik z nich si nekdy samo od sebe blikalo ledkama.) Jednou jsem takhle zkousejicimu na rovinu rekl (dal jsem si pred ustnim par piv, takze jsem mel odvahu), ze protoze se dany semestr nedalo vybrat nic pro me vhodnejsiho. (A naopak predchozi semestr jsem musel nejaky zabavny predmet ozelet. Tenkrat nebyly kredity.)
    10.3.2023 13:31 trekker.dk | skóre: 72
    Rozbalit Rozbalit vše Re: Lyco
    návrh je vrcholem amaterismu
    Já bych viděl problém v tom, že se na věc díváte z pohledu vysokoškolského pedagoga a z pohledu člověka z oboru, přičemž v obou případech správně docházíte k nesprávnému závěru. Pokud já vím, Arduino měla být hračka pro středoškoláky. Toto připojte do počítače, toto nainstalujte, hurá, programujete mikroprocesor. Vzhledem k tomu, jak se ten ekosystém rozvinul, to zjevně plní dobře.

    Nemyslím si, že účelem mělo být do posledního MHz využít výkon toho procesoru nebo dělat složitější věci, které potřebují pokročilejší nastavení toho hardware. Tj. ano, neumí to spoustu věcí, bez kterých si vy nedovedete představit práci s MCU, ale to podle mě ani umět nemá. A pokud se pokusíte to doplnit, vytvoříte akorát horší verzi něčeho, co už existuje, přičemž ztratíte to, co Arduino momentálně přináší, tedy jednoduchost pro začátečníka.
    Quando omni flunkus moritati
    10.3.2023 14:32 Pavel Píša | skóre: 18 | blog: logic
    Rozbalit Rozbalit vše Re: Lyco
    Mě na tom spíš vadí, že i z pohledu dnešní výroby čipů atd. je to nesmysl. Když vidím, jak je vlastně mnohem lepší třeba i 32-bitový návrh jednodušší tak je škoda, že se lidé trápí psaním kompilátoru C pro něco, co pro programování v C nebylo určené. Složitě se musí pracovat s dvojicemi registrů atd... Na vysvětlení principu architektury to také není vhodné atd... Ano v začátku, kdy se šetřil každý tranzistor tak to mělo smysl, ale v dnešní době trochu širší sčítačka problém není.

    Takže je škoda, že i schopné lidi tento přežitek z 80., 90. let blokuje. Přitom ti, co jsou do jeho prostředí lapení mají klapky na očích a brání jim v pokroku dále.

    Myslím si, že Arduino nepatří ani na střední školy. Možná pro kohokoliv na to první zablikání, ale právě tím, že nutí udržovat tuto technologii, SW atd tak i na to je lepší použít cokoliv jiného, co má i prostor na rozvoj.

    Přitom požadavek na udržování kompatability s Arduinem vede k tomu, že i ty procesory s dostatkem výkonu a slušným C-čkem jsou třeba nakonec pro začátečníka nejlépe popsané a přístupné tímto prostředím, které je stahuje dolů a pak překáží.

    A nakonec je mi to i jedno, ať si ti již šťastní s Arduinem s ním hrají, pokud se sním nebudu setkávat tam kam nepatří. Ale potíž je, že mnoho lidí se nechá nachytat a neuvědomuje si, kam to vede.
    10.3.2023 17:48 trekker.dk | skóre: 72
    Rozbalit Rozbalit vše Re: Lyco
    No, ona je tam zase ta vstupní bariéra. A byla - dneska možná jde sehnat za stejnou cenu 8bit a 32bit MCU, ale když jsem kdysi řešil, jak udělat něco, co potřebovalo mikroprocesor, tak vstupní bariérou pro AVR bylo koupit procesor za stovku, nepájivý pole a mít na počítači paralelní port. ARM? Cenově úplně jinde, nemá DIP varianty = nepůjde pájet, vývoj na desce za několik tisíc.

    Lidi, co dneska dělají s 8 bity, jsou podle mě lidi, co se tenkrát k tomu ARMu nedostali a obešli se bez něj. A ti určují, s čím budou dělat - peněženkou.

    Vstupní bariéra podruhé - jednoduchý program, který bude blikat LEDkou, se na AVR dá vymyslet relativně jednoduše. Co jsem nedávno koukal na nějaký článek o bare-metal programování pro ARM/RISC-V, tak - jestli jsem to dobře pochopil - úplný základ napsaný v C má několik desítek řádků a obsluhuje několik přerušení. A nebo se naučit pracovat s nějakým RTOS. Návod, jak program dostat do toho procesoru, měl asi 4 komponenty (vývojové prostředí, definice pro procesor, GDB, OpenOCD.) Za mě o dost komplikovanější.

    Jestli C bylo nebylo určené pro 8 bit procesory, to těžko říct, ale řešit nějakou složitost práce s dvojicemi registrů, to je asi zbytečné. Překladač přeloží správně, já si akorát musim pohlídat vypnutí přerušení. Na vysvětlení principů je podle mě naopak velmi vhodné mít jednoduchý čip, protože čím míň balastu je potřeba na to, aby program něco dělal a dalo se na něm ukázat, co dělá, tím líp. Samozřejmě pokud se bavíme o tom, že se ten člověk pak bude práci s MCU více věnovat - pokud máte časový rozsah 1 semestr a toť vše, tak uznávám, že je to o něčem jiném.

    Důležité je ale to, že ten 8bit ekosystém slouží. Dokud existují aplikace, kterým dostačuje výpočetní výkon toho čipu a periférie, které v něm jsou, tak učit se s dost výrazně odlišným vývojovým prostředím a s čipem, který vyžaduje jiný a složitější způsob práce, znamená náklad navíc. A pokud je cílem mít funkční tu aplikaci, tak je to těžko ospravedlnitelný náklad navíc, pokud člověk nezastává názor, že když to jde lépe, tak se to musí udělat lépe. (A co je to lépe a proč je 32 bitů univerzálně lépe.)
    Quando omni flunkus moritati
    10.3.2023 20:49 Pavel Píša | skóre: 18 | blog: logic
    Rozbalit Rozbalit vše Re: Lyco
    C kompilátor vyřeší možná dvouregistrový, ale nevyřeší že pointer a data ve FLASH a RAM je jiný, to znamená, že const nemůže být ve FLASH nebo musí kompilátor přidávat instrukce na 8051 to pak vedlo k tomu, že pro obecný pointer byly potřeba 3 byte a pro přečtení se v plném režimu volala se rutina od 10+ instrukcích. A nebo se do C kódu dostávala nestandardní klíčová slova DATA, IDATA, CODE atd... Na AVR je tohle o něco lépe, ale vyhovující to, pokud vím není. Dále každé předání intu mezi IRQ a kódem musím hlídat, jestli bude konzistentní a pokud hrozí že ne, přidat zákaz IRQ. Přitom nemám problém s MSP430, to je poctivý 16 bit a data+code musí být do 64k. Když zvětšili adresaci na 1 MB, zvedli ALU z 16 na 20 bitů. Trochu horší je násobení v přerušení, když násobička je jen jako periferie. Ale je to i tak rozumný návrh, ukazatel je možné uložit do jednoho registru, načítá se jednou instrukcí a provést s ním všechny operace.

    Co se týče rozumného čipu/kitu pro nadšence a připojení se na nožičky, tak třeba řada PIC32 (MIPS od Microchipu) měl modely k dostání i v DIL a byly okolo 50 kč. PIC32-PINGUINO-MICRO je za 9 dolarů. Teensy 4.0 (Cortex M7) je také na zapájení v pohodě, ale je dražší, okolo 20 dolarů. Má jak slabší, tak silnější bratříčky. Pro Arduinisty má i výhodu, že na začátek mohou použít toto IDE. Chyba je, že kvůli kompatibilitě s ním a nahráváním je zablokované SWD... Takže i zde Arduino škodí. Pak je ti RISC-V, opět kity do nepájivého pole třeba i s WiFi a Bluetooth za 177 kč (ESP32-C3-DEVKITM-1), ale začínají s tou Xtensou na 80 kč. Pak jsou tu RISC-V čipy od WCH, velký kit za asi 35 USD je i s aplikací popsaný na MCU.cz. Pokud ale půjdete opravdu jen po ceně tak je tu WCH CH32V003 jehož cena je v jednotkách korun.

    Takže alternativ, které jsou o třídu dále jak v architektuře tak poměru výkon/cena než 25 let staré AVR tu je mnoho. Ano nevýhoda je pro mnoho lidí ten výběr. Na druhou stranu se nemusí trápit s tím, že zrovna potřebuji dva UARTy a tak druhý na slabém CPU řeším přes emulaci v IRQ za cenu ztráty poloviny výpočetního výkonu atd... Je zde i to Raspberry Pi Pico z rostoucí popularitou, i když to se mi také moc nelíbí, Cortex-M0 s nestandardní násobičkou, IRQ atd.. Ale i to je o řády lepší než AVR. Problém je jak zajistit tu přenositelnost, když něco zažnu a naučím se na jednom čipu a chci pak přejít na větší nebo naopak menší. Na větší čipy to lze přes NuttX, ale ten má overhead a na ty nejmenší s jednotkami kB paměti se nehodí.

    V každém případě argument že k AVR není ekvivalentní alternativa nepřijímám.
    11.3.2023 01:52 trekker.dk | skóre: 72
    Rozbalit Rozbalit vše Re: Lyco
    Na AVR je tohle o něco lépe, ale vyhovující to, pokud vím není.
    Jediný problém je při přístupu do programové paměti nad 64kB, tj. nad rozsah 16bit pointeru. To se musí řešit nějak extra (32bit datové typy místo pointerů), jinak stačí __attribute__((__progmem__)). A jinak to, že pointer do flash a RAM ukazuje na jiná data, to je holt vlastnost Harvard architektury, když ten čip nemá kompletní mapování všech pamětí do jednoho prostoru. V součtu žádný velký problém.
    Dále každé předání intu mezi IRQ a kódem musím hlídat...
    To bych bral jako obecný problém vždy, když se pracuje s datovým typem delším, než je nativní. Což u 32bit čipů asi moc často nebude, uznávám, ale - upřímně - u toho osmibitu si člověk z větší částí s těmi 8 bity vystačí.
    Co se týče rozumného čipu/kitu pro nadšence a připojení se na nožičky, tak třeba řada PIC32...
    ... podle Wikipedie v dané době neexistovala.
    Takže alternativ, které jsou o třídu dále jak v architektuře tak poměru výkon/cena než 25 let staré AVR tu je mnoho.
    Dneska. Vizte poslední odstavec mého předchozího příspěvku. S MCU dneska taky pracují lidé, kteří se to naučili před dvaceti lety. A dokud jim AVR slouží, tak proč by měli měnit?
    Na druhou stranu se nemusí trápit s tím, že zrovna potřebuji dva UARTy a tak druhý na slabém CPU řeším přes emulaci v IRQ za cenu ztráty poloviny výpočetního výkonu atd...
    Vývoj těch osmibitů se taky nezastavil, takže situace, kdy člověku chybí druhý UART, nastane akorát v případě, že se do ní dotyčný dostane vlastní chybou.
    V každém případě argument že k AVR není ekvivalentní alternativa nepřijímám.
    Reakce výše, alternativy nejsou ekvivalentní, pokud vyžadují náklady na přeškolení.
    Quando omni flunkus moritati
    11.3.2023 10:52 Pavel Píša | skóre: 18 | blog: logic
    Rozbalit Rozbalit vše Re: Lyco
    alternativy nejsou ekvivalentní
    souhlasím, po technické stránce jsou lepší
    pokud vyžadují náklady na přeškolení
    opět souhlasím, ale pokud se jedná o jen trochu vážněji míněný projekt, tak ta znalostní úroveň odpovídající Arduinu je proti jeho ceně zanedbatelná.

    Pokud se jedná i o nejčisčího hobistu jen s trochou zájmu o obor, tak by ho naopak dozvědět se nepatrně více mělo lákat a pak mu to ušetří čas, viz ten potvrzený CONST a další AVR hrůzy.

    Potíž je, že mnoho Arduninistů si především z potřeby kolektivní soudržnosti vzájemně potvrzuje, jak je přestup těžký (což v případě nešťastné volby může být i pravda) a zbytečný a tak tento svůj Stockholmský syndrom závislosti vnucují nováčkům.

    Moje reakce na nadšené vítání Arduino GIGA R1 WiFi je pak především protiváhou na otevření očí těm, kterým Arduino sebere zbytečně čas.

    A ano, zároveň sbírám a hledám cesty, co ostatní nabízí jako alternativy a sám rád i předám to, co znám a považuji za přínosné a třeba i někde přispěji, aby se ta bariéra snížila.

    Pokud by se třeba našla skupinka s Teensy 4.x nebo ESP32 a nebo i kombinacemi všeho možného a chtěla si v rámci LinuxDays nebo i jindy udělat workshop, kdy zkusíme, na čem všem nám najede NuttX nebo si zkusit RTEMS na našich deskách se Zynqem nebo něco podobného, tak rád čas investuji. A můžeme z toho udělat zápis, co se ukáže jako rozumné a co má větší vstupní bariéru.

    Pro studenty pak třeba informace přidám na stránku předmětu Procesorové systémy pro vlastní aplikace.

    Jinak pro mě i tato diskuze byla dobrá, potvrdila mi, že i sami Arduinisti často vidí ta omezení a nekvalitu návrhu, další přímo popisují, že jeho kód je na zvrácení obsahu žaludku atd... Zároveň se objevily jak nápady na RUSTOvá řešení pro MCU tak odkazy na návody na bare metal. Probraly se nápady na RTOS atd...
    11.3.2023 11:12 trekker.dk | skóre: 72
    Rozbalit Rozbalit vše Re: Lyco
    po technické stránce jsou lepší
    Jenže o čistě technické stránce nemluvíme, to je první věc - a druhá je pak to, jestli skutečně jsou univerzálně lepší. Mají lepší technické parametry, to je bez debaty, ale proč jsou lepší? Pro připomenutí: bavíme se o aplikacích, kde osmibit výkonem s rezervou stačí.
    ta znalostní úroveň odpovídající Arduinu je proti jeho ceně zanedbatelná.
    Já mám za to, že už se nebavíme o Arduinu, ale obecně o používání osmibitových MCU.
    viz ten potvrzený CONST a další AVR hrůzy.

    To, čemu vy říkáte potvrzený const a další hrůzy, nejsou žádné hrůzy, ale něco, s čím se dá úplně normálně pracovat. Pro člověka, který to s mikrokontroléry myslí jen trochu vážně, by podle mě skutečně nemělo být problémem zvládnout const type name PROGMEM = value místo const type name = value. (Navíc podle náročnosti projektu na hardware - konkrétně na RAM - ten atribut lze vynechat, gcc zajistí překopírování do paměti při startu programu.)
    nepatrně více mělo lákat a pak mu to ušetří čas
    Skutečně? Lákat budiž. Ušetří čas - pokud ten hobbyista už umí pracovat s AVR procesory a pro jeho následující projekt(y) AVR postačuje, přechod na 32bit je čas čistě ztracený (+/- naučil se něco nového pro radost z toho, že se to naučil, i když to nepotřeboval.)
    Quando omni flunkus moritati
    11.3.2023 11:26 Pavel Píša | skóre: 18 | blog: logic
    Rozbalit Rozbalit vše Re: Lyco
    const type name PROGMEM = value

    To často není jen o toto, všechny funkce, které mají být připravené na příjem alternativního ukazatele buď musí existovat ve dvou variantách nebo je nutné přidat režim kompilátoru, kdy ukazatele rozšíří o další byte atd... Jak uděláte strcmp mezi stringem v PROGMEM a v RAM, jak napíšete obecný map, který mapuje tstrring na něco, když většinou ho chcete plnit CONST stringy, ale někdy i nějakým runtime generovaným. Opravdu myslím, že vím o čem mluvím. Ano, používal jsem roku 8051, ale bylo to proto, že jsme procesor za 1500 kč v roce 1992 do zařízení dát kvůli ceně nemohli. Takže jsem si na hraní 68332 kit kopl, ale v práci se trápil s tím assemblerem IDATA, DATA, XDATA, CODE... někde jsem dokázal kód navrhnout i v C a přenositelný až na x86_64, ale přepsání mnoha dalších funkcionality na ARMy a další stálo roky práce. Na rozdíl od i dnešních zaslepenců jsem to již v době psaní v ASM věděl a spíše nebylo vyhnutí. Přitom jsem znal Z80, i stou by to bylo o řád lepší, ale nebyla v integraci s periferiemi, takže 80552 byla z pohledu cílových aplikací lepší volba.

    Ale tato doba/cela je 20 let pryč. Tak proč se do ní vracet i když trošku s novějším polstrováním.
    11.3.2023 14:15 trekker.dk | skóre: 72
    Rozbalit Rozbalit vše Re: Lyco
    Jak uděláte strcmp mezi stringem v PROGMEM a v RAM
    Podle dokumentace AVR libc bych zkusil strcmp_P(str_in_ram, str_in_progmem);. Ano, v programu pak ta funkce bude ve dvou variantách, ale má 9 instrukcí, takže se to nejspíš přežije.
    Opravdu myslím, že vím o čem mluvím
    To asi nikdo nepochybňuje, ale za mě se konkrétně pro AVR zdá přehnaná ta "hroznost".
    Tak proč se do ní vracet i když trošku s novějším polstrováním.
    Vracet se k osmibitům by - pokud dnes platí, že cena procesorů a dostupnost vývojových prostředků jsou srovnatelné pro osmibit i ARM/RISC-V - smysl nedávalo. Když s tím umíte, tak to používejte. Jenže já jsem v diskuzi nikde nenavrhoval, aby se do té doby někdo vracel. Já tady celou dobu tvrdím jenom to, že existují důvody v ní zůstat - nebo přesněji že neexistují důvody přecházet na něco novějšího (pro ty vývojáře, pro které je ten osmibit dostatečný a vámi zmiňované problémy nepociťují.)
    Quando omni flunkus moritati
    11.3.2023 23:27 Pavel Píša | skóre: 18 | blog: logic
    Rozbalit Rozbalit vše Re: Lyco
    Doufám, že chápete, že to není jen strcmp_P(), 9 instrukcí sem tam je jedno. Ano na nejstarším modelu infúzní pumpy jsem musel mnoho funckí zoptimalizovat, abych získal 16 bytů na dopsání další uživatelsky viditelné funkcionality, vše v ASM, limit 8kB, OTP čip...

    Ale v okamžiku, kdy potřebujete nějaké vyhledávání, mapu, popis komunikačních objektů atd, tak buď musíte všude používat uniony s oběma druhy pointerů a dalšími příznaky na na předání typu nebo se Vám všechny funkce kartézsky nebo i exponenciálně namnoží pro volání s různými kombinacemi pointerů. Takže již dávno vlastně opustíte programovací jazyk C. Nepřenesete knihovny, algoritmy atd... Vzniká ne jen taková malá "hroznost", ale opravdu velká hrůza...

    A takovýchto kousků najdu určitě více...

    Takže ano, pokud existují lidi, pro které již neexistuje možnost opuštění tohoto světa, tak pro ně tu rezervaci/skanzen třeba držet.

    Ale pro nováčky je nutné udělat maximum, aby v něm neuvízli.
    12.3.2023 09:50 trekker.dk | skóre: 72
    Rozbalit Rozbalit vše Re: Lyco
    Já vám nevím, já bych se raději vyhýbal argumentačním faulům o skanzenech a rezervacích. Skanzen je něco, co je zachováno neměnné, přičemž ekosystém osmibitů se nadále rozvíjí. A tím nemyslím jen zvětšování pamětí na čipu.

    S těmi příznaky - jasně, jak jinak. Naštěstí ty pointery jsou - když se s daty omezíte do 64kB, což asi málokdy na takovém čipu potřebujete více - stejně dlouhé, takže podle mě žádná veliká katastrofa. Případně - u AVR - by asi šlo pohrát si s linkerem a používat paměťově mapovaný přístup do flash s omezením na 32kB. Což je podle mě na tento druh čipu a aplikací, pro který je vhodný, furt dost. Jestli je to opuštění jazyka C, to je asi věc názoru, nepřijde mi to tak.
    Ale pro nováčky je nutné udělat maximum, aby v něm neuvízli.
    Určitě dělejte, je to vlastně vaše práce :-) Za mě je nicméně výsledek, kdy nováček začne s osmibity a od té doby si s nimi vystačí, dostatečně dobrý výsledek. (A já si nějaké pokusy s RISC-V dám do TODO - i když asi někam, kde se k tomu nejspíš v životě nedostanu. Kde jsou ty časy, kdy byl čas, že...)
    Quando omni flunkus moritati
    16.3.2023 20:54 trekker.dk | skóre: 72
    Rozbalit Rozbalit vše Re: Lyco
    Tyhle diskuze...

    Pořád trvám na tom, že AVR - zejména to nové - stačí na všechno, co potřebuju. Navíc nemám čas. Pár dní červík hlodá, že bych se třeba jako mohl podívat na něco nového - a mám na cestě malou vývojovou RISC-V desku. Jak se říká - aby vás husa kopla.

    Shodou okolností (asi, on Google má to šmírování promáknuté) jsem pár dní zpátky narazil na video někoho, kdo se pomocí Arduina - asi toho normálního s AVR Atmega 328(?) - pokoušel řídit motor. Odebíralo mu to nějaké proudové špičky, tak je zkoušel řešit tím, že v takovém případě ten motor na chvíli vypne. První pokus ADC na šuntovacím odporu, ale to nestíhalo. Tak si k tomu dostavěl komparátor s OZ a zkoušel tím generovat přerušení - lepší, ale furt ne dobré. Mám za to, že to pak vedlo obvodové řešení mimo ten čip, ale to už jsem to video vypnul. Je to přesně ten případ, kdy by dotyčný měl Arduino opustit, ale když půjde pro radu, kam je zvyklý - na fórum o Arduinu - tak mu tam tohle asi neporadí

    Na druhou stranu si ještě jednou přihřeju polívčičku - pro osmibit jako takový je taková úloha určitě zvládnutelná. To starší AVR Atmega má aspoň zabudovaný ten komparátor. Novější AVR AVR (ten, kdo tohle pojmenování u Microchipu vymyslel, by za trest zasloužil každý den o tom čipu něco hledat na webu) by navíc mělo umět signál z komparátoru zavést do PLD společně s běžným výstupem, tj. realizovat to obvodové řešení přímo v čipu s tím, že CPU nemusí dělat nic. Tahle filozofie "blíž k elektronice" mi u osmibitů přijde trochu výraznější než u velkých čipů typu ARM a RISC-V. Ale možná jsem jenom nepřečetl dost manuálů...
    Quando omni flunkus moritati
    16.3.2023 21:40 Pavel Píša | skóre: 18 | blog: logic
    Rozbalit Rozbalit vše Re: Lyco
    Ano před 30 lety jsme motory řídili z 8051, na IRC do 0.5 MHz stačily jen interní čítače a jeden GAL. Trochu později jednou 80552 nataktovanou na 33 MHz v rozšířené verzi až 6 os se zpětnou vazbou s dvěma obvody na IRC. Standardní verze na 3 osy je dokumentovaná zde. Kód, pokud si ho chcete projít a třeba nasadit, k jednotky je zde gitlab-mars, vlastní regulátor je z knihovny zde mr_pidl.asm". Vše optimalizované tak, aby přesné řízení s polohou na 24bitů nad desetinnou čárkou a 8 vycházelo na násobení 8 bitů x 8 bitů s výsledkem 16. Jediné co 8051 zvládá. Regulační smyčka běžela volitelně na 600 Hz, 800 Hz, 1 kHz, 1.2 kHz. K tomu zařízení komunikovalo přes RS232, displejem a klávesnicí s menu, I2C jak pro příkazy od nadřazené jednotky, tak pro připojení další vzdálené klávesnice.

    Dodnes mnoho těchto jednotek řídí například polohování kapacitorů pod kamerami a měřícími systémy při výstupní kontrole v AVX po celém světe... Ale chápu, že něco takového zajímavé není. Zajímavé je sledovat amatéra, který patlá něco s Arduinem, modlou světa a staví na odiv špatný návrh a hořící součástky.

    Jinak jak to naše s 80552 tak to jeho je z dnešního pohledu jen to stavění lodiček v láhvi na odiv.

    Existuj VESC, ODrive, SimpleFOC nebo naše PXMC. To naše bylo dávno před těmi ostatními a nabízené jako open-source ale v našich vodách to nemělo smysl, protože místní specialitou je dělat věci špatně a až když je zle, tak prosit, abych to jejich řešení zachraňoval...

    Přitom jsem se místním bastlířům pokoušel přiblížit, jak řízení dělat i na RaspberryPi trochu lépe. Viz mé přednášky. Ale jedna firma, která na rozdíl od nás RaspberryPi řešení prodává jako průmyslová PLC, tak při nabídce zdarma si s nimi popovídat a třeba jim ukázat, jak použít RT jádro Linuxu a mít alespoň trochu garanci toho, že produkt v předpokládaném čase něco udělá, tak mi vysvětlila, že je moje přednášky ani setkání nezajímají, protože ve firmě nikoho, kdo jádru alespoň trochu rozumí, nemají...

    Takže opravdu to nemá smysl. Když se bavíme a vyměňujeme zkušenosti s profesorem ze Švýcarska, který je hluboce v důchodovém věku, tak když jsem mu jen navrhl že by mohl pysimCoder zkusit s NuttXem, tak do toho měl chuť, pomohl jsem trochu s Makefilem a za chvíli již hlásil výsledky, když něco v NuttXu nechodilo, poslal patche správcům, zkouší nové, je schopný i s minimem něco rozumně a přemostitelně navrhnout atd... Prostě má to smysl...

    Tak doufám, že i zde se najdou sice mlčící jedinci, kteří vezmou 30 let zkušeností v potaz a jasně budu rád, pokud se podaří nalézt kombinace HW a SW, které budou rozumné a přitom budou začátečníkům vyhovovat. A souhlasím, že to není úplně jednoduché.
    17.3.2023 11:27 ehmmm
    Rozbalit Rozbalit vše Re: Lyco
    Ty brdo, rekl bych ze v tom assembleru jste si docela uzil. Ten algoritmus pro PID bych si rad precetl v necem citelnejsim. Obcas se v nekterych PIDech objevi zajimave napady.

    Ta firma s PLC na RaspberryPi by me zajimala. Dokazu si predstavit, ze si to vyhodnotili, jako ze to pro ne neni tak podstatne. Svet PLC je velmi siroky. Nekdo je nervozni, kdyz ma scan time (cas, kdy se projde cely zebrik dokola) pres 1 milisekundu a nekdo ani nevi, jaky scan time ma. A nekdo nekdy ma i sekundu (!!!) a i tak se to proda, kdyz to ma na sobe logo Siemens.

    Profesor ze Svycarska ma cas a chut a asi nemusi resit nabidky, objednavky, dodavatele, terminy, predani, fakturaci, platit dane, bat se kontrol... (A ani nema nikoho takoveho nad sebou.)
    17.3.2023 12:13 Pavel Píša | skóre: 18 | blog: logic
    Rozbalit Rozbalit vše Re: Lyco
    Ty brdo, rekl bych ze v tom assembleru jste si docela uzil.
    Ano a i když jsem to psal, tak jsem věděl, že je to špatně. A dnes již není žádný ekonomický ani jiný důvod to takto špatně dělat.

    Uvědomte si, že opravdu vím, co říkám, mars2 má podle cloc Assembly 15689 řádek. Sdílená knihovna pblib 12288. Celé naše projekty na SW51 131072 řádek assembly a 7120 comment a 14379 blank.

    Jinak motion control knihovnu i sPIDy a vším jsem Vám v C nabídl mnoha verzích. Ta naše je to PXMC, ekvivalent toho 8051 ASM je zde /pxmc_core/pxmc_con_pid.c, verze s nelinearitou pxmc_core/pxmc_con_pidnl.c, to je ekvivalent té další v ASM. A ano i na 32 mc68372 jsem nakonec core algorimnu musel přepsat do ASM, když jsem chtěl z jedné osy přejít na 8. Přece jenom je to CPU s 21 MHz hodinami, 16-bit externí sběrnicí a jen dobře volené 16-bit kódované instrukce se vykonají ve dvou cyklech. Takže jsem z CISCové sady, kde to šlo, vybíral vlastně RISCové instrukce pxmc_bsp/mo_cpu1/mo_fastreg.S regulátor a generování ramp pxmc_bsp/mo_cpu1/mo_fastgen1.S. Knihovna C 11305, halvičky 5044, ASM 1090, celý projekt s nataženými submoduly 50535 řádek (bez komentářů a blanků atd..). Řídí třídění třídění kamínků v precose, naskenoval Langweilův model Prahy, oživil a řídí již asi 20 let studentům robota BOSCH SR 450, kterého vyhodily ze ŠkodaAuto, protože s původní jednotkou nikdy spolehlivě nechodil, po tom, co odkráčely do křemíkového nebe jednotky ke kanadským robotům CRS, tak jednotky určené původně pro 3x slabší motory převzaly jejich funkci a další desetiletí pracují.

    Josu to již nějaké argumenty, abyste mi věřil trochu více než třeba panu Martinu Malému, který odsoudil před lety naší výuku základu činnosti počítače podle světových učebnic a prohlásil, že máme učit s AVR nebo 8080. Přitom na nich vysvětlit princip přístupu k paměti, adresování, integer operací je o řád složitější.

    Pan profesor ze Švýcarska nemá čas a potřebu stavět lodě v láhvi a pozorovat hoření bastlů, přispěl k několika systémům podobným Matlabu/Simulinku, je dvorním poradcem firem Maxon a Faulhaber atd... A také ve svém okolí bojuje s novou generací lenochů, kteří do laboratoří místo jím a komunitou vybudovaných znalostí a know how chtějí Windows only řešení za 100x více financí na kterém ty vnitřní principy a skladbu nepůjde předvést, je tajná... Zároveň musí pro své udržení psát články, podávat granty atd... Na blbá řešení nemá čas a není mentálně zaseknutý před 40 lety, i když v té době studoval na ETH Zurrich... Takže asi tak...

    Jinak ano, maximální latence na Linuxovém jádře bez fully-preemptive podpory je reálně unbounded. Užijte si taková PLC na RaspberryPi. Ono většinou je běžné jádro na propustnost a průměrné latence trochu lepší. Jen za určité kombinace na síti, připojení USB, přepnutí grafického režimu atd.. tam mohou být i sekundy... My se znašíme na všech výše uvedených systémech i na Linuxu řídit motory na milisekundě nebo lépe. LX_RoCoN (stejné 20 let používané PXMC) jede na 4kHz proudové až polohové řízení a přepočty a akumulaci mezi D,Q a ABC jeden synchronně s PWM na 20 kHz na koprocesoru v FPGA. Ale má to vlastně smysl tady někomu vysvětlovat. Snad těm, co mlčí a ví o této diskuzi své.

    Jinak to co zde odkazuji, je zlomek mých projektů, na základě kterých předávám zkušenosti, zde je přehled z těch otevřených, které jsou registrované na OpenHub.
    21.3.2023 18:59 Radovan
    Rozbalit Rozbalit vše Re: Lyco
    "s novou generací lenochů, kteří do laboratoří místo jím a komunitou vybudovaných znalostí a know how chtějí Windows only řešení za 100x více financí"
    Není to i tím, že si (něco jako) ty osmibity nikdy nezkusili?

    Nového psa starým kouskům nenaučíš ;-)
    21.3.2023 20:24 PetebLazar | skóre: 33 | blog: l_eonardovo_odhodlani
    Rozbalit Rozbalit vše Re: Lyco
    Co si vzpomínám tak začátkem devadesátek dožíval ve výuce TEMS80 a někdy o půlky devadesátek jí převzala otěže 8051 a podle aktuálního studijního programu to vypadá že je drží dodnes. Aspoň co se týká FS ČVUT.
    21.3.2023 20:48 trekker.dk | skóre: 72
    Rozbalit Rozbalit vše Re: Lyco
    Jestli jde o základy práce s MCU pro úplné začátečníky a strojaře k tomu - a dělají na tom v C - tak bych to tak katastrofálně neviděl. Pokud používají assembler, tak bych pro začátečníky volil radši něco jiného
    Quando omni flunkus moritati
    21.3.2023 21:05 PetebLazar | skóre: 33 | blog: l_eonardovo_odhodlani
    Rozbalit Rozbalit vše Re: Lyco
    Vypadá to, že 8051 se drží na i některých SPŠ/SŠE, mají to v osnovách i včetně assembleru.
    21.3.2023 23:45 PetebLazar | skóre: 33 | blog: l_eonardovo_odhodlani
    Rozbalit Rozbalit vše Re: Lyco
    Osmibity by neměly podceňovat a to ani v minulosti, kdy se to některým málem stane osudným.
    22.3.2023 14:05 Pavel Píša | skóre: 18 | blog: logic
    Rozbalit Rozbalit vše Re: Lyco
    Na 8051 nelze učit programování v jazyce C, tedy tom který je standardizovaný alespoň normou ANSI. velké množství běžných konstrukcí bez speciálních klíčových slov buď selže úplně (rekurze atd...), nebo znamená velmi specifické nastavení, kdy se z procesoru spíš již stává interpreter sekvencí rozšířených instrukcí. Opravdu jsem to zkoumal hodně a i něco oprav na SDDC v hloubce do mainline dostal. Z kódu mých zgeneralizovaných AVL stromů, kdy ty core funkce mají na x86 desítky instrukcí, tak na 8051 i po maximálním zjednodušení vznikly kódy zabírající 18 kB z toho 64 kB adresního prostoru. Přitom celé, o co se jednalo byla jedna implementace insertu do AVL stromu, iterace a odebírání. Ano dokázal jsem napsat celý systém uLAN včetně objektové komunikace, datové introspekce, zobrazení ve styly TurboVisions na displejích 4x 20 znaků se zobrazením hodnot ze vzdálených jednotek atd. i na 8051 nejdříve v ASM a pak ponechat část paketového driveru v ASM a nad tím napsat C rozhraní a objektovou komunikaci tak, že stejný kód lze zkompilovat a pustit přes open, read, write, ioctl, close proti plnohodnotnému driveru na Linux kernel, Windows i jeho system-less variantě na malé ARMy. Ale ten kód psát tak, aby byl takto přenositelný byl umělecký výkon, v některých částech na 8051 řešený tak, že místo možnosti napojení na více instací driveru se přes různá makra plnohodnotné funkce nahrazovaly variantami, kde některé parametry chyběly, chovaly se jinak, je potřeba hromada defines pro XDATA a další, která pak při kompilaci jazykem C, nikoliv jazykem MCU 8051 se syntaxí podobnou C, byla definovaná jako prázdná... Opravdu chcete od strojařů a jiných takovéto výkony a pokud je naučíte jazyk AVR nebo 8051 se syntaxí podobnou C, tak je velké riziko, že v jazyce C podle ANSI nedokáží již při míře Vámi předvedeného lpění na jazyku AVR již nikdy nic napsat. Takže učit jazyk 8051 nebo AVR s C syntaxí je spíše, za hranici toho blikání LEDkou opravdu velmi nebezpečné... Ale jasně, každý má své oblíbené jazyky. Je pak škoda, že často učí další generaci lidé, kteří si větší množství cílových platforem, přenositelnost a desetiletou údržbu aplikací nevyzkoušeli. Je potřeba u nové generace ten rozhled zajistit.
    23.3.2023 01:20 trekker.dk | skóre: 72
    Rozbalit Rozbalit vše Re: Lyco
    U strojařů je největší riziko hlavně v tom, že po opuštění školy na MCU nesáhnou, takže...

    Zbylá rizika stále přeháníte, žádný "AVR jazyk" neexistuje a C kód pro AVR lze překládat s -Wall bez jediného varovného hlášení, takže bych neřekl, že by to s tím "podle ANSI" bylo tak hrozné, jak tady trvale tlačíte.
    Quando omni flunkus moritati
    17.3.2023 21:07 trekker.dk | skóre: 72
    Rozbalit Rozbalit vše Re: Lyco
    Ano před 30 lety jsme motory řídili z 8051...
    Řešíme otázku, proč jsou 32bit procesory univerzálně lepší než osmibity. Vaše odpověď je - už poněkolikáté - že jste před třiceti lety něco dělal nějak. Ano, možná to byl úctyhodný výkon, ale v kontextu diskuze v době dnešní, kdy ty osmibity jsou pětadvacetkrát rychlejší jen na počtu instrukcí za sekundu, velmi irelevantní.

    Ten podsouvající výpad o sledování amatérů, tím jste to také moc nevylepšil. O tom videu jsem se zmínil, protože jsem na něj narazil náhodou a bylo k diskuzi relevantní. Viděl jsem z něj asi dvě minuty - v podstatě tolik času, kdy bylo zjevné, že se problémy očekávatelné u řešení s Arduinem skutečně objevily.

    No a ten konec... argument autoritou. "Proč jsou ty procesory univerzálně lepší?" "Protože jsem to řekl a mám 30 let zkušeností." To, prosím, není argument, to je pouze ukázka jeho absence. 30 let zkušeností vám jistě nikdo upírat nebude, ale ta didaktická stránka se vám tedy nepovedla ani za mák.
    Josu to již nějaké argumenty, abyste mi věřil trochu více než třeba panu Martinu Malému, který odsoudil před lety naší výuku základu činnosti počítače podle světových učebnic a prohlásil, že máme učit s AVR nebo 8080. Přitom na nich vysvětlit princip přístupu k paměti, adresování, integer operací je o řád složitější.

    Jak se liší princip integer operací u různě velikých integerů? (Odpovím sám: nijak.) Přístup k paměti je v principu také stejný a totéž adresování, pokud se tedy úmyslně nefixujete na to, že jedna paměť není mapována do jiné - což je implementační detail a na principu, o které mluvíte, nemění nic. Jinak vaše argumenty jsou pořád o tom samém. Dělali jsme toto a tamto a na osmibitu to bylo špatně, tak jsou vždycky špatně.
    Ale má to vlastně smysl tady někomu vysvětlovat. Snad těm, co mlčí a ví o této diskuzi své.
    Těm, co s vámi nekriticky souhlasí v tvrzení, že pokud existují nasazení, která osmibitem skutečně neuřídíte, tak pro všechna existující nasazení platí, že ne-osmibit je univerzálně lepší. S tvrzením, které jste nebyl schopen dokázat lépe než "já to říkám"
    Quando omni flunkus moritati
    17.3.2023 23:09 Pavel Píša | skóre: 18 | blog: logic
    Rozbalit Rozbalit vše Re: Lyco
    Zaprvé dokládám, o kolik je psaní složitější na architektury nepřipravené pro jazyky typu C. Ano u 8051 je to opravdu tragedie, kdy nejde rozumně vytvořit stack pro lokální proměnné, předává se tedy přes pevné pozice v paměti atd, pak se složitě analýzou kódu řeší, kde nemůže dojít k rekurzi a co se může překrýt. Pokud je u některých funkcí rekurze nutná, tak ten kód pak vypadá úplně hrozně a je 10x pomalejší... Ano, i v době, kdy jsem 8051 opustil, tak jsem zkusil párkrát SDCC pomoci a něco do mainline spíše ze sportu poslal.

    Souhlasím, že AVR je na tom o hodně lépe, ale předvedl jsem na progmem že tam ty problémy stejně, sice na méně místech, zůstávají. Opět procesor, který nemá k dispozici ALU a běžné registry alespoň tak široké, aby mohly nabídnout plnou délku adresy pro pokrytí celého adresního prostoru, jsou problém. Řešení přes segmenty nebo stránkování je opět zlo, které se mstí, to byl problém 8086, Intel se nepoučil a místo 64-bitů pak vymyslel i v 32-módu 36 bitů fyzické adresy. Opět zlo, které zkomplikovalo jádro Linuxu a prolezlo ho kmap, highmem atd... AVR není až tak hrozné, má ofsetovou adresaci proti 16-bit registru. Ale nemá sečtení dvou 16-bit dvojregistrů. Má alespoň jejich posun o, myslím, 6-bitů konstantu. Velká AVR pak mají RAMPX, RAMPY, RAMPZ, to je návrhově katastrofa a je jasné, kam to povede v kompilátoru... kolik chytrých lidí tím zbytečně tráví čas... MUL 8x8 do 16 bitů, jako ta nešťastná 8051 z 80. let. Přitom výsledek, pokud se nepletu nejde přičíst jednou instrukcí k dvojregistru. Teď ty různé typy volání atd...

    Nemám problém s MSP430, když má součet všech pamětí do 64k, tak je to pěkný 16 bitový procesor napomezí RISC a CISC. Když je prostor větší do 1 MB, tak rozšířili registry na 20 bitů a široké ukládání se pak provádí do 32 bitů v paměti. Ano násobení je na ní trochu tragedie, především, když je potřeba použít násobičku z přerušení i mimo, ale beru to jako cenu extra nízkopříkonovému návrhu poplatnému koncepcí době vzniku.

    Stejně tak AVR32 byl rozumný krok vpřed, to nevydrželo konkurenci ARMu.

    Ale AVR je překonaná věc. Přístup k ukazateli v paměti na dvě instrukce, sčítání intů také na dvě instrukce, ano proti 8051, kde je to mezi páry registrů na 6-sintrukcí, je to pokrok. Místo jednoho DPTR tři je také pokrok. Ale z dnešního pohledu zlo. Dále typický způsob programování opět vede špatným návykům a knihovny, jak popisují jiní i zde, jsou opět nepoužitelné jako vzor dobré praxe.

    Jinak netvrdím, že mnoho i modernějších systémů s ARMem nemá potíže. Ale je šance se na nich nezkazit a postoupit dopředu. Ale AVR za horizont blikání LEDkou není na místě. Pak člověk vidí ty shieldy, kde periferie s WiFi, Ethernetem nebo čímkoliv jiným má řádově větší výkon, než ta programovatelná část, ale jsou často dodané se zavařeným kódem a bez možnosti úprav. I když zase může mít smysl mít jednoduchý MCU na časově deterministickou část a třeba silnější na komunikaci. Ale to, co je k té komunikaci se má naprogramovat tam a ne webový server na AVR, který používá ARM jako implementaci TCP/IP stacku...

    Toto je můj názor, máte určitě právo na svůj, ale byl bych rád, aby se ten můj dostal k těm, kdo ještě mají pružnost se rozhodovat o své budoucnosti a celkově o směřování řešení třeba ve firmách, klubech atd... Ale ve výše uvedeném se opravdu již opakuji a vy zase prohlásíte, že to není argument. takže budu rád, pokud to podložíte nějakými fakty a třeba ukážete jak vypadají vaše projekty, jejich udržitelnost a přenositelnost znalostí v rozsahu let atd... Sám jsem s kůží i návody nápovědou atd. šel na trh.

    Co se pak týče výuky, tak nevím o známější světové univerzitě (MIT, Berkley, ...), která by s AVR v posledních 20 letech architektury počítačů učila. V 90. letech špička učila na m68k, někdo na x86, pak jsem si procházel kurzy na ARMu, stálicí se stal pro jednoduchost a i rozšířenost v reálných aplikacích MIPS, pak ho ARM opět v aplikacích předběhl, dnes většina přechází na RISC-V.
    19.3.2023 13:25 trekker.dk | skóre: 72
    Rozbalit Rozbalit vše Re: Lyco
    Zaprvé dokládám, o kolik je psaní složitější na architektury nepřipravené pro jazyky typu C ... předvedl jsem na progmem že tam ty problémy stejně, sice na méně místech, zůstávají.
    Jenže to je jenom důsledek (vaší) volby. Jazyk C lze na AVR používat zcela plnohodnotně bez jakýchkoliv specialit. Ano, důsledkem bude, že se mi data + const + stack musí vejít do RAM, ale to (že bez přizpůsobení kódu mimo čistý jazyk C často nelze využít všechno, co procesor nabízí) není výlučná vlastnost osmibitů. Kdyby vše šlo napsat v C, nemusí být v kernelu kusy kódu v assembleru. Tj. progmem se mě týká až ve chvíli, kdy chci možnosti toho čipu využít nad to, co mi nabízí C.
    Intel se nepoučil a místo 64-bitů pak vymyslel i v 32-módu 36 bitů fyzické adresy.
    Vzhledem k tomu, jak dlouho poté ještě trvalo vytvořit skutečný 64bit x86 procesor, se jim úplně nedivím.
    AVR není až tak hrozné, má ofsetovou adresaci proti 16-bit registru. Ale nemá sečtení dvou 16-bit dvojregistrů. Má alespoň...
    No ale to přece není relevantní. Jasně, nutně to vede na rozdělení jedné operace na více instrukcí, ale to už je holt starost pro autora překladače - stejně jako když na 32 bit architektuře budu sčítat 64 bit proměnné. Jako programátor bych pak vždycky měl mít na paměti, s jakým procesorem pracuju a jestli není data potřeba chránit proti souběžnému přístupu z více míst, když je něco rozpracované - to taky platí pro MCU i pro velké procesory.

    Tedy v součtu bych neřekl, že dokládáte - podle mě pouze tvrdíte.
    Stejně tak AVR32 byl rozumný krok vpřed, to nevydrželo konkurenci ARMu.
    Nesouhlas. V teoretické rovině možná krok vpřed, v praktické rovině to nemělo moc šancí na úspěch právě kvůli zavedené konkurenci ARMu a nejspíš si to nikdy nevydělalo aspoň na náklady na vývoj (zajímalo by mě, jaký vliv to pak mělo na to, že Atmel skončil jako majetek Microchipu)
    Ale AVR za horizont blikání LEDkou není na místě.
    To jsme pořád u toho, k čemu bych se rád dobral: proč? Existuje pro toto tvrzení nějaký podklad kromě toho, že kód (který programátor v C ani nevidí) musí některé věci dělat ve dvou cyklech místo jednoho?
    Pak člověk vidí ty shieldy, kde periferie s WiFi, Ethernetem nebo čímkoliv jiným má řádově větší výkon, než ta programovatelná část...
    To bych taky neviděl jako argument proti osmibitu. Jasně, pokud si můžu vybrat jiný čip, který příslušnou periferii má integrovanou, tak je to určitě vhodné zvážit. Ale není to přímo argument proti tomu osmibitu. Grafická karta má také vyšší výkon než CPU (pro grafické operace) a přesto tu netvrdíte, že by všichni měli stavět počítače z grafických čipů.

    Mít periferie s otevřeným firmwarem by bylo hezké všeobecně, ale to se dostáváme k jinému tématu.
    Ale ve výše uvedeném se opravdu již opakuji a vy zase prohlásíte, že to není argument.
    Ano, když se opakujete, tak já se opakuji. "Důkazní břemeno" pro tvrzení nicméně zůstává na vás.
    Co se pak týče výuky, tak nevím o známější světové univerzitě (MIT, Berkley, ...), která by s AVR v posledních 20 letech architektury počítačů učila.
    Co střední školy? Začít u vysokoškoláků u čipů, které na pochopení potřebují vysokoškolské vzdělání, to bych i bral, tam pracujete s nadprůměrnými studenty. Ale nedokazoval bych na tom, že je něco obecně lepší.

    ---
    Proč má začátečník řešit, jestli je stack pointer 8-bitů, 16-bitů, potřeba řešit typy volání atd.

    To si nejsem jistý, proč se mě ptáte - podle mě nemá a neměl by, to za něj vyřeší překladač. Pokud nebudu pracovat jen v assembleru samozřejmě, ale pak je požadavek na znalost hardware očekávatelný. Samozřejmě pokud to neměl být nějaký důkaz kruhem, že jediná správná velikost stack pointeru je 32 bitů

    S typy volání teď bez kontextu nevím, co máte na mysli. Ten odkaz na volby překladače nechápu, gcc pro RISC-V a pro ARM žádné nemá? Jako že si nemusím vybírat, pro jaký čip překládám? To se mi moc nezdá. To, že pro překladač existují automatické testy, které mají podchytit chyby při vývoji, bych považoval za plus a ne za něco, co by se mělo vytýkat nebo považovat za důkaz, že je něco špatně.

    Analogie: tady jsou různé testy podivností, aby se Linux udržel funkční. (Odkaz na testovací farmy pro linuxové jádro, si domyslete.)

    ---
    A až teď jsem si všiml, že mi vlastně podstrkujete toto prohlášení, to jsem nikde neřekl.
    Je to zjednodušené znění, ale vyplývá mi to z toho, že AVR je dobré akorát na blikání LED a víc nic - a podobných tvrzení z předchozí diskuze. A z následujícího také:
    Já prohlašuji, že pro moderní CPU uvažované do nových aplikací je zásadním požadavkem sada aritmeticko-logických operací (alespoň sčítání, odčítání, logické operace a bitové posuny) mezi dvěma registry a šířka základních registrů taková, aby odpovídala alespoň délce obecného ukazatele, který je schopný adresovat veškerý prostor pro instrukce a data v paměti, stejně jako ukazovat na libovolnou funkci v adresním prostoru. Dále by měla architektura umožnit načtení a uložení registru (stále alespoň o délce obecného ukazatele) na jednu instrukci.
    A na to nezbývá než se zeptat proč. Proč je tak zásadní mít tak velké registry, aby se do nich vešel ukazatel, aby to rozhodlo o tom, jestli daný čip použít nebo ne.

    Protože - hledal jsem narychlo - třeba to řízení motorů, které zmiňujete, jsem pro AVR našel. BLDC motor, sensorless řízení za využití periferií plně dostupných v tom čipu (kromě jednoho OZ u "DA" varianty toho AVR.) Jestli dobře koukám, tak jsou zapotřebí nějaké krátké obsluhy přerušení, ale základ běží přímo v hardware (3 fáze, active freewheeling.) Pro ten RISC-V, po kterém koukám, jsem nenašel nic. Teoreticky by podle datasheetu měl něco takového umět, prakticky mi přijde, že s omezeními a na první pohled nevidím, jak by se řešil ten freewheeling (ale datasheet psal někdo, kdo neumí anglicky a dobře zná ten čip, takže to podle toho vypadá - a tedy těžko říct s jistotou.)

    Proč bych měl při dalším návrhu upřednostit, že ten RISC-V má [ požadavky, které popisujete výše ] a hledat, jestli s ním půjde vyřešit danou úlohu, místo toho, že na AVR vím, že úlohu půjde vyřešit a krátké (oproti pointeru) registry nejsou na překážku...
    Quando omni flunkus moritati
    20.3.2023 10:34 plostenka | blog: plstnk
    Rozbalit Rozbalit vše Re: Lyco
    Já prohlašuji, že pro moderní CPU uvažované do nových aplikací je zásadním požadavkem sada aritmeticko-logických operací (alespoň sčítání, odčítání, logické operace a bitové posuny) mezi dvěma registry a šířka základních registrů taková, aby odpovídala alespoň délce obecného ukazatele, který je schopný adresovat veškerý prostor pro instrukce a data v paměti, stejně jako ukazovat na libovolnou funkci v adresním prostoru. Dále by měla architektura umožnit načtení a uložení registru (stále alespoň o délce obecného ukazatele) na jednu instrukci.
    A na to nezbývá než se zeptat proč. Proč je tak zásadní mít tak velké registry, aby se do nich vešel ukazatel, aby to rozhodlo o tom, jestli daný čip použít nebo ne.
    Mit adresovani a obecne adresni aritmetiku na jednu instrukci je naprosto zasadni vyhoda - od rychlosti, pres usporu bytu a IO, az po subjektivni "eleganci" reseni.

    Base+offset register pair, nebo PAE a podobne triky sice funguji, ale je to hnus fialovej.
    21.3.2023 09:59 trekker.dk | skóre: 72
    Rozbalit Rozbalit vše Re: Lyco
    Výhoda to určitě je a od nějakého rozsahu požadovaného výkonu to způsobí, že ten osmibit přestane stačit. Jenže - vizte v předchozí diskuzi - to jsou případy, o kterých se nebavím. Mluvím striktně o případech, kdy ten osmibit výkonem na požadovanou aplikací stačí.
    Quando omni flunkus moritati
    21.3.2023 10:43 plostenka | blog: plstnk
    Rozbalit Rozbalit vše Re: Lyco
    Velikost registru prece nesouvisi s vykonem - osmibit i 64bit na 1 MHz budou mit stejny vykon. Pokud staci 256 B adresni prostor, nebo 256 B text + 256 B data, tak prosim, osmibit je tak akorat a nic proti. Ovsem drzet se zuby nehty osmibitu, i za cenu errorprone mapovani highmem pameti, mi prijde v dnesni dobe zbytecne nad ramec akademickeho cviceni.
    21.3.2023 11:01 trekker.dk | skóre: 72
    Rozbalit Rozbalit vše Re: Lyco
    Pokud ve vašem předchozím příspěvku bylo adresování a adresní aritmetika na jednu instrukci naprosto zásadní výhodou, pak velikost registru (ze které vyplývá ne/možnost takovou aritmetiku mít) nutně musí souviset s výkonem. Užitečným výkonem samozřejmě.
    errorprone mapovani highmem pameti
    Jestliže chcete tvrdit, že mapování highmem paměti - pokud tímto pojmem označujete adresu uloženou v páru registrů, což je jeho ohýbání do krajnosti - je error prone, bylo by dobré ukázat, jak je to k těm chybám náchylné. Podle mě totiž není, C kód a jeho programátor zcela ignorují, jak a kde jsou adresy uloženy - to je úloha pro překladač.

    A v assembleru, kdybych tedy chtěl vybočit z používání C, mám registry pojmenované rL a rH, což taky není nijak záludné a náchylné k záměně.
    Quando omni flunkus moritati
    21.3.2023 13:32 plostenka | blog: plstnk
    Rozbalit Rozbalit vše Re: Lyco
    Pokud ve vašem předchozím příspěvku bylo adresování a adresní aritmetika na jednu instrukci naprosto zásadní výhodou, pak velikost registru (ze které vyplývá ne/možnost takovou aritmetiku mít) nutně musí souviset s výkonem. Užitečným výkonem samozřejmě.
    Samozrejme ze prepocitavani adres nejaky vykon sezere. Pointa je jinde - nezdrzovat se ve 21. stoleti hackovanim osmibitu pro >256 B pameti/aritmetiku kdyz sestnactibit udela tu samou praci efektivneji (a se snazsim debugovanim dumpu, kdyz je potreba).
    Podle mě totiž není, C kód a jeho programátor zcela ignorují, jak a kde jsou adresy uloženy - to je úloha pro překladač.
    Ano, vyssi jazyky to ignoruji. Ovsem ve vyssich jazycich se zase tezko delaji potrebne obezlicky/optimalizace, takze se clovek stejne __asm() nevyhne.

    Ja mam zkusenost takovou, ze co si v asm nenapisu, to nemam - a cim min prekazek danych architekturou, tim lip. Muj cas straveny resenim adresace je drazsi nez pouziti CPU s dostatecne velkymi registry.
    21.3.2023 20:35 trekker.dk | skóre: 72
    Rozbalit Rozbalit vše Re: Lyco
    Samozrejme ze prepocitavani adres nejaky vykon sezere.
    Já si taky myslím, ale psal jste, že velikost registru s výkonem nesouvisí ;-)
    Ano, vyssi jazyky to ignoruji. Ovsem ve vyssich jazycich se zase tezko delaji potrebne obezlicky/optimalizace, takze se clovek stejne __asm() nevyhne. Ja mam zkusenost takovou, ze co si v asm nenapisu, to nemam
    Budiž, pokud ten procesor potřebujete dojit na krev, tak ten osmibit asi nebude pro vás. Tím ovšem není dokázána obecná platnost tvrzení, že osmibity jsou k ničemu
    Muj cas straveny resenim adresace
    Možná by stačilo adresaci neřešit? ;-) Nevím teda, na jakém procesoru jste ji musel jak řešit, ale já s tím neměl problém ani v assembleru.
    Quando omni flunkus moritati
    18.3.2023 00:10 Pavel Píša | skóre: 18 | blog: logic
    Rozbalit Rozbalit vše Re: AVR (8-bitový) a komplikace
    Proč má začátečník řešit, jestli je stack pointer 8-bitů, 16-bitů, potřeba řešit typy volání atd.

    nastavení kompilace GCC pro AVR

    tady jsou pak různé testy AVR podivností, aby se GCC udrželo funkční

    V GCC AVR targetu pak opět vystrkují ty RAMP a další hlavu. Z kódu se dokonce zdá, že na různých verzích architektury sedí na různých adresách atd...

    Ano třeba bych měl hledat, kde všude to vadí a jaké to má přesně problémy a porovnávat s tím, kdy to až tak moc nevadí atd... souhlasím, že to by bylo z analytického pohledu správné. Ale mnoho rozhodnutí je i o pocitu a nějaké intuici a ta pak vede k tomu, jestli se časem s projektem, řešením narazí nebo ne a často úplně do každé váhy pro a proti popsat nejde nebo je to na extrémně dlouho. Takže dokládám, že moje neuronová síť již těch vzorů zpracovala mnoho a na základě zkušeností vlastních i toho, co vidím kolem, vědomě i podvědomě varuji před určitými, Vámi obhajovanými, řešeními a doručuji všem rozšířit si obzory.

    Jinak ano, máte pravdu, že AVR pokročilo ve výkonu, vidím, že aktuální špička je s 32 MHz verzí, to jsme sice na 80552 měli před 30 lety také, ale instrukce trvala 12 cyklů. Ale dnes jsou i rychlé 8051... Ale to není základ mé argumentace. I k mnohem slabšímu MSP430 mám úctu a v infúzní pumpě jedné generace jsme ho jako druhý procesor použili. Ten hlavní byl ARM s RTEMSem. Přitom na MSP430 běželo řízení krokového motoru s přizpůsobením napětí a proudů podle estimace zátěže. Bylo to výkonově dost nadoraz a vyžadovalo hodně optimalizací, pro předávání rychlosti do přerušení na 32 bitů se muselo řešit, že nebylo atomické, int byl 16 bytů atd... Ale to je volba návrhu CPU a s korektními ukazateli pro celý adresní prostor a kódem je to v pořádku a přesto, že bych jí kromě extra low power dnešním začátečníkům nedoporučil a i na ten low power bych našel ARM alternativy, tak mám k MS430 úctu. Měla dost smůlu na na Ti nepodporu open-source, taže sice komunita nakonec Ti zachránila ale s takovým zpožděním, že se spíš MS430 stalo nezajímavým... K AVR ale mohu říct jako pozitivního to, že bylo lepší než 8051 a kdyby přišlo v 80 letech, tak to byla v té době špička. Ale přišlo v době, kdy již technický smysl nemělo a byla to past, která drží mnoho lidí pozadu v rozvoji. Ano druhé sporné pozitivum je to, že přivedlo mnoho lidí k tomu si něco zkusit, ale mnoho z nich naopak zabrzdilo v rozhledu.
    18.3.2023 00:34 Pavel Píša | skóre: 18 | blog: logic
    Rozbalit Rozbalit vše Nepravdivě přisouzené prohlášení, že 32bit procesory jsou univerzálně lepší
    Řešíme otázku, proč jsou 32bit procesory univerzálně lepší než osmibity.
    A až teď jsem si všiml, že mi vlastně podstrkujete toto prohlášení, to jsem nikde neřekl. MSP430 (16 bit nebo 20 bit verze) jsem s pochvalou uvedl v textu vícekrát již dávno před touto Vaší interpretací.

    Já prohlašuji, že pro moderní CPU uvažované do nových aplikací je zásadním požadavkem sada aritmeticko-logických operací (alespoň sčítání, odčítání, logické operace a bitové posuny) mezi dvěma registry a šířka základních registrů taková, aby odpovídala alespoň délce obecného ukazatele, který je schopný adresovat veškerý prostor pro instrukce a data v paměti, stejně jako ukazovat na libovolnou funkci v adresním prostoru. Dále by měla architektura umožnit načtení a uložení registru (stále alespoň o délce obecného ukazatele) na jednu instrukci. Již jen důsledkem je nepřípustnost segmentování a stránkování nějakým dalším pomocným registrem. Stejně tak režim s vypnutým MMU by měl obsáhnout běžným ukazatelem celý fyzický adresní prostor.

    Toto nesplňuje 8086, AVR, 8051. Naopak splňuje m68k i počátečním omezením na 16x16 na 32 násobením, 16 a 20 bitů MSP430, 16-bitové H8S s 32-bit dvojregistry, SH s 16 bit instrukcemi a 32 i 64 bit architekturou, ARM, RISC-V 64 a malé RISC-V bez stránkování a s SV32...

    Dále je kritická možnost adresovat v rozumném rozsahu relativně proti registru, struktury, automatické proměnné na zásobníku. Pro větší procesory je kritická podpora dynamických knihoven a tedy podpora relativní adresace proti čítači instrukcí, toto nesplňuje x86 v 32-bitovém režimu, výsledkem jsou problémy s zjišťováním PC přes relativní volání, originální MIPS v prvních verzích je pak ještě větší katastrofa, protože ani relativní volání nemá a k PC se dostat nelze. Kód ještě větší míra ošklivosti a povinné indiskrece volání přes registr, výkonnostní katastrofa...

    Další důležitý faktor je návrh knihoven a běhového prostředí, to je kritického základu, který mí být vzorem a ne ostudou.

    20.3.2023 13:39 Aleš Kapica | skóre: 51 | blog: kenyho_stesky | Ostrava
    Rozbalit Rozbalit vše Re: Nepravdivě přisouzené prohlášení, že 32bit procesory jsou univerzálně lepší
    A až teď jsem si všiml, že mi vlastně podstrkujete toto prohlášení, to jsem nikde neřekl.

    Pavle, to dělá Bourek běžně. Je to prostě omezený kokot a ty furt s ním jak s máslem.

    21.3.2023 11:03 trekker.dk | skóre: 72
    Rozbalit Rozbalit vše Re: Nepravdivě přisouzené prohlášení, že 32bit procesory jsou univerzálně lepší
    Soudruhu komunisto kapicabote, kdyby vaše umělá inteligence byla schopna udržet kontext na víc než dvě věty, možná byste si všiml, že k žádnému podstrkávání nedošlo. Jenže na to prostě aktuálně nemáte, takže bych vám doporučil, dokud vás někdo nevybaví nějakým upgrade, abyste, když se někde baví lidé, kteří mají co říci k tématu, zalezl do rohu, tiše šoupal nohama a pokoušel se něčemu přiučit.
    Quando omni flunkus moritati
    22.3.2023 00:22 Aleš Kapica | skóre: 51 | blog: kenyho_stesky | Ostrava
    Rozbalit Rozbalit vše Re: Nepravdivě přisouzené prohlášení, že 32bit procesory jsou univerzálně lepší
    Přetáhni si igelit přes monitor, jinak si ho poprskáš pumpičkáři. Vedeš tu rádoby chytré debaty, ovšem tvoje „uhlíková stopa” je v tomhle oboru nulová. Na rozdíl od tebe si na nic nehraju. Pro Pavla a ostatní vyučující zajišťuji laboratorní infrastrukturu, aby nemuseli při těch svých hrátká řešit navíc lokální desktopy. Co děláš ty, krom toho že prudíš?
    22.3.2023 00:34 trekker.dk | skóre: 72
    Rozbalit Rozbalit vše Re: Nepravdivě přisouzené prohlášení, že 32bit procesory jsou univerzálně lepší
    To mi skutečně nehrozí, soudruhu komunisto kapicabote - je možné, že na monitor prskáte vy, ale v běžné populaci to obvyklé není. Další věc, kterou se možná při delší snaze naučíte. O tom, co (ne)zajišťujete, už se tu dříve rozepsali jiní.
    Quando omni flunkus moritati
    22.3.2023 19:55 Aleš Kapica | skóre: 51 | blog: kenyho_stesky | Ostrava
    Rozbalit Rozbalit vše Re: Nepravdivě přisouzené prohlášení, že 32bit procesory jsou univerzálně lepší
    Ty a tvoji anonymní pohůnci si můžete dát akorát kolektivně nekonečné labůžo.
    23.3.2023 01:23 trekker.dk | skóre: 72
    Rozbalit Rozbalit vše Re: Nepravdivě přisouzené prohlášení, že 32bit procesory jsou univerzálně lepší
    Žádné anonymní pohůnky jsem si, soudruhu komunisto kapicabote, nepořídil, to akorát vy máte občas potřebu se pod své příspěvky pro jistotu nepodepsat - a tak tuto svou špatnou vlastnost přisuzujete jiným. Také mi není znám význam pojmu "kolektivně nekonečné labůžo", takže odhaduji, že se jedná o něco, v čem máte víc praxe a vyznáte se v tom lépe.
    Quando omni flunkus moritati
    24.3.2023 23:45 Aleš Kapica | skóre: 51 | blog: kenyho_stesky | Ostrava
    Rozbalit Rozbalit vše Re: Nepravdivě přisouzené prohlášení, že 32bit procesory jsou univerzálně lepší
    Tobě toho není známo mnohem víc, než by si tvůj mozeček dokázal vůbec představit.

    A pokud jde o anonymní příspěvky. Nemohu za to, že jsi tak omezený že nejsi schopen udržet povědomí o konzistenci osoby, která sem něco občas něco napíše pod zažitým nickem. Pochopitelně s plným vědomím toho, že pod stejným nickem sem může cokoliv nažblemtat kdejaký ocas. Průměrně inteligentní osoba je totiž schopna udržet myšlenku natolik, aby její mozek vyhodnotil co má stejného pisatele a co ne. To že toho nejsi schopen zrovna ty Bourku, je tvoje mínus, které o tobě cosi také vypovídá.

    Jedině tak lze totiž uspokojivě vysvětlit, jak je možné, že nejsi schopen jakéhokoliv nadhledu a střízlivého hodnocení faktů. Jsi prostě hlupák, to je celé a hlupáky nemá nikdo rád, přesto že nejsou hloupí úplně ve všem. Za branné povinnosti, neblahé paměti, se obvykle stávali terčem šikany ostatních hlupáků pokud se jich z lítosti neujal někdo jako já. Je to záležitost emoční inteligence, kterou ty nemáš. Jen čumíš na svět ze své ulity a hraješ povýšeného chytráka, kterým ve skutečnosti nejsi.
    25.3.2023 07:40 trekker.dk | skóre: 72
    Rozbalit Rozbalit vše Re: Nepravdivě přisouzené prohlášení, že 32bit procesory jsou univerzálně lepší
    Ano, soudruhu komunisto kapicabote, jak poznání člověka roste, tak si uvědomuje, o kolik víc věcí je, které ještě nezná. Já vím, do této fáze jste se ještě nedostal, vaše poznání zatím stagnuje. To, že občas nemáte odvahu se pod své příspěvky podepsat, si samozřejmě odůvodňujte, jak se vám zlíbí. Dovozovat z této své zbabělosti to, čeho je nebo není schopna průměrně inteligentní osoba, ovšem ve skutečnosti nemůžete...

    O tom, že byste se někoho vy zastal a ještě k tomu úspěšně, by se dalo s úspěchem pochybovat. Určitě se nicméně najde něco, co si budete vykládat, že jste dělal pro něčí dobro, když jste mu škodil.
    Quando omni flunkus moritati
    26.3.2023 18:53 Aleš Kapica | skóre: 51 | blog: kenyho_stesky | Ostrava
    Rozbalit Rozbalit vše Re: Nepravdivě přisouzené prohlášení, že 32bit procesory jsou univerzálně lepší
    Víš Bourku. Tebe bych se nejspíš nezastal. Ty seš prostě blb. Také jsme tam jednoho takového měli. Vojín Petrýdes, ze staropražské patricijské rodiny. Taky si myslel, že si cvrnknu do kalhot, když si bude stěžovat vrchnímu gumákovi (mnou přezdívanému „Tatko Lego”) že jsem mu odmítl zapsat si – v pořadí již třetí – „průběžku”. Povolen byl totiž jen omezený limit a někteří kluci co to měli relativně kousek, nebyli doma od té doby co narukovali, protože přednost měli ti co to měli dál. Všichni, až na zmrda Petrýdese, se snažili si vzájemně vyjít vstříc. Nakonec na ni přece jen odjel, ale ne proto, že bych vyměknul.
    26.3.2023 22:53 trekker.dk | skóre: 72
    Rozbalit Rozbalit vše Re: Nepravdivě přisouzené prohlášení, že 32bit procesory jsou univerzálně lepší
    Víte, soudruhu komunisto kapicabote, to jsem rád. Vaše zastání, které lidem škodí, o to určitě nikdo nestál. Inteligenci ostatních lidí posoudit neumíte, ale generátor nesmyslných historek máte pěkný.
    Quando omni flunkus moritati
    26.3.2023 23:02 Aleš Kapica | skóre: 51 | blog: kenyho_stesky | Ostrava
    Rozbalit Rozbalit vše Re: Nepravdivě přisouzené prohlášení, že 32bit procesory jsou univerzálně lepší
    U tebe bohužel není co posuzovat. Kdybych tu občas nepoodhalil tvé „inkognito”, tak po tobě neštěkne ani pes, stejně jako po výše zmiňovaném. Ale mám pro tebe i dobrou zprávu. Z budhistického hlediska jsi na nejlepší cestě ven ze sansáry.
    26.3.2023 23:15 trekker.dk | skóre: 72
    Rozbalit Rozbalit vše Re: Nepravdivě přisouzené prohlášení, že 32bit procesory jsou univerzálně lepší
    Bohužel, stále spadáte do kategorie věcí, které neumíte posoudit. Náhodné vkládání odkazů vám ovšem také funguje dlouhodobě dobře. Koukám, že jste dokonce rozšířil portfolio a vkládáte i odkazy jinam než na své vlastní generované nesmyslné texty
    Quando omni flunkus moritati
    27.3.2023 10:04 Aleš Kapica | skóre: 51 | blog: kenyho_stesky | Ostrava
    Rozbalit Rozbalit vše Re: Nepravdivě přisouzené prohlášení, že 32bit procesory jsou univerzálně lepší

    Kup si plyšáka a jeď s ním na dovču. To ti udělá dobře. Jenom si ho nezapomeň řádně přikurtovat, ať ti neupade z nosiče až s ním pofčíš o závod lesní pěšinou a narazíš. A nebo víš co? Pošli ho raději samotného, ať mu tu dovolenou nekazíš.

    28.3.2023 23:29 trekker.dk | skóre: 72
    Rozbalit Rozbalit vše Re: Nepravdivě přisouzené prohlášení, že 32bit procesory jsou univerzálně lepší
    Obávám se, soudruhu komunisto kapicabote, že tady vám měli dát k dispozici trochu víc výpočetního výkonu. Ztratil jste kontext a vygeneroval naprosto nesouvisející příspěvek. Stane se, holt vaše umělá inteligence má svoje meze a narazil jste na ně.
    Quando omni flunkus moritati
    1.4.2023 15:37 Aleš Kapica | skóre: 51 | blog: kenyho_stesky | Ostrava
    Rozbalit Rozbalit vše Re: Nepravdivě přisouzené prohlášení, že 32bit procesory jsou univerzálně lepší
    O kontext jsi přišel ty Bourku. Ve své tuposti nejsi schopen ani rozeznat, kdy už si z tebe někdo dělá prdel.
    1.4.2023 23:54 trekker.dk | skóre: 72
    Rozbalit Rozbalit vše Re: Nepravdivě přisouzené prohlášení, že 32bit procesory jsou univerzálně lepší
    Obávám se, že ani to, soudruhu komunisto kapicabote, neumíte. Nicméně vám doporučuji, abyste se nezatěžoval tím pokoušet se to naučit - vaše umělá inteligence na to nemá dost výpočetního výkonu a momentálně máte co dohánět v jiných, důležitějších oblastech.
    Quando omni flunkus moritati
    2.4.2023 01:36 Aleš Kapica | skóre: 51 | blog: kenyho_stesky | Ostrava
    Rozbalit Rozbalit vše Re: Nepravdivě přisouzené prohlášení, že 32bit procesory jsou univerzálně lepší
    Měl by sis osvěžit slovníček. Vyjadřuješ se jak fosil. Jenže k tomu bys potřeboval mít v hlavě víc než nervovou soustavu žebříčkovitého typu. Víš co? Zapiš si hodiny u své kalkulačky nebo mobilu. Na tebe ta jejich inteligence bohatě stačí.
    3.4.2023 09:45 trekker.dk | skóre: 72
    Rozbalit Rozbalit vše Re: Nepravdivě přisouzené prohlášení, že 32bit procesory jsou univerzálně lepší
    Není potřeba, soudruhu komunisto kapicabote, pro reakce na vaše náhodné výplody je můj slovník až nadbytečně dobrý. Navíc vám to pomáhá, abyste svou umělou inteligenci nemusel trénovat na nových datech.

    Quando omni flunkus moritati
    4.4.2023 00:37 Aleš Kapica | skóre: 51 | blog: kenyho_stesky | Ostrava
    Rozbalit Rozbalit vše Re: Nepravdivě přisouzené prohlášení, že 32bit procesory jsou univerzálně lepší
    Navíc vám to pomáhá, abyste svou umělou inteligenci nemusel trénovat na nových datech.

    Těch se od tebe nikdo nedočká pupmpičkáři. S tím se počítá. Protože kde nic není, ani smrt nebere.

    5.4.2023 08:39 trekker.dk | skóre: 72
    Rozbalit Rozbalit vše Re: Nepravdivě přisouzené prohlášení, že 32bit procesory jsou univerzálně lepší
    Někdo samozřejmě ano, soudruhu komunisto kapicabote - ale vy ne, nebylo by to ohleduplné vůči nedostatkům vaší umělé inteligence
    Quando omni flunkus moritati
    5.4.2023 08:54 Aleš Kapica | skóre: 51 | blog: kenyho_stesky | Ostrava
    Rozbalit Rozbalit vše Re: Nepravdivě přisouzené prohlášení, že 32bit procesory jsou univerzálně lepší
    Za něco tě platit musí. O užitečnosti tvého výstupu však není nikde nic.
    7.4.2023 11:55 trekker.dk | skóre: 72
    Rozbalit Rozbalit vše Re: Nepravdivě přisouzené prohlášení, že 32bit procesory jsou univerzálně lepší
    No ale teď jste se, soudruhu komunisto kapicabote, do tématu netrefil už vůbec. Zdá se, že když se vám neposkytne dost kontextu, nemáte dost paměti na to, abyste si doplnil. Kdyby na tom byla veškerá umělá inteligence na světě tak, jako ta vaše, nemusí se vědci bát.
    Quando omni flunkus moritati
    26.3.2023 23:05 Aleš Kapica | skóre: 51 | blog: kenyho_stesky | Ostrava
    Rozbalit Rozbalit vše Re: Nepravdivě přisouzené prohlášení, že 32bit procesory jsou univerzálně lepší
    Asi by ses měl stydět Bourku. Tak malou šanci na to, aby ses narodil jako člověk jsi měl, a takhle to prosereš.
    13.3.2023 10:25 ehmmm
    Rozbalit Rozbalit vše Re: Lyco
    Navnadil jste me na ten CH32. :)

    Zatim to vypada jako horka novinka a echt Cina, ale jestli to vydrzi existovat aspon dva roky, tak uvidime. Z toho by mohl byt podobny hit jako ESP.

    Architektura asi bastlice netrapi, jak se tu psalo, veci jako PROGMEM fakt nikoho netrapi. Spis ten pomer vykon/cena (prace se nepocita, je to konicek a sport udelat to co nejlevneji) a jak tu psal trekker, nutnost ucit se neco noveho. Mam kolegu v predduchodovem veku a ten se drzi ruznych klonu 8051 zuby nehty. Ma stesti, ze to Cinani zatim vyrabeji. Ale v praci uz mu to sef zatrhnul, takze jednocipy programuju ja. (Ale pro nas to je minoritni vec, zivi nas neco jineho. Tohle je zpestreni tak na par tydnu v roce.)

    10.3.2023 20:51 Pavel Píša | skóre: 18 | blog: logic
    Rozbalit Rozbalit vše Re: Lyco
    Jinak ten kód může být i na 32-bitu stejně dlouhý nebo kratší, pokud je k dispozici základ, který čip nastaví a jen se přidá to nastavení směru GPIO a pak se volá set a reset pinu.
    10.3.2023 12:03 trekker.dk | skóre: 72
    Rozbalit Rozbalit vše Re: Lyco
    Arduino optimalizuje na vstupní bariéru jen pro některá použití, a za cenu toho že každá jen trochu složitější věc...
    Složitější věc nicméně už není vstup do problematiky, tj. pokud se do ní pouštíte, Arduino splnilo svůj účel, protože vstupní bariéra je překonána. Jde jen o to Arduino včas opustit.
    Quando omni flunkus moritati
    10.3.2023 14:20 Pavel Píša | skóre: 18 | blog: logic
    Rozbalit Rozbalit vše Re: Lyco
    +1
    6.3.2023 13:51 Lyco | skóre: 14 | blog: Lyco
    Rozbalit Rozbalit vše Re: Jaký systém, RTOS, HAL, atd... volit pro menší MCU
    Ze světa Rustu:
    • RTIC - malý RTOS / RT framework, který používá řadič přerušení jako plánovač. V tuhle (AFAIK) chvíli podporuje jen Cortex M.
    • Hubris - Oxide Computers ho chtějí použít jako embedded OS pro management procesory u svých serverů, takže to je (nebo aspoň bude) nějak produkční.
    • Embassy - RTOS okolo async a přerušení. Myslím že si půjčuje dost z RTICu? Zatím nemá ani první vydání.
    Podotýkám, že jsem totální začátečník.
    Příspěvek se rázem stává až o 37,5 % pravdivější, je-li pod ním napsáno reálné jméno.
    7.3.2023 14:32 GMT (London)
    Rozbalit Rozbalit vše Re: Jaký systém, RTOS, HAL, atd... volit pro menší MCU
    Pavle, tady je pořádné žrádlo pro tebe:

    https://www.crowdsupply.com/sutajio-kosagi/precursor/updates/xous-0-9-12-fido2-1-residential-keys-kernel-improvements-usb-mass-storage-and-more

    Cycle-accurate simulation of booting a preemptive, real-time kernel Xous with semi-advanced functionality (security, fully-featured UI, etc.).

    Co si o tom myslíš?

    Bylo by to něco pro studentíky? Přeci jenom ta hračka je dobře dostupná (a extrémně dobře hackovatelná narozdíl od Librem) a dalo by se na ní učit leccos - od FPGA přes RISC-V, bezpečnost, operační systémy až po UI a vývoj přenositelných mobilních aplikací :-)
    7.3.2023 15:24 Pavel Píša | skóre: 18 | blog: logic
    Rozbalit Rozbalit vše Re: Jaký systém, RTOS, HAL, atd... volit pro menší MCU
    Díky za připomenutí PRECURSORu, již jsme ho viděl, ale vypadá, že pokrok je velký. Sám bych si nakonec 458 USD i zaplatil, ale mám dost jiných velkých FPGA. Přitom jako telefon nebo něco podobného užitečného s potřebným výkonem na GNU/Linux a grafiku to nebude. Pokud je Librem 5 extra hladový, tak toto je podobné 5-6 hodiny aktivní, 2-3 dny standby, ale to je bez GSM/LTE modemu... Takže na řízení se to jako HW v tomto balení nehodí a na telefon nebo něco počítacího s displejem to sice na hraní je, ale na úrovni toho 20 let starého Palmu. I když štíhlý SW by i na běžné akce stačil. Dnešní Web, grafika, (Libre)Office, PDF atd. rozběhly do rozměrů, kdy se již nikdy nezeštíhlí....

    Takže pěkné, držím tomu palce atd. a třeba to opravdu bude Precursor budoucímo plnohdnotnému otevřenému mobilnímu světu na RISC-V... ale na výuku je spíš ten jemný HW s mnoha tlačítky ne jen drahý, ale zranitelný atd. Naše MZ_APO je tak za třetinu a plnohodnotným GNU/Linuxem a lze vedle něho i ten VexRISC-V nebo i naše menší RVAPO-C pustit. Přitom na připojení motorů, serv a kamer je asi i náš form-factor lepší...

    Na druhou stranu to není alternativa pro ty, co chtějí blikat několika LEDkami. Ale ICE-V i když je výkonem o něco horší a se slabým spojením hlavního CPU o řády níže pro výuku a hraní lepší a přitom cena časem může jít hodně dolů a nebo lze použít pak samotné ESP32 a FPGA část si navrhnout sám a vyjde to ještě možná o řád níže.

    Ale opravdu držím palce a každému, kdo to nákupem podpoří děkuji za přispění k otevřenému vývoji.
    9.3.2023 10:23 disorder | blog: weblog
    Rozbalit Rozbalit vše Re: Jaký systém, RTOS, HAL, atd... volit pro menší MCU
    nemam velmi s cim porovnavat, ale arduino sa mi vzdy hnusil a som spokojny s esp-idf na esp32, to je schopny hw a ten freertos je tiez fajn
    10.3.2023 09:20 Zm
    Rozbalit Rozbalit vše Re: Jaký systém, RTOS, HAL, atd... volit pro menší MCU
    Antmicro hodně tlačí Zephyr. Tady jsem našel porovnání RTOS je tam hezká tabulka pro NuttX FreeRTOS a Zephyr. Bohužel u některých řádků moje znalosti nestačí k porozumnění, bylo by fajn kdybyste to v některém článku mohl okomentovat, případně porovnat is komerčními VxWorks a ThreadX.

    Já osobně mám jen malou zkušenost s FreeRTOS z jenoho předmětu na VŠ, kde jsem dělal mini projekt k zápočtu. Jednalo se o vzorkování zvuku z mic. vytvoření echa a poslání na sluchátko. Zpoždění bylo nastavitelné tlačítky. Mylím, že tohle by šlo udělat i smyčkou a přerušením. Na Arduinu nějaká možnost použít RTOS (asi FreeRTOS) je, ale něž jsem nastudoval jak to nastavit, došel mi volný čas pro tuto aktivitu.
    10.3.2023 10:46 Pavel Píša | skóre: 18 | blog: logic
    Rozbalit Rozbalit vše Re: Jaký systém, RTOS, HAL, atd... volit pro menší MCU
    Díky za link. Porovnání v zásadě vypovídající. U NuttXu chybí, že přímo build systém obsahuje low-level drivery pro mnoho SPI i plnohodnotných framebufferů a Gregory Nutt navrhl vlastní NXwidgets, které ale jsou spíš směrem X. V současné době se většinou používá addon LVGL, které je jednodušší. Zapíná se přímo v configu a rovnou jsou na něj příklady.

    Zajímavý je odkaz na POSIX vrstvu nad FreeRTOS. Ale je otázka do jaké míry je plnohodnotná. Zároveň je tam zásadní problém, že dříve vysloveně obecné drivery a infrastruktura USB a dalšího naschvál ve FreeRTOS nebyla, čipové firmy byly rády, že se nemusí přizpůsobovat a každá si to kombinovala se svým řešením a svázáním kódu a zákazníků na něj. Pro vážnější věci je to pak, i jak je v tabulce, reklama na drahý SafeRTOS. Ale po přechodu FreeRTOS pod Amazon se třeba ledy pohnou. I když interně z Espressifu jsem měl zprávu, že naopak po přechodu pod Amazon se rozhodli minimálně zatím udržovat fork... Přitom dopředu by to mohlo jít jen, když se dokáží síly spojit a vytvořit ty přenositelné modely a stacky driverů.

    Zephyr na to bude s algoritmickou komplexitou (poklesem propustnosti) pro narůstající počet tásků čekajících na procesor (ready state) podobně jako RTEMS a VxWorks, to je o řády lepší chování než zatím NuttX, RiotOS vypadá někde mezi, ale stejně ne jako použitelný pro větší zátěž pod SMP. Naopak konsolidovaný Zephyr je opět jen jádro a vlastní drivery jsou v něm vytvořené přímo z frameworků a za spolupráce jednotlivých výrobců čipů. To je na jednu stranu výhoda, výrobci se starají u aktuálních, pro ně perspektivních, čipů o podporu co nejvíce jejich periferií, na druhou stranu, i jak jsem se před nedávnem díval, chybí jednotná politika hlavičkových souborů pro HW a způsob psaní driverů dané třídy atd... Ale souhlasím, že pro aplikace s mnoha vlákny zde bude nad NuttXem výhoda. Ten také prosazuji spíš pro ty menší aplikace a jako náhradu pro Arduinisty...

    VxWorks pak na jednu stranu projevuje své stáří. Plně jsem s ním učil někdy v roce 2015, ale sleduji předmět, kde je stále používaný, a třeba nemá minimálně na ARM Zynq a PowerPC ani dotažené clock_gettime tak, aby mělo lepší krok, rozlišení, než tick, který na daném HW lze mít jen max do 5 kHz. Je tam nějaký neposixový call na profiling nebo si to lze nad nějakým timerem napsat sám. Stejně tak uspání je v kroku tiku. Přitom NuttX, RTEMS, GNU/Linux atd... mají plné rozlišení zdroje času, když je pro něj správný driver. GNU/Linux a NuttX dokonce mohou tiky v idle, spaní vynechávat.

    VxWorks má výhodu, že má i podporu MMU (bez swapování, ale to je spíš u RT na škodu a na Linuxu se musí v RT aplikacích třeba přes mlockall blokovat). Takže lze stejně jako na Linuxu provozovat aplikace ve vlastních adresních prostorech s tím, že jedna nemůže ohrozit běh druhé ať dělá cokoliv (tedy pokud nemá ta vadná vyšší prioritu nebo s druhou nasdílenou paměť, práva k jejímu ladění). Na rozdíl od jádra Linux lze i ty na RT nebo přístup k HW kritické tasky kompilovat přímo do jádra a používat tam POSIX. V Linuxu je v jádře jiné API. Na druhou stranu POSIX byl na VxWorks př návrhu až na druhém místě, hlavní je jeho nepřenositelné Wind API. To je sice na psaní jednodušší, ale má ta omezení třeba časování jen po celém ticku atd... Prostě poplatné RT exekutivám z 80. a 90. let.

    RTEMS takto také začínal (RTEID/µITRON API), ale postupně došlo k oddělení implementací v jádře na interní API, které je již prvoplánově optimalizované na RTEID a POSIX, kde dnes je to POSIX podle mě již hlavní priorita... Ale RTEMS neumí oddělené adresové prostory, MPU a nebo MMU lze použít jen k ochraně některých struktur jádra od všech aplikací, ale osobně to považuji spíš za nevyužitelné.

    Jinak nějaké porovnání RTOS, kam by se zařadil i fully-peremptive GNU/Linux bych asi i rád napsal. Ale nevím kde na to vzít čas, takže poskytuji alespoň tyto střípky. Dále by to nebylo na jeden zápisek na ABClinuxu, ale spíš na knihu. Před 20 lety jsme v jednom projektu takové krátké porovnání, rešerši připravili. Je otázka, jestli to někde veřejně přežilo. Ono ti co vědu vedou myslí často akorát na to získat peníze z EU a až projekt skončí, tak se site zruší, aby se mohl navrhnout nový projekt a vydělat znova. Takže když bylo vybrané, že se bude implementovat CANopen, tak tehdejší vedoucí prohlásil, najděte nějaký CAN driver pro Linux, ale čas na to neztrácejte, důležitá je ta "prodávaná" vrstva nad tím a deliverables. No tak jsem ztrávil měsíc dovolené a prázdniny nad tím CAN drivery konsolidovat a vznikl LinCAN, který některé firmy používaly ještě v roce 2019... Teď se tím skupina, která sebrala majetek a lidi a odešla jinam na stránkách vytahuje a vlastní vývoj zase dělá tím původním stylem.

    No nic, našel jsem kopii 20 let ztaré zprávy u jednoho z partnerů WP1 - RTOS State of the Art Analysis. Ale již to není aktuální a formátování do HTML je také špatně. Zájemcům mohu poslat kdyžtak PDF z mého archivu, nebo ho někde vystavit. ...

    Podle Google Scholaru je to 14x citované, ale PDF se již ztratilo. Vlastní CAN projekt jsem pak od toho site oddelil a přežil na SourceForge https://ortcan.sourceforge.net/.

    ...

    Tak to kopíruji ven...

    OCERA Deliverable D1.1 - RTOS Analysis

    Ale je to staré, sám jsem přispíval především do té části RTEMS a něco do GNU/Linux
    10.3.2023 11:45 Zm
    Rozbalit Rozbalit vše Re: Jaký systém, RTOS, HAL, atd... volit pro menší MCU
    Díky moc za zajímavé odkazy.

    V rámci ukojení vlastní zvědavosti by se mi hodil nějaký VxWorks emulátor, ideálně opensource, rozhodně neplacený bez NDA, ale to bych asi chtěl moc...

    Na takové "vykuky" platí GPL (ideálně GPLv3) licence. Já na tom sice nezbohatnu, ale někdo další také ne.
    10.3.2023 15:19 Pavel Píša | skóre: 18 | blog: logic
    Rozbalit Rozbalit vše Re: Jaký systém, RTOS, HAL, atd... volit pro menší MCU
    Tak ono VxWorks je v tom Downloadable Kernel Module módu (tedy v podstatě jeden POSIX nebo Wind API multithread program v rámci adresového prostoru jádra) hodně podobný RTEMSu. Tak si lze zkusit ten. WindRiver nainvestoval extrémní úsilí do podpory C a C++ pro Eclipse - CDT. Což je open-source a velké firmy Eclispse pro vývoj (všecho) preferují, takže je to i základ pro Ti CodeComposerStudio a prostřední s placenou podporou pro GNU/Linux. Vyzkoušet si ho lze na Debianu. Stačí nainstalovat eclipse-cdt, pro aktuální verzi pak přímo instalaci ze stránek.

    Funkcí má mnoho a umí indexace a mnoho dalšího. Lze nakonfigurovat pro křížovou kompilaci, automatický start a ladění na vzdálených tagetech, jak GNU/Linux, VxWorks tak až po malé ARM a FPGA. Na mě je to trochu dost těžkotonážní a některé věci nakonec najít v tom GUI je dost náročné. Ale je to plnohodnotný nástroj...

    Vlastní pluggin a instalace knihoven a jader VxWorks je ale jen ta licensovaná a zavřená. Stejně tak i simulátor, to je jádro zkompilované do režimu kdy běží v nějaké obálce jako Linux nebo Windows proces.

    Na FEL si můžete zapsat předmět B4B35PSR, v minulosti jsem v něm i učil. V rámci celoživotního vzdělávání to bude okolo 3 tisíc kč, pokud studujete třeba na MFF, FIT atd, tak si ho půjde zapsat v rámci meziškolní nabídky.

    Jinak pokud ožije příští rok Installfest nebo uspořádáme nějaký seminář, tak v těch laboratořích, ke bývají workshopy, tak pod naším na asi stovku počítačů distribuovaným diskless Debianem stačí kliknout a kompletní prostředí pro VxWorks tam je. Jádro je k dispozici do simulátoru a na naše kity MZ_APO. Jádro si lze z prostředí zkompilovat i pro další ARMy, možná i PowerPC, ostatní tam asi není nainstalované...

    Pokud chcete exkurzi tak by se šlo dohodnout, že si k prostředí sednete během nějaké hodiny, kdy učím své předměty, nebo v zimním semestru, kdy se učí i to B4B35PSR, tak i během něho a zkusíte si nějaké Hello World podle návodu na stránce předmětu napsat.

    Ale kromě té alternativy, kdy použijete Wind API, tak je to v podstatě jako na GNU/Linux. Je tam ale třeba zajímavý nástroj na záznam, sledování systémových událostí - System Viewer.

    Myslím, že i nějaká obálka, jak kompilovat s Wind API pod Linux je, ale smysl má pro obsluhu přerušení atd.. a to v userspace Linuxu nepůjde. Jinak je to spíš v dnešní době nesmysl. Není to přenositelné. Může to mít smysl, pokdu se využije možnost předalokovat systémové objekty staticky, pak lze omezit nebo i vyloučit použití malloc za běhu aplikace.

    Ale pokud si pohrajete s GNU/Linuxem, RTEMSem a třeba NuttXem, tak je to podobné a asi i pro nástup do zaměstnání, kde bude hlavní náplní psaní pro VxWorks, tak nebudete překvapený. Chce to znát princip fungování počítače, ideálně si napsat i něco na menší procesor, kde budete přímo obsluhovat HW a přerušení a pak je to již o přemýšlení a mapování toho, co od systémy potřebujete na sadu nabízených funkcí. Přitom Wind River dokumentace je slušná a v Eclipse proindexované hlavičky také fungují dobře.

    Jinak i WindRiver ví, že největší sláva VxWorks již pominula, ano na omezený HW nebo pro bezpečnost a audit (NASA Mars rovery) se stále hodí. Ale pro složitější věci i WindRiver dnes nabízí především Linuxové jádro a jeho profesionální podporu a nebo na menší věci koupili od Eonic Systems Virtuoso RTOS a ten nabízí jako komerční Rocket, ale jeho jádro vložili do Zephyru a ten nabízí spolu s výrobci čipů a vydělávají na profesionální podpoře a nástrojích.

    Takže kromě pocitu, že si hrajete s codebase těch robotů na Marsu a dalším, tak to zas tak moc navíc není. A GNU/Linux nakonec také na Marsu v Ingenuity létá a to i včetně navigace z obrazu. Takže proč si nehrát s ním nebo něčím jiným otevřeným.

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.