Forum: PC Hard- und Software Schnelle implementierung von Embedded Software


von Daniel X. (ddmw)


Lesenswert?

Hallo zusammen,

ich würde gerne wissen wie Ihr Embedded Software zusammen fügt um 
schnell zu einem Ergebniss zu kommen.

Z.b. ein uConroller benötigt für ein Projekt ein I2C, SPI, USB und 
Ethernet.

Dafür gibt es 4 verschiedene examples. Jetzt müsste ich die example 
zusammen fügen.

Momentan ist mir Atmel Studio am liebsten, dort kann ich über den Wizard 
alle treiber hinzufügen, bei anderen uC geht das leider nicht, z.B. für 
STM oder NXP. Wie geht Ihr dabei vor?

Grüße + Danke

DDMW

von BT (Gast)


Lesenswert?

Hallo,

Bei STM gibt es Cube, bei Infineon XMC DAVE, etc...
Ähnliches gibt es mittlerweile eigentlich bei allen/vielen µCs.

Man muss bei konfigurierbaren Pins ein bisschen aufpassen, da diese sich 
u.U. die Hardware "teilen".
Perpiherie-Clock anschalten usw. nicht vergessen.


Vorgehensweise:
Codeabschnitte strukturieren (Initialisierung, Pin direction etc) 
kopieren, dann testen. Evtl. Eine Ausgabe über I/O oder Debugger .
Wenn zwei gehen, die nächste HW in Betrieb nehmen usw...


Gruß
BT

von Daniel X. (ddmw)


Lesenswert?

Danke für deine Antwort.

Das Cube nutze ich gerade für dei Code generierung, nur dann weiß ich 
noch nicht wie ich den generierten Code in das STM Workbench importieren 
kann.


Gruß

DDM

von Daniel X. (ddmw)


Lesenswert?

Wobei hier kann man die Toolchain einstellen. Habe die Option dafür 
gefunden.

von Pandur S. (jetztnicht)


Lesenswert?

Schnelles zusammenfuegen von Modulen.. indem man bereitz modular 
designt. Zb Fuer alle Projekt dasselbe Protokoll. Der ADC ist auch immer 
derselbe Code. Das Menukonzept ist dasselbe, Das LCD Konzept ist 
dasselbe.

von Jack (Gast)


Lesenswert?

Daniel X. schrieb:
> Dafür gibt es 4 verschiedene examples. Jetzt müsste ich die example
> zusammen fügen.

Ja und? Als Programmierer wird man fürs Programmieren bezahlt. Da kann 
man auch mal ein paar Zeilen Code programmieren.

Wenn du als Programmierer wirklich keine Lust auf Programmieren hast, 
dann würde ich dir statt Embedded eher den Enterprise-Bereich empfehlen. 
Da wird orchestriert, gebundled, virtualisiert, composed, deployed, 
distributed und injected. Da werden Microservices für Multilayered 
Architectures im Rahmen von DevOps in Container gepackt und continuously 
delivered. Das kommt alles as-a-service und cloud aware, und skaliert im 
Rahmen des Business Models.

Kurz, da passiert alles, nur Programmieren wird möglichst vermieden.

von Urks (Gast)


Lesenswert?

Jack schrieb:
> Daniel X. schrieb:
>> Dafür gibt es 4 verschiedene examples. Jetzt müsste ich die example
>> zusammen fügen.
>
> Ja und? Als Programmierer wird man fürs Programmieren bezahlt. Da kann
> man auch mal ein paar Zeilen Code programmieren.

Tja, mit der Einstellung wirst du untergehen.

Kein Mensch bezahlt jemanden für "ehrenhfates und rechtschaffenes Coding 
im Schweiße deines Angesichtes", oder optimalen Code. Flash, Ram und 
Rechenleistung werden schneller billiger als die Programmierer 
schlechter werden - optimierung zahlt sich selten aus. Es geht immer nur 
um schnelle Resultate. Wenn man die huschdipfusch zusammenklicken kann, 
ist der "ehrenhafte und rechtschaffene Coder" eben überflüssig.

Diejenigen, die an ihrer geliebten sauberen und langsamen Arbeitsweise 
festhalten, werden untergegangen. Das kann dir passen oder nicht aber so 
ist das nun einmal. Man kann sich möglicherweise eine Niesche suchen 
(Medizin? Sicherheit?) aber beim Großteil der Anwendungen ist es so.

Schau dir den PC-Bereich an:
Speicher ist Faktor 1000000 mehr geworden, Rechenleistung auch, aber 
läuft der Kram schneller? Nein, Word 2010 startet genaus lahm wie Word 
für Dos 5.0. Gleiches Spiel.

