Forum: Mikrocontroller und Digitale Elektronik MSP430 mspgcc olimex MSP Programmer Offset/Calibration Data


von Texi (Gast)


Lesenswert?

Hallo Zusammen,

folgendes Problem:

Ich hab hier einen MSP430 mit Olimex USB Programmieradapter. Wenn ich 
jetzt in IAR ein Projekt erstelle, den Code schreibe, alles wunderbar 
usw. und dann meinen MSP Programmiere funktioniert alles perfekt.

Das selbe Programm (natürlich mit Anpassungen an den Compiler) mit dem 
mspgcc compiled und mit "Olimex MSP430 Programmer"-Programm geflasht 
funktioniert nixmehr. Grund:

Ich verwende den internen DCO. Der hat Kalibrierungskonstanten im Flash 
stehen (Information Memory: 0x1000 - 0x10FF). Wenn ich mit dem "Olimex 
MSP430 Programmer" flashe wird dieser bereich überschrieben. Beim IAR 
ists nicht so. Gibts irgendwie die möglichkeit da einen Offset 
einzustellen? (In der Hilfe finde ich nix). Oder muss ich da vorher dem 
Compiler schon bestimmte Dinge mitgeben?

Vielen Dank schonmal

Mfg

von Arno H. (arno_h)


Lesenswert?

Elprotronic hat eine Programmiersoftware, die auch mit dem TI-Programmer 
funktioniert. Der Olimex kann den TI simulieren. Probier mal die 
Freewareversion:
http://www.elprotronic.com/files/FET-Pro430-Lite-Setup.zip
Bei dieser weiss ichs nicht, aber unsere Vollversion kann auch über BSL 
den DCO neu kalibrieren, falls er gelöscht wurde.
Eventuell musst du eine andere Dll benutzen.

Arno

von Texi (Gast)


Lesenswert?

Nene, kalibriert ist er schon (wieder). Es geht nur darum, das wenn ich 
mein mit msp430gcc erstelltes hex-file flashen will ich den "Olimex 
MSP430 Programmer" verwende. Und der löscht den  kompletten Flash und 
schriebt dann aber nur mein Programm in den Flashspeicher. Wenn ich die 
selbe Geschichte mit IAR mache dann bleibt die Kalibrierung erhalten 
(bzw. wird nicht gelöscht [weiss ich nicht sicher was von beiden]).

Also entweder Flashe ich die Kalibrierung immer mit (dann müsste ich 
aber mein Hexfile per Hand bearbeiten und die entsprechenden Adressen + 
Daten dazuschreiben oder er löscht einfach garnicht erst die 
Kalibrierung.

Geht das überhaupt, das Flash nur Teilweise zu löschen? Oder löscht er 
immer das ganze Flash? Bei USB-Sticks gibts ja diverse Blöcke die dann 
gelöcsht und wieder beschrieben werdne. Wie das beim MSP ist weiss ich 
aber nicht. Evtl. ist da das ganze Flash als ein Block zu sehen, dann 
müsste ich aber immer die Kalibrierung wieder mitschreiben und dann 
vermute ich, das dass das IAR automatisch macht.

Mfg

von Arno H. (arno_h)


Lesenswert?

Genau das selektive Löschen kannst du mit der elprotronic-SW machen.
Du kannst dir ja mal die Anleitung runterladen und anschauen:
http://www.elprotronic.com/files/Manual-FET-Pro430.pdf
Fürs Hobby wird sich die Anschaffung der Hardware nicht lohnen, aber 
wenn viele MCU zu programmieren sind, hat sich der echt schnelle und 
vielseitige Programmer in kurzer Zeit amortisiert.

Arno

von Texi (Gast)


Lesenswert?

Schade unterstüzt leider den Olimex Adapter nicht in der free-version :/

Jemand noch eine andere Idee?

von Christian R. (supachris)


Lesenswert?

Du kannst doch beim Olimex Programmer auch einstellen, dass er nur den 
Program Flash und nicht den Info Flash (heißt da Data) löschen soll. Und 
eine Eingabemöglichkeit für Calibration Data gibts auch noch, was genau 
die macht, weiß ich aber nicht. 0x1000 ist doch das Info-Mem, das bleibt 
erhalten, wenn du nur den Program Flash löschst.

von Texi (Gast)


Lesenswert?

Ja so sollte es wohl sein. Ist aber leider nicht so, er löscht trotzdem 
das ganze Flash.

Ich hab jetzt allerdings eine Möglichkeit gefunden:

Im Instatllationsordner von Olimex gibts eine "mspprog-cli-v2.exe" und 
mit der funktioniert das wunderbar:

mspprog-cli-v2.exe /p=USB /d=MSP430<device> /li /e /f=hexfile.hex /w 
/post=hr

Ne hilfe gibts mit mspprog-cli-v2.exe /h:
1
=============================================================================
2
================================ O L I M E X ================================
3
=============================================================================
4
5
Usage:
6
    mspprog-cli-v2 [ARGUMENTS]
7
8
Arguments:
9
   /p=<PORT>            JTAG probe port (LPT1, LPT2, USB)
10
   /d=<DEVICE>          Device name (e.g. MSP430F1211)
11
   /f=<FILE>            File to read/write to/from (*.hex, *.txt)
12
   /rc                  Read Code Memory and store to file
13
   /ri                  Read Information Memory and store to file
14
   /e                   Erase memories
15
   /w                   Read file, erase and write to memories
16
   /v                   Verify file write operation
17
   /ei                  Erase Information Memory with Code Memory write/erase
18
   /bc                  Check whether Code Memory is blank
19
   /bi                  Check whether Information Memory is blank
20
   /li                  Prevent locked Information Memory erase/writes
21
   /post=<s|h|v>[r]     Actions to perform after programming (defaults to "s"):
22
                           s - Soft (PUC) reset
23
                           h - Hardware reset using the RST/NMI pin
24
                           v - Use VCC to power cycle device
25
                           r - Let the device run after reset
26
   /s                   Use SpiBiWire
27
   /blowjtag            Blow JTAG fuse (FUSE IS NOT REVERSIBLE)
28
   /l                   Display list of supported devices
29
   /h                   Display this brief help
30
31
=============================================================================

Vielen Dank trotzdem an alle.

von Christian R. (supachris)


Lesenswert?

Dann schreib doch den Bug mal an Olimex, der Support antwortet schnell. 
Da können sie das in der nächsten Version beheben.

von Heino (Gast)


Lesenswert?

> ================================ O L I M E X ================================
> ======================================================================== =====
>
> Usage:
>     mspprog-cli-v2 [ARGUMENTS]
>
> Arguments:
>    /w                   Read file, erase and write to memories
>    /v                   Verify file write operation
>    /ei                  Erase Information Memory with Code Memory write/erase

Gibt es einen Befehl, ähnlich wie:
/v                   Verify file write operation
der aber auch den "Information Memory" mit vergleicht?
Dieser Befehl scheint nur den "Code Memory" zu vergleichen.

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