www.mikrocontroller.net

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


Autor: Jochen (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.