Hallo Zusammen,
aktuell arbeite ich auf mit dem STK500 auf einem Atmega64.
(ganz normal über make.exe über MakeFiles)
Gerne würde ich mehr ADC Power haben, da bin ich auf den
CortexM3 gestoßen,
Super günstig, extrem schnell
http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&name=726-1023-ND
4,40 EUR ???
Das ganze macht natürlich nur Sinn wenn ich nicht extra
eine Compiler für X tausend Euro brauche.
Kann mir jemand sagen wie groß da der Umstieg ist?
Ich hab jetzt schon diese Homepage gefunden
http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/index_cortex.html
So ganz blicke ich da aber nicht durch (GNU-toolchain, OpenOCD von Keil
etc.)
und hat mich etwas verunsichert.
Einfach nur
1
MCU=atmega64
durch
1
MCU=cortexM3
zu ersetzen und die Ports Anzupassen klappt wohl nicht, oder?
(Es geht nur um die Software, nicht um die Hardware)
Ich hab leider auch keine spezielle Liste gefunden was GCC nativ
unterstützt.
Kann man das wagen?
Vielen Dank & Viele Grüße
Bernd
Ich habe (fast) denselben Umstieg hinter mir.
Allerdings den Luminary LM3S1968.
Ich fand es sehr einfach. Ich nutze allerdings kein JTAG-Debugging,
sondern nur "simples" RS232 oder Display-Debugging.
Der GCC unterstützt den M3. Auch ein Linkerskript ist schnell erstellt.
Ich jedenfalls hatte nach nicht mal einem Tag das FreeRTOS mit der
Luminary-Library laufen und erste Ausgaben auf einem Display.
Im Grunde ist der Einstieg aufgrund der guten Libraries von Luminary
sogar einfacher als beim Mega644, einzig das Linker-Skript ist anfangs
etwas abschreckend, aber man braucht nur einen Bruchteil der Optionen,
wenn man kein hochkomplexes Projekt damit macht.
Der Cortex läuft afaik mit winarm bzw. yagarto (Hab bisher nur mit dem
ARM7 gearbeitet)
Die C-Algorithmen wirst du übernehmen können. Bei allem was auf Hardware
zugreift, wird es vermutlich schwieriger.
Der Vorteil bei AVR ist, dass es nur einen Hersteller gibt, so dass die
Hardware immer recht ähnlich angesprochen wird. ARM verkauft IP-Cores,
die Hertseller in ihre Produkte einbauen können, weshalb es trotz
gleichem Core sehr unterschiedliche Ansätze geben kann.
Ansonten hängt es davon ab, wie viel dir ein Compiler bzw. deine Zeit
Wert ist. Je günstiger, desto mehr Zeit muss man investieren.
>Der Cortex läuft afaik mit winarm bzw. yagarto (Hab bisher nur mit dem>ARM7 gearbeitet)
Ich nutze Codesourcery G++. Das war die erste gcc Version, die den M3
unterstützte. Sollte aber mittlerweile in der aktuellen Gcc Version drin
sein.
>Die C-Algorithmen wirst du übernehmen können. Bei allem was auf Hardware>zugreift, wird es vermutlich schwieriger.
Der Vorteil vom M3 ist, daß die Hersteller Luminary und ST umfangreiche
Hardware Libraries bereit stellen, die das Programmieren der diversen
MCU-Einheiten wirklich einfach machen, auf jeden Fall einfacher als beim
AVR.
>Der Vorteil bei AVR ist, dass es nur einen Hersteller gibt, so dass die>Hardware immer recht ähnlich angesprochen wird. ARM verkauft IP-Cores,>die Hertseller in ihre Produkte einbauen können, weshalb es trotz>gleichem Core sehr unterschiedliche Ansätze geben kann.
Das ist aber bei weitem nicht mehr so schlimm wie beim ARM7 oder ARM9.
ARM war so clever, 2 Dinge zu tun:
1. Die Gestaltungsmöglichkeiten bei der Hardware viel stärker
einzuschränken, also z.B. Speicherbereiche oder einen Systicktimer im
Kern, den alle Derivate haben.
2. Mit CMSIS einen Software Standard zu schaffen, der eine Portierung
der Software auf andere Derivate stark vereinfacht.
So ist z.B. FreeRTOS in wenigen Minuten auf komplett andere Derivate
portiert.
>Ansonten hängt es davon ab, wie viel dir ein Compiler bzw. deine Zeit>Wert ist. Je günstiger, desto mehr Zeit muss man investieren.
Er benutzt offensichtlich GCC. Das geht auch genauso simpel mit dem M3.
Hallo,
vielen Danke für die Antworten
> Ich fand es sehr einfach. Ich nutze allerdings kein JTAG-Debugging,> sondern nur "simples" RS232 oder Display-Debugging.
mehr brauch ich auch nicht :)
Ich versteh noch nicht ganz, wenn GCC den M3 unterstütz,
wieso werden dann Programme wie FreeRTOS (?), LinkerScript benötigt.
Externe Libarys verstehe ich soweit, aus den AVR Dateien
##( not used: example does not fit in AT91SAM7S64 RAM )
19
#RUN_MODE=RAM_RUN
20
21
## Exception-Vector placement not used so far in M3-examples
22
## (placement settings ignored when using "RAM_RUN")
23
## - Exception vectors in ROM:
24
#VECTOR_LOCATION=VECTORS_IN_ROM
25
## - Exception vectors in RAM:
26
##VECTOR_LOCATION=VECTORS_IN_RAM
27
28
# Target file name (without extension).
29
TARGET=main
30
...
Mein AVR STK500 müßte das dann doch auch wie gewohnt übertragen
können (hoffe ich mal...), nach dem GCC das compiliert hat
Ich müßte anfangs nur einen Uart hinbekommen,
dann wag ich mich langsam an den ADC Interrupt
(anhand von der Luminary Beispielen..) Soweit der Plan.
Hab ich was übersehen?
Danke & Viele Grüße
Bernd
>Ich versteh noch nicht ganz, wenn GCC den M3 unterstütz,>wieso werden dann Programme wie FreeRTOS (?), LinkerScript benötigt.
Werden nicht benötigt.
FreeRTOS ist ein RTOS. Michael meinte sicherlich, daß es für ihn einfach
war, dieses RTOS mit dem GCC auf dem CortexM3 zum Laufen zu bringen.
Auch ohne Linkerskripte kommt man aus, das ist allerdings umständlicher.
Zudem kann man die für die üblichen Hobby-Projekte (ala AVR) einfach
halten.
Dann muss nur noch eins her für jeden Controller, den man nutzt und das
war es dann. Das Handbuch dazu muss man jedenfalls nicht komplett lesen
(und erst recht nicht komplett verstehen).
Hier im Forum wurden ja schon einfache für den Luminary M3 gepostet,
einfach mal suchen.