VYUŽITÍ PYTHONU PRO REALTIMOVÉ ŘÍZENÍ PERIFERIÍ



Podobné dokumenty
Real Time programování v LabView. Ing. Martin Bušek, Ph.D.

Principy operačních systémů. Lekce 1: Úvod

Vytvoření bootovatelného média

Základní informace. Operační systém (OS)

3. Maturitní otázka PC komponenty 1. Počítačová skříň 2. Základní deska

Kontrolní seznam projektu a systémové požadavky Xesar 3.0

TGMmini. začínáme. komplexní dodávky a zprovoznění servopohonů dodávky řídicích systémů

Miroslav Tichý, tic136

Obsah. O autorovi 11 Předmluva 13 Zpětná vazba od čtenářů 14 Errata 14

Mikrořadiče společnosti Atmel

pouˇzití USB nebo SPI

Vestavné systémy BI-VES Přednáška 10

Zápočtová úloha z předmětu KIV/ZSWI DOKUMENT SPECIFIKACE POŽADAVKŮ

Arduino Martin Friedl

Prostředí pro výuku vývoje PCI ovladačů do operačního systému GNU/Linux

Linux jako real-time systém. Red Hat Czech Michal Schmidt Duben 2009

Simluátor Trilobota. (projekt do předmětu ROB)

HMI. Operátorské panely a dotykové displeje

Stavba operačního systému

Tomáš Borland Valenta

VYUŽITÍ KNIHOVNY SWING PROGRAMOVACÍHO JAZYKU JAVA PŘI TVORBĚ UŽIVATELSKÉHO ROZHRANÍ SYSTÉMU "HOST PC - TARGET PC" PRO ŘÍZENÍ POLOVODIČOVÝCH MĚNIČŮ

Matematika v programovacích

Základní pojmy informačních technologií

Windows a real-time. Windows Embedded

Architektura rodiny operačních systémů Windows NT Mgr. Josef Horálek

monolitická vrstvená virtuální počítač / stroj modulární struktura Klient server struktura

úvod Historie operačních systémů

Obsah ZÁKLADNÍ DESKA. O autorech 11 Úvod 13

PŘÍLOHY. PRESTO USB programátor

Profilová část maturitní zkoušky 2014/2015

Administrace počítačových sítí. WEB a LPT

Integrované řešení přípojných počítačů MOXA pro IoT

Náplň přednášky 1. Vestavěný systém Výrobci technických řešení Mikrokontroléry ARM NXP Kinetis KL25Z Rapid prototyping Laboratorní vývojová platforma

Identifikátor materiálu: ICT-1-17

CANLAB IO BOARD ETH/USB. - technický popis -

NOVÝ DIAGNOSTICKÝ TESTER DCU 100 UPGRADE KTS 460

POČÍTAČOVÉ ŘÍZENÍ TECHNOLOGICKÝCH PROCESŮ

TC-502L TC-60xL. Tenký klient

Linux na prapodivných deskách. LinuxDays 2017, Lenka Kosková Třísková Technická univerzita v Liberci

VÝUKOVÝ MATERIÁL. 3. ročník učebního oboru Elektrikář Přílohy. bez příloh. Identifikační údaje školy

TG Motion verze 4 Hardware návod k obsluze

Příloha č. 1 zadávací dokumentace - Specifikace předmětu plnění veřejné zakázky

Operační systémy pro systémy sběru dat (=DAQ systems). Vývoj aplikačních programů. Operační systémy pro DAQ RTOS VxWorks Windows CE RTX LabVIEW RT

MS WINDOWS I. řada operačních systémů firmy Microsoft *1985 -? Historie. Práce ve Windows XP. Architektura. Instalace. Spouštění

INFORMAČNÍ A KOMUNIKAČNÍ TECHNOLOGIE

TG Motion verze 4 Hardware návod k obsluze

Dílčí projekt: Systém projektování textilních struktur 1.etapa: tvorba systému projektování vlákno - příze - tkanina

Kategorie_řád_2 Kategorie_řád_3 Kategorie_řád_4 Atributy_podkategorie. Herní konzole. Gamepady. Joysticky. Ostatní. Poškozené.

Firmware řídící jednotky stejnosměrného generátoru

Podrobné technické specifikace jednotlivých parametrů dodávek výpočetní techniky

BIOS. Autor: Bc. Miroslav Světlík

LABORATORNÍ CVIČENÍ Střední průmyslová škola elektrotechnická

Inovace výuky prostřednictvím ICT v SPŠ Zlín, CZ.1.07/1.5.00/ Vzdělávání v informačních a komunikačních technologií

Programové vybavení počítačů operační systémy

