====== Procesorové systémy pro vlastní aplikace ====== ===== Dostupné mikrokontroléry ===== ==== PIC32MX/PIC32MX levné výkonnější mikrokontroléry na bázi architektury MIPS ==== * čipy obsahující řadič USB z této řady začínají s cenou okolo 50 kč, například PIC32MX110F016B-I/SP, který je dostupný i v pouzdře přímo použitelném do nepájivého pole, stejně jako o něco málo lépe vybavený PIC32MX270F256B-I/SP * i čipy s plastovými pouzdry a vývody do stran (např. TQFP-44) lze snadno použít i v cela amatérských podmínkách (viz. adaptéry [[https://www.gme.cz/ups-tqfp-lqfp-fqfp-dil32|TQFP]] a [[https://www.gme.cz/smd-adapter-qfp-universal|QFP/QFN]]) * zajímavým systémem pro malé čipy na bázi mnoha architektur (MIPS, ARM, atd.) může být otevřený systém [[http://nuttx.org/|NuttX]], který i na čipech jen s desítkami kB RAM nabízí API, které umožňuje v určité míře programování s využitím shodného API, které používáte pod operačním systémem GNU/Linux * [[https://www.olimex.com/Products/Duino/PIC32/PIC32-PINGUINO-MICRO/open-source-hardware|PIC32-PINGUINO-MICRO]] nákup například [[https://cz.mouser.com/ProductDetail/Olimex-Ltd/PIC32-PINGUINO-MICRO|Mouser]] ==== Čipy Espressif na bázi architektury Xtensa ==== jedná se o čipy [[https://en.wikipedia.org/wiki/ESP8266|ESP8266]] a [[https://en.wikipedia.org/wiki/ESP32|ESP32]]. Novější je zajímavý i tím, že kromě integrace mnoha rozhraní (WiFi, USB, CAN, ETHERNET) používá variantu architektury Xtensa, která implementuje koncepci registrových oken popsanou v [[..:..:lectures:12:start|přednášce]] o vývoji architektur na příkladu architektury [[https://en.wikipedia.org/wiki/SPARC|SPARC]]. Kity včetně antény pro WiFi komunikaci jsou dostupné v řádu 150 kč. Některé kity jsou dodávané i s firmware, který umožňuje začít hardware programovat přímo v jazyce Python ([[https://en.wikipedia.org/wiki/MicroPython|MicroPython]]). ==== Malé mikrokontroléry na bázi architektury ARM ==== V současné době asi nejrychleji se rozšiřující portfólio. Architektura není vlastněná firmou, která by jí vyvíjela pro svoje čipy, ale je nabízená za přijatelných licenčních všem výrobcům polovodičů. * pro spojení s mobilním telefonem přes linku [[https://en.wikipedia.org/wiki/Bluetooth_Low_Energy|Bluetooth Low Energy]] je zajímavá řada čipů [[http://www.nordicsemi.com/eng/Products/Bluetooth-low-energy|nRF51]]. Jeden z čipů (nRF51822) se stal základem výukového kitu [[https://en.wikipedia.org/wiki/Micro_Bit|BBC Micro Bit]], který je v masovém měřítku šířený mezi studenty základních škol ve Velké Británii. ČVUT FEL se otevírají semináře především pro učitele středních a základních škol s ukázkami těchto kitů. Další informace o platformě na stránkách skupiny [[http://embedded.fel.cvut.cz/|Embedded systémů]] ([[http://embedded.fel.cvut.cz/platformy/bbc|http://embedded.fel.cvut.cz/platformy/bbc]]). * Dalších procesorových systémů na bázi variant Cortex-Mx architektury ARM určené pro malé vestavné systému existuje nepřeberné množství. Na ČVUT FEL se této oblasti v těsné spolupráci s firmami STMicroelectronics a dalšími věnuje například [[https://comtel.fel.cvut.cz/cs/itu/excellence/embedded-technology-club|Embedded technology club - ETC]]. * Probírat jednotlivé typy není účelné, podstatné často vybrat obvod, který je dobře podporovaný některým vývojovým prostředím. Samsung v rámci projektu Tizen RT také vsadil na základ na bázi systému [[http://nuttx.org/|NuttX]]. Pokud však není vyžadovaná přenositelnost na jiné architektury než ARM, tak je vhodnou volbou naříkal prostředí [[https://en.wikipedia.org/wiki/Mbed|mBED]], jehož správu a vývoj převzala firma ARM. Seznam podporovaných modulů například [[https://developer.mbed.org/platforms/|stránkách projektu určených pro vývojáře]]. Množství z modulů je dodáváno ve formátu přímo použitelném s nepájivým polem a vstupní požadavky na hardwarovou znalost jsou minimální. Většinou stačí na správné piny přivést napájecí napětí nebo přímo napájet modul přes micro-USB konektor. ==== Další MCU architektury vhodné pro počáteční projekty ==== * [[https://en.wikipedia.org/wiki/TI_MSP430|MSP430]] od firmy Texas Instruments - MCU především pro nízkoodběrové aplikace s 16 a 20-bit architekturou s CISC instrukční sadou implementovanou ve stylu RISC jader. ==== Větší procesorové systémy ==== Většina těchto systémů nabízí jednotku správy paměti a tím jsou vḧodné pro plnohodnotné operační systémy s možností oddělení adresních prostorů pro jednotlivé aplikace/procesy. Fenoménem v této oblasti je jednodeskový počítač [[https://en.wikipedia.org/wiki/Raspberry_Pi|Raspberry-Pi]]. Výběr čipu hlavně s ohledem na cenu znamenal provedení mnoha ústupků (například nevhodně přes USB připojený řadič sítě Ethernet a v první verzi i volbu zastaralé verze ARM architektury, což znamená nekompatibilitu s moderními variantami většiny distribucí GNU/Linux systému. Verze 2 a 3 jsou již výkonnostně i architekturou dobře použitelné. Výhodou je zájem výrobce čipu zajistit svobodné ovladače pro grafický 3D akcelerátor. Více informací k hardware desky na serveru [[http://elinux.org/RPi_Hub|Embedded Linux Wiki - eLinux]]. Přehledy z mnoha systémy vhodnými pro použití nejen se systémem GNU/Linux * [[http://linuxgizmos.com/catalog-of-122-open-spec-linux-hacker-boards/|LinuxGizmos - Porovnání 120 Linux-friendly hacker SBCs]] (2019) * [[https://www.hackerboards.com/|Hackerboards - Katalog jednodeskových počítačů]] * [[https://en.wikipedia.org/wiki/Comparison_of_single-board_computers|Přehled procesorových desek na Wikipedia.org]] Zajímavé jsou především systémy na bázi platformy NXP i.MX6 a i.MX8, kde se již podařilo komunitě vytvořit i plně otevřené grafické ovladače. Tato platforma má výhodu i dlouhodobé udržitelnosti na ní vytvořených projektů, protože je určená pro průmyslové a automobilové aplikace, u kterých se předpokládá dlouhodobá dostupnost. U čipů určených pro tablety a telefony je často čip již v době, kdy ho komunita softwarově zvládne, nedostupný. Dále jsou pro průmyslové a automobilové aplikace vhodné čipy Ti AM33xx, AM43xx atd. Jejich problém je však pro hlavní vývojovou větev operačního systému GNU/Linux nedostupná podpora grafického akcelerátoru a vlastní zkušenosti se snahou použít binární ovladače výrobce vedly většinou k zásadním problémů a použití zastaralých verzí SW a jádra operačního systému. Pokud není potřeba akcelerovaný grafický výstup, jsou čipy v otevřeném SW dobře podporované. Velmi dobře komunitou podporovaná je deska [[https://beagleboard.org/black|BegleBone Black]]. Snadno dostupné a levné jsou například desky založené na čipech firmy [[https://en.wikipedia.org/wiki/Allwinner_Technology|Allwinner Technology]]. Například Orange Pi Zero je dostupná v ceně okolo 9 dolarů. Orange Pi Zero Plus 2 H5 pak již obsahuje i 64-bitový procesor. ==== Procesory na bázi architektury RISC-V ==== Architektura [[https://en.wikipedia.org/wiki/RISC-V|RISC-V]] je asi první architektura, jejíž [[https://riscv.org/specifications/|specifikace]] vznikala od začátku jako otevřené dílo a přitom na ní pracovali odborníci takového formátu, jako je profesor [[https://en.wikipedia.org/wiki/David_Patterson_(computer_scientist)|David Patterson]]. Návrhů otevřených architektur existuje více, ale žádný jiný nevykazuje takovou míru promyšlenosti instrukčního souboru i pro optimalizovanou implementaci přímo na polovodiči s minimalizací cest tak, aby mohly varianty navržené pro výkonné čipy dosáhnout propustnosti srovnatelné s dnešní špičkou profesionálních/rozsáhlými týmy vyvíjených architektur jako jsou x86 a MIPS. U tohoto návrhu instrukční sady je šance konkurenceschopný systém navrhnout. Přitom architekturu a kompatibilní CPU je možné imlementovat i ve variantě vhodné pro cenově citlivé prostředí. Například vývojové kity [[https://www.sifive.com/products/hifive1/|HiFive boards]] jsou k dispozici v cenách jen mírně překračujících kity z rodiny Raspberry-Pi. V tomto případě se jedná jen o systém ve stylu MCU. Plnohodnotný systém, na kterém lze provozovat Linux, je až výrazně dražší [[https://www.sifive.com/boards/hifive-unleashed|HiFive Unleashed]]. ==== Seznam odkazů na některé naše prezentace a články ==== Především se jedná o výběr prezentací zaměřených na seznámení začínajících zájemců a profesionálů z firem, kteří ještě nemají s real-time řízením na systému GNU/Linux až tolik zkušeností. * [[https://www.root.cz/clanky/gnu-linux-pro-rizeni-a-rychlost-jeho-odezvy/|GNU/Linux pro řízení a rychlost jeho odezvy]] * [[https://www.root.cz/clanky/linux-pro-rizeni-minimalisticke-reseni-rizeni-stejnosmerneho-motoru/|Linux pro řízení: minimalistické řešení řízení stejnosměrného mo­toru]] * Píša, P.: Je Raspberry Pi použitelné pro řídicí a robotické aplikace?, [[https://www.youtube.com/watch?v=I_4cAhW46dM|přednáška Installfest 2015]], [[http://cmp.felk.cvut.cz/~pisa/installfest/rpi_overlay_and_rt.pdf|PDF]] * Píša, P. – Prudek, M.: Řízení stejnosměrných a bezkartáčových motorů, [[https://www.youtube.com/watch?v=uMfY-sKf0HA&index=3&list=PLlTxFw5y5UZt-yj1ijhIGzwCsRmRwYn_0|přednáška LinuxDays 2015]], [[https://www.linuxdays.cz/2015/video/Pavel_Pisa-Rizeni_stejnosmernych_motoru.pdf|PDF]] * Píša, P.: Processor Systems, GNU/Linux and Control Applications, [[https://www.youtube.com/watch?v=lJfqgWePLqM|přednáška LinuxDays 2016]], [[https://www.linuxdays.cz/2016/video/Pavel_Pisa-Procesorove_systemy_a_nejen_GNU_Linux_v_ridicich_aplikacich.pdf|PDF]] * Píša, P.: GNU/Linux and FPGA in Real-time Control Applications, přednáška [[https://www.youtube.com/watch?v=sNtlEysC0yA|Installfest 2017]], [[https://installfest.cz/if17/slides/so_t2_pisa_realtime.pdf|PDF]] ==== Další zdroje informací ==== * Waterman, Andrew: [[https://people.eecs.berkeley.edu/~krste/papers/EECS-2016-1.pdf|Design of the RISC-V Instruction Set Architecture]] * [[https://riscv.org/specifications/|The RISC-V Instruction Set Manual]] * [[http://www.root.cz/autori/pavel-tisnovsky/|Tišnovský, Pavel]]: [[http://www.root.cz/clanky/procesory-s-architekturou-risc-v-pracovnich-stanicich-a-serverech/|Procesory s architekturou RISC v pracovních stanicích a serverech]], článek na serveru [[http://root.cz|Root.cz]] - hezky napsaný lehký úvod k architektuře MIPS a SPARC před vlastním studiem doporučené literatury Hennessy-Patterson. V sérii článků nyní vyšel i popis architektury ARM - [[http://www.root.cz/clanky/mikroprocesory-s-architekturou-arm/|úvod]] a [[http://www.root.cz/clanky/pohled-programatora-na-mikroprocesory-arm/|popis architektury ARM]]. * Malý, Martin: [[https://knihy.nic.cz/files/edice/Porty__bajty_osmibity.pdf|Porty, bajty, osmibity]] a [[https://knihy.nic.cz/files/edice/hradla_volty_jednocipy.pdf|Hradla, volty, jednočipy]], knihy z edice [[https://knihy.nic.cz/|NIC.CZ]]. Pěkný úvod a inspirace pro práci a zábavu s elektronikou a logickými obvody. Co se týče použitých procesorových architektur, tak je volba zajímavá z historického pohledu. AVR (Arduino) i 8080 jsou na pochopení a programování mnohem složitější obvody než MIPS. Vyznačují s mnoha výjimkami, specifickým chováním některých registrů a jejich kombinací, 8080 obsahuje mikroprogramový řadič (veřejně nikde plně nedokumentovaný), AVR není ortogonální, k adresaci umí použít jen tři dvojregistry, nad 64 kB používá stránkování. Naopak na starých 8-bit MCU je názorně demonstrovaná jednoduchá systémová sběrnice pro připojení pamětí a periferií. Na moderních MCU buď není vyvedená nebo je o něco složitější. Na větších systémech je pak nahrazená sériovými sběrnicemi PCIe, USB nebo sběrnicemi jako SD-IO atd. Takže přímo kopírovat procesorová zapojení nedoporučuji. Použijte některou z modernějších a na programování a ladění přívětivějších platforem z této stránky.