Bootsektion Problem

Gast #2888758
Lesenswert?
• ▲
▼
Hallo zusammen,

ich versuche mich an einem Bootloader und habe ein Problem:
Mein simples LED-Blink Textprogramm läuft nicht mehr, wenn ich das 
Programm in den Bootbereich lege. Ich arbeite mit einem ATmega128 auf 
einem STK500 unter AVRStudio 4. Fuses: BOOTRST ist gecheckt, BOOTSZ 
steht auf 4096 words, addr. 0xF000.
Wenn ich nun unter Memory Settings .text nach 0xF000 mappe läufst nicht 
mehr.
Das map-file sagt mir folgendes:
...
Linker script and memory map
Address of section .data set to 0x800100
Address of section .text set to 0x1e000
…
Prima, 0x1E000 ist die byteaddresse zu 0xF000.

Was mache ich falsch? Muss ich Lockbits setzen? Muss ich die Interrupts 
verbiegen obwohl ich sie nicht nutze? Muss ich RAMPZ verwalten?
Bin für alle Ratschläge dankbar,
Gary
1
#include <avr/io.h>
2
#include <avr/boot.h>
3
#include <util/delay.h>
4

5
int main(void) 
6
{
7
  DDRB |= (1<<PB0)|(1<<PB1);
8
  PORTB |= (1<<PB0)|(1<<PB1); 
9

10
  for(;;) {  
11
    // blink
12
    _delay_ms(200);  
13
    PORTB |= (1<<PB1); 
14
    PORTB &= ~(1<<PB0); 
15

16
    _delay_ms(200);
17
    PORTB |= (1<<PB0); 
18
    PORTB &= ~(1<<PB1); 
19
  } 
20
     return 0;
21
}
(Firma: TravelRec.) Persönliche Seite #2888950
Lesenswert?
• ▲
▼
Drei von Vier schrieb:

> Und Interrupts sollte im bootblock auch keine haben.

Quatsch mit Soße. Dafür kann man die Interruptvektoren umsetzen. Da hier 
aber keine Interrupts verwendet werden, ist das irrelevant. Das Programm 
sollte hier sogar laufen, wenn weder BOOTRST noch BOOTSZ explizit 
gesetzt sind, da der Controller einfach durch den lleren Flash 
durchläuft und irgendwann zwangsläufig auf das Programm in der 
Bootsektion trifft und dieses dann auch ausführt.

Ich denke, dass es an den Delays liegt. Diese müssten natürlich mit 
dahin, wo auch der Rest des Codes ist. Sorry, bin kein C-Experte, aber 
einem ASM-Programm ist es unter den hier genannten Bedingungen egal, wo 
genau es im Flash liegt.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.