Greetings --
I am using Code Composer Studio (Version: 4.1.0.02003) to try to build some code for an LM3S3748. This will be tested on a development kit (LM3S3748 EVB).
For timing purposes, I need to be able to insert the occasional no-op instruction. This is required to bit-bang signals out of some GPIO pins. However, if I have the following statement:
asm("nop");
...more than once in a given source file, I get the following assembler error:
"C:\DOCUME~1\agage\LOCALS~1\Temp\0191211", ERROR! at line 175: [E0300]
Symbol nop has already been defined
.dwpsn file "../trunk/platform/lm3s3748/testfile.c",line 68,column 1,is_stmt
If I put that statement in a different file in the same project, it does not complain. If I put it twice in any part of the same file, I get the error. It looks to me as though the assembler is creating a new global symbol out of that statement, and is blowing up when it sees it again.
Since this is really nothing other than C code, I have also tried to build this to an i386 target using gcc under Linux. I can compile, assemble, and link the same code there without any errors (or solicited warnings). Thus I know that there is nothing fundamentally wrong with my code. Obviously I can't execute it there because it tries to access memory-mapped registers directly, but it builds.
Any suggestions? I have seen sample code posted here where people have had lots of asm("nop") statements that suggests I'm not off base. Is there a delay function I should be using? I need 20ns resolution in some cases (I have a very tight loop) so I cannot afford increment/test/branch where a no-op would do.
Thank you.