Forum: Mikrocontroller und Digitale Elektronik Start Probleme mit Keil und AT91SAM7X


von Jens (Gast)


Lesenswert?

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

von gerhard (Gast)


Lesenswert?

hallo jens,
unter folgendem link findest du jede menge beispiele für dem sam7x:
http://www.atmel.com/dyn/products/tools_card.asp?tool_id=4227

gruss
gerhard

von Jens (Gast)


Lesenswert?

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?

von Jens (Gast)


Lesenswert?

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

von Mathias (Gast)


Lesenswert?

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.

von Jens (Gast)


Lesenswert?

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 :/

von gerhard (Gast)


Angehängte Dateien:

Lesenswert?

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

von Martin T. (mthomas) (Moderator) Benutzerseite


Lesenswert?

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.

von Jens (Gast)


Lesenswert?

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?

von Bert Masten (Gast)


Lesenswert?

Hallo,

eine kleine Zwischenfrage: wo kann ich die KEIL 16 KByte Version 
bekommen und wie teuer ist sie?

mit freundlichen Grüßen

Bert

von Jens (Gast)


Lesenswert?

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.

von Aspire (Gast)


Lesenswert?

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.

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.