Softwareentwicklung

Quellcode Softwareentwicklung

Neben der Elektronikentwicklung gehört die Softwareentwicklung zu den Entwicklungsdiensteistungen des Ingenieurbüros.

Der Schwerpunkt der Software/Firmware- Entwicklung liegt im Bereich kleine bis große Microctroller und DSPs, womit auch Embedded Systems eingeschlossen sind.

Durch Erfahrungen mit verschiedenen Prozessorfamilien und Entwicklungsumgebungen sind wir nicht auf eine Richtung fixiert, sondern können Ihnen das bieten, was am besten in das Projekt paßt.

Gemeinsam mit unseren Kooperationspartnern können wir aber auch weitreichendere Software Gesamtsysteme realisieren – z.B. Kombinationen mit PC’s, Mobile-Apps (Handy-Apps) und Web-Projekten.

 

 
Software- und Firmwareentwicklung mit Hintergrundwissen
Signalanalyse

  • Erfassung des Gesamtsystems
  • Analyse der Randbedinungen
  • Mathematische Nachbildung der Signale

Entwicklung von Algorithmen

  • mathematische Simulation des Systems
  • Entwicklung von Algorithmen
  • Simulationen von Algorithmen z.b. Matlab(R) /Octave

Entwickeln eines realen Systems

  • Festlegung der Randbedingunen für die Hardware

Programmierungen

  • in verschiedenen Programmiersprachen
  • verschiedener Plattformen – Microcontroller, DSP’s, Embedded Systems
  • verschiedener Architekturen 8-Bit/ 16-Bit / 32-bit / ARM
  • Von Neumann Architektur ( VNA) / Harvard -Architektur
  • ohne oder mit Betriebssystem
  • uvm.

Microcontroller und DSP-Programmierung

  • Programmierung auf einer echten Hardware
  • effiziente, a.W. hardwarenahe Programmierung
  • Sprachen: Assembler / C / C++ / auf Wunsch Basic
  • auf den jeweiligen Prozessor optimierte Programmierung
  • für verschiedenste Prozessoren, wie PIC , ARM, ATMEGA, DSP’s usw.

Test und Optimierung

  • Test der Hard- und Software
  • Optimierung der Algorithmen auf Basis praktischer Erfahrungen

Was bedeutet Softwareentwicklung?

Was Bedeutet Softwareentwicklung

Der Begriff Software kommt aus dem PC Bereich und beschreibt die Programme, die auf einem Prozessor laufen.

Im Bereich Microcontroller/ DSP sollte man normalerweise von Firmwareentwicklung sprechen, weil der Begriff Firmware das Programm beschreibt, das in einem System eingebettet ist – ähnlich dem Bios eines PC’s.

Da die Begriffe Software und Firmware nicht eindeutig definiert sind und selbst unter Fachleuten regelmäßig verwechselt werden, haben wir uns entschieden den zwar nicht ganz richtigen, aber wesentlich häufigeren Begriff Software zu verwenden.

Softwareentwicklung bedeutet in diesem Sinne also das Programmieren einer Anwendung für einen Microcontroller oder anderen Prozessor.

Was bedeutet Microcontroller?

Ein Micorcontroller ist im Grunde ein Prozessor – allerdings mit dem Unterschied, daß ein Microcontroller internen Speicher uns meist viel Peripherie, wie z.b. Schnittstellen enthält.

Microcontroller gibt es in verschieden Architekturen – z.B. 8-Bit, 16 Bit, 32 Bit. Die Anzahl der Bits bezieht sich in dieser Beschreibung auf das im Prozessor in Hardware angelegte Rechenwerk.

Ein Micoroctroller mit 8-Bit Architektur kann in einem Prozessortakt also Zahlen von 8-Bit Breite verarbeiten. Sind Zahlen größerer Breite zu verarbeiten, muß die mathematische Operation in mehrere Teiloperationen zerlegt werden – für eine Rechnung sind in diesem Fall also mehrere Takte nötig.

Die üblichen Bitbreiten von Microcontrollern sind die selten verwendete 4-Bit Architektur, die häufigere 8-Bit Architektur, die insbesondere in der Farheugtechnik häufig anzutreffende 16 Bit Architektur und die 32 Bit Architektur.

ARM-Microcontroller gehören genaugenommen zu der 32 Bit Architektur – bezeichnet aber eine Untergruppe, deren Kern auf einem Lizenzmodell der Firma ARM Limited beruht. ARM Prozessoren erlangen durch ihre herstellerübergreifende Grundstruktur und einem zunehmend günstigeren Preis eine weitreichende Beliebtheit – können allerdings nicht für jeden Einsatz verwendet werden.

Was bedeutet DSP und wo werden sie eingesetzt?

DSP steht für Digitaler Signal-Prozessor. Anders als Microcontroller sind DSP’s eher darauf entwickelt worden, eine große Menge an Daten in gleicher Form zu bearbeiten.

Wenn Sie zum Beispiel ein digitales Filter eines Audio-Signales umsetzen wollen, wird von der Grundstruktur her ein DSP eher angebracht sein, als ein Microcontroller.

Viele DSP’s sind daraufhin entwickelt, daß sie in einem Takt mehrere Operationen durchführen können – üblicherweise der am meisten gebrauchte MultiplyACumulate Operand.

Da viele DSP’s zudem noch eine Harward Speicherarchitektur besitzen ist der Unterschied in der Rechenleistung zum Microcontroller – bei gleicher Taktrate durchaus groß.

Stellen Sie sich ein Filter vor, welches ein Stereo-Audio-Signal verarbeitet – ein DSP ist durchaus befähigt in einem Prozessortakt Daten aus dem Speicher zu holen und diese rechts und links getrennt voneinander zu Multiplizieren.

Ein Microcontroller hingegen benötigt ersteinmal mindestens einen Takt um den zu verarbeitenden Sample aus dem Speicher zu holen, einen weiten Takt, um den dazugehörigen Befehl zu laden und einen Takt um diesen Auszuführen – bei zwei Kanälen rechts/links ergibt sich also durchaus schnell eine Rechenvorteil von Faktor 6, die ein DSP bei gleicher Taktrate schneller ist.

Allerdings setzt der Einsatz eines DSPs auch größere Kenntnisse der Architektur der jeweiligen Recheneinheit voraus, weil diese durchaus angepaßt programmiert werden muß, damit sie auch mit voller Leistung arbeiten kann.

Schnittstellen – wozu braucht man diese und warum gibt es so viele verschiedene?

Schnittstellen verbinden einen Microcontroller oder DSP mit Peripheriebausteinen – z. B. Analog/Digital-Umsetzern, Sensoren oder anderen Recheneinheiten.

Da die Aufgabe einer Schnittstelle im Anwendungfall sehr speziell sein kann, gibt es sehr viele verschiedene Schnittstellen, wie z.B. CAN, I2C, SPI, TDM /I2S, RFID/NFC … uvm.

Das Ingenieurbüro Eggersdorf kann Ihnen im Grunde jede beliebige Schnittstelle implementieren – wobei für den Erfolg des Projektes immer der Aufwand im Verhältnis zum Nutzen beachtet werden sollte.