Forum: Mikrocontroller und Digitale Elektronik AT91 SAM-BA


von JarJar (Gast)


Lesenswert?

Hi,
mal ne Frage zu dem Bootloader von den AT91SAM7Sxxx. Hab mir das
Datenblatt und die Anleitung auf at91.com mal durchgelesen. Der Ablauf
ist mir noch nicht ganz klar. Kann man den Bootloader immer nur einmal
verwenden? Das bezieht sich da alles auf das Kit
Wenn ich das richtig verstanden hab läuft das ja so ab:
- TST Jumper stecken
- Board einschalten
- 10 Sekunden warten
In der Zeit wird der Bootloader an den Anfang vom Flash kopiert
- Board ausschalten
- Jumper abziehen
- Board wieder einschalten
Jetzt springt der Controller in den Bootloader und man kann ein
Programm runterladen. Wenn man ein Programm runtergeladen hat springt
der Controller aber immer in das Programm.

Meine eigentliche Frage: muß man vor jedem Download das ganze
Brimbamborium durchziehen bis man mal downloaden kann oder bleibt der
Bootloader im Flash erhalten und man kann ihn anders anspringen?

von wolfgang neudert (Gast)


Lesenswert?

Der Bootloader wird bei jedem download überschrieben, deswegen muß man
das 10-sekündige "Brimbamborium" jedesmal durchziehen, wenn man diese
methode anwendet. Allerdings soll das ganz ja auch nur eine
"Recovery-Prozedur" sein, die man anwendet, wenn man das Flash
versehentlich gelöscht hat. Einfacher ist es, den Bootloader (gibts im
Quelltext bei Atmel, ist compiliert ca. 4k groß) einfach zur
Applikation dazuzulinken, und dann bei Bedarf zu starten, da entfallen
dann die 10sec. (Der Bootloader muß übrigens aus dem RAM ausgeführt
werden)

Gruß
Wolfgang

von Philip K. (praktikant)


Lesenswert?

Hallo!

Ich quälte mich ebnfalls gerade mit dem ARM-Controller (AT91SAM7S256) 
herum! "Ich schmeiß die Scheiße ausm Fenster!!"

Was hab ich denn nun gewonnen, wenn ich den Bootloader im RAM habe? Ich 
habe mir das Beispielprogramm (LED blinken) von P. Lynch draufgeladen. 
Starten tut das erst nach einem Druck auf "Reset". Dann wird aber das 
Eval-Board (Oimex SAM7-P256) nicht mehr per USB erkannt.... Dann muss 
ich, um ein neues Programm draufzuladen erst wieder die prozedur mit dem 
Jumper-Stecken durchführen....... Und was genau bringt mir dann der 
Bootloader, der ja wohl beim abstöpseln der Stromzufuhr gelöscht 
wird?!?!

Gruß

Der Praktikant

von Michael R. (rubi)


Lesenswert?

"Ich schmeiß die Scheiße ausm Fenster!!"

So gehts mir leider auch öfters,...

von Philip K. (praktikant)


Lesenswert?

Okay cool........das ändert aber leider an der Problematik auch nix.... 
g

Und jetzt mal im Ernst.....Hat jemand ne genaue Ahnung?
Die TWI-Funktion hat wohl auch noch keiner hinbekommen.......habe 
jedenfals im Internet noch nix brauchbares an Code gefunden.....

Gruß

Der Praktikant

von T.v.B. (Gast)


Lesenswert?

>>Und was genau bringt mir dann der
>>Bootloader, der ja wohl beim abstöpseln der Stromzufuhr gelöscht
>>wird?!?!

Der Bootloader liegt schon im Flash wie der andere Sourcecode auch. Nur 
wenn du ihn benutzen willst musst du ihn vorher in den RAM-Speicher 
kopieren und von dort ausführen.

Gruß T.v.B.

von Philip K. (praktikant)


Lesenswert?

Okay, aber wie geht sowas? Ich steh da völlig auf dem Schlauch....
Bin in meinem ganzen Leben dank Microsoft auf "Point & Click" getrimmt 
worden und befasse mich jetzt erst seit ein paar Wochen mit der nackten 
Hardware.....

Ich tu mich eben schwer mit der Vorstellung, dass ich da irgendwas 
starten kann, obwohl ich keine Tastatur an den µC drangelötet habe?!

Habe zwar mittlerweile akzeptiert, dass ich auch mal ohne klicken 
auskomme (Linux-Konsole) aber so recht gelingen will mir da noch nix....

von Erwin R. (er-tronik)


Lesenswert?

Ja, dieser Atmel-Bootloader war auch mal ein Grund, warum ich die 
Atmel-ARMs schon "aus dem Fenster schmeißen" wollte. Ein weiterer Grund 
waren übrigends wie diese unmöglich zu lernenden Labels "AT91C_...", 
"AT91S_..." usw. Wer sich das ausgedacht hat, muß wohl eine Tastatur mit 
1000 Makrotasten haben.

