From: Julian G. <jgu...@ya...> - 2006-02-06 16:28:15
|
Why am i getting an error message? hello: this is the code #define _18F258 #include "pic18f258.h" int a; int main(){ a = 8; a+=13-9; return a; } [julian@fc4_server sdcctest]$ sdcc test1.c -p18f258 -mpic16 Processor: 18f258 warning: processor mismatch in "/usr/local/bin/../share/sdcc/lib/pic16/crt0i.o" message: using default linker script "/usr/local/share/gputils/lkr/18f258.lkr" error: missing definition for symbol "_stack_end", required by "/usr/local/bin/../share/sdcc/lib/pic16/crt0i.o" why there is a _stack_end symbol not recognized, and what can i do about it? regards "julian"<jgu...@ya...> ______________________________________________ LLama Gratis a cualquier PC del Mundo. Llamadas a fijos y móviles desde 1 céntimo por minuto. http://es.voice.yahoo.com |
From: Raphael N. <RN...@we...> - 2006-02-07 21:53:34
|
Hi Julian, > Why am i getting an error message? > error: missing definition for symbol "_stack_end", > required by > "/usr/local/bin/../share/sdcc/lib/pic16/crt0i.o" Just add a line like #pragma stack 0x300 0xff to the file with your main() routine and everything should be just fine. Background: The pragma defines the location of the software-stack used to pass argument sto functions and to save registers from the shared access bank. 0x300 is the lowest reserved address, 0xff the size, initial stack pointer will be 0x3ff (our stack grows downwards). > Processor: 18f258 > warning: processor mismatch in > "/usr/local/bin/../share/sdcc/lib/pic16/crt0i.o" The processor mismatch warning can safely be ignored; it results from the libraries being compiled for pic18f452 whereas your code is being compiled for the 258. The libraries (except the I/O library) do not use processor-specific features and are thus useable on all 16 bit PICs. You may use the -w option to gplink to suppress the warning. > message: using default linker script > "/usr/local/share/gputils/lkr/18f258.lkr" This warning can be ignored as well, unless the gputils guess wrong. You can avoid the warning by specifying a linkerscript via the -s option to gplink. Regards, Raphael Neider -- eMail: RN...@we... |
From: Julian G. <jgu...@ya...> - 2006-02-09 03:25:57
|
Hello Raphael: Thank you very much, and interesting. I have more inquiries (if you find any spot in your time, of course) : 1. Does the compiler supports any mechanism to configure the serial port without having it configured by means of code (like a macro)? 2. Just like in ansi C, can you implement "functors", pointers to functions?. 3. What are the size of the basic types (int, unsigned int, short, unsigned short, char, unsigned char) 4. How can i configure the CONFIG1H and CONFIG1L through CONFIGnH and CONFIGnL (The fuses)?. 5. What is the best serial bootloader for linux? 6. Is there any page dedicated to the SDCC port? IM SO NEW in the PIC, nah, in the MicroControllers world........... Best Regards Julian Andres. --- Raphael Neider <RN...@we...> escribió: > Hi Julian, > > > Why am i getting an error message? > > error: missing definition for symbol > "_stack_end", > > required by > > "/usr/local/bin/../share/sdcc/lib/pic16/crt0i.o" > > Just add a line like > #pragma stack 0x300 0xff > to the file with your main() routine and everything > should be just fine. > > Background: > The pragma defines the location of the > software-stack used to pass > argument sto functions and to save registers from > the shared access bank. > 0x300 is the lowest reserved address, 0xff the size, > initial stack > pointer will be 0x3ff (our stack grows downwards). > > > Processor: 18f258 > > warning: processor mismatch in > > "/usr/local/bin/../share/sdcc/lib/pic16/crt0i.o" > The processor mismatch warning can safely be > ignored; it results from > the libraries being compiled for pic18f452 whereas > your code is being > compiled for the 258. > The libraries (except the I/O library) do not use > processor-specific > features and are thus useable on all 16 bit PICs. > You may use the -w option to gplink to suppress the > warning. > > > message: using default linker script > > "/usr/local/share/gputils/lkr/18f258.lkr" > This warning can be ignored as well, unless the > gputils guess > wrong. You can avoid the warning by specifying a > linkerscript > via the -s option to gplink. > > Regards, > Raphael Neider > -- > eMail: RN...@we... > > > > ------------------------------------------------------- > This SF.net email is sponsored by: Splunk Inc. Do > you grep through log files > for problems? Stop! Download the new AJAX search > engine that makes > searching your log files as easy as surfing the > web. DOWNLOAD SPLUNK! > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=103432&bid=230486&dat=121642 > _______________________________________________ > Sdcc-user mailing list > Sdc...@li... > https://lists.sourceforge.net/lists/listinfo/sdcc-user > ______________________________________________ LLama Gratis a cualquier PC del Mundo. Llamadas a fijos y móviles desde 1 céntimo por minuto. http://es.voice.yahoo.com |
From: Raphael N. <RN...@we...> - 2006-02-10 22:29:14
|
Hi Julian Guarin, > 1. Does the compiler supports any mechanism to > configure the serial port without having it configured > by means of code (like a macro)? No, it does not and probably will not unless regular ANSI C cannot do the job. > 2. Just like in ansi C, can you implement "functors", > pointers to functions?. Well, yes? Just like in ansi C, you can implement "functors": <code> typedef int func_t(int); int func(int arg0) { return arg0; } void main(void) { func_t *f = &func; f(5); } </code> > 3. What are the size of the basic types (int, unsigned > int, short, unsigned short, char, unsigned char) 1 byte: char, unsigned char 2 byte: short, unsigned short, int, unsigned int 4 byte: long, unsigned long <code> char c; short s; int i; long l; </code> sdcc -c code.c yields code.asm with lines such as _c res 1 <-- reserve 1 byte for c _s res 2 <-- reserve 2 byte for s and i _i res 2 _l res 4 <-- reserve 4 byte for l > 4. How can i configure the CONFIG1H and CONFIG1L > through CONFIGnH and CONFIGnL (The fuses)?. #include <pic18fregs.h> (which includes the pic18fxxx.h matching the processor selected via -p18fxxx), read the matching pic18fxxx.h file (located in device/include/pic16/) and retrieve the configuration words from the end of the file. And all desired options per fuse together and assign them to a global variable that is pinned to the config-word address: <code> #include <pic18fregs.h> char __at(__CONFIG2L) config2l = _BODEN_ON_2L & _BODENV_2_0V_2L; </code> This is a bit unhandy, but works and is not required too often, is it ;-) > 5. What is the best serial bootloader for linux? Sorry, no idea---I only maintain the PIC16 port but do not use it... > 6. Is there any page dedicated to the SDCC port? With respect to what? There is the SDCC documentation, including a chapter on the PIC16 port (available online via http://sdcc.sf.net) > IM SO NEW in the PIC, nah, in the MicroControllers > world........... Have fun and expect strange things to happen :-) Regards, Raphael Neider |
From: Julian G. <jgu...@ya...> - 2006-02-11 06:17:38
|
Hello Raphael! Thank you very much, i find your answers very handy and complete!!!!! best regards ! julian guarin --- Raphael Neider <RN...@we...> escribió: > Hi Julian Guarin, > > > 1. Does the compiler supports any mechanism to > > configure the serial port without having it > configured > > by means of code (like a macro)? > > No, it does not and probably will not unless regular > ANSI C > cannot do the job. > > > 2. Just like in ansi C, can you implement > "functors", > > pointers to functions?. > > Well, yes? Just like in ansi C, you can implement > "functors": > > <code> > typedef int func_t(int); > int func(int arg0) { > return arg0; > } > > void main(void) > { > func_t *f = &func; > f(5); > } > </code> > > > 3. What are the size of the basic types (int, > unsigned > > int, short, unsigned short, char, unsigned char) > > 1 byte: char, unsigned char > 2 byte: short, unsigned short, int, unsigned int > 4 byte: long, unsigned long > > <code> > char c; > short s; > int i; > long l; > </code> > sdcc -c code.c yields code.asm with lines such as > _c res 1 <-- reserve 1 byte for c > _s res 2 <-- reserve 2 byte for s and i > _i res 2 > _l res 4 <-- reserve 4 byte for l > > > 4. How can i configure the CONFIG1H and CONFIG1L > > through CONFIGnH and CONFIGnL (The fuses)?. > > #include <pic18fregs.h> (which includes the > pic18fxxx.h matching the > processor selected via -p18fxxx), read the matching > pic18fxxx.h file > (located in device/include/pic16/) and retrieve the > configuration words > from the end of the file. > And all desired options per fuse together and assign > them to a global > variable that is pinned to the config-word address: > > <code> > #include <pic18fregs.h> > > char __at(__CONFIG2L) config2l = _BODEN_ON_2L & > _BODENV_2_0V_2L; > </code> > > This is a bit unhandy, but works and is not required > too often, is it ;-) > > > 5. What is the best serial bootloader for linux? > > Sorry, no idea---I only maintain the PIC16 port but > do not use it... > > > 6. Is there any page dedicated to the SDCC port? > > With respect to what? There is the SDCC > documentation, including a > chapter on the PIC16 port (available online via > http://sdcc.sf.net) > > > IM SO NEW in the PIC, nah, in the MicroControllers > > world........... > > Have fun and expect strange things to happen :-) > > Regards, > Raphael Neider > > > > ------------------------------------------------------- > This SF.net email is sponsored by: Splunk Inc. Do > you grep through log files > for problems? Stop! Download the new AJAX search > engine that makes > searching your log files as easy as surfing the > web. DOWNLOAD SPLUNK! > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=103432&bid=230486&dat=121642 > _______________________________________________ > Sdcc-user mailing list > Sdc...@li... > https://lists.sourceforge.net/lists/listinfo/sdcc-user > ______________________________________________ LLama Gratis a cualquier PC del Mundo. Llamadas a fijos y móviles desde 1 céntimo por minuto. http://es.voice.yahoo.com |