Forum: Mikrocontroller und Digitale Elektronik MSP430, CCS, custom BSL, interrupt vectors


von Tic T. (dingsdk)


Lesenswert?

Hallo,

ich bin gerade dabei mir einen eigenen boot strap loader zu schreiben.
(Also den Programmteil im BSL Flashbereich der zu einem Reset ausgeführt 
wird und dann entweder Code in den Programm Flashbereich flashen kann 
oder eben das eigentliche Programm ausführt zu welchem die Adresse im 
Interruptvektor weist.)

Das Problem was ich habe ist, dass TI's IDE CCS automatisch die Sections 
der Interruptvektoren beschreibt. Und zwar im Reset-IntVec die Adresse 
zu _c_int00 (was die c init des BSL ist welche ich selbst schon 
anspringe wenn der PC zum Reset mit 0 startet und nicht die des 
eigentlichen Programms).
In die anderen Intvektoren wird die Adresse zur Trap-Funktion 
_TI_ISR_TRAP geschrieben.

Meine Frage ist nun wie ich CCS davon abhalte diese Intvektoren zu 
initialisieren und wo an welcher Stelle dies überhaupt passiert?

Im Linkerscript gebe ich die sections nur bekannt. Lasse ich das, 
bekomme ich die Warning, dass die section .reset nicht bekannt ist und 
der Reset-Intvektor wird mit 0 beschrieben was ebenfalls nicht sein 
soll.

Überprüft was in den Intvektoren steht habe ich mittels anhand des 
hex-files. Was ich will ist, dass hier lediglich die section des 
BSL-Flachbereichs vorhanden ist.

Grüße
dings

von Wolfgang V. (wolfgang_v781)


Lesenswert?

Hallo dings,
was stört dich daran, dass in den anderen Int-Vectoren die Adresse zur 
Trap-Funktion _TI_ISR_TRAP steht? Das ist so richtig und eine 
Vorsichtsmaßnahme, falls man versehentlich einen Interrupt aktiviert, zu 
dem es keine Interruptroutine gibt. Dann wird _TI_ISR_TRAP angesprungen 
und legt den Prozessor schlafen. Das sollte Deinen BSL nicht stören, 
denn wenn Du keine anderen Interrrupts aktivert hast, werden diese 
Adressen auch nicht angesprungen. Wenn Du im Programm andere Interrupts 
aktivierst, stehen dort die Adressen der entsprechenden 
Interruptroutinen, das soll so sein und ist so auch richtig.

Gruß wv

von Tic T. (dingsdk)


Lesenswert?

Die Interruptvektoren werden beschrieben wenn, nach dem der BSL geflasht 
wurde, das eigentliche Programm geflasht wird. ...wirklich stören tut es 
also nicht, da diese dann sowieso überschrieben werden.
Ich könnte dann jedoch nicht den BSL flashen wenn schon ein Programm 
drauf ist.

Ich würde jedoch trotzdem gerne wissen wie man (oder ob man) das 
Konfigurieren kann keine Vektoren automatisch zu beschreiben.

(Also der Resetvektor wird jedenfalls, wie ich mittlerweile 
herausgefunden habe, in der Datei 
ccs1210/ccs/tools/compiler/ti-cgt-msp430_21.6.1.LTS/lib/src/boot.c 
initialisiert.
Wollte ich das selbst tun, geht das dann nicht.)

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.