Forum: Mikrocontroller und Digitale Elektronik ATmega2560 Bootloader >64k


von michi099 (Gast)


Lesenswert?

Guten Abend,

Ich spiele mich nun schon stundenlang mit einem Arduino Mega Board (mit 
ATmega2560), welcher 256KiB Flash-Speicher besitzt.

Verwendete Software/Hardware:
-MySmartUSB-Light (ISP-Programmer)
-Eclipse (mit avr-gcc plugin)
-avrdude

Mein Problem:
Ich möchte einen Bootloader für das Board schreiben, aber sobald ich den 
Bootloader mit -Ttext (als Linkerargument) über 0xFFFF hebe, wird dieser 
nicht mehr aufgerufen.

Die Fuses:
lfuse: 0xff
hfuse: 0xd8
efuse: 0xfd
(http://www.engbedded.com/fusecalc)

Lockbyte(s):
0x3f --> nichts gesperrt

Weiteres:
Wenn ich den Flash-Speicher Auslese (mit avrdude über ISP) ist bis auf 
den Bootloader der ganze Speicher leer (das sollte doch so sein!?).
Die Addresse in RAMPZ wird richtig gesetzt (:020000040004F7)
und der Bootloader beginnt im Speicher an der gewünschten Addresse 
(:20E00000) mit 8192 Bytes Bootloadergröße.

Ich habe das Board über die Schule gekauft und dort hat ein Lehrer von 
mir bereits einen Bootloader aufgespielt. Bevor ich mit etwaigen flashes 
begonnen habe, habe ich mir den kompletten Flash-Speicher gesichert und 
habe festgestellt, dass beim Bootloader des Lehrers auch am 
Speicherbeginn (0x00000) Daten sind. Lösche ich diese, wird auch dieser 
Bootloader nicht mehr aufgerufen.

Ich würde mich freuen, wenn mir jemand sagen könnte was ich tun muss um 
den Bootloader aufzurufen.

Falls irgendetwas unklar ist oder irgendwelche weiteren Daten 
erforderlich sind, lasst es mir bitte wissen.

Mit freundlichen Grüßen,
Michael

von michi099 (Gast)


Lesenswert?

UPDATE!!!

Das aufspielen des Bootloaders funktioniert nun.

Ich benutzte ja, wie beschrieben, MySmartUSB ligt + avrdude.
Nun habe ich das flashen noch über die Software von myAVR verwendet und 
der Bootloader startete sofort!

Hat irgendjemand eine Idee, warum das Flashen mit avrdude (unter Linux) 
nicht funktioniert, unter Windows mit dem Programmer-Tool von myAVR 
jedoch schon?

Mfg
michael

von michi099 (Gast)


Lesenswert?

UPDATE2!!!

Offensichtlich besteht in AVRdude ein Fehler welcher die 2. 64k mit den 
4. 64k vertauscht ( in einem anderen Beitrag wurde dieses Problem 
bereits festgestellt )
Somit wird der Bootloader welcher auf 3E000 sein sollte auf 1E000 
gebrannt.

Mfg
michael

von Jim M. (turboj)


Lesenswert?

Welche Version hat Dein Avrdude? Hast Du mal eine neuere Version 
probiert?

von michi099 (Gast)


Lesenswert?

Hallo,

zuerst möchte ich mich für deine Antwort bedanken und mich für die sehr 
späte Antwort entschuldigen.

Die verwendete Version von AVRDude war 5.11, diese war und ist noch 
immer die neueste über die Paketquellen von Linux Mint.

Eine neuere Versionen kann ich nicht installieren, beim ./configure von 
Version 6.01 und 6.1 
(http://download.savannah.gnu.org/releases/avrdude/) bekomme ich jene 
Ausgabe:

Configuration summary:
----------------------
DON'T HAVE libelf
DO HAVE    libusb
DO HAVE    libusb_1_0
DON'T HAVE libftdi1
DON'T HAVE libftdi
DON'T HAVE libhid
DO HAVE    pthread
DISABLED   doc
ENABLED    parport
DISABLED   linuxgpio

libftdi1 ist jedoch installiert, libelf und libhid sind nicht als Paket 
vorhanden:

sudo apt-get install libftdi1
Reading package lists... Done
Building dependency tree
Reading state information... Done
libftdi1 is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.


sudo apt-get install libelf
Reading package lists... Done
Building dependency tree
Reading state information... Done
Package libelf is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

E: Package 'libelf' has no installation candidate


sudo apt-get install libelf1
Reading package lists... Done
Building dependency tree
Reading state information... Done
libelf1 is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.


sudo apt-get install libhid
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package libhid


Für weiter Versuche beziehungsweise Schlussfolgerungen fehlt mir leider 
das Wissen.

Mfg & nochmals bitte um Entschuldigung für die späte Rückmeldung
michael

von Dirk K. (dekoepi)


Lesenswert?

Die nötigen Header-Dateien sind üblicherweise in den -dev-Paketen. Also 
libelf-dev ...

von michi099 (Gast)


Lesenswert?

Hallo Dirk,

vielen Dank für den Tipp, es macht ja doch alles Sinn ;)

Nur leider finde ich libhid nicht in den Repos, bei libftdi1 fehlt (bei 
mir am PC) wahrscheinlich auch die Developer-Version, jedoch ist diese 
nicht (in den Repos) vorhanden.
Downloads habe ich auf die schnelle nun noch keine gefunden.

Besten Dank trotzdem!

Mfg
michael

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.