I get the following error when I do build in microvision. The project uses a CortexM1 processor on Altera Cycloneiii FPGA.
The Error: .\obj\ITCM.axf: Error: L6200E: Symbol ferror multiply defined (by iostubs.o and retarget.o).
The code causing the error: /* fopen test prg*/
void tst_fopen (void) { FILE *fin; fin = fopen ("Test.txt","r"); if (fin == NULL) { printf ("File not found!\n"); } else { fclose (fin); } }
Iam a Hardware Enginner, not much in the C programming., I was wondering if any one could help me on this issue.
Thanks, Veeraraghavan.R
Unfortunately Keil/ARM's use of "multiply" like that is very clumsy - to be polite!
What the message is telling you is that the symbol "ferror" has multiple definitions within your program; In fact, the Linker had found two files that define it, and it has helpfully listed them for you - they are iostubs.o and retarget.o
So, you need to remove the definition of "ferror" from one of those two files.
"I am a Hardware Enginner, not much in the C programming"
I trust you will be hiring a Software Engineer for the bulk of the software development...?
In general using the File System on Cortex-M1 is not possible. It needs a properly configured low level interface and a hardware. This is not available in FPGA.
Use the microlib and stay away from the file system on CM1. If you would still like to use it, then you will have to implement it all, the FPGA logic and the low layer File System on your own.
Franc
Thanks Andy , it worked., and as you said we do have a SW Engineer for software development!!! :)
Thanks Franc, I guess semihosting is not possible in FPGA, I wasn't sure but wanted to try it.BTW what's microlib?