Embedded Software Engeneering mit dem Raspberry Pi · Übersicht Rasperry Pi – Betriebssystem –...

28
Embedded Software Engeneering mit dem Raspberry Pi

Transcript of Embedded Software Engeneering mit dem Raspberry Pi · Übersicht Rasperry Pi – Betriebssystem –...

Page 1: Embedded Software Engeneering mit dem Raspberry Pi · Übersicht Rasperry Pi – Betriebssystem – Hardware ARM Μ-Controller vs. Μ-Prozessor vs. SoC Embedded Software Engineering

Embedded Software Engeneeringmit dem Raspberry Pi

Page 2: Embedded Software Engeneering mit dem Raspberry Pi · Übersicht Rasperry Pi – Betriebssystem – Hardware ARM Μ-Controller vs. Μ-Prozessor vs. SoC Embedded Software Engineering

Übersicht

● Rasperry Pi– Betriebssystem

– Hardware

● ARM● Μ-Controller vs. Μ-Prozessor vs. SoC● Embedded Software Engineering

vs. Software Engineering● Fazit

Page 3: Embedded Software Engeneering mit dem Raspberry Pi · Übersicht Rasperry Pi – Betriebssystem – Hardware ARM Μ-Controller vs. Μ-Prozessor vs. SoC Embedded Software Engineering

Raspberry Pi

Page 4: Embedded Software Engeneering mit dem Raspberry Pi · Übersicht Rasperry Pi – Betriebssystem – Hardware ARM Μ-Controller vs. Μ-Prozessor vs. SoC Embedded Software Engineering

Software

Raspbian: Debian Linux-Port

Pidora: Fedora-Port

Arch: Arch Linux-Port

...

Page 5: Embedded Software Engeneering mit dem Raspberry Pi · Übersicht Rasperry Pi – Betriebssystem – Hardware ARM Μ-Controller vs. Μ-Prozessor vs. SoC Embedded Software Engineering

Raspbian

● Basiert auf Debian 7 (Wheezy)● Graphische Oberfläche: LXDE● Softwarepakete aus Debian verfügbar

Page 6: Embedded Software Engeneering mit dem Raspberry Pi · Übersicht Rasperry Pi – Betriebssystem – Hardware ARM Μ-Controller vs. Μ-Prozessor vs. SoC Embedded Software Engineering

Hardware

● SoC: Broadcom BCM2835– CPU: ARM1176JZF-S (700 MHz)

– GPU: Broadcom VideoCore IV

● RAM: 512 MB● USB 2.0 (2x)● Video: HDMI, FBAS● Audio: HDMI, 3,5-mm-Klinkenstecker● Netzwerk: LAN9512 (100MBit)

Page 7: Embedded Software Engeneering mit dem Raspberry Pi · Übersicht Rasperry Pi – Betriebssystem – Hardware ARM Μ-Controller vs. Μ-Prozessor vs. SoC Embedded Software Engineering

SoC

