PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wie finde ich die Adresse meines Bootloaders?



Willa
18.11.2009, 23:18
Hi!
Ihr kennt ja sicherlich die Anweisung "goto 0". Dadurch hat man eine Art Software-reset. Jetzt möchte ich aber nicht nur den µC resetten, sondern an den Anfang des Bootloaders springen. Es geht konkret um einen mega328p auf einem Arduino pro mini mit Original Bootloader.
Dadurch würde ich mir das Drücken des Reset-Buttons sparen, wenn ich mit avrdude ein neues Programm flashen will.
Hat jemand einen Tipp?
Andere Projekte nutzen z.B.
Goto $3c00
und
Goto &HF000
aber diese Adressen sind sicherlich nur für andere Booloader und andere Chips geeignet. Leider bin ich bei solchen tiefergehenden Sachen etwas wenig bewandert...

Rofo88
19.11.2009, 02:18
Wir wäre es wenn Du nen Reset vom Watchdog machen läst, sollte fast das selbe sein wie ein Reset vom Reset-Taster.

Ansonsten ist es von den Fuse und Lockbits abhängig wo der Bootloader anfängt und wie groß er ist.

Willa
19.11.2009, 07:43
Wir wäre es wenn Du nen Reset vom Watchdog machen läst, sollte fast das selbe sein wie ein Reset vom Reset-Taster
Gute idee, ich gucke mal ob er dann wirklich zum Bootloader springt.

Ansonsten ist es von den Fuse und Lockbits abhängig wo der Bootloader anfängt und wie groß er ist
Und wie könnte ich das herausfinden...? Einen leeren µC (nur bootloader drauf) auslesen und da nach irgendeinem Muster suchen...?

Rofo88
19.11.2009, 08:06
Du kannst einfach mal in die Fuse- und Lockbits schauen was da gesetzt ist...

oberallgeier
19.11.2009, 08:30
Hi Willa,

vermutlich musst Du garnicht in den m328p schauen. In der entsprechenden Produktseite des arduino (http://www.arduino.cc/en/Main/ArduinoBoardProMini) steht folgender Satz:

... The ATmega168 has 16 KB of flash memory for storing code (of which 2 KB is used for the bootloader). ...
Daher werden die fuses entsprechend gesetzt sein.

Willa
19.11.2009, 08:47
Danke, das klingt alles sehr logisch :-D
Dann werde ich das mal ausprobieren heute Abend. 2KB sind welche größe "in Words"...? 1024...?

mat-sche
19.11.2009, 08:52
Hi Willa,

die Geschichte mit dem Resetbutton habe ich auch hinter mir:
https://www.roboternetz.de/phpBB2/viewtopic.php?t=51079

Nun nutze ich den Bootloader von MCS, der bei Aufnahme zum brennen eine "123" schickt. Diese Anfrage erkenne ich und springen mit Goto &HF800 in den Bootbereich vom 644p. Aus dem Datenblatt habe ich aber leider nicht den richtige Bootloaderbereich herausfinden können. Ich habe den MCS-Bootloader auf meinen Chip gebrannt und über Bascom Brennoberfläche die Adresse herausgefunden.
Theoretisch musst Du im Datenblatt die Adresse herausfinden, die bei 2kB Bootloadergröße steht.

Gruß MAT

Vitis
19.11.2009, 08:53
2kb sind 2048 byte ;)

wenn man nen fertig programmierten chip mit loader bekommt ists am einfachsten man nimmt den entsprechenden programmieradapter (stk500, avrispmk2, parallelportprogrammer etc. ) und liest die sogenannten fuses aus. da steht dann konkret loadersize und starts at xxxx (z.b. im avr-studio).

Willa
19.11.2009, 19:08
Hey, das funktioniert hervorragend...! Ein Klick in meiner GUI - einer Progressbar beim hochwandern zuschauen - und fertig ist die Programmübertragung!
Der Vollständigkeit halber nochmal die Bootloader Adressen für ein Arduino mit original Bootloader:
Mega168: Goto $1c00
Mega328p: Goto $3c00