Ich versuche einen Assembler Code zu Linken aber er gibt mir immer eine blöde Fehlermeldung weiß jemand was das ist? Error[e16]: Segment INTVEC (size: 0x20 align: 0x1) is too long for segment definition. At least 0x2 more bytes needed. The problem occurred while processing the segment placement command "-Z(CODE)INTVEC=FFE0-FFFF", where at the moment of placement the available memory ranges were "ffe0-fffd" Reserved ranges relevant to this placement: 0000FFFE - 0000FFFF Absolute code from fet140_1
Ich kenne den Linker nicht, aber das hört sich so an als würde etwas mit den Interruptvektoren nicht stimmen. Um welches Programm geht's denn? Wahrscheinlich ist es für einen Prozessor geschrieben der mehr Interruptvektoren hat als der für den du es linken willst.
Schiki, wann tritt das Problem auf GCC, IAR-C, IAR-asm oder mix ? (ich unterstell einfach mal Kickstart) Bernhard
Ich habe das IAR-Kickstart. Wenn ich die Interrupt vektoren auskoommentiere kommt eine fehlermeldung das ihm das main fehlt. Das Programm ist eine Ansteuerung eines transceivers über I2C ich habe nur den Reset Interrupt drinnen. MSP430f149 Reset ... . . . ORG 0FFFE DB Reset
Probier doch mal das: nimm ein Beispiel ASM-Projekt ( nicht Neues Projekt ..! ), schmeiß die Asm Files raus und binde deine Files dafür ein. Bei mir hat es funktionier ( Ich hab' vorher wirklich tausend Schalter ausprobiert > immer die gleiche Fehlermeldung ). Würde mich aber auch interessieren woran es liegt.
Diese Fehlermeldung bekommt man wenn der Code zu gross ist; deshalb steht das "is too long". Mit der Vollversion bekommt man den Fehler wenn der Code rund 180 kB überschreitet und bei der Kickstart-Version wesentlich früher.
Das gibt es nicht da er diese Meldung schon bei 5 Zeilen Assembler ausgibt.
Ich vermute mal das INTVEC das Segment mit den Interrupt-Vektoren ist und soweit ich weiss muss da immer etwas stehen (notfalls die Defaults vom Compiler).
Hallo Schicki, könnte es vielleicht daran liegen: ich glaube der Linker (XLINK) unterstellt immer das du in C programmierst daher bindet er auch bei Asm-Projekten die INVEC für C ein (default).Du kannst eine kleine Datei mit einem Editor schreiben,der die folgende Zeilen beinhalten sollte: // Define CPU -cMSP430 // Allocate the interupt vector table segment INTVEC. -Z(CODE)INTVEC=FE0-FFFF Das hinter den // sind natürlich nur Kommentare. Diese Datei solltest du mit der Endung .XCL (Bsp.: Neu.xcl) idealerweise in dein Projektverzeichnis kopieren. Um diese File in dein Projekt zu Übernehmen musst du im Projektfenster: Debug markieren, (rechte Maustaste) Optionen, unter Category XLINK , Karteikasten Include, den Schalter file name override default setzen und deine XCL Datei auswählen. Wahrscheinlich könntest du auch die Standard .XCL entsprechen ändern wenn du ständig ASM programmieren willst. @nobody0 du solltest auch mal einen Blick in die Projekt *.XCL werfen und entsprechende Doc's (bevor du die Software von deiner Firma verramschst).
@Bernhard T: Zum Projekt gibt es keine *.xcl; es gibt nur eine zum MC und dadrin steht doch der Z(CODE) für die Interrupt-Vektoren, die doch über die Projekt-Optionen automatisch verwendet werden (aus dem entsprechenden *.xcl-File).Und die Doc's sind veraltet; beispielsweise gibt es die dort beschriebenen Versionen für HP-UX, AIX usw. nicht mehr und das man regelmässig die Temporärdateien löschen muss um keine Compiler-Fehler zu bekommen steht auch nicht drin. Und was meinst Du mit verramschen? Wieviel kann man denn für einen MSP430 IAR Embedded Workbench (mit Dongle, Updates, Handbüchern usw.) verlangen?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.