Guten Abend,
kommenden Februar soll ich intern auf eine Stelle in der hardwarenahen
Entwicklung wechseln. Ich habe einen M.Sc. in Informatik und bin bereits
2 Jahre in der C/C++ Entwicklung tätig, auch relativ tiefgehend mit
Multithreading, SIMD und Just In Time Compilation, jedoch ohne direkten
Hardwarebezug.
Ich habe nur privat etwas mit einem Arduino und Raspberry Pi hantiert
und dort (erfolgreich) ein paar Spielereien mit LEDs/Displays gemacht,
ansonsten aber noch keine beruflichen Berührungspunkte mit der
Embedded-Entwicklung gehabt, weshalb ich ein wenig "Respekt" davor habe.
Der Chef meinte, es könne nicht schaden mich schon mal ein wenig
vorzubereiten. Konkret geht es um Firmware für Interfaces von
Produktionsmaschinen, die zum Teil mit der Qt-Bibliothek realisiert
wird. Was denkt ihr, wie schwer wird die Umstellung von reiner
Software-Entwicklung für mich werden und wie kann ich mich am besten
vorbereiten?
Gruß,
Stellenwechsler
Seit wann ist C/C++ eine interpretierte Sprache mit JIT Compiler?
Ansonsten, das Thema Laufzeit und Footprint (RAM/ROM) hat in der
Embedded Welt eine höhere Bedeutung, ebenso das Zeitverhalten.
Raspberry PI ist im Grunde nichts anderes, als Desktop Programmierung
für einen normalen PC. Lediglich, dass dir dir die Möglichkeit gegeben
wird, irgendeine Hardware, z.B. i²c oder SPI zusätzlich direkt
anzusprechen.
Dort wirst du genauso Qt nutzen können mitsamt des GUI Frameworks etc.
Das wird sich kaum anders anfühlen. Wenn du hingegen bare metal ARM
Mikrocontroller ohne Betriebssystem programmieren musst, dann wirst du
deine Denke geringfügig umstellen müssen. Dort kannst du eben kein
großes Framework nutzen und hast auch kein Os auf dem du sitzt. C++ ist
auch nur äußerst begrenzt sinnvoll (aber das was sinnvoll ist erweitert
das klassische C für Mikrocontroller sehr sehr gut).
Am Ende ist aber Embedded vielfach leichter, da weniger umfangreich als
Desktop Programmierung. So ergeht es mir zumindest. Man muss weniger
Umfang bessser/effizienter einsetzen.
Macht die Story Sinn? schrieb:> Seit wann ist C/C++ eine interpretierte Sprache mit JIT Compiler?
Ich habe mit C++ und LLVM Code performancekritischen Code generiert.
Vorhautsurfer23 schrieb:> Raspberry PI ist im Grunde nichts anderes, als Desktop Programmierung> für einen normalen PC. Lediglich, dass dir dir die Möglichkeit gegeben> wird, irgendeine Hardware, z.B. i²c oder SPI zusätzlich direkt> anzusprechen.
Das Raspberry Pi habe ich nur privat benutzt, auf Arbeit werde ich
soweit ich informiert bin, sowohl mit Embedded Linux als auch mit
Mikrocontrollern arbeiten.
Vorhautsurfer23 schrieb:> Am Ende ist aber Embedded vielfach leichter, da weniger umfangreich als> Desktop Programmierung. So ergeht es mir zumindest. Man muss weniger> Umfang bessser/effizienter einsetzen.
Das klingt sehr interessant und gut.
Danke für die Antworten.
Gruß,
der echte Stellenwechsler, nicht der unfreundliche Typ über mir.
Solang du keine Hardware selbst entwickeln musst wird sich da nicht viel
für dich ändern. Du wirst dann vermutlich eine C Schnittstelle mit
entsprechender Dokumentation bekommen. vielleicht musst du auch ein
wenig serielle Kommunikation machen aber wenn du schon mit Netzwerken
programmiert hast sollte das kein Problem sein.
Spätestens wenn mal eine Teil von Geräten wegen luschiger
Programmierung zurückgerufen werden muss, wird dich dein
Chef fristlos feuern!
> Arduino und Raspberry Pi
tragen genau gar nichts zu einem Programmierstil bei, der
bei Embedded Systemen nötig ist.
Stellenwechsler schrieb:> Was denkt ihr, wie schwer wird die Umstellung von reiner> Software-Entwicklung für mich werden und wie kann ich mich am besten> vorbereiten?
Gar nicht schwierig. Ein halbes Jahr vielleicht etwas mehr Aufwand, aber
dann sitzt das. Hardware ist eine echte Herausforderung fuer Softwerker,
aber du machst dann ja bloss andere Software.
AffeMitWaffe schrieb:> Gar nicht schwierig. Ein halbes Jahr vielleicht etwas mehr Aufwand, aber> dann sitzt das. Hardware ist eine echte Herausforderung fuer Softwerker,> aber du machst dann ja bloss andere Software.
Und wenn er plötzlich Stromlaufpläne lesen können muss und sich mit
Bauteilen und deren Hardware-Ansteuerung auseinander setzen darf? Dann
werden ihm die elektronischen Kenntnisse fehlen, und die hat man nicht
mal eben in ein paar Wochen nebenbei gelernt.
Video schrieb:> Doch, genau genommen lernt man in 4 Wochen genug, um solche Pläne> zu lesen.> Man braucht nur jemanden, der es gut erklärt.
Na dann ist ja alles easy, wozu überhaupt noch Elektrotechnik studieren?
Hört sich so an, als wenn ein Chef mal wieder einen Dummen gefunden
hat, sein Personalproblem zu lösen. Wird nur nicht funktionieren,
weil E-Technik ja eine Wissenschaft für sich ist.
Stellenwechsler schrieb:> Lohnt sich ein Wechsel bei 40k€/a?
Bestandsgehalt oder Zielgehalt? 40k€/a soll wohl ein Witz sein?
Das ist Gesellenniveau, aber die haben wenigstens eine Berufsaus-
bildung und Praxiserfahrung.
Es geht ganz klar um hardwarenahe Softwareentwicklung. Ich muss weder
Schaltpläne lesen noch Hardware selbst entwerfen/bauen, das wurde mir
auf Nachfrage bestätigt.
Der Post mit den 40k war nicht von mir. Der Wechsel ist nicht wegen
Geld. Ich verdiene derzeit 59k all inclusive und bin sehr zufrieden
damit.
Stellenwechsler schrieb:> Ich verdiene derzeit 59k all inclusive und bin sehr zufrieden damit.
Wohnst du demnach in einer sehr günstigen Region in Deutschland?
Dr.Who schrieb:> Hört sich so an, als wenn ein Chef mal wieder einen Dummen gefunden> hat, sein Personalproblem zu lösen.
Das ist wieder mal der helle Wahnsinn, was du da von dir gibst.
Der TO sieht das als geniale Chance, sich weiterzuentwickeln.
Die meisten anderen würden genauso denken.
Du siehst jedoch in allem, was Arbeitgeber und Frauen vorschlagen, eine
hinterhältige Niedertracht, die es um jeden Preis zu verhindern gilt.
So ist natürlich unmöglich, irgendeine Arbeit anzunehmen.
Aber was soll ich dir, Michael, da noch erzählen?
Stellenwechsler schrieb:> Geht so, ca. 900€ Warmmiete im Stuttgarter Speckgürtel. Habe> trotzdem> keine Geldprobleme.
Angenommen, du hast Steuerklasse I, dann bleiben dir ohne Warmmiete im
Durchschnitt gerade einmal 2k € im Monat zur Verfügung. Das ist zwar
"ganz okay", aber ich würde mich an deiner Stelle nach lukrativeren
Angeboten umschauen, da sollte im Raum Stuttgart deutlich mehr gehen.
Es kommt hier denke ich auf die Größe der Firma an. Bei einer großen
Firma bekommt man alles getestet vom Vorgänger inklusive Setup für das
Kompilieren. Da hat man nichts direkt mit der Hardware zu tun, da ist
der Unterschied zur reinen Softwareentwicklung recht gering.
Bei kleineren Firmen ist das komplizierter, da der Hardwareentwickler
eng mit dem Firmwareentwickler zusammenarbeiten muss, da kann es sein
dass entweder die die Platine einen Fehler hat oder drin Code.
Vielleicht ist auch die Pinbelegung etwas anders geroutet worden (bei
IOs vom Mikrocontroller ist das oft beliebig und kann angepasst werden,
so dass das Routen zu einem Stecker einfacher/besser/schöner wird), und
in der Dokumentation verloren gegangen. Da ist es hilfreich wenn man den
Schaltplan lesen kann. Dort ist eher das Fehlersuchen das, was nicht so
einfach ist.
Oft ist auch die Software an sich das kleinere Problem, oft muss man
über Schnittstellen andere Mikrocontroller oder Flashs o.ä.
programmieren, damit das in der Fertigung auch hergestellt werden kann.
Das wichtigste ist meist eh das Timing, hieran scheitert es im Vergleich
zur PC-Software gefühlt am meisten.
Qwertz schrieb:> Angenommen, du hast Steuerklasse I, dann bleiben dir ohne Warmmiete im> Durchschnitt gerade einmal 2k € im Monat zur Verfügung. Das ist zwar> "ganz okay", aber ich würde mich an deiner Stelle nach lukrativeren> Angeboten umschauen, da sollte im Raum Stuttgart deutlich mehr gehen.
Ich hab hier einen IGM-Vertrag außerhalb der Automobilbranche, 3 Monate
Kündigungsfrist und jetzt noch die Chance Erfahrung im Bereich Embedded
zu sammeln. Zudem steht nächstes Jahr eine Gehaltserhöhung bevor und ich
verstehe mich super mit allen Kollegen. In solch unsicheren Zeiten sehr
viel wert, daher kommt kündigen derzeit für mich nicht in Frage, zumal
ich nicht glaube mit meinem Profil erheblich mehr verdienen zu können.
Stellenwechsler schrieb:> Ich hab hier einen IGM-Vertrag außerhalb der Automobilbranche, 3 Monate> Kündigungsfrist und jetzt noch die Chance Erfahrung im Bereich Embedded> zu sammeln. Zudem steht nächstes Jahr eine Gehaltserhöhung bevor und ich> verstehe mich super mit allen Kollegen. In solch unsicheren Zeiten sehr> viel wert, daher kommt kündigen derzeit für mich nicht in Frage, zumal> ich nicht glaube mit meinem Profil erheblich mehr verdienen zu können.
Das geht schon in Ordnung, wenn du damit zufrieden bist. Ich wäre es
nicht, aber da ist ja jeder anders. Auch wenn es abgedroschen klingt:
Geld ist natürlich nicht alles im Leben. Außerdem kenne ich dein Profil
und deinen Lebenslauf natürlich nicht, vielleicht geht da wirklich nicht
viel mehr. Aber man liest hier immer wieder, dass insbesondere Wechsel
zu anderen Unternehmen die höchsten Steigerungen im Gehalt gebracht
haben.
Kriseninterventionsspezialist schrieb:>> Arduino und Raspberry Pi> tragen genau gar nichts zu einem Programmierstil bei, der> bei Embedded Systemen nötig ist.
Genau so ist es.
Eigentlich erschreckend, dass Viele denken, dass "Embedded" nix weiter
ist als PC-Programmierung auf Microcontrollern, bloss "ohne Maus".
Passt sicher für einen relativ grossen Teil der heutigen Anwendungen.
Allerdings werden heutzutage solche Systeme auch oft in extrem
unkritischen Anwendungen eingesetzt, bei denen es vor wenigen Jahren
entweder zu teuer gewesen wäre oder die Performance damaliger Controller
nicht gereicht hätte.
Dann wirds natürlich relativ schnell relativ einfach.
Das ändert aber nichts an der Tatsache dass im Embeddedbereich diverse
Programmiertechniken existieren (und auch, wenn nötig, benutzt werden),
die in der "normalen" PC-Programmierung praktisch unbekannt sind.
Wie oft muss man den (auch beim Raspi et. al.) nachweisen(!!!) dass das
Programm IMMER bestimmte Requirements einhält?
Wenn sich auf dem PC/Raspi der Speicher nach 2 Monaten "zugesottet" hat,
dann wird die Kiste neu gebootet, notfalls per WD-Reset. Who cares...
Das kann bei Reglern in der Verfahrenstechnik aber "interessante"
Effekte haben. Ok, das fällt den meisten SW Entwicklern sowieso nicht
auf da sie ja meist keine Ahnung von Regelungstechnik haben...
Aber eine Produktionsstrasse kann man oft nicht mal einfach für 10
Minuten anhalten...
Lass Dir am besten von Deinem Chef mal skizzieren was da genau an
Anforderungen auf Dich zukommt und informiere Dich bei zukünftigen
Kollegen.
Gekocht wird da auch nur mit Wasser. Aber kochen können musst Du
trotzdem ;)
/regards
Ich als Embedded-SW und auch HW-Entwickler muss bei der
Firmware-Entwicklung auch gleich meine HW nachoptimieren.
So kann es sein, dass beim differentiellen routen nicht die
erforderliche Datenrate erreicht wird, um einen SD-RAM-Bausteine oder
sogar DDR4-RAM damit zu betreiben - das Memory-Interface funktioniert
gar nicht.
Wenn ich jetzt ein reiner SW-Entwickler wäre, würde ich mir einen Wolf
suchen, wieso das Programm aufgrund des Speicher-Problems immer wieder
einfriert.
Ein reiner SW-Entwickler kann daher nur auf erprobter HW programmieren,
wo die Treiber und Low-Level-Routinen schon bereit stehen.
Aber dann ist er nur ein halber Embedded-SW-Entwickler.
Oft muss man auch die Schwächen der Board-Hardware und deren
Anbindungen, die nicht perfekt nach der Theorie funktionieren, in SW
ausgleichen.
Die VW-Ingenieure die erst den Diesel manipuliert haben und ihn dann
wieder per SW in einen Zustand versetzt haben, der der Betriebserlaubnis
entspricht, mussten schon gute Kenntnisse in HW und sogar Regelung und
Maschinenbau haben.
Stellenwechsler schrieb im Beitrag #6058889:
> Der promovierte Shit, der von den Unis kommt, bestimmt nicht!
Der Troll verrät sich.
Vorhautsurfer23 schrieb:> von Vorhautsurfer23 (Gast)
Was geht jemandem durch den Kopf der so einen Nick benutzt?
Wende 2.0 schrieb:> Ohne tiefergehende Hardware Kenntnisse wird das ehrlich gesagt in die> Hose gehen
Warum? Du laberst hier doch auch völlig kenntnisfrei herum.
Der ganze Thread kann echt weg. Schade um die Beiträge der Leute, die
auf den Troll hereingefallen sind und das Thema ernst genommen haben.
Qwertz schrieb:> Na dann ist ja alles easy, wozu überhaupt noch Elektrotechnik studieren?
Frage ich mich speziell für den Bereich Hardwareentwicklung auch.
Gruß,
Nickless schrieb:> Ich als Embedded-SW und auch HW-Entwickler muss bei der> Firmware-Entwicklung auch gleich meine HW nachoptimieren.
Ein guter Embedded Softwareentwickler muss beides verstehen. SW und HW.
Er muss wissen welche Teile des Embedded Systems in HW und welches in SW
zu "Gießen" sind. Komplexes in SW, zeitkritisches in HW abbilden. Auf
den richtigen Schnitt kommt es an.
Fazit, ein guter Embedded SW Entwickler muss ein guter Embedded
Sostemdesigner sein.
GEKU schrieb:> Fazit, ein guter Embedded SW Entwickler muss ein guter Embedded> Sostemdesigner sein.
Hier wurde aber behauptet, dass man sich die paar elektrotechnischen
Kenntnisse für einen Embedded Entwicklungsingenieur in ein paar Wochen
nebenbei reinziehen kann, also genügt wohl auch ein Programmierkurs von
der Volkshochschule, vielleicht gibt es das ja auch als Telekolleg-Kurs.
Vorhautsurfer23 schrieb:> Am Ende ist aber Embedded vielfach leichter, da weniger umfangreich als> Desktop Programmierung. So ergeht es mir zumindest. Man muss weniger> Umfang bessser/effizienter einsetzen.
Aha. Also unsere Kunden wollen das der kleine CM4 genau die selbe
Performance erreicht wie ihr Desktop-PC und. Kann ja nicht sein das der
nicht 100MBit Datenrate für das Kundenprotokoll schafft - der PC kann
das doch auch. Dazu parallel natürlich noch die Echtzeitanforderungen an
die eigentliche Aufgabe des Systems, Zykluszeiten im 250µs Bereich,
Jitter < 10µs. Das können normale PC Betriebssysteme gar nicht leisten,
die meiste PC Hardware auch nicht. (Ich sag nur SMI...)
Neben der Hauptaufgabe (Industriekommunikation) müssen natürlich
Webserver, SSL, Zertifikatverwaltung, diverse Diagnoseschnittstellen,
Virtuelle Netzwerkschnittstellen mal eben so mit abgefrühstückt werden.
Achja, mehr als 10 Euro darf es pro Stück natürlich auch nicht kosten.
In solchen spezialisierten Systemen kann eine einzige falsche Codezeile,
z.B. ein unbedachter Mutex oder ein unbedachter Hardwareregisterzugriff
zu Auswirkungen in ganz anderen Teilen der Gesamtsoftware führen.
Die Kernspezifikation des Protokolls mit dem ich mich beschäftige hat
übrigens über 3000 Seiten. Dazu kommen noch diverse andere IEC Normen,
RFCs und Anwendungsprofile die es zu beachten gibt.
Ich tue mich daher schwer damit Embedded-Entwicklung als "Einfacher" und
"Überschaubarer" als Desktop-Entwicklung zu bezeichnen.
Nickless schrieb:> Oft muss man auch die Schwächen der Board-Hardware und deren> Anbindungen, die nicht perfekt nach der Theorie funktionieren, in SW> ausgleichen.
Ja das kenne ich auch.
Stellenwechsler schrieb:> Es geht ganz klar um hardwarenahe Softwareentwicklung.
Nach meiner Erfahrung tun sich klassische SW-Entwickler mit einem
grundsätzlichen Unterschied schwer: Wenn eine Desktop-Anwendung einen
Bug hat, spielt man übers Netz ein Update ein und gut ist es.
Bei einem embedded System kann es durchaus sein, daß es keine
Möglichkeit eines Updates gibt. Dann muss die Software funktionieren.
Immer.
> Ich muss weder> Schaltpläne lesen noch Hardware selbst entwerfen/bauen, das wurde mir> auf Nachfrage bestätigt.
Wenn da nicht so Dinge passieren wie "Relais 1 ist an GPIOxyz" und Du
nicht weisst, ob das Relais bei "0" oder "1" schaltet, der PWM-Ausgang
invertiert wurde, etc. kann das klappen.
Aber sobald mal etwas nicht funktioniert, kann es extrem hilfreich sein,
einen Schaltplan lesen zu können. Da war mal diese "Netzspannung ist an"
mit Optokoppler an GPIO-Eingang, der mit ~50Hz abgetastet wurde.
Der GPIO zeigte dann auch mal eine Weile "Aus" an, obwohl Netzspannung
da war, wenn zufällig der Abtastzeitpunkt nahe dem Nulldurchgang lag.
Oder der UART-TX, der mit dem Treiber-RX verbunden war, wobei der
Hersteller mit "RX" meinte, "mit dem RX des µC zu verbinden".
Ohne Schaltplan und Datenblätter hätte ich nicht Stunden sondern Tage
mit diesen Fehlern zugebracht...
Es ist teilweise eine andere Welt, ich sage gerne "SW-Entwicklung für
echte Kerle" ;-)
Gruß,
Falk
Falk W. schrieb:> Wenn da nicht so Dinge passieren wie "Relais 1 ist an GPIOxyz" und Du> nicht weisst, ob das Relais bei "0" oder "1" schaltet,
Relais:
In meinem alten NiCd-Lader ist die mechanische Zeitschaltuhr gestorben
und ich habe keinen Ersatz. Ich habe dann einen µC samt Relais
reingestrickt, Einstellung per Drehencoder, Anzeige mit LEDs.
Alles getestet, Gerät fertig - und Monate später gab es einen kurzen
Netzausfall während des Ablaufs. Ja, Dauerladen mit Vollgas, diese
Kleinigkeit hatte ich übersehen :-(
Ich habe den Wechsel damals gemacht und entgegen aller Schwarzmalerei
hier ist alles gut gegangen. Habe inzwischen solide Hardware-Kenntnisse.
Also: Mut zur Lücke, Leute!