ZADÁVACÍ DOKUMENTACE. Notebook. Příloha č. 1 k zakázce č. 1/2011

Konfigurace zařízení - Střední průmyslová škola Edvarda Beneše a Obchodní akademie Břeclav

Dokumentace. k projektu Czech POINT. Technická specifikace hardwarového a softwarového vybavení

Building Your Own Real Remote Experiment Controlled by a Mobile or Touch Enabled Device

TEST ZÁKLADY IT, HARDWARE SOFTWARE

TC-502L. Tenký klient

Zkontrolujte dodané příslušenství.

POČÍTAČOVÉ ŘÍZENÍ TECHNOLOGICKÝCH PROCESŮ

Dokumentace. k projektu Czech POINT. Technická specifikace hardwarového a softwarového vybavení

JUMO LOGOSCREEN 600. Dotyková budoucnost záznamu: Obrazovkový zapisovač

Podpora skriptování v Audacity

IB111 Programování a algoritmizace. Programovací jazyky

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Bootkity v teorii a praxi. Martin Dráb martin.drab@ .cz

USB Dokovací stanice. Uživatelský manuál

Témata profilové maturitní zkoušky

Dotykové úlohy PC. Petr Novák (Ing., Ph.D.)

Příloha č.2 - Technická specifikace předmětu veřejné zakázky

Upřesňující minimální HW konfigurace

POČÍTAČOVÉ ŘÍZENÍ TECHNOLOGICKÝCH PROCESŮ

Osobní počítač. Zpracoval: ict Aktualizace:

Seznámení s prostředím dot.net Framework

Příloha č. 2. Dodávka ICT techniky. Podpora interaktivity ve výuce pomocí ICT nástrojů

NÁVOD K OBSLUZE. Obj. č.: Zkrácený návod k obsluze

Zadávací dokumentace Příloha výzvy k podání nabídek

Příloha č. 1 kupní smlouvy Technická dokumentace zadavatele (kupujícího)

Profilová část maturitní zkoušky 2015/2016

4x standardní vstupy

Úvod do programovacího jazyka Python

Crouzet em4. Products Elektrické stroje Automatizační moduly

Měřicí automatizované systémy

C2115 Praktický úvod do superpočítání

VirtualBox desktopová virtualizace. Zdeněk Merta

S2. Vytvoření Windows balíku pro vývoj na STM32 architektuře

Pracovní stanice. Minimální požadované parametry

OPERAČNÍ SYSTÉMY. Operační systém je prostředník mezi hardwarem (technickým vybavením počítače) a určitým programem, který uživatel používá.

DNS_PC_ATYP_ _10

Instalace Debianu pomocí debootstrap

Z Á K L A D N Í S E S T A V A

Činnost CPU. IMTEE Přednáška č. 2. Několik úrovní abstrakce od obvodů CPU: Hodinový cyklus fáze strojový cyklus instrukční cyklus

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Výzva k podání nabídek

Minix NEO Z64 Windows 8.1

Zpracování signálu z obrazového senzoru s využitím OS Linux pro embedded zařízení

Transkript:

České vysoké učení technické v Praze Fakulta strojní Ústav přístrojové a řídicí techniky VYUŽITÍ PYTHONU PRO REALTIMOVÉ ŘÍZENÍ PERIFERIÍ v rámci předmětu Python pro vědecké výpočty Ladislav Sückr 16.12.2012

Obsah 1. Úvod... 1 2. PyMite... 1 3. Pyastra... 1 4. PyMicro... 2 5. PyMCU... 2 6. Gumstick developer center... 3 7. Raspberry Pi... 4 8. Openmonko... 4 9. Realtime OS... 5 9.1. RT preempt patch... 5 10. Závěr... 5 Citovaná literatura... 6 Seznam obrázků... 7

