Hallo zusammen! Ich bin ein absoluter µC-Anfänger und soll im Rahmen meiner Abschlussarbeit an der Uni ein etwas größeres Simulink-Model auf einen µC implementieren welches für eine Echtzeitanwendung im Fahrzeug eingesetzt werden soll. Eine abgespeckte Version des Simulink-Models lief bereits schon auf dem Arduino Mega und kam schon an seine Grenzen. Nun wurde das Model um einen Beobachter erweitert. Und nun zu meiner Frage :) : ich bin auf der Suche nach einem µC, der genug Leistung für mein Projekt hat. Am liebsten würde ich bei Arduino bleiben, weiß aber nicht ob der Arduino DUE dafür reicht. Wie kann man denn abschätzen oder sogar berechnen wie viel Leistung der µC liefern muss? Vielen Dank im Voraus!!!
Das kannst du berechnen. Bitte setze dazu deine Werte in die Formeln ein die du bei Google finden kannst und drücke Enter!
Auch der Arduino hat sicher genug Kapazität, um dein Modell durchzurechnen, aber er wird massiv durch die Simulink Implementation ausgebremst. So ist das heute mit allem, auch dein PC kann locker zum Mond fliegen, aber die Lahmarschigkeit der Software bremst ihn auf dem Schreibtisch aus. Die Frage muss also eher lauten: Wie viel Verschleiss an Leistungfähigkeit durch schlechte Software kann ich mir leisten, um es einfach zu haben. Mit einem Knöpfchendruck ist Simulink natürlich unschlagbar einfach, da verschleisst man gerne 99% der Rechenleistung der Zielplattform. Da Prozessorleistung nichts kostet: Nimm einen ARM Cortex, z.B. von ST.
@ Yama Kasi (yamakasi) >ich bin auf der Suche nach einem µC, der genug Leistung für mein Projekt >hat. Am liebsten würde ich bei Arduino bleiben, weiß aber nicht ob der >Arduino DUE dafür reicht. Dann probier es doch einfach aus! Das Ding kostet nicht die Welt! Probieren geht über studieren! >Wie kann man denn abschätzen oder sogar berechnen wie viel Leistung der >µC liefern muss? Mit Erfahrung und Pi mal Daumen.
> Wie bestimme ich meine Leistungsanforderung an einen µC?
Modell langsam laufen lassen, Profiling drauf los lassen, ggf. kräftig
zu Buche schlagende Teile optimieren, Taktfrequenz hochsetzen und mit
Requirements abgleichen.
Ganz grob gesagt musst du für den Zeitbedarf ermitteln, wie viele elementare (Rechen-)operationen dein Algorithmus benötigt. Beispielsweise benötigt die Addition von zwei 32-bit Werten auf einem 8-Bit µC mindestens 4 Befehle (=Elementaroperationen). Einen guten Artikel findest du hier https://www.mikrocontroller.net/articles/AVR_Arithmetik Wenn du ungefähr weißt, wie viele Operationen z.B. in einer Regelschleife abgearbeitet werden müssen und wie viele Befehle der µC in dieser Zeit verarbeitet, dann kannst du den Leistungsbedarf abschätzen (!). Zu berücksichtigen sind allerdings auch I/O und Speicheroperationen, Interrupts, Overhead für Funktionsaufrufe etc. Ein Sicherheitsfaktor für den Zeitbedarf von 2-5 ist da nicht zu knapp bemessen. FÜr den Programmspeicher und den benötigten Datenspeicher (RAM) musst du ermitteln, wieviele Worte (Befehle) dein Algorithmus benötigt und wieviele Bytes (RAM) dafür notwendig sind. Beispielsweise braucht eine 5x5 Matrix vom Typ float: 5x5x4 Bytes RAM Speicher.
Yama K. schrieb: > ich bin auf der Suche nach einem µC, der genug Leistung für mein Projekt > hat. Am liebsten würde ich bei Arduino bleiben, weiß aber nicht ob der > Arduino DUE dafür reicht. Das ist genau der falsche Weg. Auf den Arduino-Software-Bloat verzichten, dann läuft der Kram mit an Sicherheit grenzender Wahrscheinlichkeit völlig problemlos auf dem µC, den du bereits hast... Das Arduino-Framework ist für Doofe (und hat damit durchaus seine Berechtigung). Aber für Studenten einer technischen Fachrichtung ist der Software-Bloat ein Witz. Aber immerhin sehr gut geeignet dazu, den Delinquenten zu zeigen, wie man Software besser nicht machen sollte... Sonst kommt sowas raus wie Windows10, mit einer Grafik kaum besser als in den Urschleimzeiten der Homecomputer, aber einem Bedarf an Rechenleistung weit jenseits von gut und böse.
Hätte nicht gedacht so schnell so viele Antworten zu bekommen :) Danke!!! >Auch der Arduino hat sicher genug Kapazität, um dein Modell >durchzurechnen, aber er wird massiv durch die Simulink Implementation >ausgebremst. Auch wenn der Code "per Hand" geschrieben wird? Ich soll am Besten mit AVR Studio arbeiten... >Dann probier es doch einfach aus! Das Ding kostet nicht die Welt! >Probieren geht über studieren! Die Kosten spielen keine Rolle. Der gewählte µC sollte jedoch nicht Leistungsstärker als üblich µC in heutigen Fahrzeugen sein und da ich eine zeitlichen Rahmen habe wird es schwierig werden verschiedene µC auszuprobieren. >Crossposting Ist das nicht erlaubt? Falls ja tut es mir Leid. Habe es nicht gewusst. Bin Auch ein Forum-Anfänger ^^
Yama K. schrieb: > Hätte nicht gedacht so schnell so viele Antworten zu bekommen :) > Danke!!! > >>Auch der Arduino hat sicher genug Kapazität, um dein Modell >>durchzurechnen, aber er wird massiv durch die Simulink Implementation >>ausgebremst. > > Auch wenn der Code "per Hand" geschrieben wird? Ich soll am Besten mit > AVR Studio arbeiten... Das kann man so nicht sagen. Das hängt natürlich auch vom zu simulierenden Modell ab. Allerdings ist es in der Tat oft so, dass viele die Leistungsfähigkeit so eines kleinen µC komplett unterschätzen bzw. ihre eigene Programmierschwäche dann mit der "Lahmheit" des µC kaschieren. Was soll denn dein µC eigentlich machen? Bzw. was ist für dich ein 'etwas größeres' Simulink Modell?
:
Bearbeitet durch User
>>Auch der Arduino hat sicher genug Kapazität, um dein Modell >>durchzurechnen, aber er wird massiv durch die Simulink Implementation >>ausgebremst. >Auch wenn der Code "per Hand" geschrieben wird? Nein. > Ich soll am Besten mit AVR Studio arbeiten... Dann bremst du am meisten ;-) >>Dann probier es doch einfach aus! Das Ding kostet nicht die Welt! >>Probieren geht über studieren! >Die Kosten spielen keine Rolle. Der gewählte µC sollte jedoch nicht >Leistungsstärker als üblich µC in heutigen Fahrzeugen sein In Bezug auf die Rechenleistung oder den elektrischen Leistungsverbrauch? >und da ich >eine zeitlichen Rahmen habe wird es schwierig werden verschiedene µC >auszuprobieren. Sicher. Sag doch mal grob, was dein Modell alles machen soll. Welche Eingangssignale sollen verarbeitet werden? Wie soll es verarbeitet werden? Welche Ausgangssignale sollen erzeugt werden? Mit welchen Abtastfrequenzen soll die Regelung laufen?
>Das Arduino-Framework ist für Doofe (und hat damit durchaus seine >Berechtigung). >Aber für Studenten einer technischen Fachrichtung ist der Software-Bloat >ein Witz. Aber immerhin sehr gut geeignet dazu, den Delinquenten zu >zeigen, wie man Software besser nicht machen sollte... Das Problem ist, dass ich nur Grundkenntnisse im Programmieren habe. Da mein Betreuer auch nicht erfahrener ist hat er mir Arduino Boards ans Herz gelegt... Das Board sollte noch um ein LCD-Display, einer CAN-Bus und SD-Kartenschnittstelle erwitert werden.
@Yama Kasi (yamakasi) >Das Problem ist, dass ich nur Grundkenntnisse im Programmieren habe. Da >mein Betreuer auch nicht erfahrener ist hat er mir Arduino Boards ans >Herz gelegt... Tu das, denn du wist in der kurzen Zeit nicht zum großen Programmierer. >Das Board sollte noch um ein LCD-Display, einer CAN-Bus und >SD-Kartenschnittstelle erwitert werden. LCD und SD-Card gibt es schon fertig als Shield incl. Software, CAN weiß ich nicht.
Yama K. schrieb: > Das Problem ist, dass ich nur Grundkenntnisse im Programmieren habe. Da > mein Betreuer auch nicht erfahrener ist hat er mir Arduino Boards ans > Herz gelegt... Es gibt auch Arduinos mit ARM-Prozessor. Die sind nicht nur teurer sondern auch schneller wie die mit AVR. Würde erstmal das ausprobieren wenn der Rest sondst funktioniert.
>>Die Kosten spielen keine Rolle. Der gewählte µC sollte jedoch nicht >>Leistungsstärker als üblich µC in heutigen Fahrzeugen sein > >In Bezug auf die Rechenleistung oder den elektrischen >Leistungsverbrauch? In Bezug auf Rechenleistung >>Das Board sollte noch um ein LCD-Display, einer CAN-Bus und >>SD-Kartenschnittstelle erwitert werden. > >LCD und SD-Card gibt es schon fertig als Shield incl. Software, CAN weiß >ich nicht. die Shields gibt es und sind auch vorhanden: http://skpang.co.uk/catalog/arduino-canbus-shield-with-usd-card-holder-p-706.html http://skpang.co.uk/catalog/serial-enabled-16x2-lcd-red-on-black-33v-p-922.html
:
Bearbeitet durch User
>Es gibt auch Arduinos mit ARM-Prozessor. Die sind nicht nur teurer >sondern auch schneller wie die mit AVR. Der DUE besitzt doch einen ARM (Atmel SAM3X8E ARM Cortex-M3) Prozessor
Yama K. schrieb: > Das Problem ist, dass ich nur Grundkenntnisse im Programmieren habe. Da > mein Betreuer auch nicht erfahrener ist Da beneide ich dich wirklich nicht um diese undankbare Aufgabe... Irgendwie habe ich den Eindruck, das "so ein bisschen programmieren" jeder kann, der ein paar C/C++ Schlüsselwörter kennt. Nicht umsonst sind solche Fächer wie Komplexitätstheorie, effiziente ALgorithmen, Rechnerarchitekturen usw. Pflicht für Informatiker. Das bisschen C++ ist letzlich nur das Werkzeug, wie der Lötkoben für den Elektroingenieur.
Schreiber schrieb: > Es gibt auch Arduinos mit ARM-Prozessor. Die sind nicht nur teurer > sondern auch schneller wie die mit AVR. Eben der Arduino Due oder kennst du noch mehr? Yama K. schrieb: > Am liebsten würde ich bei Arduino bleiben, weiß aber nicht ob der > Arduino DUE dafür reicht.
Yama K. schrieb: >>Crossposting > > Ist das nicht erlaubt? Falls ja tut es mir Leid. Habe es nicht gewusst. > Bin Auch ein Forum-Anfänger ^^ Ich mag es nicht. Ob das hier im Forum erwünscht ist, oder eher abgelehnt wird, weiß ich nicht.
Yama K. schrieb: > Das Problem ist, dass ich nur Grundkenntnisse im Programmieren habe. Dann ändere das. Du bist Student. Dein Job ist es also, zu lernen. > Da > mein Betreuer auch nicht erfahrener ist Studenten können und dürfen durchaus auch selbstständig lernen, ganz ohne Nanny. Früher(tm) war das sogar selbstverständlich... Ich wüßte auch nicht, dass das heute verboten wäre (aber auch das kann ja auch noch kommen).
Yama K. schrieb: > Das Board sollte noch um ein LCD-Display, einer CAN-Bus und > SD-Kartenschnittstelle erwitert werden. AVR und CAN ist eine schwierige Kombination. Wenn Du einen AVR mit eingebautem CAN verwenden kannst (90CAN128), ist das ok. Es gibt aber keine Arduinos mit solchen Prozessoren. Die Alternative ist ein SPI-CAN Controller, und der ist nicht wirklich leistungsfähig. Der Arduino Due hat CAN gleich im Chip mit drin, und dafür hat wohl auch schon jemand Treiber geschrieben. Wenn Du Version 6 oder 7 des Atmel Studios nimmst, kannst Du damit auch Atmel ARMs verwenden. Als Debugger braucht Du einen "Atmel ICE". Der kann neben AVR/AVR32 auch Atmel ARMs. Der ARM ist ein 84 MHz Cortex M3, d.h. ohne Gleitkommaeinheit. Ein Cortex M4F hätte wenigstens Single Precision Floating Point, ein Cortex M7 kann auch doppelte Genauigkeit. Was Du an Rechenleistung konkret brauchst, kann ich Dir nicht sagen. Nimm das leistungsfähigste, was Du irgendwie bekommen kannst, implementiere Dein Zeugs und messe die %Idle Time aus. Dann kannst Du herunter rechnen. Wenn Dein Zeugs ein Industrieprojekt wäre, würde man schauen, ob man es auf Festkomma- oder Integerarithmetik umstellen kann. Das ist natürlich erheblicher Aufwand und mitunter nicht ganz einfach, weswegen man in Forschungsprojekten einfach darauf verzichtet und teurere Hardware kauft. Bei Stückzahl 1 ist das kein Problem, bei einer Serienproduktion sehr wohl. fchk
Also danke nochmals für eure Hilfe! Wir haben letzendlich den DUE bestellt. Jetzt habe ich mal eine ganz ander Frage: ist es überhaupt möglich mit dem µC über das CCP mit der TCU zu kommunizieren? Zum Projekt: Auf dem µC soll eine Monitoring-Methode für das Getriebe implementiert werden, welches Informationen wie zB. Drehzahl, Moment und eingelegten Gang als Input bekommt.
Yama K. schrieb: > Zum Projekt: Auf dem µC soll eine Monitoring-Methode für das Getriebe > implementiert werden, welches Informationen wie zB. Drehzahl, Moment und > eingelegten Gang als Input bekommt. Auf dem Arduino Due ist AFAIK ein ARM drauf, was du schreibst kann aber auch locker ein Atmega328&Co und die haben dabei noch Langeweile. Klingt extrem danach, dass das Simulink-Modell noch ein großes Optimierungspotential enthält ;)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.