Tool/software:
Sorry to post this in the ARM MCU forum, even though I'm using C2000. If I select SAEFTI_CQKIT as part number, it automatically selects this forum and I can't change it to something else.
I'm following the TI Qualification Kit user guide to better understand what is required to get a TI C2000 MCU certified. Currently, I'm stuck on the Tool Qualification Plan (TQP.docm), specifically the part about configuration selection. As far as I understand, I need to choose a tested and supported configuration, i.e. compiler flags/options, to build my software. These compiler options can be chosen according to the Tool Definition, Chapter 6. Multiple aspects of this are confusing to me.
Let me show you my current situation so you can follow along. So far I have isolated these flags used during C++ build in code composer studio (excluding include / object directories):
-v28 -ml -mt --cla_support=cla2 --float_support=fpu64 --idiv_support=idiv0 --tmu_support=tmu0 --vcu_support=vcrc -O0 --advice:performance=all --define=_FLASH --define=DEBUG --define=CPU1 -g --diag_warning=225 --diag_wrap=off --display_error_number --gen_func_subsections=on --abi=eabi
Looking at the Tool Definition Table 6.1, the options that influence code generation the most are the following:
-v28 -O0 -g --gen_func_subsections=on
Additionally, these compiler options impact code generation to a lesser extent according to Table 6.2:
--abi=eabi --cla_support=cla2 --float_support=fpu64 --idiv_support=idiv0 --vcu_support=vcrc --tmu_support=tmu0
All other options should not affect code generation at all, so they're not relevant for certification.
Now, the questions that I have about this:
- Tool Definition Table 6.2 lists --idiv_support=idiv0 as the default, but the compiler user's guide (spru514z) says 'none' is the default. Which one is correct?
- What is the idea behind splitting compiler options into the categories of "impacts code generation" and "impacts code generation to a lesser extent"? Can I somehow treat them differently when it comes to certification?
- Many of the options I currently use to enable additional hardware acceleration (fast integer division, 64 bit float support, VCU support, TMU support) are not present in Tool Definition Table 6.3.1, especially not with low optimization levels. Does this mean I need to turn them off / set to default to be compliant?
- The --gen_func_subsections is only tested in 7 validation test cases according to Table 6.3.1, and likely none of these will match my configuration exactly. Does this mean I can't use this option at all?
- The compiler user's guide indicates that the --vcu_support option is ignored for C/C++ code. If I don't use assembly code (only through TI libraries), do I still need to disable this to comply?
- I have enabled CLA support (--cla_support=cla2) for the whole project, even though this is only used for a subset of files. I assume this is the same situation as the question above, just with CLA code, right?
- Most of the configurations in Table 6.3.1 list the "-mt -ml" options. Should I use these too? I can't even find "-ml" in the compiler's user guide.