Hallo zusammen,
so langsam verzweifel ich ein bisschen...
ich habe nun mit der ARM Programmierung angefangen aber finde kein
richtigen start.
Also ich habe vorher mit den kleinen AVR's gearbeitet und wollte mich
nun in die ARM Welt einarbeite.
Ich nutze dafür momentan die 16k Version von Keil und das Board von
Atmel AT91SAM7X265-EK.
Mein Problem ist nun nur, dass mir irgendwie das Grundkonzept
fehlt....bei dem AVR gab es die tolle IO Datei und die WINAVR Doku wo
dann die Interrupts beschrieben waren und im Datenblatt hatte ich meine
Registernamen und konnte so alles relativ einfach verstehen.
Bei dem ARM fehlt mir dieser Ansatz ein bisschen. Ich habe nun schon
gesehen, dass man Funktionen brauch um die Register zu beschreiben und
zu lesen aber so richtig habe ich auch noch nicht verstanden, wie die
Funktionen heißen und welche es dort gibt.
Und ich wollte nun versuchen die RS232 Schnittstelle ans laufen zu
kriegen und zwar Interrupt gesteuert.
Leider hab ich auch da noch keine so richtige DOku oder ein Beispiel,
der für diese Controller passt, gefunden. Muss ich denn nun in dieser
SAM7.s datei irgendwo die Zuweisung eines Interrupts zu einer C Funktion
machen? Oder wie passiert das???
Ich hoffe es kann mir hier einer helfen noch einen guten Start in die
ARM Welt zu erlangen.
Achja ich nutze als JTAG Schnittstelle diesen Atmel SAM ICE. Über diese
RDI Konfiguration funktioniert das mit Keil auch, aber bei jedem Projekt
muss man das alles neu einstellen, weiß vll jemand ob man das auch
speichern kann, dass er immer über RDI versuchen soll die Kommunikation
zu erstellen und nicht über diesen ULINK ? (Danke für die Tipps)
Gruß
Jens
Danke für den Link. Die Sachen hatte ich schon einmal runtergeladen. Das
Problem dabei war nur, dass nie wirklich was für Keil dabei war.
Also bei dem Umstieg zum ARM kommt auch der Umstieg auf Keil hinzu.
Hatte gelesen, dass die die beste Performance aus dem Controller
rausholen können und darum wollte ich mich auch gleichzeitig in Keil
einarbeiten.
Ich habe schon gesehen das IAR und Keil unterschiedlich mit diesen
Startup sachen umgeht. Keil hat nur ein Assemblerfile und IAR meistens
noch eine C Datei (oder immer).
Funktionieren die Beispiele des SAM7S eigentlich auch beim 7x ?oder sind
die doch zu verschieden? Zwischen 7X und 7XC sollte ja kein Unterschied
sein oder?
Ich hatte mir nun weitere Beispiele angeguckt und dort werden ja immer
solche Funktionen wie: AT91F_PIOB_CfgPMC oder so etwas genutzt. Gibt es
auch eine Dokumentation dazu? Wofür die befehle alle sind? bzw. wieso
haben manche AT91F... und andere AT91C... dort stehen? Hat das auch
schon irgendeinen Sinn?
Ich habe zwar die HTML Datei dazu gefunden, wo diese Befehle mehr oder
weniger stehen. Aber eine richtige Erklärung mit beispielen gibt es
nicht oder? Bei WinAVR gab es ja auch eine HTML Seite wo die Befehle
dokumentiert waren und zusätzlich noch kleine Beispiele für die
Anwendung.
Ich will mir auch nicht aus mehreren Examples immer sachen hinaus
kopieren sondern suche ne schöne Dokumentation oder ein "Step by Step"
Guide in dem Erklärt wird, wieso dass so gemacht wird bzw. welche
Befehle für was stehen.
Gibt es so etwas auch? Ein richtig schönes Tutorial für den SAM7X? Die
Headerdateien:
#include "AT91SAM7X256.h"
#include "lib_AT91SAM7X256.h"
sind ja bei allen Compilern gleich, also ist nur noch interessant ob ich
später bei der Interruptnutzung mit KEIL etwas an dieser Startup Datei
machen muss oder nicht.
ich hoffe es kommen noch mehr Tipps und Tricks!
gruß Jens
hmm jetzt hast du ja schon mit dem ARM 7 angefangen, aber sonst würde
ich dir zum ARM Cortex M3 raten und da am besten einen STM32.
Bei der CortexM3 Architektur wurde einiges verbessert und vereinfacht
(Interrupt-Handling, Bit-Banding...)
Da gibts auch massig Dokumentation auf der ST Seite dazu.
Keil ist in meinen Augen die beste Entwicklungsumgebung. Angefangen vom
Compiler über den Simulator oder die recht günstigen Entwicklungsboards
bzw. Emulatoren.
naja nun liegt das komische AT91SAM7X-EK Board vor mir und ich will
damit klar kommen :)
Bis jetzt hatte ich auch immer nur gutes über KEIL gelesen aber ständig
find ich nur Beispielprogramme für IAR.
Kannst du mir, oder jemand anderes eventuell, einmal erklären wo der
große unterschied zwischen KEIL und IAR ist? Also im bezug auf den
SAM7X. Beide benutzen ja die gleichen Libs nur sie haben das mit dem
Startup anderes. IAR hat da meistens noch so eine cStartup.c Datei
zusätzlich zur anderen Assembler Datei. Bei KEIL wird darauf immer
verzichtet (Warum?) Reicht diese vorgefertigte Startup Datei von KEIL
eigentlich vollkommen aus? Oder muss ich da noch einmal was anpassen?
Bei der Erstellung von einem Projekt fragt mich KEIL ja ob es eine
Startupdatei erstellen soll und ich sage immer brav ja :)
Muss ich hinterher für die Interrupts da noch Anpassungen vornehmen?
Oder ist die von Keil dann komplett fertig?
hab mir gerade mal den STM32 angeguckt...der hätte zu wenig SRAM für
mich ;) So auf die schnelle habe ich nun nur was mit 20kB gefunden, was
mir zu wenig ist :(
Aber nun schlag ich mich auch weiter mit dem SAM7 rum....das dingen war
ja auch nicht kostenlos :(
Wäre sehr dankbar noch für weitere hilfen wegen dieser Startup
geschichte oder Dokumentation zu diesen Befehlen...
In den Beispielen werden immer Befehle genutzt die ich nichtmals in
dieser Doku von der Lib datei wieder finde :/
hallo jens,
anbei eine html-datei mit deren hilfe du dir mit den library funktionen
und den peripherals sicher leichter tun wirst.
eine empfehlung meinerseits:
steige auf iar um, da wie du schon festgestellt hast die meisten
beispiele dafür vorhanden sind. außerdem hat die iar kickstart version
eine höher limitierung (32kb).
gruss
gerhard
Jens wrote:
> Bis jetzt hatte ich auch immer nur gutes über KEIL gelesen aber ständig> find ich nur Beispielprogramme für IAR.
Das ist bei Atmel scheinbar traditionell so. In den neueren
Beispielsammlungen wird auch der GNU-Compiler unterstützt (bei älteren
oft Green-Hills und manchmal ADS). Man kann die Keil
IDE/Debugger/Simulator auch mit GNU-Compiler nutzen (aber nach
Möglichkeit nicht mit dem uralten Packet von keil.com).
Debugger/Simulator der Eval-Version bleiben dabei weiterhin auf 16kBytes
begrenzt.
> Kannst du mir, oder jemand anderes eventuell, einmal erklären wo der> große unterschied zwischen KEIL und IAR ist? Also im bezug auf den> SAM7X.
Bezogen auf Controller gibt es keinen Unterschied. Weder der Realview
noch der IAR-Compiler haben Sonderfunktionen für spezielle Controller
wie SAM7X. Die Unterschiede sind vor allem in der Anwendung der
Toolchain (herstellerspezifische Erweiterungen z.B. für
Interrupt-Routinen, Syntax/Funktionen des Assemblers).
> Beide benutzen ja die gleichen Libs nur sie haben das mit dem> Startup anderes. IAR hat da meistens noch so eine cStartup.c Datei> zusätzlich zur anderen Assembler Datei.
Das ist auch recht praktisch so, man muss sich weniger mit Assemblercode
herumschlagen und man muss beim Wechsel der Toolchain weniger portieren.
> Bei KEIL wird darauf immer verzichtet (Warum?) Reicht diese> vorgefertigte Startup Datei von KEIL eigentlich vollkommen aus?> Oder muss ich da noch einmal was anpassen?
Keil bietet einen "Wizard", mit dem man Einstellungen in deren
Startup-Code vornehmen kann, ohne am Assemblercode basteln zu müssen.
Nehme an, das ist der Grund dafür, dass nur eine (Assembler-)Datei zum
Startup verwendet wird (sonst gäbe es zwei "Baustellen"). Man kann aber
die Atmel-Methode auch mit den Realview-Tools verwenden. Man muss
lediglich die Assemblerdatei von IAR-Assembler nach Realview-Assembler
portieren. O.k. nicht ganz simpel aber auch kein Hexenwerk, sicher aber
keine gute Aufgabe für den ARM-Erstkontakt. Die Dokumentation von Keil
sollte die Assembler-Direktiven erläutern. Man hat halt dann nur nicht
mehr den "Wizard" zur Verfügung, da die Eintragungen für diesen im Code
für IAR-EWARM (natürlich) fehlen.
> Bei der Erstellung von einem Projekt fragt mich KEIL ja ob es eine> Startupdatei erstellen soll und ich sage immer brav ja :)
Damit fehlt zumindest der Aufruf der Initialisierungsfunktion(en) in
startup.c. Einige Einstellungen werden wahrscheinlich zwar auch im
Assembler-Startup von Keil gemacht. Ob aber alle und genau so wie in
startup.c muss man aber nachsehen. Sehr wahrscheinlich nicht.
> Muss ich hinterher für die Interrupts da noch Anpassungen vornehmen?> Oder ist die von Keil dann komplett fertig?
Wenn man zudem noch Code aus den Atmel-Beispielen verwenden will, muss
man zumindest die AIC-Initialisierungen vergleichen und möglicherweise
noch anpassen. Wahrscheinlich noch ein wenig mehr. Dann ist es
wahrscheinlich einfacher den Code für IAR zu portieren oder den Code von
Keil abzuspecken und daraus die C-Funktion aufzurufen.
> hab mir gerade mal den STM32 angeguckt...der hätte zu wenig SRAM für> mich ;) So auf die schnelle habe ich nun nur was mit 20kB gefunden, was> mir zu wenig ist :(
LuminaryMicro bietet auch schicke Cortex-M3 Controller. Einige mit mehr
RAM (im Moment w.r.e max. 64kByte, auch mit CAN und Ethernet)
> Aber nun schlag ich mich auch weiter mit dem SAM7 rum....das dingen war> ja auch nicht kostenlos :(>> Wäre sehr dankbar noch für weitere hilfen wegen dieser Startup> geschichte oder Dokumentation zu diesen Befehlen...
Konkreter Fragen, dann kann man vielleich helfen.
> In den Beispielen werden immer Befehle genutzt die ich nichtmals in> dieser Doku von der Lib datei wieder finde :/
Die AT91LIB ist gut portabel. Das ist im Vergleich zur
Portierung/Anpassung des/der Startup-Codes eine kleine Aufgabe. Die
Dokumentation der AT91LIB hilft dabei auch nur ein klein wenig weiter.
Vielen lieben Dank schon einmal für eure Hilfe!!!
Ich werde mich nun ein bisschen mehr mit dem IAR auseinandersetzen und
vielleicht damit ein besseren einstieg in die ARM Welt erlangen.
Vielleicht steig ich auch später wieder um auf den KEIL, wenn ich erst
einmal ein Überblick über alles habe.
@gerhard: Die Dokumentation die du gepostet hast finde ich sehr schwer
als einstieg :)
Hat es einen Grund warum manche befehle mit AT91S andere mit AT91C oder
AT91F anfangen? also diese Buchstaben S, C, F oder B oder sontige die
man dort mal sieht?
Mein Problem ist halt noch, dass dort viele Schlagwörter stehen die
einem sicher viel bringen, nur weiß ich noch nicht wie ich die Anwenden
muss. In den Beispielen werden die ja immer mit irgendwelchen Funktionen
aufgerufen, vielleicht komm ich ja mit den IAR Beispielen dann besser
damit klar.
Meine Frage im Bereich zur Startupdatei wäre, was ich dort noch machne
muss um Interrupts ans laufen zu kriegen. Mehr werde ich dort doch nie
anpassen müssen? Die Speicheraufteilung muss doch nie angepasst werden,
wenn ich die Startup datei von einem Beispiel des SAM7X oder eben von
KEIL nehmen würde, oder etwar doch?
Auf der Homepage von Keil.com kannst du sie runterladen...kostet nichts,
musst nur nen Formular mit Name etc. ausfüllen.
http://keil.com/demo/ hier gibts die Version.
Hoffe mal dieser Thread ist noch aktuell und meine Frage geht nicht
unter.
Ich habe ebenfalls vor kurzem mit ARm begonnen. Ich benutze ein
AT91SAM7s-EK Board. DIe mitgelieferten Beispielprogramme laufen auch
alle einwandfrei. Mein Problem ist jetzt ein eigenes, lauffähiges
Projekt zu erstellen. Zu schaffen an der ganzen Sache macht mit die
startup- Datei. Mir ist es ein Rätsel wie ich diese Datei eingebunden
bekomme.