von Ruediger A. (Firma: keine) (rac)


Lesenswert?

Urks schrieb:
> Jack schrieb:
>> Daniel X. schrieb:
>>> Dafür gibt es 4 verschiedene examples. Jetzt müsste ich die example
>>> zusammen fügen.
>>
>> Ja und? Als Programmierer wird man fürs Programmieren bezahlt. Da kann
>> man auch mal ein paar Zeilen Code programmieren.
>
> Tja, mit der Einstellung wirst du untergehen.
>
...
>
> Diejenigen, die an ihrer geliebten sauberen und langsamen Arbeitsweise
> festhalten, werden untergegangen. Das kann dir passen oder nicht aber so
> ist das nun einmal. Man kann sich möglicherweise eine Niesche suchen
> (Medizin? Sicherheit?) aber beim Großteil der Anwendungen ist es so.
>

Naja, das mit der Nische ist relativ. Ich habe auf der Messe mal mit den 
Leuten von Somnium gesprochen. Die stellen i.W. einen optimierenden 
Linker für ARM Cortex her, mit dem sich die Waage zwischen Codegröße und 
Laufzeit sehr fein tunen läßt, um auch beim M0+ chips mit sehr 
beschränktem Flash noch das Optimum rausholen zu können.

Klar muss auch eine Firma wie Somnium damit kämpfen, dass Mainstream 
Embedded dem 90er/00 Trend der PC Welt zu immer leistungsfähigerer und 
gleichzeitig billigerer Hardware folgt und damit ressourcesparendes 
Programmieren tendentiell unwichtiger wird. Allerdings gibt es noch mehr 
als genügend "Nischen" im Embedded Bereich (speziell 
Industrieautomation), in denen man es sich nicht leisten kann, 
überdimensionierte Hardware einzusetzen - zum Einen weil sich bei 
höheren Stückzahlen selbst 10 Cent Preisunterschiede zwischen 
Controllern zu 5 Stelligen Mehrausgaben anhäufen können, aber auch weil 
technische Anforderungen wie Stromverbrauch oder Wärmeentwicklung im 
kritischen Pfad liegen. Für solche Anwendungen wird auch nach wie vor 
die "schnelle" Entwicklung nicht als primäres Entwicklungsziel gelten.

Somnium ist gut im Geschäft, es gibt einen anhaltenden Bedarf für das 
was sie tun, und Cortex M0+/3/4 wird uns noch viele Jahre Arbeit 
beschaffen.

Was sicherlich stimmt ist, dass sich die Embedded Welt stärker 
ausdifferenzieren wird und ein wesentlicher Teil von dem, was bislang 
Domäne der "old Style Handwerker" war, in Richtung "Java Zusammenstecker 
von der Strasse geheurt" geht (i.W. Alles was im Graubereich zwischen 
Industrial und Consumer liegt). Damit wird aber trotzdem der Markt für 
die, die gerne jedes Byte Dreimal umdrehen, nicht völlig austrocknen, 
sie werden nur (wie eigentlich Jeder Andere im Arbeitsmarkt auch) etwas 
mehr selber dafür tun müssen, um eine Stelle zu finden, in denen sie 
sich ausleben können. Und Leute, denen die Ingenieursarbeit nicht in die 
Wiege gelegt worden ist, werden sich vermutlich in der Java Welt sowieso 
lieber aufhalten.

: Bearbeitet durch User
von Peter D. (peda)


Lesenswert?

Urks schrieb:
> Wenn man die huschdipfusch zusammenklicken kann,
> ist der "ehrenhafte und rechtschaffene Coder" eben überflüssig.

Ich sehe das nicht so schwarz. Im Embedded Bereich ist die 
Leidensfähigkeit der Anwender deutlich geringer, d.h. die Programme 
müssen 365d/a zuverlässig laufen. Und das geht nur, wenn man auch 
durchsieht, was man da programmiert hat und nicht, wenn man nur 
unbekannte Legosteinchen zusammenklickt.
Insbesondere alle zeitlichen Abläufe sollte man kennen. Oft wird einfach 
ohne Sinn und Verstand mit Timeouts um sich geschmissen und die 
Programme laufen wie in Zeitlupe.

Der Zusammenklicker hat zwar schnell irgendwas, was so aussieht, als 
würde es laufen. Aber er braucht dafür umso länger zum debuggen, ehe es 
wirklich fertig ist. Und eine Supportreise zum Kunden z.B. nach China, 
Kanada oder Indien sollte er auch schon mal einplanen und seinen 
Impfstatus aktualisieren.

