This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320F280049: VCU's CRC library in EABI format

Part Number: TMS320F280049
Other Parts Discussed in Thread: C2000WARE

Dear Champs,

I am asking this for our customer.

The user wants to use CRC like getCRC32_VCU().

From the doc in P12

C:\ti\c2000\C2000Ware_4_01_00_00\libraries\dsp\VCU\c28\docs\C28X_VCU_LIB_UG.pdf

It says "...c28x_vcu<n>_library_fpu32.lib for the floating-point supported build. Note that these libraries have been built for COFF format and not built for EABI format...."

Now, the user wants to use c28x_vcu<n>_library_fpu32.lib in EABI. Would you please help generate a library in EABI?

OR can the user make it by themselves?

Wayne Huang

  • Wayne,

    one of our engineers had tried to build for EABI. let me check with him and see what his observations were.

    Thanks

    Arav

  • Hello Wayne,

    To create an EABI-based library for VCRC, follow these steps:

    For the VCU library, to use the most up-to-date output format and compiler options for the library, do the following:

    1. Import the project from C2000Ware_X_XX_XX_XX\libraries\dsp\VCU\c28\ccs\c28x_vcu0_crctables_lib
    2. Right-click on the project and select Properties
    3. Verify the compiler version is up-to-date and change the Output formate from "legacy COFF" to "eabi (ELF)"
    4. Click "Apply and Close" and then rebuild the project.

    This should generate and replace the old library. Let me know if there are any further issues.

    Best regards,

    Omer Amir

  • Dear Omer,

    Some issues.

    1) We should choose FPU32 configuration below if we want to use FPU32, right?

    2) When we followed your steps above, there were errors during building about Line 117 of 

    C:\ti\c2000\C2000Ware_4_01_00_00\libraries\dsp\VCU\c28\include\vcu0\vcu0_types.h.

    We tried to remove (comment) this line 117 like below, and the there was no error and it seems good.

    Would you please confirm if this line 117 is not necessary and it's OK to remove it?

  • Dear Omer,

    One more questions, the user wants to use only VCU0 CRC to calculate 32-CRC.

    That is, they want to use getCRC32_VCU().

    In this case, do they still need to call genCRC32Table(); in the initialization?

    We are confused at calling genCRC32Table();.

    It is used for a C-based lookup table function getCRC32_cpu() only or is also needed for getCRC32_VCU()?

    Wayne Huang

  • Dear Omer,

    Besides previous two posts, we find there is yet another library called "c28x_vcu0_library", where getCRC32_VCU() is defined.

    We are confused why you asked us to build "c28x_vcu0_crctables_lib" rather than "c28x_vcu0_library" as we are supposed to use getCRC32_VCU()?

    When we tried to build EABI for c28x_vcu0_library, there is legacy .ebss in vcu0_viterbi_k7_cr12.asm, and we should change them to .bss, right?

    Please help clarify this post and the above two posts.

    Wayne Huang

  • Hello Wayne,

    To address your points:

    1. If the customer wants to use FPU32 then yes, this build configuration should be selected.
    2. That is correct, I had this line 117 commented out for my code as well (it is an issue that I will make sure is filed and fixed)
    3. With regards to using genCRC32Table() in the initialization, this would be a question for 
    4. I'm not entirely familiar with which library files in the VCU contain which items for VCRC, as I have not used VCRC extensively. My intuition was that the library labeled with crctables would have the necessary files to include, but I may be wrong. I can only confirm the steps for rebuilding the library, perhaps  can correct me on which library needs to be rebuilt
  • Dear Omer,

    When I tried to use EABI to build c28x_vcu0_library in the same way, there were errors and I could not resolve it.

    Would you please look into it?

  • Hi Wayne,

    Apologies, this is another known issue I forgot to mention. The FFT file vcu0_cfft_utils.asm needs line 67 changed to " MOVL XAR5,#CFFT16_TF ;". Currently, it should have a preceding underscore, which is typical for functions in the COFF output format. An alternative solution would be to add an .asg statement that does: ".asg    CFFT16_TF, _CFFT16_TF".

    Best regards,

    Omer Amir

  • Wayne,

    I am responding to couple of questions 

    3.  With regards to using genCRC32Table() in the initialization, this would be a question for  - this is not needed for the implementation running on C28x. this is used for simulating the crc functionality. Not needed for getCRC32_VCU()?

    4. The library generated has all the functions and if you include the getCRC32_VCU in your code, the linker will choose the function needed from the library. we do not have a specific library for CRC alone in the case of VCU. 

    I suppose you are looking for the CRC support on F280049x right ?

    Thanks

    Aravindhan

  • Dear Arav,

    Yes, we want to use 32-CRC by VCU0.

    Thank you for your information.

    Dear Omer,

    I will suggest adding EABI library officially later.

    We finally made it work by adding codes like below for getCRC32_vcu() that we want to use. Without this, it cannot work.

    I think there are other functions that will have similar issues.

    .if $defined(__TI_EABI__)
    .if __TI_EABI__
    .asg getCRC32_vcu, _getCRC32_vcu
    .endif
    .endif

     

  • Wayne,

    can we close this thread now ?

    Thanks

    Aravindhan 

  • Dear Arav, Omer

    Thank you for your support.

    Wayne

  • I am closing the thread.