Python macht Embedded Linux angenehmer Hubert Högl Hubert.Hoegl@hs-augsburg.de http://www.hs-augsburg.de/~hhoegl Hochschule Augsburg 2. Juli 2010 H. Högl () FuE 2010 2. Juli 2010 1 / 14
Embedded Linux Hardware klein (10 5cm), preiswert ( 50 Euro) Software nicht x86, sondern SoC stromsparend ( 1W) schnell (100-400 MHz) Flash Speicher 16 bis 128 MByte SDRAM Speicher 16 bis 128 MByte viele Schnittstellen: UART, SPI, I2C, PWM,... Vollständiges Linux (wie PC) Ideal zum Messen, Steuern und Regeln Grasshopper (AVR32, 150 MHz) H. Högl () FuE 2010 2. Juli 2010 2 / 14
Was ist so schwierig dran? Trennung von Entwicklungsrechner (PC) und Target verwirrt Anfänger. Keine Standard-Distributionen wie bei PC-Linux. Cross Bau-Umgebungen riesig, komplex und für Experten gemacht ( Buildroot, OpenWRT,... ) Einige Jahre Linux Erfahrung notwendig Alles wird in C programmiert. Kernel/Treiber Dickicht. Kein einheitliches API für Hardware-Schnittstellen (aber Tendenzen zur Konsolidierung). Nur für Gurus Frustration beim Anfänger. Viel gelernt durch Leidensgeschichten aus Mechatronik, Maschinenbau und meiner Embedded Linux Veranstaltung. Menschen haben gute Ideen, aber leider nur geringe Chancen bei der Umsetzung. H. Högl () FuE 2010 2. Juli 2010 3 / 14
Am Anfang war Wall-E http://thomasboegle.de/walle.htm (Mechatroniker) Schau-Roboter mit etwa 12 Servomotoren. H. Högl () FuE 2010 2. Juli 2010 4 / 14
Embedded bedeutet Schnittstellen DAC RTC ADC WiFi Sensoren TFT Display Touch Controller LAN Mobilfunk Modem GPS RS 485 Eth UART SPI CAN I2C Embedded Linux Hardware PWM Standardisierte industrielle Servomotoren Steuerungskomponenten Display GPIO USB Interrupts Tasten LEDs Motoren Flash Dongle Tastatur Maus H. Högl () FuE 2010 2. Juli 2010 5 / 14
Wir brauchen eine Interpretersprache! Python, na klar! Erweitere batteries included auf Embedded Systems Programming. H. Högl () FuE 2010 2. Juli 2010 6 / 14
Software in Schichten GPIO Python SPI I2C PWM S PWM etc. User Kernel SoC Hardware Python Erweiterung (.so) Treiber HW naher Code Hardware Modul H. Högl () FuE 2010 2. Juli 2010 7 / 14
Python Schnipsel # ### GPIO Demo ### import gpio from time import sleep a = gpio.gpio(23, "out") a.direction = "out" while(1): a.value = 1 sleep(1) a.value = 0 sleep(1) # ### PWM Demo ### import pwm, time a = pwm.pwm(0) a.start() a.period = 1000000; a.polarity = 0 i = 0 while (i < a.period): a.duty = i time.sleep(0.001) i += 1000 a.polarity = 1 i = 0 while (i < a.period): a.duty = i time.sleep(0.001) i += 1000 a.stop() H. Högl () FuE 2010 2. Juli 2010 8 / 14
Ziele Einfache Anwendbarkeit Viele Schnittstellen GPIO UART, SPI, I2C PWM, Soft-PWM CAN ( socketcan ) 1-Wire Drahtlose Kommunikation (Zigbee, Bluetooth, IrDA) Sammlung von Peripheriebauelementen als Python Objekte (ADC, DAC, RTC, EEPROM,... ) Mehr Plattformen AVR32 ARM9, Cortex A5/A8/A9 x86 (mit USB I/O Erweiterung) Echtzeit (RTAI, Xenomai) H. Högl () FuE 2010 2. Juli 2010 9 / 14
Status Volker Thoms Diplomarbeit bringt grossen Fortschritt (1/2010). Plattform AVR32 auf Network Gateway 100 (NGW100). Cross-Kompilierung von Python schwierig, aber im Prinzip gelöst Zwei Tage Aufwand für Python 2.6.4. Umstieg von OpenWRT auf Buildroot TU Berlin, Maschinenbau (Prof. Meyer) Tests mit ARM926 (Atmel SAM9G45, 400 MHz) Ziel: Demonstrator auf Embedded World 2011 (März 2011) Suche Diplomanden H. Högl () FuE 2010 2. Juli 2010 10 / 14
Literatur Diplomarbeit von Volker Thoms (CC) http://elk.informatik.fh-augsburg.de/da/da-49 Python Dokumentation (vor allem Extending and Embedding ) http://www.python.org/doc/ Python-on-a-Chip (anderer Ansatz) http://code.google.com/p/python-on-a-chip H. Högl () FuE 2010 2. Juli 2010 11 / 14
Board mit SAM9G45 Ziel: Ein Board bauen mit SAM9G45 (ARM926EJ-S, 400 MHz), das für 50 Euro von Studenten und sonstigen Interessierten gekauft werden kann. Es wird bei den Veranstaltungen Embedded Systems und Embedded Linux eingesetzt werden. Das wäre eine hervorragende Python Plattform! Offenes Gemeinschaftsprojekt: git clone git://elk.informatik.fh-augsburg.de/srv/git/repositories/g45board.git Zur Zeit Benedikt Sauter (http://www.embedded-projects.net) und ich. Interessenten melden sich bei Hubert.Hoegl@hs-augsburg.de. H. Högl () FuE 2010 2. Juli 2010 12 / 14
Board mit SAM9G45 (2) PWM 0/1/2/3 ISI LCD PIO TSC/ ADC USART 0/1/2/3 TWI SPI 0/1 0/1 EBI GCap/Batt Power / State AVR I/O USB ISP Mega32U4 AVR 32 khz DBGU JTAG/UART INTR RESET TWI SAM9G45 ARM926EJS 400 MHz SD 0/1 USB Device USB Host 2010 04 07 V0.2 Power 1.0 32 Bit Supply 3 x LM1117 PWR CONN 1.8 3.3 External Power DM9161 eth 2 x SDRAM Data Flash 8MB GNUBLIN ARM9 Evalboard <Hubert.Hoegl@hs augsburg.de> H. Högl () FuE 2010 2. Juli 2010 13 / 14
Board mit SAM9G45 (3) Atmel SAM9G45 mit ARM926EJ-S Core H. Högl () FuE 2010 2. Juli 2010 14 / 14