From: Olgierd E. <ol...@te...> - 2006-03-06 23:41:54
|
Hi, I'm trying to locate some routines at the end of the memory for bootloader purposes but even I want 2 or 3 rutines at the end, I don't want all the code at the end and that's what happens when I try to do it: main code: ---------------------------- void rutine_ini(); void rutine(); void setup(); // Main application function for Transmittion // should be at the begining void main() { rutine_ini(); setup(); } // should be at the begining void rutine(){ // apagamos PORTHbits.RH6=0; PORTHbits.RH7=0; PORTAbits.RA1=0; //esperamos delay1ktcy(100); // encendemos PORTAbits.RA1=1; PORTHbits.RH7=1; PORTHbits.RH6=1; // esperamos delay1ktcy(100); } // should be at the END #pragma code setup 0x1F000 void setup(){ rutine(); } ----------- Another stupid routine in another file for test if different objects solve the problem ----------------------------------- #include <pic18f8722.h> #include <delay.h> void rutine_ini(){ // apagamos PORTHbits.RH6=0; PORTHbits.RH7=0; PORTAbits.RA1=0; //esperamos delay1ktcy(100); // encendemos PORTAbits.RA1=1; PORTHbits.RH7=1; PORTHbits.RH6=1; // esperamos delay1ktcy(100); } ----------------------------------------- Makefile ---------------------------------------- INCLUDE=-I/usr/local/share/sdcc/include/pic16/ LIB=/usr/local/share/sdcc/lib/pic16/ LIBS=libc18f.lib libio18f8722.lib libm18f.lib libsdcc.lib pic18f8722.lib PROCESSOR_FLAG=-mpic16 -p18f8722 --model-large --pstack-model=large CC=sdcc AS=gpasm OBJS=code_position.o other_code.o HEX_FILE=code_position.hex .c.o: sdcc $(INCLUDE) -c -V --verbose $(PROCESSOR_FLAG) $< gpasm -c $*.asm main.hex: $(OBJS) gplink -I $(LIB) -m -s /home/ogi/uvc/dev/sdcc/sismo_2.0/tests/18f8722.lkr -o $(HEX_FILE) $(OBJS) $(LIBS) clean: rm -f *.o *.asm *.lst *.com *.hex *~ ----------------------------------------- SDCC version (I added a library for the 18F8722 and I'm testing it now) ----------------------------- sdcc --version SDCC : mcs51/gbz80/z80/avr/ds390/pic16/pic14/TININative/xa51/ds400/hc08 2.5.4 #1199 (Feb 28 2006) (UNIX) All seems to be good but when I check the map I see : ---------------------------- Map File ------------------ Section Info Section Type Address Location Size(Bytes) --------- --------- --------- --------- --------- S_code_position__setup code 00000000 program 0x00001e .code code 0x01f000 program 0x00003e S_code_position__rutine code 0x01f03e program 0x000032 S_other_code__rutine_ini code 0x01f070 program 0x000032 S_code_position__main code 0x01f0a2 program 0x00000a .config code 0x300000 program 0x00000e -------------------- Hex file ------------------ :020000040000FA :10000000DACFE5FFD9CFE5FFE1CFD9FFE2CFDAFFC5 :0E0010001FECF8F0E4CFDAFFE4CFD9FF1200C6 :020000040001F9 *********** Look above ******** :10F00000E806E56E630E13ECF8F0E4500BE000D078 :10F01000E56E630E13ECF8F000D000D00000E45071 :10F02000E82EF6D71200E8060000E85007E000D00E :10F0300000D000D000D00000E82EFAD71200DACFBE :10F04000E5FFD9CFE5FFE1CFD9FFE2CFDAFF879C1B :10F05000879E8092640E00ECF8F08082878E878C09 :10F06000640E00ECF8F0E4CFDAFFE4CFD9FF120031 :10F07000DACFE5FFD9CFE5FFE1CFD9FFE2CFDAFF65 :10F08000879C879E8092640E00ECF8F08082878EC9 :10F09000878C640E00ECF8F0E4CFDAFFE4CFD9FF00 :0CF0A000120038ECF8F000EC00F0120058 :020000040030CA :0E000000FF35E0F48FFB8AFFFFFFFFFFFFFFDD :00000001FF ------------------- As you can see, the only routine at the beginning of the code space is the one I want at the end !!! and all the rest are at the end. Does some friendly and experienced body can give a hand or insight ? Thanks a lot, SDCC is a great Compiler !! Olgierd Eysymontt |