1. Úvod Motivací pro vytvoření tohoto dokumentu je provedení rešerše na téma využitelnosti Pythonu pro ovládání hardwaru/periferií v reálném čase. Python je skriptovací jazyk vyšší úrovně a z toho v tomto úhlu pohledu vyplývají dva protichůdné závěry : 1. Velká abstrakce od hardwaru snadné programování 2. Velká abstrakce od hardwaru přístup k hardwaru pomocí vysokoúrovňových knihoven -> v realtime aplikacích je to problém V rešerši jsem popsal softwarová i hardwarová řešení, která přímo pracují s Pythonem a jsou použitelná pro výše zmíněný typ aplikací. Jako výchozí bod pro prozkoumání možností embedded Pythonu jsem zvolil wiki [1] stránky samotného Pythonu. 2. PyMite PyMite [2] je odlehčený interpreter Pythonu, napsaný od základu znovu, pro spouštění na osmi a vícebitových mikropočítačích s paměťovým limitem 64KB pro program a 4KB pro data. PyMite je založen na syntaxi Pythonu ve verzi 2.5. Jelikož se jedná o odlehčenou verzi interpretu, lze spouštět jen omezenou podmnožinu funkcí z verze Pythonu 2.5. Jedná se o virtuální stroj, ve kterém je spuštěn program napsaný v Pythonu (s omezením na určitou skupinu funkcí). Výsledný kód nepotřebuje v mikropočítači pro spuštění žádný OS. Vývoj probíhá na klasickém PC. Součástí řešení jsou ovladače, knihovny a mnoho dalších podpůrných utilit. Platformy na kterých lze výsledný kód spustit jsou : 1. STM32 Vysoce výkonný MCU s DSP a FPU založený na Cortexu 2. AVR řady atmega 3. AVR řady tiny 4. PIC24 5. dspic Vzhledem k tomu, že je tento projekt uveden přímo v doméně Python.org, považuji ho za favorita řešení realtime aplikací pomocí Pythonu. 3. Pyastra PyAstra [3] je projekt, který se zabývá vytvořením kompilátoru Pythonu pro mikropočítače PIC16. Název projektu je PYthon to ASembler TRAnslator který popisuje téměř všechny cíle projektu. Na rozdíl od PyMite tedy nejde o vytvoření virtuálního prostředí, ale o skutečný kompilátor. Bohužel poslední příspěvek do tohoto projektu byl uskutečněn 14.8.2010, což naznačuje, že tento projekt není aktivní. 1

Příklad toho, jak vypadá vývojové prostředí, konzola, je na Obrázku 1. Obrázek 1 - vývoj pomocí Pyastra http://projectproto.blogspot.cz/2009/12/python-for-pic-mcus.html 4. PyMicro PyMicro [4] je projekt, který se zabývá analýzou možností použití Pythonu na mikropočítačích. Hodnotí např. způsoby převodu Pythonu do C++ s následnou kompilací pro konkrétní mikropočítač. Tento projekt tu uvádím pouze pro úplnost. Myslím si, že toto je příliš komplikované řešení. 5. PyMCU PyMCU [5] je projekt jiného druhu, než dva předchozí. Projekt se nesnaží vytvořit speciální verzi Pythonu, ale hardwarovou komponentu, připojenou pomocí USB, která má 13 digitálních I/O bitů, 6 analogových I/O kanálů a 5 PWM kanálů, které je možné ovládat z klasického Pythonu pomocí knihoven. Výhoda tohoto řešení je snadnost implementace (k PC připojím USB kabelem periferii) a mohu použít klasický Python na PC. Vzhled desky s porty je na Obrázku 2, na Obrázku 3 je ukázka připojení LED diody. 2

Obrázek 2 - PyMCU - http://www.pymcu.com/index.html Obrázek 3 - připojení LED - http://www.pymcu.com/images/img0006.jpg 6. Gumstick developer center Jede o hardwarovou komponentu, počítač založený na Crtexu-A9 (Texas Instruments). Nejedná se již o mikropočítač ale o náhradu PC. Pro tento procesor je upravená verze Ubuntu linuxu, na které je 3

možné provozovat plnohodnotný Python. Toto zařízení má mimo jiné přímé připojení na monitor, USB klávesnice, myš, a mnoho dalšího. Bohužel toto zařízení není (tak jak je dodáno) vhodné pro realtime aplikace. Určité možnosti, jak tento nedostatek odstranit, uvedu dále v této rešerši. Vzhled desky je na Obrázku 4. Obrázek 4 - Gumstick board - http://www.gumstix.org/ 7. Raspberry Pi Raspberry Pi [6] je projekt, který pomocí čipu Broadcom BCM2835 (obsahuje ARM procesor) postavil tzv. minipočítač. Stejně jako Gumstick, Raspberry Pi vytváří na malém prostoru mini PC které je malé rozměry, ale co do rozhraní a možností nahrazuje stolní PC a nebo notebook. Nevýhoda pro realtime aplikace je bohužel stejná jako u Gumsticku. Jelikož je operačním systémem upravená verze Ubuntu linuxu, nelze např. řešit aplikace s přesným časováním. Tento nedostatek řeší realtimové upgrady jádra systému GNU/Linux. Obrázek 5 - Raspberry Pi - http://en.wikipedia.org/wiki/raspberry_pi 8. Openmonko Openmonko [7] je projekt, který umožňuje spouštět Pythonové skripty v prostředí Android, tedy na mobilních telefonech a tabletech. Není to tedy přímo realtime řízení periferií, ale k možnostem dnešních chytrých telefonů patří velká síťová konektivita, možnost zobrazení dat (graficky) a samozřejmě i sběr a zadávání dat. Kombinace těchto možnosti vytváří velký potenciál pro různorodé aplikace. 4

