Forum: Mikrocontroller und Digitale Elektronik SD/MMC Bootloader von Stefan Seegel


von Jochen (Gast)


Lesenswert?

Hallo,

es geht um den Bootloader von diesem Thread:
Beitrag "MMC/SD Bootloader füt ATMega16"
Ich wollte nicht in diesem Thread rum schreiben, weil es dort wohl mehr 
um die Weiterentwicklung des Projektes geht.

Als erstes: Super Projekt! Am meisten begeistert mich, dass meine 
Hardware ohne Probleme funktioniert.

Das ganze soll auf einem ATMega128 laufen. Deshalb habe ich das orginal 
ZIP-File genommen und mit dem ZIP-File von Stefan(04.05.2007 22:29) 
einige Dateien überschrieben.

Danach habe ich folgende Anpassungen vorgenommen:
makefile.mak:
 MCU = atmega128
 F_CPU = 7372800
 FORMAT = ihex
 DEVID = 0x12345678
 TARGET = bootloader
 BOOTLOADERSTARTADR = 0x1F000
 BOOTLDRSIZE = 0x1000

Ich habe den CS Pin auf PB4 also hab ich in der
main.c:
 DDRB |= 1<<PB0;
 PORTB |= 1<<PB0;

mmc_lib.h:
 #define SPI_MISO  PB3  //DataOut of MMC
 #define SPI_MOSI  PB2  //DataIn of  MMC
 #define SPI_CLK    PB1  //Clock of MMC
 #define MMC_CS  PB4  //ChipSelect of MMC

Als nächstes habe ich in der Eingabeaufforderung:
make clean --makefile=makefile.mak
make all --makefile=makefile.mak


Das Hex-File auf den Mega geschrieben und Fuses gesetzt:
Bei PonyProg sind bei den folgenden Bits Haken:
SPIEN BOOTSZ1 BOOTSZ0 BOOTRST
SUT1 SUT0


Als nächstes kommen wir zu SampleApp:
Dort habe ich folgendes geändert:
makefile.mak:
 MCU=atmega128
 F_CPU = 7372800
 FORMAT = binary
 DEVID = 0x12345678
 SWVERSIONMAJOR = 1
 SWVERSIONMINOR = 1
 BOOTLDRSIZE = 0x1000
 BOOTLDRINFOSTART = 0x01EFF8

make clean --makefile=makefile.mak
make  --makefile=makefile.mak

crcgen sampleapp-1.1.hex

Als letztes habe ich die Datei auf die Karte kopiert.

---

Es funktioniert auch. Wie schon gesagt bin ich schwer beeindruckt, 
vorallem, weil das mein erstes Hardware Projekt ist.
Das Problem ist nur:
Es funktioniert anscheinend nur 1x!
Sobald der Bootloader ein Programm von der MMC-Karte geladen hat, 
springt er bei keinem Reset mehr in den Bootloader.
Ich dachte mir erst, ok vielleicht hast du BOOTRST falsch gesetzt und 
das Bit muss weg. Aber das ändert auch nichts.
Deshalb die Fragen:
Ist das so beabsichtigt?
Wenn ja: Wie komme ich dann in den Bootloader um eine neue Version 
aufzuspielen?
Wenn nein: Was muss ich ändern, damit es funktioniert?

Und als Bonus: Muss ich irgendwas beachten, wenn ich später im 
Hauptprogramm auf die SD/MMC-Karte zugreifen will? Schliesslich hat der 
BL sie schon initalisiert. Oder macht der das nichts aus?

Ich hoffe, dass ich alles nötige geschrieben habe und dass ihr mir bei 
meinem Problem helfen könnt.

Danke,
Jochen

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.