I have a project that I am basing on the straight-forward tiescappl.c (EtherCAT) example project in the 1.0.0.4 SDK. In my extension of this project, I am using the EDMA to read/write via SPI to an external device. All is basically working but I have stumbled onto cache coherency issues with the SPI read and write buffers (basically the same issue/warning detailed in the uartEdam_Cache.c starterware example file). So in order to ensure coherency, I am calling CacheDataCleanBuff() and CacheDataInvalidateBuff() at the appropriate times on the transmit and receive DMA buffers, respectively. To my understanding, these cache manipulation functions are contained in the system.lib file located in C:\ti\am335x_sysbios_ind_sdk_1.0.0.4\sdk\starterware\binary\armv7a\cgt_ccs\am335x\system_config, and I have therefore included that library into the project linker configuration. However, the link phase now fails with the error:
<Linking>
fatal error: file
"C:\ti\am335x_sysbios_ind_sdk_1.0.0.4\sdk/starterware/binary/armv7a/cgt_ccs/am335x/system_config/system.lib<cache.obj>" was built without VFP
coprocessor support while a previously seen file was; combining incompatible files
My questions are:
1. Am I indeed using the correct (i.e. only) library files for these cache manipulation functions?
2. If #1 is correct, then is the only recourse to eliminate this error that I must rebuild system.lib so that cache.obj has VFP support? (as it seems that apparently other libraries being referenced by the EtherCAT example project were compiled with VFP support?)
3. If #2 is correct, are there any precautions or procedures to help me in performing this rebuild procedure? (I am concerned about "breaking" cache.obj, and cache manipulation is one spot I certainly don't want to mess up as it could be one of those bugs that doesn't always manifest itself consistently... kind of like stack overrun issues).
Thanks,
Darrin