Trying to use CMSIS-DSP with mbed-os...

12 Dec 2017

I'm trying use a reasonably current version of CMSIS-DSP on mbed-os. It seems that mbed-os only has some of CMSIS built-in, so it's hard to tell where to start...

1. CMSIS is up to version 5.2.0. How can I tell what version of CMSIS is being used by mbed-os?

2. I see CMSIS headers in the mbed-os/cmsis/ folder, but no source files. Are there library or source files somewhere? Or is mbed only using the headers? (Types, #defines, etc.)

3. I tried calling a CMSIS-DSP function from my mbed-os-based project, but it fails to link. If there are CMSIS source files or a library somewhere, why is it partial?

4. How/where/when does CMSIS get integrated with mbed-os? (i.e. When/how are the files captured? Is it done manually or by some automated process? Are files put in a different directory structure?)

5. Is there a friendly way to plug the latest CMSIS-DSP (or all of CMSIS) into an mbed-os-based project?

Unfriendly approaches:

  • If I add CMSIS_5 from github as an mbed library (.lib file), then I'll have duplicate header file names. Besides, my exported project is going to want to rebuild the whole CMSIS_5 source, but I only need a couple functions, and they already provide pre-built library files.
  • If I just copy over the pre-built library files, then I risk having something in them not match the cmsis header files included with mbed-os. Also, the pre-built libraries have use the Hard ABI for floating point, but the mbed-cli mcuxpresso exporter sets the project options to floating point Soft ABI, which means I'd have to manually reconfigure options every time I export.
13 Dec 2017