Relocatable mode, Linker error, Symbol is not word-aligned.
Postat: 17 november 2008, 21:43:08
Tjenare!
Har börjat skriva på ett litet proram som ska vara till en PIC18F1230, som ska använda en lcd och använda mig av ADC för att läsa av värdet på en pinne. Nåja har börjat koda men har stött på ett problem. När koden blir någorlunda lång får jag följande problem från linkern.
Linker scriptet jag har inkluderat heter 18f1230_g, kanske kan va bra att veta. Så här ser koden ut.
Om jag t.ex tar bort delayrutinen för 5ms och bara har kvar den för 100us så går det bra. Så det verkar som att linkern får svårt att få plats med allt i minnet eller något
.
Vad beror det här på och hur löser jag det?
Har börjat skriva på ett litet proram som ska vara till en PIC18F1230, som ska använda en lcd och använda mig av ADC för att läsa av värdet på en pinne. Nåja har börjat koda men har stött på ett problem. När koden blir någorlunda lång får jag följande problem från linkern.
Kod: Markera allt
MPLINK 4.20, Linker
Copyright (c) 2008 Microchip Technology Inc.
Error - file './an.o', section 'DLY_C', Symbol '_DLY_C_001E' is not word-aligned.
It can not be used as the target of a call or goto instruction.
Errors : 1
Kod: Markera allt
list p=18f1230 ; list directive to define processor
#include <p18f1230.inc> ; processor specific variable definitions
#define LCD_E PORTA, 6
#define LCD_RS PORTA, 7
#define LCD_PORT PORTB ;Port b 4-7
#define LED PORTB, 2 ;Whateva
RESET_VECTOR CODE 0x0000
goto Main ;go to start of main code
HI_INT_VECTOR CODE 0x0008
bra HighInt ;go to high priority interrupt routine
;******************************************************************************
;High priority interrupt routine
; The high priority interrupt code is placed here.
CODE
HighInt:
; *** high priority interrupt code goes here ***
retfie FAST
;******************************************************************************
;Start of main program
; The main program code is placed here.
MAIN CODE
main
loop
goto loop
; *** main code goes here ***
;***************Delay variabler
DLY_V UDATA_ACS
d1 RES 1
d2 RES 1
d3 RES 1
;
;***********Delay code
DLY_C CODE
;
delay_5ms
movlw 0xE7
movwf d1
movlw 0x04
movwf d2
Delay_5ms_0
decfsz d1, f
goto $+2
decfsz d2, f
goto Delay_5ms_0
goto $+1
return
delay_100us
movlw 0x21
movwf d1
Delay_100us_0
decfsz d1, f
goto Delay_100us_0
return
;******************************************************************************
;End of program
END
Om jag t.ex tar bort delayrutinen för 5ms och bara har kvar den för 100us så går det bra. Så det verkar som att linkern får svårt att få plats med allt i minnet eller något

Vad beror det här på och hur löser jag det?