Werkzeuge/Technologien für Hardwaredesign und -entwicklung
Der erste Schritt bei der Entwicklung der Hardware ist die Analyse des gesamten Systems.
Als Hardware-Entwicklungsingenieure verwenden wir Standard-Bürosoftware, um das First-Level-Diagramm und das Rauschdiagramm zu zeichnen, manchmal so einfach wie MS Excel.
Natürlich können wir auch anspruchsvollere und teurere Tools verwenden, aber die meisten Projekte benötigen keinen solchen Overkill, und der Nutzen ist in der Regel nicht sehr hoch.

Dank unserer langjährigen Erfahrung können wir mit einem billigen Standardwerkzeug die gleiche Leistung erzielen wie mit einem teuren Hochleistungswerkzeug.
Wir nutzen die Werkzeuge der Spice-Familie effizient für die lineare und nichtlineare Analyse bei niedrigen Frequenzen. Obwohl sie sehr oft kostenlos sind, reichen sie in den meisten Fällen aus.
Ein weiterer Schritt ist die Simulation der einzelnen Hardwarekomponenten.

Physikalische Genauigkeit kommt vom Verständnis des Modells, nicht vom Preis des Simulators.
Der Maschinenbauingenieur erstellt ein 3D-Modell des Produkts aus mechanischer Sicht.Das Modell wird anschließend angepasst und optimiert, sodass es die in der Hauptdefinitionsphase festgelegten Anforderungen erfüllt und zugleich mit dem elektronischen Design kompatibel ist.

Gutes mechanisches Design funktioniert für die Leiterplatte sowie für die Fertigung.
Wir verwenden die gängigsten Marken von Werkzeugen entsprechend ihrem Zweck. Einige Werkzeuge ermöglichen eine vollständige EM-Analyse, andere sind sehr leistungsstark bei nichtlinearen Simulationen.
Wenn sie die technischen Anforderungen erfüllen, verwenden wir auch kostenlose Werkzeuge, was es uns ermöglicht, die Kosten für die Simulationszeit zu minimieren und einen Teil des Entwicklungsbudgets einzusparen.
Sobald wir die Leiterplattenstruktur mit diesen Werkzeugen optimiert haben, exportieren wir die Daten für weitere Entwicklungsschritte.

Die Kombination der richtigen HF-Werkzeuge liefert zuverlässige Ergebnisse, die Einzelwerkzeug-Ansätze nicht erreichen können.
Sobald wir alle erforderlichen Komponenten simuliert und optimiert haben, gehen wir zum PCB-Design über. Wir erstellen einen Schaltplan, verbinden alle Komponenten und leiten das finale Modell an das PCB-Design-Team weiter.
Die PCB-Entwickler setzen das Modell dann in die Form konkreter Leiterplatten um. Dieser Prozess wird manuell durchgeführt und das Know-how unseres Expertenteams sowie deren langjährige Erfahrung im PCB-Design sind dabei maßgeblich beteiligt. Die elektronischen Teile müssen natürlich auch unter Berücksichtigung der gewünschten physischen Form des Produkts entworfen werden.
Sobald sie mit dem PCB-Layout fertig sind, exportieren sie die PCB-Produktions- und Bestückungsdaten zur Überprüfung.

Die PCB-Entwicklung wird daher in enger Kommunikation mit den Maschinenbauingenieuren unter Verwendung ihrer 3D-Modelle durchgeführt.
Die Phase, nachdem wir die ersten Muster aus der Produktion erhalten haben, ist spannend.
Wir verwenden viele hoch entwickelte und teure Instrumente, um zu prüfen, ob unsere Prototypen die in der Projektdefinitionsphase festgelegten Anforderungen erfüllen.
Wenn sie einige der Grenzwerte überschreiten, führen wir eine Diagnose durch, um die Ursache und die Lösung zu finden.

Wir testen mit branchenüblichen Instrumenten, erweitert durch unsere eigene Test-Framework-Software.
Werkzeuge für Softwareentwicklung
Bevor wir uns an die Softwareimplementierung machen, bereiten wir die Architektur in einem UML-Modell vor.
Für diese Modellierung verwenden wir verschiedene Werkzeuge.
Vor langer Zeit haben wir mit Rational Rhapsody begonnen, jetzt verwenden wir auch PlantUML, Microsoft Visual Studio, Microsoft Visio, Lucid Chart und Enterprise Architect.

Wir passen die Architektur entsprechend an - egal, ob wir auf einem Betriebssystem - Linux oder Windows - oder Bare-Metal-Firmware aufbauen.
Für den Softwareentwicklungsprozess verwenden wir eine Toolfamilie von Atlassian.
Wir haben langjährige Erfahrung mit JIRA, das für die Fehlerverfolgung eingesetzt wird, wobei wir häufig agile Prozessabläufe auf der Grundlage von Kanban oder Scrum verwenden.

Und wir nutzen den Hauptvorteil von JIRA, nämlich die enge Verbindung mit dem Bitbucket-Repository.
Im Bereich des Revisionskontrollsystems haben wir vor ein paar Jahren mit SVN angefangen. In den letzten Jahren sind wir auf Toolchains auf der Grundlage von Git umgestiegen, was den Vorteil eines flexiblen Branching und Merging (im Vergleich zu SVN) mit sich bringt.Die jeweiligen Daten senden wir in ein entferntes Bitbucket-Repository, das eine leistungsstarke Infrastruktur und Integration mit anderen Tools von Atlassian bietet.

Wir verwenden Technologien zur kontinuierlichen Integration (CI) wie Jenkins Server.
Unsere Kollegen sind nicht gezwungen, bestimmte Tools zu verwenden. Die meisten von ihnen verwenden gerne Visual Studio Code (VS Code) oder MS Visual Studio, andere mögen Atom, Eclipse oder einfache Linux-basierte Editoren.
Für die Quelldateien setzen wir statische Code-Analyse-Tools wie Clang ein.

Fast alle Tools bieten die volle Leistungsfähigkeit eines Remote-Target-Debuggers und verschiedene Plug-in-Pakete.
Die meisten der von uns verwendeten Programmiersprachen unterstützen sowohl Linux- als auch Windows-Betriebssysteme.
Einige von uns mögen Python wegen seiner Flexibilität und der Tatsache, dass es nicht kompiliert werden muss, insbesondere für schnelles Software-Prototyping oder Testskripte.
Für die webbasierten Anwendungen haben wir gute Erfahrungen mit JavaScript, TypeScript und verschiedenen Web-Frameworks wie ReactJS und Express, die von Runtimes wie NodeJS und Electron unterstützt werden.

Andererseits sind die Kollegen, die sich intensiv mit ARM Cortex-Embedded-Firmware-Anwendungen auf niedrigerer Ebene beschäftigen, hervorragend in C oder C++.
Einige Projekte, die wir für unsere Kunden durchführen, verwenden PCIe-Karten für einen Host-PC. Solche Computer laufen meist unter Windows; daher unterstützen wir unsere Kunden bei der Entwicklung von Windows-Treibern.
Natürlich erstellen wir auch erfolgreich Treiber für Embedded Linux - in den meisten Fällen für die Peripherie, die nicht Teil des individuellen SOM (System on Module) ist.

Wir haben detaillierte Erfahrungen mit dem älteren Windows Driver Kit (WDK) und dem neueren Kernel-Mode Driver Framework (KMDF).

