mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MSP430 TelosB Unknown header 0x00


Autor: Florian (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich bin noch recht neu in der Mikrocontroller-Programmierung und 
bräuchte ein wenig Hilfe mit einem Problem, das ich absolut nicht 
einordnen kann:

Ich arbeite mit einem TelosB, auf dem ein MSP430F1611 verbaut ist, und 
dem MSPGCC. Zum Flashen meiner Programme verwende ich tos-bsl (eine 
Abwandlung des msp430-bsl Bootstrap Loaders für TelosB Motes aus der 
TinyOS-Toolchain).

Als ich ein UART-Testprogramm (von mathar.com, s. Anhang), dessen 
Interruptroutinen ich auf den MSPGCC angepasst habe, ausprobieren 
wollte, erhielt ich folgende Ausgabe:

<snip>

D:\Code\ITM\telosb\InterruptTest>make
msp430-gcc -Os -mmcu=msp430x1611 -c InterruptTest.c -o InterruptTest.elf
msp430-objcopy -O ihex InterruptTest.elf InterruptTest.ihex
tos-bsl --telosb -c 5 -r -e -I -p InterruptTest.ihex
MSP430 Bootstrap Loader Version: 1.39-telos-8
Mass Erase...
Transmit default password ...
Invoking BSL...
Transmit default password ...
Current bootstrap loader version: 1.61 (Device ID: f16c)
Changing baudrate to 38400 ...
Program ...

An error occoured:
Unknown header 0x00
Are you downloading to RAM into an old device that requires the patch? 
Try optio
n -U
make: *** [InterruptTest.ihex] Error 1

</snip>

Das Auftauchen dieses Problems ist scheinbar willkürlich, denn für 
unterschiedliche mit dem MSPGCC kompilierbare (!) Programme tritt der 
Fehler manchmal auf und manchmal nicht. Wichtig hierbei ist, dass der 
Fehler reproduzierbar bleibt, sich ein und dasselbe Programm also 
entweder immer flashen lässt oder aber nie.
Es gab auch den Fall, dass sich ein Programm flashen ließ, in dem die 
Anweisung P1DIR |= 0x01; vorkam. Verdoppelte man diese Anweisung jedoch 
(führte also einen syntaktischen, aber keinen semantischen Unterschied 
herbei), ließ sich das Programm nicht mehr flashen und hatte wieder den 
o.g. Fehler zur Folge.

Mir fehlt wirklich jeglicher Ansatz, um dem Ursprung des Problems auf 
die Schliche zu kommen. Hoffentlich seid ihr da kreativer.

Vielen Dank für Eure Ideen!

Beste Grüße,
Florian

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also da sind mehrere Fehler im Quelltext, du müsstest mindestens eine 
Warnung bekommen. Was passiert wohl, nachdem der 1. Interrupt 
eingetreten ist? Rrrungs, und der µC landet im Nirvana. Desweiteren hast 
du eventuell RX-Int und TX-Int verwechselt, geht aus den Kommentaren 
nicht eindeutig hervor. Und die Meldung, dass er versucht 38400 Baud zu 
machen, heißt nix gutes. Ich hab das nie hinbekommen, geht nur mit 9600. 
Irgendwie scheints da Inkompatibilitäten zu geben.

Autor: Florian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Christian,

wie gesagt habe ich den Quelltext nur kopiert, um mal auszuprobieren, 
wie die Kommunikation per Terminal und UART überhaupt abläuft. Warnungen 
gibt der MSPGCC nicht aus, das Programm wird fehlerlos übersetzt.

Mein Problem ist wie beschrieben (noch) nicht die Programmierung, 
sondern das Flashen. Und: Da es Fälle gibt, in denen das Flashen 
problemlos funktioniert, würde ich mich wundern, wenn die Ursache die 
Baudrate wäre. Wie sollte das mit der geschilderten Fehlermeldung 
zusammenpassen?

Ich freue mich über jegliche weitere Gedanken zur Problematik!

Vielen Dank für die Mühe,
Florian

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht stimmt was mit dem Hex-File nicht? Der Header könnte da ja 
aus dem Hex-File sein. Nichts desto trotz wird dein Programm sowieso 
nicht funktionieren.

Autor: Wolfgang-G (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
lässt sich denn ein einfaches Programm, z.B. LED blinkt, problemlos 
laden?

Autor: Florian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Christian:
Ja, zumindest erwartet tos-bsl offenbar (manchmal) etwas anderes als 
das, was msp430-obj als ihex fabriziert. Derzeit bin ich auf der Suche 
nach ner Application Note o.ä., die beschreibt, wie das Programmformat 
aussehen muss, damit ich von Hand debuggen kann.

@Wolfgang-G:
Eine Blinkanwendung war das erste Programm, das ich ausprobiert habe. 
Das funktionierte anstandslos.

Autor: Florian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Vollständigkeit halber wollte ich nur mitteilen, dass das Problem 
gelöst wurde. Ursache für die Fehlermeldung war ein verkehrt 
geschriebenes Makefile, das eine fehlerhafte ihex-Datei erzeugt hat.

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.