Guten Morgen,
was ich mich die ganze Frage ist, ob die Mikrocontrollertechnik und
deren Programmierung in C Zukunft in der Industrie haben. In naher
Zukunft könnte es doch sein, dass die FPGA's immer mehr und mehr
eingesetzt werden.
Was denkt ihr darüber?
Also C hat bisher alle Sprachen überlebt, es wird Standard bleiben.
FPGAs werden sicherlich die DSP's ablösen wegen ihrer Parallelität. ABer
im Bereich µC gibt es Typen, die unter einem € kosten. Da wäre es doch
Blödsinn einen viel teuren FPGA vielleicht noch mit externem Speicher
einzubauen. Vielversprechend ist auch die ARM-Architektur, die ähnliche
Vorteile bietet wie der standardisierte PC von heute. Also ich kann mir
nicht vorstellen, daß da bevorzugt wird, daß jeder sein eigenes
µC-Süppchen auf einem FPGA implementiert.
Vielleicht wird es eher ähnlich den dicken FPGAs mit Hardcore evtl. auch
kleine Mikrocontroller mit integriertem "Mini-FPGA" geben.
Das alles ist ein sehr kostensensibler Bereich. Und viele
Mikrocontroller werden in der Tat für "Mikro-Aufgaben" eingesetzt um ein
paar simple Sachen zu steuern die meistens auch noch sehr zeitunkritisch
sind.
Was die Zukunft bringt, hängt in diesem Bereich praktisch nur von den
Kosten ab.
Orakel schrieb:
> Vielleicht wird es eher ähnlich den dicken FPGAs mit Hardcore evtl. auch> kleine Mikrocontroller mit integriertem "Mini-FPGA" geben.
Sowas vermute ich auch:
Es gibt ja mittlerweile C ähnliche Compiler für FPGAs, und auch
kombinierte Compiler für Softcore µC bei denen man den Compiler anweisen
kann einzelne Funktionen als Logikelemente in den FPGA einzubauen.
Ähnliches könnte man auch für normale µC machen: Der kleine FPGA würde
dann quasi als Coprozessor arbeiten, wodurch der µC bestimmte Aufgaben
sehr schnell bewältigen könnte (proprietäre Verschlüsselungen, Filter,
Interfaces usw.)
Wenn man sich aktuelle µC anschaut, dann erkennt man schon deutliche
Trends in diese Richtung: Das Eventsystem der ATXMega das es ermöglicht
die Peripherie untereinander zu verbinden, Multiplexer zwischen der
Peripherie und den IO Pins durch die man die IO Pins der Peripherie frei
festlegen kann und ähnliches gehen alles in die Richtung von frei
programmierbarer Logik rund um den µC Kern.
Die urspruenglichen Mikroprozessoren wurden eigentlich schon ersetzt,
und zwar durch mixed signal controller, genannt Mikrocontroller Diese
haben zusaetzlich zum Rechnenwerk noch funktionale IO die meist auch
analog sein kann. Standardmaessig hat man einen Satz ADC Eingaenge mit
einem Multiplexer. Wenn's nicht um diese analoge IO ginge, so koennte
man einen Controller durch ein FPGA ersetzen. Ein FPGA ist aber viel
teurer und in der Regel viel schneller. Ein modernes FPGA hat auch schon
energiesparfunktionen, ob sie so sparsam wie ein controller werden wird
weiss ich grad nicht.
Allzuviel wird sich da nicht ändern. Die Technik entwickelt sich zwar
rasant weiter, anderseits reichen heutige Prozessoren und
Programmiertechniken für die überwiegende Anzahl der Anwendungen - das
beste Beispiel ist der PC-Bereich. Obwohl man dort heute das zehn- bis
hundertfache an Leistung hat wie noch vor 5 oder 10 Jahren, hat sich bis
auf Computerspiele nicht viel getan, das die Leistung auch nutzen würde
(und sie nicht bloss verbrät, aka Windows Vista).
Die interessanteste (einigermasse neue) Anwendung sind für mich
Prozessoren mit eingebauten FPGA-Strukturen, so dass man gewissermassen
den Befehlssatz erweitern könnte.
Aber auch da sind wohl erst dann grössere Umwälzungen zu erwarten, wenn
man es geschafft hat, dass sich die FPGAs quasi selber programmieren.
Solange man für jedes neue Problem erneut VHDL bemühen muss sind C
Programmierer billiger.
Ich denke, dass C zwar in nächster Zeit nicht verschwinden wird, da
Industriestandard, aber es wird stark zurückgedrängt durch andere
abstraktere Beschreibungsmöglichkeiten.
Es ist nun mal so, dass immer mehr Komplexität gefordert wird. Während
heute noch z. B. Fernbedienungen mit IR, 4-Bit-Controller und
unidirektional eingesetzt werde, die sich auch einfach in Assembler
programmieren lassen, kommen in Zukunft richtige High-Tech-Geräte. Dann
sollen sich möglichst alle Geräte über sich automatisch konfigurierende
WLAN, Bluetooth sonstwas Mesh-Verbindungen anmelden und über den
Touchscreen bedienbar sein, aber nicht separat, sondern integriert. Also
z. B. kann man heute die Lautstärke beim DVD-Rekorder und beim Fernseher
separat einstellen. Man muss bei beiden Geräten Sendersuchlauf machen.
Wenn man fernsehen schaut und das Programm gleich aufnehmen will, muss
man erst auf dem Rekorder den Sender raussuchen und "Aufnehmen" drücken,
natürlich mit der anderen Fernbedienung.
Wenn das alles zusammen wirken soll, hat man als Entwickler schon
einiges zu tun, der C-Code wird unübersichtlich, vieles passt nicht
zusammen. Man hat viele Versionen und Hersteller, Bibliotheken von
Funktionen, Schnittstellenbeschreibungen werden weiterentwickelt. Man
kann zwar all das mit C erschlagen, es macht aber viel Aufwand. Der
Aufwand ist auch deshalb so groß, weil C oder C++ nicht weit genug
abstrahiert. Man schreibt einen Algorithmus und legt die Befehlsfolge
fest, auch bei unabhängigen Befehlen, die man vertauschen könnte um die
gleiche Funktion zu erfüllen.
Man fordert dynamisch Speicher an, übergibt Pointer, gibt Speicher
wieder frei. Das ist schon wieder eine große Schwachstelle, denn man
kann Speicher freigeben und hinterher zugreifen oder vergessen
freizugeben und dann wird der Speicher voll. Das sind alles Low-Level
Beschreibungen, welche nichts über die Funktionalität aussagen. Es ist
einfach Ballast, den niemanden interessiert. Genauso wie der Kram mit
den Pointerüberläufen, wo Hacker Programmcode injizieren. Ebenfalls
nervig ist es bei Systemprogrammierung mit mutex, spinlock, workqueues.
Die Beschreibung ist für heutige und zukünftige Anforderungen nicht mehr
abstrakt genug.
Man wird mehr Beschreibungssprachen für spezielle Zwecke entwickeln. So
wird man in Zukunft nicht mehr Sendercode und Empfängercode für eine
Datenübertragung schreiben müssen und hoffen, dass man keinen Fehler
drin hat. Man wird dann einfach eine Protokollbeschreibungssprache
haben. Aus der Beschreibung entsteht dann sowohl Sender als auch
Empfänger und die sind dann garantiert kompatibel und vor allem
portierbar, egal ob µC oder FPGA.
Es wird auf jeden Fall sehr viel an Beschreibungssprachen hinzu kommen.
Den Trend merken wir ja längst: VHDL, SDL, HTML, XML, ...
Damit verschiebt sich das Know-How weg vom Verständnis komplexer
Zusammenhänge, Wissen um Schnittstellen, Standards, Protokolle, hin zu
einem enormen Wust an Beschreibungs- und Abstraktionsmöglichkeiten,
Schlüsselwörtern, ...
Ist das nicht auch die Schwelle vom µC-programmierenden Elektroingenieur
hin zum Informatiker? All die genannten Dinge sind doch schon kaum noch
auf der Ebene eines Cotrollers. Beim Controller wird C und C++ reichen.
Weitergehende Komplexität wird ein Betriebssystem erfordern und damit
schon eher die Aufgabe eines Informatikers, der eben nicht die Hardware
in allen Ecken kennen muß. Diese Abstraktionsebene gibt es schon jetzt
in Form des embedded PC und aufgesetzter Systeme. Für ein Radio, eine
Waschmaschine sind solche Answendungen aber eher weniger interessant und
dort wird auch weiterhin der µC seine Daseinsberechtigung haben.
>Für ein Radio, eine>Waschmaschine sind solche Answendungen aber eher weniger interessant und>dort wird auch weiterhin der µC seine Daseinsberechtigung haben.
Da denke ich liegst du falsch.
Denke doch mal an das was man von einem "Radio" heute fordert, bzw. was
einfach drin ist, egal ob man es braucht oder nicht: MP3, OGG, DRM, DAB,
Kopierschutzkram, Antennadiversity, "Software defined radio", Navigation
(GPS), iPod-Dockingstation, USB-OTG, WLAN, Bluetooth.
Und zur Waschmaschine: Fuzzylogik für optimalen Rundlauf.
Energiesparfunktionen, evtl. mit Erkennung der Füllmenge,
Verschmutzungsgrad (beenden des Waschprogamms, wenn das Waschwasser
nicht mehr dreckiger wird), später evtl. Stromnetzlastadaptive Funktion
(Wasser wird aufgeheizt, wenn gerade der geringste Energiebedarf
besteht). Evtl. Anschluss einer Heißwasserleitung von der Solaranlage.
Wiederverwendung des heißen Abwassers. Trocknungsfunktion, automatische
Service- und Diagnosefunktionen. Ermittlung der optimalen
Waschmittelmenge und Zusammensetzung (Wasserenthärter, Weichspüler,
Fleckenlöser). Und natürlich soll auf dem Handy noch erscheinen, wann
die Wäsche fertig ist...
>was ich mich die ganze Frage ist, ob die Mikrocontrollertechnik und>deren Programmierung in C Zukunft in der Industrie haben. In naher>Zukunft könnte es doch sein, dass die FPGA's immer mehr und mehr>eingesetzt werden.>Was denkt ihr darüber?
Ich denke, dass die Fahrräder in Zukunft weiterhin nicht als
Schienenfahrzeuge eingesetzt werden.
Vergleicht bitte keine Birnen mit Äpfeln!
ingFH schrieb:
> Vergleicht bitte keine Birnen mit Äpfeln!
Warum nicht? Apfel sind härter, als Birnen. Ist doch ein völlig
korrekter Vergleich.
Bloß die Pauker, die armen kleinen Schülern solche Scheiße in die Hirne
kacken, spotten jeder Beschreibung.
@ Stefan Helmert: Und für das alles brauchst Du ein Betriebssystem?
Schon der C167 hatte einen eigenen Befehlssatz für Fuzzylogik. Der war
für eine Waschmaschine überdimensioniert. Mit Radio meine ich Radio,
Atmel hat eine Serie 4 Bit-µC aufgelegt für solche Anwendungen. Also weg
von Monstern mit Embedded Linux.
Handyanwendungen, die immer mehr zur attraktiven Schnittstelle kommen,
kann man absehen, daß es in Richtung Mini-Pc kommt. Das ist wirklich
eine Sache für ein Betriebssystem. Und hier wird der Informatiker eher
gefragt sein, als bei einer Neukonstruktion einer SPS.