Maker-Projekte mit JavaScript (eBook)
332 Seiten
O'Reilly Verlag
978-3-96010-190-1 (ISBN)
Gordon Williams ist ein Unternehmer und Erfinder aus der Gegend von Oxford. Schon als Kind schrieb er Software und spielte mit Elektronik, später studierte er Informatik an der Universität von Cambridge. Gordon hat für verschiedene Technikunternehmen gearbeitet und sich dabei auf 3DGrafik und Compilerdesign in verschiedenen Sprachen spezialisiert. Seit 2012 arbeitet er an dem JavaScript-Interpreter Espruino. Dabei hat er im Alleingang drei erfolgreiche Crowdfunding-Kampagnen gestartet und vier verschiedene Espruino-Geräte entwickelt. Inzwischen entwickelt Gordon Espruino hauptberuflich weiter und unterstützt damit eine großartige Gemeinschaft von Espruino-Benutzern in aller Welt. Des Weiteren tritt er als Redner auf Veranstaltungen zu JavaScript, eingebetteter Software und bei Maker-Communitys in aller Welt auf.
Gordon Williams ist ein Unternehmer und Erfinder aus der Gegend von Oxford. Schon als Kind schrieb er Software und spielte mit Elektronik, später studierte er Informatik an der Universität von Cambridge. Gordon hat für verschiedene Technikunternehmen gearbeitet und sich dabei auf 3DGrafik und Compilerdesign in verschiedenen Sprachen spezialisiert. Seit 2012 arbeitet er an dem JavaScript-Interpreter Espruino. Dabei hat er im Alleingang drei erfolgreiche Crowdfunding-Kampagnen gestartet und vier verschiedene Espruino-Geräte entwickelt. Inzwischen entwickelt Gordon Espruino hauptberuflich weiter und unterstützt damit eine großartige Gemeinschaft von Espruino-Benutzern in aller Welt. Des Weiteren tritt er als Redner auf Veranstaltungen zu JavaScript, eingebetteter Software und bei Maker-Communitys in aller Welt auf.
2 Was sind Mikrocontroller?
Ein Mikrocontroller ist ein kleiner, eigenständiger Computer. Ihr PC und wahrscheinlich auch Ihr Telefon bestehen aus verschiedenen Komponenten wie dem RAM, nicht flüchtigem Speicher wie Festplatten oder SSDs, Oszillatoren und der Stromversorgung. Bei den meisten Mikrocontrollern sind dagegen alle benötigten Elemente in einem einzigen Bauteil vereint: RAM, Flash-Speicher, Oszillatoren und ggf. sogar Spannungsregler. Die meisten Mikrocontroller müssen Sie lediglich an eine Batterie der passenden Spannung anschließen, um mit ihnen arbeiten zu können.
Die Grenzen zwischen den beiden Arten von Prozessoren verschwimmen mehr und mehr. Mikrocontroller sind heute schneller als Desktop-Computer es noch vor 20 Jahren waren, und in SoC-Prozessoren (System on Chip) von Geräten wie Mobiltelefonen sind mehr und mehr Komponenten integriert, um Kosten zu sparen. Der wahre Unterschied liegt im Verwendungszweck. Mikrocontroller werden in andere Geräte eingebettet und erledigen dort eine einzige Aufgabe (oftmals ohne Anzeige), während reguläre Computer Allzweckgeräte sind.
Die meisten von uns haben schon über Computer geflucht, weil sie nicht das taten, was wir erwartet haben. Mikrocontroller dagegen funktionieren so gut und so zuverlässig, dass wir ihr Vorhandensein meistens gar nicht wahrnehmen. Jeden Tag haben Sie mit hundert oder mehr Mikrocontrollern zu tun: in Ihrer Uhr, Ihrem Telefon, Ihrem Auto, Ihrer Kreditkarte, Ihrer Fahrradlampe usw. Sie arbeiten still im Hintergrund, um uns das Leben zu erleichtern.
Im Jahr 2015 wurden 15 Milliarden ARM-Kerne (Advanced RISC Machines) lizenziert. Das sind zwei für jeden Menschen auf der Erde. ARM-Mikrocontroller stellen aber nur eine der vielen verschiedenen Arten von Mikrocontrollern dar. Die tatsächliche Anzahl produzierter Mikrocontroller ist daher weitaus höher. Sie sind praktisch überall zu finden.
Mikrocontroller gibt es in unterschiedlichen Formen und Größen. Manche sind nur so groß wie ein Sandkorn, während andere die Maße einer Briefmarke einnehmen. Ihr RAM kann nur 16 Bytes, aber auch eine Million Bytes umfassen. Es gibt sie auch mit verschiedenen Architekturen, die sich durch die Anweisungen und deren Ausführung unterscheiden.
Übliche Architekturen für Mikrocontroller sind PIC und MIPS (verwendet von Microchip), AVR (Atmel) und ARM (ST, Atmel, Nordic, Freescale, Silicon Labs usw.). PIC und AVR wurden zunächst für 8-Bit-Prozessoren entwickelt. Dabei operieren die einzelnen Anweisungen auf 8-Bit-Werten (Zahlen zwischen 0 und 255), was die Prozessoren sehr klein und für einfache Aufgaben sehr wirtschaftlich macht, wohingegen kompliziertere Aufgabenstellungen wie die Multiplikation von 32-Bit-Zahlen lange dauern können.
Die ersten PIC- und AVR-Mikrocontroller hatten nur sehr wenig Speicher. Beispielsweise verfügte der AVR-Mikrocontroller AT90S8515 nur über 8 KB Flash-Speicher und 512 Byte RAM. Dass für den Zugriff auf den RAM nur 8-Bit-Zahlen zur Verfügung standen, war kein großes Problem, da man erst auf die eine und dann auf die andere Hälfte zugreifen konnte. Diese Prozessoren nutzten auch die Harvard-Architektur, bei der RAM und der Flash-Speicher komplett voneinander getrennt waren. Das war sinnvoll, da das Design damit sehr einfach gehalten werden konnte: Die Anweisungen für den Mikrocontroller wurden im Flash-Speicher ausgeführt und die Daten im RAM gespeichert.
Als in Mikrocontrollern immer mehr RAM verfügbar wurde (und die Erwartungen der Programmierer wuchsen, die sich keine Gedanken mehr darüber machen wollten, ob sich ihre Daten nun im Flash-Speicher oder im RAM befanden), mussten die Prozessoren jedoch erheblich mehr Zeit für Berechnungen aufwenden, nur um auf den richtigen Teil des Speichers zuzugreifen. Die Kompromisse, die bei einem Speicher von nur 0,5 KB sinnvoll gewesen waren, wirkten in umfangreicheren Systemen nun äußerst ineffizient.
Die Geschichte von ARM
Der erste ARM-Chip wurde 1985 von Steve Furber und Sophie Wilson bei Acorn Computers in Cambridge konstruiert. Damals begann Acorn gerade damit, den BBC Micro Model B+128 zu produzieren, der, wie der Name schon sagt, über einen RAM von 128 KB verfügte. Das waren 64 KB mehr, als der 16-Bit-Prozessor dieses Computers direkt adressieren konnte.
Die Ingenieure bei Acorn waren offensichtlich sehr vorausschauend. Ihnen war klar, dass sie in den nächsten Jahren Computer mit noch viel mehr Arbeitsspeicher bauen würden. Sie brauchten eine einfache Möglichkeit, um effizient auf mehr Arbeitsspeicher zuzugreifen, und deshalb entschieden sie sich, einen 32-Bit-Prozessor zu entwickeln.
WARUM KEINE ANDERE BITANZAHL?
Praktisch jeder Computer verwendet Mehrfache von 8 Bits. Nach 16 Bits wäre die nächste offensichtliche Möglichkeit daher 24 Bits. Das hätte beim Speicherzugriff jedoch eine Multiplikation mit 3 und – was entscheidend ist – eine Division durch 3 erfordert. Für den Zugriff auf das 18. Byte müssten Sie beispielsweise auf das 6. Wort (18/3) zurückgreifen.
Im Binärsystem (und ganz allgemein in der Mathematik) ist die Division durch die meisten Zahlen ziemlich schwierig. Einfach wird es dagegen, wenn Sie durch die Basiszahl des Zahlensystems dividieren. Im Dezimalsystem verwenden wir die Basis 10. Daher ist es ganz einfach, etwa 3.732.867.532 durch 10 zu teilen: Sie nehmen einfach die 2 am Ende weg. Die Division durch 100 oder 1000 ist ebenso einfach. Wollen Sie dagegen durch 7 teilen, wird es knifflig!
Im Binärsystem mit der Basis 2 verhält es sich ebenso. Die Division von 10010101110 durch 3 ist schwierig, die Division durch 2, 4, 8, 16 usw. dagegen ist einfach: Sie entfernen einfach die Stellen am Ende.
Bei ARM fiel die Wahl auf einen 32-Bit-Prozessor, sodass man einfach mit 4 multiplizieren und durch 4 dividieren konnte, um Adressen zu berechnen. Bei modernen Computern, die oft mehr als 4 GB RAM haben, musste die Größe erneut angehoben werden. Um mit 8 multiplizieren und dividieren zu können, ging man dabei zu 64 Bit über. Hierdurch kann auf so viele Daten verwiesen werden, dass wir damit noch eine ganze Weile auskommen werden!
Der ARM-Kern wurde von Anfang an als 32-Bit-Prozessor ausgelegt, wobei jede Anweisung mit Zahlen zwischen 0 und 4.294.967.295 umgehen können muss. Das machte die Sache zwar etwas komplizierter, aber nicht so schlimm, wie es den Anschein hat. Die Registerbits und die arithmetischen Logikeinheiten waren modular aufgebaut, sodass eine funktionierende Konstruktion für ein Bit einfach 32 Mal wiederholt werden konnte.
Mit der Möglichkeit, 32-Bit-Zahlen auf einmal zu speichern und zu verarbeiten, konnte ARM problemlos eine Von-Neumann-Architektur verwenden, bei der sowohl Anweisungen als auch Daten im selben Adressraum gespeichert werden. Eine einzige Anweisung kann Daten aus dem RAM oder ROM laden, wobei die Adresse den Bereich bestimmt. Das machte den Anweisungssatz des ARM-Prozessors sehr einfach und erleichterte die Programmierung dafür.
Der ARM-Kern war ursprünglich für voll ausgestattete Computer gedacht. In einigen wenigen davon sowie in fast allen Mobiltelefonen und Tablets wird er auch heute noch als Hauptprozessor verwendet. Mit zunehmender Leistungsfähigkeit von Mikrocontrollern wurde die ARM-Architektur jedoch auch für sie eingesetzt.
Mikrocontroller programmieren
Computer lesen in ihrem Arbeitsspeicher Anweisungen, die ihnen mitteilen, was sie tun sollen. Um diese schnell und effizient ausführen zu können, müssen diese Anweisungen für den Computer leicht verständlich sein. Deshalb ist die Gestaltung dieser Anweisungen mit hohem Aufwand verbunden. Leider ist das, was für einen Computer leicht zu verstehen ist, für Menschen oft alles andere als leicht verständlich.
Nehmen Sie beispielsweise an, Sie wollen die Zahlen von 1 bis 10 addieren. Die Anweisungen für einen ARM-Prozessor (der Maschinencode) sehen wie folgt aus:
e3 a0 50 00
e3 a0 40 01
ea 00 00 01
e0 85 50 04
e2 84 40 01
e3 54 00 0a
da ff ff fb
Für Menschen ist das weder leicht zu verstehen noch zu schreiben. Da wir es mit einem 32-Bit-Prozessor zu tun haben, bildet jede Zeile von vier Bytes eine Anweisung. Die Sache wäre schon viel leichter zu verstehen, wenn wir einfach aufschreiben könnten, was in jeder Zeile geschehen soll:
e3 a0 50 00 mov r5, #0
e3 a0 40 01 mov r4, #1
loopstart:
ea 00 00 01 b loopcheck
e0 85 50 04 add r5, r5, r4
e2 84 40 01 add r4, r4, #1
loopcheck:
e3 54 00 0a cmp r4, #10
da ff ff fb ble loopstart
Dies ist die sogenannte Assemblersprache, also die Darstellung...
Erscheint lt. Verlag | 17.4.2018 |
---|---|
Reihe/Serie | Make: | Make: |
Übersetzer | Volkmar Gronau |
Verlagsort | Heidelberg |
Sprache | deutsch |
Themenwelt | Mathematik / Informatik ► Informatik ► Programmiersprachen / -werkzeuge |
Informatik ► Web / Internet ► JavaScript | |
Schlagworte | Bluetooth • Infrarot • JavaScript • Maker • Motor • Projekte • Radio • Roboter • WfFi |
ISBN-10 | 3-96010-190-2 / 3960101902 |
ISBN-13 | 978-3-96010-190-1 / 9783960101901 |
Haben Sie eine Frage zum Produkt? |
Größe: 11,1 MB
DRM: Digitales Wasserzeichen
Dieses eBook enthält ein digitales Wasserzeichen und ist damit für Sie personalisiert. Bei einer missbräuchlichen Weitergabe des eBooks an Dritte ist eine Rückverfolgung an die Quelle möglich.
Dateiformat: EPUB (Electronic Publication)
EPUB ist ein offener Standard für eBooks und eignet sich besonders zur Darstellung von Belletristik und Sachbüchern. Der Fließtext wird dynamisch an die Display- und Schriftgröße angepasst. Auch für mobile Lesegeräte ist EPUB daher gut geeignet.
Systemvoraussetzungen:
PC/Mac: Mit einem PC oder Mac können Sie dieses eBook lesen. Sie benötigen dafür die kostenlose Software Adobe Digital Editions.
eReader: Dieses eBook kann mit (fast) allen eBook-Readern gelesen werden. Mit dem amazon-Kindle ist es aber nicht kompatibel.
Smartphone/Tablet: Egal ob Apple oder Android, dieses eBook können Sie lesen. Sie benötigen dafür eine kostenlose App.
Geräteliste und zusätzliche Hinweise
Buying eBooks from abroad
For tax law reasons we can sell eBooks just within Germany and Switzerland. Regrettably we cannot fulfill eBook-orders from other countries.
aus dem Bereich