Hi, I am looking at ARM CMSIS code for biquad float32 implementation. This is written for Cortex-M as documentation states. How much effort would be needed to port this code to Cortex-A53? The code should be fast, optimized using intrinsics, not assembly. Thanks.
biquad
I recommend to look for a NEON library which provides this. But then, the source is there. Just use it ;-)
Thanks, will do just that.
However, still confused... documentation says that filtering (biquad) functions support only Cortex-M. Does Cortex-M support Neon?? There is Neon intrinsics in the code, so I suppose yes?
Look here: https://github.com/ARM-software/CMSIS_5/blob/develop/CMSIS/DSP/Source/FilteringFunctions/arm_biquad_cascade_df2T_f32.c.
The file header says: "Target Processor: Cortex-M cores".
I recommend to check with the Armv8-A neon docs: Some info is here:
developer.arm.com/.../learn-the-architecture
Hi Danijel, indeed the header was not aligned with the new Cortex-A/NEON capabilty of this subroutine. Sorry for the confusion. The code is maintained in github where we usually log the comments. Best regards, Laurent
Hi Lauran, thanks for clarification!
Not just this header is confusing, but the whole CMSIS/DSP is labeled as supporting only Cortex-M on the CMSIS home page https://developer.arm.com/tools-and-software/embedded/cmsis it says: "Target architecture: All Cortex-M".
My question is, does all CMSIS/DSP support Cortex-A or just CMSIS/DSP/FIlters?
p.s.
Should I log comments in GitHub too? I had a feeling that this is private Arm repo.
Unknown said:Should I log comments in GitHub too? I had a feeling that this is private Arm repo.
You can always raise an issue, it something seems to be wrong or buggy.
Actually it says:The Cortex Microcontroller Software Interface Standard (CMSIS) is a vendor-independent hardware abstraction layer for microcontrollers that are based on Arm® Cortex® processors.
But it does not list Armv8-A, but then you did not say whether you want to use AArch32 or AArch64.
Edit: My bad, DSP lib is cortex-m only.
Hi Danijel, the whole CMSIS-DSP can be compiled from Cortex-M0 to Cortex-A7x (plain K&R C code sections). All the critical sections have been ported to the SIMD capabilities of Cortex-M4/M7/M33, and the new Helium architecture of Cortex-M55. We have started the porting to NEON too, but this has lower priority now. This is the reason why some subroutines are ported to Cortex-A and other not. Please also have a look at the NE10 library. Best regards, Laurent.
The CMSIS-DSP is containing Neon implementation of the f32 biquads. For df2T version, the initialization of the filter is done differently than for the Cortex-M versions.