Forum: Mikrocontroller und Digitale Elektronik Wie bestimme ich meine Leistungsanforderung an einen µC?


von Yama K. (yamakasi)


Lesenswert?

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!!!

von Luftikus (Gast)


Lesenswert?

Das kannst du berechnen. Bitte setze dazu deine Werte in die Formeln ein 
die du bei Google finden kannst und drücke Enter!

von MaWin (Gast)


Lesenswert?

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.

von Falk B. (falk)


Lesenswert?

@ 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.

von W.A. (Gast)


Lesenswert?

> 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.

von Ulrich F. (Gast)


Lesenswert?


von MikeH (Gast)


Lesenswert?

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.

von c-hater (Gast)


Lesenswert?

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.

von Yama K. (yamakasi)


Lesenswert?

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 ^^

von Karl H. (kbuchegg)


Lesenswert?

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
von Falk B. (falk)


Lesenswert?

>>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?

von Yama K. (yamakasi)


Lesenswert?

>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.

von Falk B. (falk)


Lesenswert?

@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.

von Schreiber (Gast)


Lesenswert?

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.

von Yama K. (yamakasi)


Lesenswert?

>>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
von Yama K. (yamakasi)


Lesenswert?

>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

von MikeH (Gast)


Lesenswert?

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.

von Wolfgang (Gast)


Lesenswert?

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.

von Ulrich F. (Gast)


Lesenswert?

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.

von c-hater (Gast)


Lesenswert?

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).

von Frank K. (fchk)


Lesenswert?

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

von Yama K. (yamakasi)


Lesenswert?

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.

von M. K. (sylaina)


Lesenswert?

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
Noch kein Account? Hier anmelden.