Auf jeden CPU-Zyklus und jedes Byte RAM muß man natürlich nicht mehr 
optimieren, das stimmt.

von Urks (Gast)


Lesenswert?

Ruediger A. schrieb:
> Naja, das mit der Nische ist relativ. Ich habe auf der Messe mal mit den
> Leuten von Somnium gesprochen. Die stellen i.W. einen optimierenden
> Linker für ARM Cortex her, mit dem sich die Waage zwischen Codegröße und
> Laufzeit sehr fein tunen läßt, um auch beim M0+ chips mit sehr
> beschränktem Flash noch das Optimum rausholen zu können.

Ja, das ist natürlich richtig, auch hohe Stückzahlen sind da so ein 
Fall. Von dem her ist "Nische" so auch nicht ganz richtig.

Andererseits müssen die Stückzahlen schon sehr groß sein. Nehmen wir mal 
0,1€ und 100k Stück an, das sind 10000€.

Das klingt viel, aber im Endeffekt sind das nur 100 Entwicklerstunden - 
grob 2 1/2 Wochen. Das hat man bei einem Projekt schnell eingespart, 
wenn man es sich zum Beispiel spart, die ganzen Treiber selber zu 
schreiben.

Natürlich gibt es auch Anwendungen mit 1M Stück, da zahlt es sich dann 
aus, 100nF Kerkos wegzuoptimieren, und erst recht, gescheiten Code zu 
schreiben.

Wenn ich zum Beispiel an meinen Arbeitgeber denke, kommen wir selbst bei 
Highrunnern nur auf 10kStück / Jahr, da wird schon aus Aufwandsgründen 
immer das größte Derivat genommen - insbesondere wegen des Termindrucks 
kann keiner optimieren. Dazu kommt: Der µC macht im Schnitt 0,1% des 
Gerätepreises aus.
Das Problem dabei:
Firmwareentwickler verhalten sich wie ideale Gase, die füllen den 
vorhandenen Platz immer zu 100% aus...

von Theor (Gast)


Lesenswert?

Ja. Ist wohl doch eine Schwebung. Habe mich irgendwie durch die Frage 
nach der Modulation irre führen lassen.

Jedenfalls wohl recht viel Schallleistung notwendig.

von Theor (Gast)


Lesenswert?

Sorry. Falscher Thread.

von Pandur S. (jetztnicht)


Lesenswert?

Und dann gaebe es auch noch die Anwendungen, bei welchen der Code 100% 
sicher sein soll. Garatiert kein Absturz.

Das erwart ich zB bei den selbstfahrenden Auto.

Das macht man nicht mit etwas Java zusammenstoepseln.

von W.S. seine Mutter (Gast)


Lesenswert?

Das ist ganz böse! Jegliche Art von HAL müsste verboten werden, da es 
unweigerlich zum Vendor lock in führt und Du wirst dafür in der Hölle 
schmoren!

Du musst erstmal die Spezifikation I2C, SPI, USB und Ethernet auf 
BIT-Ebene nachlesen (und dann natürlich auch alle oberen Schichten), und 
Dir Deine eigenen Include-Files und Treiber programmieren.

In 5 Jahren, wenn Du dann den lauffähigen Code hast, aber es inzwischen 
Controller gibt, die 5x schneller sind, Du aber aufgrund Deiner eigenen 
Low-Level Treiber NICHT migrieren kannst, darfst Du wieder hier posten.

von Bernd K. (prof7bit)


Lesenswert?

W.S. seine Mutter schrieb:
> I2C, SPI, USB und Ethernet
> In 5 Jahren, wenn Du dann den lauffähigen Code hast,

5 Wochen.

1 Tag I2C
1 Tag SPI
2 Wochen USB
2 Wochen Ethernet

Ab dem zweiten mal (wenn man weiß wies geht und auf eigenen gut 
verstandenen existierenden Code zurückgreifen kann) gehts dann 
schneller.

In ernsthaften Buden (solche die Sachen bauen bei denen man sich fragt 
wie die das unmöglich geglaubte möglich gemacht haben) arbeiten nur 
Leute die sich für das Zeug wirklich tiefgehend interessieren (auch im 
Hobby). Die lesen Gerätetreiber-Quellcode zum Frühstück anstelle der 
Zeitung. So jemandem sagst Du daß man noch noch einen I2C-Slave Treiber 
in den Bootloader einbauen müsste damit Firmware-Update aller Module 
praktikabel ist und der zieht den fertig aus der Tasche weil er das im 
Laufe seines Lebens schon auf 12 verschiedenen Architekturen gemacht hat 
und zufällig letztes Wochenende auch auf dieser (vorausschauender 
weise).

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.