Hi, > When i compile this for the 18f1230 the linker bails out with the message: > > error: missing definition for symbol "_SSPBUF", required by "strmmssp.o" > > Which it's right about, this MCU doesn't have an SSP interface. But > why is this linked in?
This is due to the libc18f putchar routine, which allows to target "streams" such as USART, MSSP, or a user-defined putchar() implementation via the FILE argument of the fprintf-routines (which are used to implement *printf()): The first-level putchar (__stream_putchar) has hard references to the mssp implementation in it :-(. > When I override this by defining an empty > strmmssp function, the linker stops at > > error: no target memory available for section > "S_strmputchar____stream_putchar" > > Which sounds as if i'm out of flash. However, same code compiled for > the 18f1320 results in something far smaller than the 4096bytes i > should have here. > > Any pointers? I guess you are using printf/fprintf/vfprintf/sprintf, which eats up your code space? In case you are just using printf, try #define printf printf_tiny early in your sources and recompile with a stripped down (and much smaller) variant of printf. Make sure to eliminate EACH AND EVERY reference to printf -- otherwise you will just pull in even more code (printf_tiny) without getting rid of printf. If you are using other members of the printf-family, get rid of them. Unfortunately there are no _tiny replacements in the library, so you will need to come up with something of your own. If this does not help, please post the .o file which fails to link for the 18f1230. The relocation records in there (see 'gpvo output.o') might reveal which other large functions are being pulled in. You can also inspect the .hex file as generated for the 18f1320 and make sure the highest address used there does not exceed whatever is present on the 18f1230. For my demo project (little more than printf("foo")), the resulting .hex spanned just over 0x1100 (4,2 KiB) ... Raphael ------------------------------------------------------------------------------ Virtualization & Cloud Management Using Capacity Planning Cloud computing makes use of virtualization - but cloud computing also focuses on allowing computing to be delivered as a service. http://www.accelacomm.com/jaw/sfnl/114/51521223/ _______________________________________________ Sdcc-user mailing list Sdcc-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/sdcc-user