Zwischendurch bin ich dann mal auf NXP-Controller umgestiegen (endlich 
leicht zu merkende Labels, besserer aber sehr langsamer Bootloader). Da 
es aber die neuen LPC236x-Typen noch nicht in Stückzahlen gibt und ich 
für ein Project unbedingt USB und CAN in einem Controller brauche, bin 
ich nun wieder zurück zu Atmels AT91SAM7X.

Den Bootloader des Atmel benutze ich gar nicht zum programmieren, das 
ist einfach zu umständlich. Am besten geht es per JTAG und OpenOCD. Eine 
geänderte Library ohne diesen ganzen AT91C_-Kram werde ich mir in der 
nächsten Zeit mal erstellen (oder hat das jemand vielleicht schon 
gemacht, dann kann ich mir das sparen).

An das TWI-Problem hab ich mich bis jetzt noch nicht gewagt. Das geht ja 
wohl nicht ohne Interrupts. Aber vielleicht gibt es ja bis dahin die 
neue Revision der Controller, bei denen der Fehler beseitigt ist.

Erwin

von Philip K. (praktikant)


Lesenswert?

Achso, da ist auf jeden Fall ein Interrupt notwendig?? Wo steht das 
bitteschön im Manual? Oder meinen die Jungs von Atmel, man müsse sich 
das aus den Fingern saugen?!
Mir ist dabei nur nicht ganz klar, wo ich den Interrupt schalten muss. 
Welches Ereignis sollte den Interrupt denn auslösen und was soll die ISR 
dann veranstalten?!?!
Mein Gott, da bekomm ich in meinem jungen Alter schon graue Haare gg

Gruß Der Praktikant

von gerhard (Gast)


Lesenswert?

hallo philip,
ich weiß ja nicht warum du als anfänger gleich mal mit einem arm 
loslegst, aber nehmen wir mal an du hast einen driftigen grund.
in diesem fall würde ich dir mal vorschlagen die kapitel des datenblatts 
komplett durchzuarbeiten welche für deine applikation benötigt wird.
desweiteren würde ich dir die examples von www.at91.com ans herz legen.

nun zu deinen eigentlichen problemen:
1. twi: da kann ich nicht viel dazu sagen, außer das eine ansteuerung 
eines seriellen bauteils (sei es über twi, spi oder ssc) ohne interrupt 
steuerung oder gar mit pdc (dma) nahezu sinnlos ist.

2. sam-ba:
die beim at91sam7s eingesetzte lösung zur aktivierung des sam-ba ist 
nicht sehr glücklich. das dürfte auch atmel erkannt haben und hat dies 
beim at91sam7x wesentlich verbessert. wenn du sam-ba zum debuggen 
einsetzen willst dann hast du den falschen weg gewählt. ohne jtag-ice 
(ARM USB JTAG für OpenOCD hierim shop um ganze 70,-€) kannst du das 
programmieren am at921sam7s ohnehin vergessen.

gruss
gerhard

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Philip Kottmann wrote:
> Die TWI-Funktion hat wohl auch noch keiner hinbekommen.......habe
> jedenfals im Internet noch nix brauchbares an Code gefunden.....

Was gibt's da "hinzubekommen"? TWI funktioniert so wie im Datenblatt 
beschrieben, mehr ist da nicht dran. Beispielcode:
http://www.google.com/codesearch?hl=de&q=show:07ZCfb6KAjs:pzkOO5QRsoc:NqT_msKBRL0&sa=N&ct=rd&cs_p=svn://mikrocontroller.net/mp3dec/trunk&cs_f=/dac.c

von Frank (Gast)


Lesenswert?

Hab nicht alles gelesen, deshalb schonmal ein "sorry", falls ich etwas 
widerhole.

1. JTAG besorgen. Erlaubt mit openOCD und gdb Source-Level-Debigging und 
das flashen des Controllers kostet mich ein müdes "make program". Oder 
auch: "make all program debug". Sehr komfortabel, wie ich finde. Kosten 
mit Wiggler < 5 Euro. Geschwindigkeit erträglich.

2. Die AT91 hab ich aus dem header gelöscht. Ansonsten find ich das 
nicht schlecht.
F: Funktion
C: Konstante
S: Struktur
PS: Pointer auf Struktur

Dazu noch einen Editor, der Code-Vervollständigung beherrscht, und gut. 
Vim und ctags leisten gute Dienste.

von Philip K. (praktikant)


Lesenswert?

Frank wrote:
> 2. Die AT91 hab ich aus dem header gelöscht. Ansonsten find ich das
> nicht schlecht.
> F: Funktion
> C: Konstante
> S: Struktur
> PS: Pointer auf Struktur


Was genau soll mir das sagen?!
Oh Mann, wäre mein Unternehmen mit einem ATMega denn einfach gewesen?!

Gruß der Praktikant

von gerhard (Gast)


Lesenswert?

