Hi, I'm trying to use the i2c "master_slave_loopback.c" example from the Stellarisware7248 directory for the LM3S1968 and have went through the getting started excercises and other example programs and have painstakingly made sure all Linker settings etc.. etc are as described both in the Keil getting started appnote and the other LM3S1968 examples.
The list of headers as they appear are:
#include "inc/hw_memmap.h" #include "inc/hw_types.h" #include "inc/hw_i2c.h" #include "driverlib/i2c.h" #include "driverlib/sysctl.h" #include "driverlib/gpio.h" #include "utils/uartstdio.h"
All those headers show up in the project under the master_slave_loopback.c file
The following error keeps persisting. The symbol in question IS defined in the properly linked header file. Can I be missing something obvious?
i2c_LoopBack.axf: Error: L6218E: Undefined symbol UARTStdioInit (referred from master_slave_loopback.o)
The symbol in question IS defined in the properly linked header file.
It is most certainly not, and nor should it. It is a common rule that no symbols should be defined in header files, they should only be declared. Of this follows that you don't link headers (there is nothing there to be linked !), you just include them.
However that you do have a linking problem. Do you have the source code of uartstdio.c or is it hidden in a library ?
See: c-faq.com/.../decldef.html
Again, this is standard 'C' stuff - nothing specifically to do with Keil, nor Stellaris, nor ARM
And, as already noted, http://www.keil.com/forum/18993/ is the same - and very many other threads on this forum.
Search for "declaration" and "definition"...
As already noted, it is (correctly) not defined in any header!
This is what actually appears in the header file:
extern void UARTStdioInit(unsigned long ulPort);
Note the extern keyword - the clue is in the name...
c-faq.com/.../extlibs.html