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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.