>Was genau soll mir das sagen?!
>Oh Mann, wäre mein Unternehmen mit einem ATMega denn einfach gewesen?!
wenn du dich mit dem atmega genauso wenig auseinandersetzt wie mit dem 
at91sam dann würde es dir auch nicht besser ergehen.
datenblätter und tutorials zu lesen ist nun mal pflicht wenn man sich 
mit µcontrollern befaßt.

gruss
gerhard

von Philip K. (praktikant)


Lesenswert?

Ja logisch hab ich das Datenblatt gelesen.....Danach hab ich nach bestem 
Wissen und Gewissen versucht, die Register so zu setzen, wie es mir für 
richtig erschien und scheinbar auch laut dem Ablauf im Datenblatt 
richtig sein soll..... aber es hat sich trotzdem nichts getan....

von Michael R. (rubi)


Lesenswert?

Hallo Praktikant

>Wäre mein Unternehmen mit einem AtMega einfacher gewesen ?

Ja!
Einen Arm zum MC Einstieg zu wählen ist leider eine ziemlich
unglückliche Wahl.

>Ja logisch hab ich das Datenblatt gelesen

Glaub ich Dir nicht, die sind meißtens trocken wie Zwieback,
besonders für einen Anfänger.

Eine einfachere Strategie ist sich Demo Sourcode anzusehen
und sich anzusehen wie dieser funktioniert.
Dann siehst Du um vieles leichter was der Herr Autor des
Datenblattes gemeint hat.
Dann mittels Datenblatt den Democode ändern.
Letztendlich führt leider kein Weg um das Datenblatt herum.

LG
Michael

von Philip K. (praktikant)


Lesenswert?

Also so ein blutiger anfänger bin ich damit auch nicht mehr. hatte eine 
vorlesung µC und weiß mit registern und deren belegung einiges 
anzufangen.....und um das geht es doch bei einem µC......egal ober es 
ein ATMega oder ein AT91 ist.....Und einige Zeilen englischen Text 
versteh' sogar ich zu interpretieren g

von gerhard (Gast)


Lesenswert?

>Also so ein blutiger anfänger bin ich damit auch nicht mehr. hatte eine
>vorlesung µC
und jetzt kennst du den unterschied zwischen theorie und praxis!

scherz bei seite.
kann die aussage von michael nur bestätigen:
demo code und datenblatt ansehen und auch versuchen zu verstehen.

gruss
gerhard

von Frank G. (pancho)


Lesenswert?

Philip Kottmann wrote:
> Frank wrote:
>> 2. Die AT91 hab ich aus dem header gelöscht. Ansonsten find ich das
>> nicht schlecht.
>> F: Funktion
>> C: Konstante
>> S: Struktur
>> PS: Pointer auf Struktur
>
>
> Was genau soll mir das sagen?!
> Oh Mann, wäre mein Unternehmen mit einem ATMega denn einfach gewesen?!
>
> Gruß der Praktikant

Hast Du überhaupt mal in den Header reingeschaut? Alle Namen fangen mit 
AT91 an. Das habe ich überall gelöscht. Der nächste Buchstabe gibt an, 
um was es sich handelt. Siehe oben.

Irgendwie hab ich nicht den Eindruck, dass Du es mit nem AVR einfacher 
gehabt hättest, Du scheinst dich ja noch nichtmal mit dem Konzept des 
Headers auseinandergesetzt zu haben. Obendrein bieten die AT91SAM 
komfortables Debuggen via JTAG, die kleineren AVRs nicht. SAM-BA ist 
keine gute Möglichkeit, zu programmieren.

von Michael R. (rubi)


Lesenswert?

Hallo Praktikant

Ich befürchte sehr das das so nichts wird.

Wie steht es denn um die C Kentnisse?
Und vor allem was soll das Projekt denn werden?

Wenn es sich um was "einfacheres" handelt wie einen
Temperatursensor per Spi/Twi auslesen, dann wäre ein
Arm7 sowieso Overkill.Man muß sich das Leben ja nicht unnötig schwer 
machen.

Wie wärs denn damit?
http://cgi.ebay.at/ATmega168-Evalboard-incl-Programmer-und-Software_W0QQitemZ250062045511QQihZ015QQcategoryZ12068QQssPageNameZWDVWQQrdZ1QQcmdZViewItem

Oder damit, sehr zu empfehlen:
http://cgi.ebay.at/Starterkit-Atmel-STK500_W0QQitemZ250060643109QQihZ015QQcategoryZ12949QQssPageNameZWDVWQQrdZ1QQcmdZViewItem

Man müßte halt wissen um was es geht.

LG
Michael

von Philip K. (praktikant)


Lesenswert?

Michael Rubitschka wrote:
> Hallo Praktikant
>
> Ich befürchte sehr das das so nichts wird.
>
> Wie steht es denn um die C Kentnisse?
> Und vor allem was soll das Projekt denn werden?


Es handelt sich darum, 3 analoge Spannungen einzulesen, zu verrechnen 
und das Ganze dann per TWI an ein LCD auszugeben.

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.