Sida 1 av 1

MPLAB Linker: Corrupt Coff-file

Postat: 28 oktober 2010, 15:25:47
av JimmyAndersson
(MPLAB, Assembler, PIC18F1320.)

Jag har tagit upp ett gammalt projekt som jag tänkte göra klart.
Rensade bort lite dåligt skrivna rutiner och började om.
Fram till hit så "byggdes" (Build) koden utan fel.
Men efter att ha satt upp en timer så skulle jag testköra det mot oscilloskopet.
Valde som vanligt "Build All" och fick då:

"Clean: Deleting intermediary and output files.
Clean: Deleted file "G:\PIC\ASM\PIC18LF1320\UV-box\uvbox.o".
Clean: Deleted file "G:\PIC\ASM\PIC18LF1320\UV-box\uvbox.lst".
Clean: Done.
Executing: "D:\Program\Microchip\MPASM Suite\MPAsmWin.exe" /q /p18F1320 "uvbox.asm" /l"uvbox.lst" /e"uvbox.err" /o"uvbox.o" /c-
Executing: "D:\Program\Microchip\MPASM Suite\MPLink.exe" /l"D:\Program\Microchip\MCC18\lib" "D:\Program\Microchip\MPASM Suite\LKR\18f1320.lkr" "G:\PIC\ASM\PIC18LF1320\UV-box\uvbox.o" /o"UV-box.cof" /M"UV-box.map" /W
MPLINK 4.11, Linker
Copyright (c) 2007 Microchip Technology Inc.
Error - Coff file 'UV-box.cof' symbol[45] has an invalid n_scnum.
Error - Internal Coff output file is corrupt.
Errors : 2

Link step failed.
BUILD FAILED: Thu Oct 28 15:24:49 2010"



Jag har sökt på "Internal Coff output file is corrupt." men har inte hittat något konkret om vad detta beror på.

I mappen för detta MPLAB-projekt finns:

Kod: Markera allt

2010-10-27  14:53  mpmb_2.mmt       1409067 
2010-10-28  15:14  UV-box.map          2564 
2009-05-27  01:03  UV-box.mcp           820 
2010-10-28  14:19  UV-box.mcw         84480 
2009-08-15  00:00  UV-box.mptags       3557 
2009-08-15  00:00  UV-box.tagsrc         41 
2010-10-28  15:03  uvbox.asm           8583 
2010-10-28  15:14  uvbox.err              0 
2010-10-28  15:14  uvbox.lst          43943 
2010-10-28  15:14  uvbox.o             4564 
Dvs ingen fil som heter "UV-box.cof".
I en äldre backup-mapp för projektet finns en fil med det namnet.
Jag testade att kopiera in den i projekt-mappen, men fick samma felmeddelande.
När jag tittar på filen med NotePad++ (text/kod-editor) så ser jag mest en massa "NUL".


Så vad beror felet på och hur löser man det?

Re: MPLAB Linker: Corrupt Coff-file

Postat: 28 oktober 2010, 15:43:37
av sodjan
cof filen är en temporär fil under "build".
Du skulle kunna testa och rensa bort alla andra filer
som skapas vid en build och köra en hel "clean build".
Alltså i alla fall .o, .lst, .err, .mptags, .tagsrc och .map.

Annars vet jag inte, det där är nog ett fel som man inte ska få... :-)

Re: MPLAB Linker: Corrupt Coff-file

Postat: 28 oktober 2010, 16:59:17
av JimmyAndersson
Jo jag brukar vara rena magneten för udda fel.. :D


Nu har jag provat att ta bort filerna du nämnde, men det blev samma fel ändå.
Testade då att göra ett helt nytt Project (kopierade bara .asm-filen), men ingen skillnad.

Nu provade jag att rensa bort allt förutom CONFIG-bitarna i koden (asm-filen) och *då* fick jag inte felet.
Intressant... Jag ska "kommentera bort" olika delar för att hitta var det går fel.


edit: Det gick fort att hitta.

Detta ger fel:

Kod: Markera allt

isr_vars		UDATA_ACS
;tid_sek			RES 1
;blipp_sek		RES 1	

isr_rutin		CODE

isr_rutin

Men om jag plockar bort ";" så försvinner felet. Samma sak om jag tar bort de två raderna med ";"

Variablerna/Symbolerna förekommer inte längre någonstans i koden och skulle plockas bort.
Det var därför som jag satte ";" under tiden som jag gick igenom koden.

Jag vet inte riktigt varför felet uppkommer, men jag antar att linkern
förväntar sig att hitta rätt data under "isr_vars UDATA_ACS".