2025-03-12 2:15 AM
Hi all,
I am using the STM32N6570-DK kit with the GCC compiler. I want to disable the Helium extension. I have taken the AI object_detection code as a base code and created one function to check whether the Helium extension is enabled or disabled. I read on the ARM website that if you add the "-mcpu=cortex-m55+nomve" flag(attached snapshot below), the M-extension for the Helium core is no longer used. But every time we detect it, the Helium core is enabled.
Furthermore, we have tried to disable the Helium core by changing the value of the SCB->CPACR for CP10 and CP11 as mentioned in this document. We have made a combination to set 1,2, and 3(default). From the mentioned combination to set bits for CP10 and CP11 only the default value works. Otherwise, we end up in usagefault. Following is the code that I am using.
2025-03-12 9:03 AM - edited 2025-03-12 9:06 AM
The ARM clang compiler is not GCC (though compatible in many details). Are you sure that it recognizes "-mcpu=cortex-m55+nomve" flag?
2025-03-12 11:05 PM
GCC compiler also recognizes the "-mcpu" to identify the CPU architecture. In project settings, there is a GCC command that involves the flag "-mcpu=cortex-m55" but we cannot change it by GUI, so we have to feed extra compilation arguments "Miscellaneous" wizard. We have confirmed that provided flag also showed in the build command.
As stated by the ARM, To disable the Helium extension we have to change the "-mcpu" or "-march" argument. But when we are using both the GCC shows warning of the mismatch in argument. Thus we are sure that "-mcpu" flag is recognized in the GCC compiler.
We have also tried to change the LOW-level SBC-CPACR register which involves access to an additional core in cortex-m55 but no luck with that too.
We want to run our usecase without Helium extension functionality which is by default enabled. Hence, We want to know how we can disable the helium extension in STM32N6 cortex-m55 MCU.