● Broadcom VideoCore IV– FullHD-fähig– Spezifikation nicht offen ;-(

– Closed-Source-Treiber für Linux verfügbar

● ARM1176JZF-S– ARM7-Familie

– Taktung● Standard: 700Mhz● Übertaktung: bis zu 1Ghz und mehr

(Kühler notwendig!)

Page 8: Embedded Software Engeneering mit dem Raspberry Pi · Übersicht Rasperry Pi – Betriebssystem – Hardware ARM Μ-Controller vs. Μ-Prozessor vs. SoC Embedded Software Engineering

ARM

● ARM: Advanced RISC Machines● RISC-Architektur (Reduced Instruction Set Computer)

– Relativ wenige Befehle

– Pro Taktzyklus ein Befehl (typischerweise)

– Load-Store-Architektur

– Viele GP-Register

● 32-Bit (ARMv8: 64-Bit)

Page 9: Embedded Software Engeneering mit dem Raspberry Pi · Übersicht Rasperry Pi – Betriebssystem – Hardware ARM Μ-Controller vs. Μ-Prozessor vs. SoC Embedded Software Engineering

ARM - Einsatzbereich

● Smartphones● Tablet-Computer● DSL-Router● Waschmaschinen, Kühlschränke, Hausautomatisierung● Unterhaltungselektronik (TV, Receiver, DVD-Player, ...)● Autos, Flugzeuge● Medizintechnik● Industriesteuerungen● …

Page 10: Embedded Software Engeneering mit dem Raspberry Pi · Übersicht Rasperry Pi – Betriebssystem – Hardware ARM Μ-Controller vs. Μ-Prozessor vs. SoC Embedded Software Engineering

Softwareausführung in Eingebetteten Systemen

● Microcontroller– Meist 8- oder 32-Bit

● Microprozessoren– Eher selten

● SoCs (System-on-a-Chip)– Bei komplexen Aufgaben

dominierend

Page 11: Embedded Software Engeneering mit dem Raspberry Pi · Übersicht Rasperry Pi – Betriebssystem – Hardware ARM Μ-Controller vs. Μ-Prozessor vs. SoC Embedded Software Engineering

8-Bit-Microcontroller

● Chip umfasst:– Prozessor

– Arbeitsspeicher

– Datenspeicher (häufig)

– Peripheriefunktionen (SPI, I²C, CAN, ...)

● Geringe Resourcen– 256 Byte bis 512 kb RAM

– 0 Byte bis 4 kb Datenspeicher

– 1 kb bis 32 kb Programmspeicher

● Taktung: 1 – 20 Mhz

Page 12: Embedded Software Engeneering mit dem Raspberry Pi · Übersicht Rasperry Pi – Betriebssystem – Hardware ARM Μ-Controller vs. Μ-Prozessor vs. SoC Embedded Software Engineering

8-Bit-Microcontroller

● Geignet für simple Aufgaben und einfache Berechnungen

● Software– Meist in C geschrieben

– Relativ simple Programme

– Kein Betriebssystem

● Kostengünstig● Werden zum Teil von 32-Bit-Microcontrollen

verdrängt

Page 13: Embedded Software Engeneering mit dem Raspberry Pi · Übersicht Rasperry Pi – Betriebssystem – Hardware ARM Μ-Controller vs. Μ-Prozessor vs. SoC Embedded Software Engineering

Microprozessoren

● Chip umfasst: nur Recheneinheit● Hohe Taktraten: bis zu 4 Ghz● Externe Komponenten notwendig:

– Arbeitsspeicher

– Peripheriekomponenten (SPI, I²C, CAN, …)

– ...

● Sehr flexibel einsetzbar● kostenintensiv

Page 14: Embedded Software Engeneering mit dem Raspberry Pi · Übersicht Rasperry Pi – Betriebssystem – Hardware ARM Μ-Controller vs. Μ-Prozessor vs. SoC Embedded Software Engineering

SoCs

● Chip umfasst:– Prozessor

– Arbeitsspeicher

– Peripheriefunktionen (SPI, I²C, CAN, …)

– Viele weitere Komponenten möglich● GPU● Ethernet-Netzwerk● ...

● Taktraten: bis zu mehreren Ghz● Arbeitsspeicher: bis zu meheren Gb● Hohe Anzahl verschiedener SoCs erhältlich● Kostengünstig

Page 15: Embedded Software Engeneering mit dem Raspberry Pi · Übersicht Rasperry Pi – Betriebssystem – Hardware ARM Μ-Controller vs. Μ-Prozessor vs. SoC Embedded Software Engineering

Programmiersprache

● Heute meist C, seltener C++● Wenn Performance kritisch ist: Assembler● Bei unkritischen Anwendungen

(Webschnittstelle) auch Skripte

Page 16: Embedded Software Engeneering mit dem Raspberry Pi · Übersicht Rasperry Pi – Betriebssystem – Hardware ARM Μ-Controller vs. Μ-Prozessor vs. SoC Embedded Software Engineering

Programmierungeingebetteter Anwendungen

● µ-Controllern: kein Betriebssystem● µ-Prozessor und SoCs:

Betriebssystem vorhanden– Programmierung daher ähnlich wie bei PCs

– Aber Achtung:Andere Anforderungen an die Software

Page 17: Embedded Software Engeneering mit dem Raspberry Pi · Übersicht Rasperry Pi – Betriebssystem – Hardware ARM Μ-Controller vs. Μ-Prozessor vs. SoC Embedded Software Engineering

Embedded Software Engineering

● Unterschiede zum Software Engineering:– Wechselwirken mit physikalischen Prozessen

– Erhöhte Anforderungen an die Zuverlässigkeit● Fehlfunktion kann tötlich sein● Echtzeitanforderungen

Page 18: Embedded Software Engeneering mit dem Raspberry Pi · Übersicht Rasperry Pi – Betriebssystem – Hardware ARM Μ-Controller vs. Μ-Prozessor vs. SoC Embedded Software Engineering

Echtzeitsystem

● Echtzeitfähig bedeutet:Eine korrektes Ergebnis innerhalb eines vorbestimmten Zeitintervalls bereitzustellen.

● Echtzeitfähig != schnell● Weitere Differenzierung

– Hart echtzeitfähig:Zeitintervall wird garantiert eingehalten

– Weich echtzeitfähig:Zeitintervall wird in der Regel eingehalten

Page 19: Embedded Software Engeneering mit dem Raspberry Pi · Übersicht Rasperry Pi – Betriebssystem – Hardware ARM Μ-Controller vs. Μ-Prozessor vs. SoC Embedded Software Engineering

Echtzeitfähigkeit

● Ist ein „normaler“ PC echtzeitfähig?● Ist der Raspberry Pi echtzeitfähig?

Page 20: Embedded Software Engeneering mit dem Raspberry Pi · Übersicht Rasperry Pi – Betriebssystem – Hardware ARM Μ-Controller vs. Μ-Prozessor vs. SoC Embedded Software Engineering

Echtzeitfähigkeit

● Ist ein „normaler“ PC echtzeitfähig?● Ist der Raspberry Pi echtzeitfähig?

● Antwort (auf beide Fragen): kommt drauf an!

Page 21: Embedded Software Engeneering mit dem Raspberry Pi · Übersicht Rasperry Pi – Betriebssystem – Hardware ARM Μ-Controller vs. Μ-Prozessor vs. SoC Embedded Software Engineering

Echtzeitfähigkeitvon Betriebssystemen

● Probleme:– Multitasking

– Speicherverwaltung (Swapping)

– Locks auf Resourcen

– …

● Lösungen:– Echtzeitbetriebssystem

(VxWorks, QNX, LynxOS, …)

– Erweiterung von „normalen“ Betriebssystemen

– Zusätzliche Hardware

Page 22: Embedded Software Engeneering mit dem Raspberry Pi · Übersicht Rasperry Pi – Betriebssystem – Hardware ARM Μ-Controller vs. Μ-Prozessor vs. SoC Embedded Software Engineering

RTAI(Real Time Application Interface)

● Echtzeitfähiger Microkernel unter Linux

Page 23: Embedded Software Engeneering mit dem Raspberry Pi · Übersicht Rasperry Pi – Betriebssystem – Hardware ARM Μ-Controller vs. Μ-Prozessor vs. SoC Embedded Software Engineering

RTAI(Real Time Application Interface)

● Pro:– Harte Echtzeitfähigkeit

– Einfaches Konzept

● Contra:– Linux-Kernel kann nicht in Echtzeittasks genutzt

werden

– Nicht vollständig auf ARM portiert

Page 24: Embedded Software Engeneering mit dem Raspberry Pi · Übersicht Rasperry Pi – Betriebssystem – Hardware ARM Μ-Controller vs. Μ-Prozessor vs. SoC Embedded Software Engineering

Echtzeitfähigkeit von Linux

● Linux ist (ab 2.6.23.1) weich echtzeitfähig● Notwendig:

– Kernelparameter CONFIG_PREEMPT_RT setzen

– High-Resolution-Timer aktivieren

– ACPI und APM deaktivieren (nur x86)

● Scheduler:– SCHED_OTHER

– SCHED_RR

– SCHED_FIFO

Page 25: Embedded Software Engeneering mit dem Raspberry Pi · Übersicht Rasperry Pi – Betriebssystem – Hardware ARM Μ-Controller vs. Μ-Prozessor vs. SoC Embedded Software Engineering

Echtzeitfähigkeit von Linux

● Vorgehen:– Setzen des Schedulers auf SCHED_FIFO

(alternativ SCHED_RR)

– Setzten der Priorität– Locken des Speichers– Resevieren von Speicher auf dem Stack

● Prozess wird nur unterbrochen durch– I/O-Anfragen

– Prozess mit höherer Priorität

– Aufruf von sched_yield

Page 26: Embedded Software Engeneering mit dem Raspberry Pi · Übersicht Rasperry Pi – Betriebssystem – Hardware ARM Μ-Controller vs. Μ-Prozessor vs. SoC Embedded Software Engineering

Echtzeitfähigkeit von Linux

int main(int argc, char* argv[]) {

struct timespec t;

struct sched_param param;

int interval = 50000; /* 50us */

param.sched_priority = MY_PRIORITY;

if(sched_setscheduler(0, SCHED_FIFO, &param) == -1) exit(-1);

if(mlockall(MCL_CURRENT|MCL_FUTURE) == -1) exit(-2);

stack_prefault(); /* Stack reservieren */

clock_gettime(CLOCK_MONOTONIC, &t);

while(1) {

do_work(); /* Arbeit durchführen */

t.tv_nsec += interval;

while (t.tv_nsec >= NSEC_PER_SEC) {t.tv_nsec -= NSEC_PER_SEC; t.tv_sec++;}

clock_nanosleep(CLOCK_MONOTONIC, TIMER_ABSTIME, &t, NULL);

}

}

Page 27: Embedded Software Engeneering mit dem Raspberry Pi · Übersicht Rasperry Pi – Betriebssystem – Hardware ARM Μ-Controller vs. Μ-Prozessor vs. SoC Embedded Software Engineering

Echtzeitfähigkeit von Linux

● Pro:– Läuft mit einem Standardkernel

(sofern RT-PREEMPT aktiviert ist)

– Kernel und Treiber prinzipiel nutzbar● Contra:

– „Nur“ weiche Echtzeitfähigkeit

– High-Resolution-Timer u.U. nicht verfügbar

– Gefahr von verdecktem I/O-Anfragen (mmap)

Page 28: Embedded Software Engeneering mit dem Raspberry Pi · Übersicht Rasperry Pi – Betriebssystem – Hardware ARM Μ-Controller vs. Μ-Prozessor vs. SoC Embedded Software Engineering

Fazit

● Echtzeitanforderungen– mit Linux umsetzbar

– mit Raspberry Pi umsetzbar

● Realisierung aber nicht trivial