Nicht verwendete Rücksprünge?

Gast #2062464
Lesenswert?
• ▲
▼
Habe da noch eine kleine Frage.

Wieder außerhalb meines Blog’s (ich glaube da liest nicht wirklich 
jemand). Mein BootLoader läuft und auch die PC-Software habe ich 
geschrieben (war auch nicht einfach), nun aber meine Frage:

Es könnte passieren dass mein Hauptprogramm bei 0x000 vom Bottloader 
aufgerufen wird. Dadurch kann es vorkommen dass wohl noch 
Rücksprungadressen auf dem Stack liegen. Wie kann ich sichergehen das 
beim Starten des Hauptprogramms der µC jungfräulich ist. Reicht da das 
Initialisieren der Stack’s?

Also ich rufe ein Unterprogramm mit rcall auf. In diesem kann es 
vorkommen das die Routine aber mit

breq  HauptStart

und in

HauptStart:
    rjmp 0x0000

nie wieder zu seinem rcall zurück kommt.

Klar mach ich im Hauptprogramm in 0x000 ein

    ldi Dummy1, high(RAMEND)
    out SPH,Dummy1
    ldi Dummy1, low(RAMEND)
    out SPL,Dummy1

reicht das????
Gast #2062684
Lesenswert?
• ▲
▼
Kann es sein das die UART bei der Neuinstallation nicht mehr richtig 
arbeitet?

1
; ***********************************************************************
2
; * Baudrate einstellen                                                 *
3
; ***********************************************************************
4
ldi Dummy1, HIGH(UBRR_VAL)
5
sts UBRR0H, Dummy1
6
ldi Dummy1, LOW(UBRR_VAL)
7
sts UBRR0L, Dummy1
8

9
; ***********************************************************************
10
; * RS232 Frame-Format: 8 Bit                                           *
11
; *********************************************************************** 
12
ldi Dummy1, (1<<RXEN0)|(1<<TXEN0) ; TX aktivieren, RX aktivieren 
13
sts UCSR0B, Dummy1
14
ldi Dummy1, (1<<USBS0)|(1<<UCSZ01)|(1<<UCSZ00) ; 8 Bit Daten kein Paraty, 1 Stopbit
15
sts UCSR0C, Dummy1 
16

17
cli ;Alle Interrups aus

So Installiere ich die UART nach dem ich sie genau so im BootLoader 
konfiguriert habe.

Also im BootLoader mach ich das ganz genau so. Springe vom BootLoader 
ins Hauptprogramm 0x000 und mach das noch mal.

Aber die Ausgabe will nicht mehr so wie sie soll. :-(
Gast #2065950
Lesenswert?
• ▲
▼
Moin,

nur so eine kurze Vermutung (und je nach µC vielleicht auch 
unterschiedlich): Kann es sein, dass du TXEN und RXEN erst löschen musst 
bevor du die Einstellungen änderst? Ich könnte mir durchaus vorstellen 
das er damit Probleme hat.
Andere Geschichte wäre der Interrupt-Vektor. Wird der korrekt in den 
Application Space zurück gebogen falls du ihn im Bootloader benutzt?


Gruß,
Tobi

Antwort schreiben

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.

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.