kundenspezifische Programmierungen von Mikrokontrollern, DSP’s und mehr (Softwareentwicklung /Firmwareentwicklung)
…mit Hintergrund
…auf Wunsch hardwarenah, code- und prozessoroptimiert
Teilbereich: Signalanalyse
- Erfassung des Gesamtsystems
- Analyse der Randbedinungen
- Mathematische Nachbildung der Signale
Teilbereich: Entwicklung von Algorithmen
- mathematische Simulation des Systems
- Entwicklung von Algorithmen
Teilbereich: Entwickeln eines realen Systems
- Festlegung der Randbedingunen für die Hardware
Teilbereich: Microcontroller & DSP Programmierung
- Programmierung auf einer echten Hardware
- effiziente, a.W. hardwarenahe Programmierung
- Sprachen: Assembler / C / C++
- auf den jeweiligen Prozessor optimierte Programmierung
- für verschiedenste Prozessoren, wie PIC , ARM, ATMEGA, DSP’s usw.
Teilbereich: Test und Optimierung
- Test der Hard- und Software
- Optimierung der Algorithmen auf Basis praktischer Erfahrungen
Besonderheiten:
- keine blinde Festlegung auf eine Programmierumgebung
- hardwarenahe Programmierung
- effizienter, schneller Code
Was bedeutet eigentlich Softwareentwicklung bzw. Firmwareentwicklung
Nach erfolgreicher Hardwareentwicklung erfolgt meist der zweite Teil der Elektronik-Entwicklung in Form der Software- oder auch Firmware-Entwicklung. Hierbei bezeichnet die Software den Bereich der Programmierung, der eher für PC, Computer und höhere hersteller-unabhängige Systeme angewandt wird – Firmware-Entwicklung bezeichnet eher den Teil der hardwarenahen Programmierung – z.b. von Mikrocontrollern oder Embedded Systems.
Bei der hardwarenahen Firmwareprogrammierung liegt der Fokus auf einer schnellen, nachvollziehbaren Funktion der Hardware – zum Beispiel zur Implementierung von Schnittstellen, wie CAN, I2C, SPI usw. Die Aufnahme von analogen Werten = ADU Analog Digital Umwandler oder die Ausgabe von analogen Werten, wie DAU = Digital Analog Umwandler gehören auch in diesen Bereich.
Die hardwarenahe Programmierung kann durchaus in einer Hochsprache, wie C oder C++ durchgeführt werden – in speziellen Fällen wird auch heute noch zur Maschinensprache Assembler gegriffen. Ziel der hardwarenahen Firmwareprogrammierung ist es aber, einen schnellen Code zu erzeugen, von dem man schnell, effizent und determiniert Peripherien steuern kann.
Bedienoberflächen, wie Menüs, Eingabemöglichkeiten, optische, akustische oder haptische Rückmeldungen gehören auch in den Bereich der Firmwareprogrammierung – wobei diese nicht unbedingt so hardwarenah sein müssen.
Speziell im Bereich GUI (Graphical User Interface) bedient man sich gern vorgefertigten Routinen und Softwareblöcken, die die Periperhie – wie z.b. ein Display ansteuern. An dieser Stelle ist es für die Programmierung weniger wichtig, welches Bit wann gesetzt wird – die Gesamtfunktion ist wichtig.
Dieser Teil der Programmierung wird dann auch im fließenden Übergang eher Softwareentwicklung genannt – nicht zuletzt auch, weil die Grundprinzipien der Software-Programmierung plattform unahängig sind – also im Grunde auch für PC und Computer anwendbar sind.
Die Softwareentwicklung bzw. Firmwareentwicklung bezeichnet man also Programmierungen in beliebigen Programmiersprachen für Microcontroler, DSP’s (Digitale Signal Prozessoren), eingebettete Systeme (Embedded Systems), Computer und PC’s wie Desktop, Laptop, Tablets usw.
Der Begriff der agilen Softwareentwicklung oder agilen Firmwareentwicklung bezeichnet dabei die Eigenart, die jeweiligen Programmteile während der Programmierung bereits zu Anteilen dem Kunden vorzuführen um bereits während der Entstehung einzeln, gewichtet und priorisiert auf Kundenwünsche oder neue Erkenntnisse eingehen zu können.
Das Wort agil steht also in dem Zusammenhang für kurze, kleine Design-Teilschleifen und durch den permanenten Kontakt zum Kunden zeitiges und schnelles Umsetzen von neuen Wünschen und Erkenntnissen.