From: Michael M. <meh...@gm...> - 2011-09-04 21:31:35
|
Hello everyone, i am fun of pic microcontrollers and the project usbpicprog took my breath and i am looking deep into it. Because i had experience on the microchip usb stack, i put focus on the firmware part of the project (i.e. firmware-0.4.2), selectively the usbpicprog part of the firmware. As the project is made in piklab i tried building it but it was not successful. Here is the output i get *MPLINK 4.37, Linker * *Copyright (c) 1998-2010 Microchip Technology Inc. * *Error - section '.code_usb9.o' can not fit the section. Section '.code_usb9.o' length=0x000002e6 * *Errors : 1* after that i looked in to the map file successfully created before error occured and here is an excerpt from it * page 0x082a 0x7fff .cinit 0x082a 0x001a * * .code_prog.o 0x0844 0x5d6a* * .code_prog_lolvl.o 0x65ae 0x0dc6* * .code_upp.o 0x7374 0x0ada* * * it seems the object file prog.o from source code prog.c was very large (i.e. size 0x5d6a) and when the linker tried puting everything together, there was no space left in memory and it makes sence to understand the problem that way. For completness, here are comand line compiler and linker arguments * wine /home/michael/.wine/dosdevices/c:/MCC18/bin/mcc18 -I/home/michael/Desktop/firmware-0.4.2/ -I/home/michael/.wine/dosdevices/c:/MCC18/h/ -p 18f2550 -fo=main.o main.c wine /home/michael/.wine/dosdevices/c:/MCC18/bin/mcc18 -I/home/michael/Desktop/firmware-0.4.2/ -I/home/michael/.wine/dosdevices/c:/MCC18/h/ -p 18f2550 -fo=usbdsc.o usbdsc.c wine /home/michael/.wine/dosdevices/c:/MCC18/bin/mcc18 -I/home/michael/Desktop/firmware-0.4.2/ -I/home/michael/.wine/dosdevices/c:/MCC18/h/ -p 18f2550 -fo=interrupt.o interrupt.c wine /home/michael/.wine/dosdevices/c:/MCC18/bin/mcc18 -I/home/michael/Desktop/firmware-0.4.2/ -I/home/michael/.wine/dosdevices/c:/MCC18/h/ -p 18f2550 -fo=usbmmap.o usbmmap.c wine /home/michael/.wine/dosdevices/c:/MCC18/bin/mcc18 -I/home/michael/Desktop/firmware-0.4.2/ -I/home/michael/.wine/dosdevices/c:/MCC18/h/ -p 18f2550 -fo=usbgen.o usbgen.c wine /home/michael/.wine/dosdevices/c:/MCC18/bin/mcc18 -I/home/michael/Desktop/firmware-0.4.2/ -I/home/michael/.wine/dosdevices/c:/MCC18/h/ -p 18f2550 -fo=usb9.o usb9.c wine /home/michael/.wine/dosdevices/c:/MCC18/bin/mcc18 -I/home/michael/Desktop/firmware-0.4.2/ -I/home/michael/.wine/dosdevices/c:/MCC18/h/ -p 18f2550 -fo=usbctrltrf.o usbctrltrf.c wine /home/michael/.wine/dosdevices/c:/MCC18/bin/mcc18 -I/home/michael/Desktop/firmware-0.4.2/ -I/home/michael/.wine/dosdevices/c:/MCC18/h/ -p 18f2550 -fo=usbdrv.o usbdrv.c wine /home/michael/.wine/dosdevices/c:/MCC18/bin/mcc18 -I/home/michael/Desktop/firmware-0.4.2/ -I/home/michael/.wine/dosdevices/c:/MCC18/h/ -p 18f2550 -fo=upp.o upp.c wine /home/michael/.wine/dosdevices/c:/MCC18/bin/mcc18 -I/home/michael/Desktop/firmware-0.4.2/ -I/home/michael/.wine/dosdevices/c:/MCC18/h/ -p 18f2550 -fo=prog.o prog.c wine /home/michael/.wine/dosdevices/c:/MCC18/bin/mcc18 -I/home/michael/Desktop/firmware-0.4.2/ -I/home/michael/.wine/dosdevices/c:/MCC18/h/ -p 18f2550 -fo=prog_lolvl.o prog_lolvl.c wine /home/michael/.wine/dosdevices/c:/MCC18/bin/mplink /k/home/michael/Desktop/firmware-0.4.2/ rm18f4550.lkr /l/home/michael/.wine/dosdevices/c:/MCC18/lib/ /ouc_code.cof /muc_code.map main.o usbdsc.o interrupt.o usbmmap.o usbgen.o usb9.o usbctrltrf.o usbdrv.o upp.o prog.o prog_lolvl.o * * * Next i moved to the MPLAB IDE to see if the problem was with piklab and here is the output result i get ** * MPLINK 4.37, Linker * * Copyright (c) 1998-2010 Microchip Technology Inc. Error - section '.code_upp.o' can not fit the section. Section '.code_upp.o' length=0x00000ce0 Errors : 1 and an excerpt from the map file created before error occured is as follows page 0x082a 0x7fff .cinit 0x082a 0x001a .code_prog.o 0x0844 0x615a .code_prog_lolvl.o 0x699e 0x0de6 The above listing shows that there is difference in content between comparable files with in the two IDE's (Piklab and MPLAB). For completness, here are comand line compiler and linker arguments Executing: "C:\MCC18\bin\mcc18.exe" -p=18F2550 "interrupt.c" -fo="interrupt.o" -D__DEBUG -Ou- -Ot- -Ob- -Op- -Or- -Od- -Opa- Executing: "C:\MCC18\bin\mcc18.exe" -p=18F2550 "main.c" -fo="main.o" -D__DEBUG -Ou- -Ot- -Ob- -Op- -Or- -Od- -Opa- Executing: "C:\MCC18\bin\mcc18.exe" -p=18F2550 "prog.c" -fo="prog.o" -D__DEBUG -Ou- -Ot- -Ob- -Op- -Or- -Od- -Opa- Executing: "C:\MCC18\bin\mcc18.exe" -p=18F2550 "prog_lolvl.c" -fo="prog_lolvl.o" -D__DEBUG -Ou- -Ot- -Ob- -Op- -Or- -Od- -Opa- Executing: "C:\MCC18\bin\mcc18.exe" -p=18F2550 "upp.c" -fo="upp.o" -D__DEBUG -Ou- -Ot- -Ob- -Op- -Or- -Od- -Opa- Executing: "C:\MCC18\bin\mcc18.exe" -p=18F2550 "usb9.c" -fo="usb9.o" -D__DEBUG -Ou- -Ot- -Ob- -Op- -Or- -Od- -Opa- Executing: "C:\MCC18\bin\mcc18.exe" -p=18F2550 "usbctrltrf.c" -fo="usbctrltrf.o" -D__DEBUG -Ou- -Ot- -Ob- -Op- -Or- -Od- -Opa- Executing: "C:\MCC18\bin\mcc18.exe" -p=18F2550 "usbdrv.c" -fo="usbdrv.o" -D__DEBUG -Ou- -Ot- -Ob- -Op- -Or- -Od- -Opa- Executing: "C:\MCC18\bin\mcc18.exe" -p=18F2550 "usbdsc.c" -fo="usbdsc.o" -D__DEBUG -Ou- -Ot- -Ob- -Op- -Or- -Od- -Opa- Executing: "C:\MCC18\bin\mcc18.exe" -p=18F2550 "usbgen.c" -fo="usbgen.o" -D__DEBUG -Ou- -Ot- -Ob- -Op- -Or- -Od- -Opa- Executing: "C:\MCC18\bin\mcc18.exe" -p=18F2550 "usbmmap.c" -fo="usbmmap.o" -D__DEBUG -Ou- -Ot- -Ob- -Op- -Or- -Od- -Opa- Executing: "C:\MCC18\bin\mplink.exe" /l"C:\MCC18\lib" "rm18f4550.lkr" "interrupt.o" "main.o" "prog.o" "prog_lolvl.o" "upp.o" "usb9.o" "usbctrltrf.o" "usbdrv.o" "usbdsc.o" "usbgen.o" "usbmmap.o" /u_CRUNTIME /u_DEBUG /z__MPLAB_BUILD=1 /z__MPLAB_DEBUG=1 /o"picusbprog_custom.cof" /M"picusbprog_custom.map" /W My question is that i know this program is a working system and for some reason which i don't understand now, it is not working. Making the program small only for selective pic ranges could have solved the problem. But i don't think that is the reason behind this. Could you please help me understand why i am having such difficulty? kindly regards, michael * |