9. Realtime OS V případech, kdy vyvíjíme aplikaci, kde jsou kladeny požadavky na časová omezení spouštění a vykonání funkcí, hovoříme o RTOS (realtime OS). Ty mohou být speciální jako např. ecos, FreeRTOS, TRON, a nebo založené na GNU/Linuxu jako např. RTLinux, RTAI, Xenomai a dnes asi nejvíce propagovaný GNU/Linux + realtime-preempt patch. Všechny uvedené RTOS jsou free. Mezi proprietální RTOS patří LynxOS, QNX, VxWorks, PikeOS, Windows CE, Win+RTX. U RTOS jsou důležité hodnoty : Interrupt latency vyvoláno přerušení -> za jak dlouho se spustí obslužná rutina? Scheduling latency proces s největší prioritou je připraven k běhu -> za jak dlouho dostane čas na CPU? Jiter nechtěná proměnlivost periody (chvění) 9.1. RT preempt patch RT preempt patch [8] je integrální součástí jádra. Mezi jeho výhody patří velká podpora a kontinuita vývoje vzhledem k aktuálním jádrům GNU/Linuxu. Mezi dalšími jsou to : Dělá z GNU/Linuxu RTOS Běžné userspace programy mohou běžet jako realtime procesy Žádné druhé jádro v systému Toto rozšíření nabízí (mimo jiné) API funkce pro jemné časování - API používá nanosekundy - skutečná přesnost a rozlišení je dáno schopnostmi hardware. Toto rozšíření má jen nepatrné vlivy na výkon systému. 10. Závěr Jak je vidět, řešení pro použití Pythonu jako prostředí pro vývoj realtimových aplikací existují. A to jako softwarové, nebo hardwarové řešení. Pro použití Gumstick a Raspberry Pi pro realtime aplikace by bylo možné s rozšířením jádra GNU/Linuxu o RT preempt patch. Bohužel nevím, jak by se toto rozšíření jádra chovalo na procesorech ARM a Cortex, je vyvíjeno hlavně pro platformy intel 32 a 64 bitů. 5

Citovaná literatura [1] E. Python, Embedded Python, 16 12 2012. [Online]. Available: http://wiki.python.org/moin/embeddedpython. [Přístup získán 16 12 2012]. [2] PyMite, PyMite, python.org, 16 12 2012. [Online]. Available: http://wiki.python.org/moin/pymite. [Přístup získán 16 12 2012]. [3] Pyastra, Pyastra, http://sourceforge.net/projects/pyastra/, 16 12 2012. [Online]. Available: http://sourceforge.net/projects/pyastra/. [Přístup získán 16 12 2012]. [4] PyMicro, PyMicro, http://web.media.mit.edu/~nvawter/projects/pymicro/, 16 12 2012. [Online]. Available: http://web.media.mit.edu/~nvawter/projects/pymicro/. [Přístup získán 16 12 2012]. [5] PyMCU, PyMCU, http://www.pymcu.com/index.html, 16 12 2012. [Online]. Available: http://www.pymcu.com/index.html. [Přístup získán 16 12 2012]. [6] R. Pi, Raspberry pi, http://www.raspberrypi.org/, 16 12 2012. [Online]. Available: http://www.raspberrypi.org/. [Přístup získán 16 12 2012]. [7] Openmonko, Openmonko, http://wiki.openmoko.org/wiki/main_page, 16 12 2012. [Online]. Available: http://wiki.openmoko.org/wiki/main_page. [Přístup získán 16 12 2012]. [8] R. p. patch, RT preempt patch, https://rt.wiki.kernel.org/index.php/main_page, 16 12 2012. [Online]. Available: https://rt.wiki.kernel.org/index.php/main_page. [Přístup získán 16 12 2012]. 6

Seznam obrázků Obrázek 1 - vývoj pomocí Pyastra http://projectproto.blogspot.cz/2009/12/python-for-picmcus.html... 2 Obrázek 2 - PyMCU - http://www.pymcu.com/index.html... 3 Obrázek 3 - připojení LED - http://www.pymcu.com/images/img0006.jpg... 3 Obrázek 4 - Gumstick board - http://www.gumstix.org/... 4 Obrázek 5 - Raspberry Pi - http://en.wikipedia.org/wiki/raspberry_pi... 4 7