Re: nRF9160 CMSIS DSP code bloat


Stephanos Ioannidis
 

Hi,

 

By default, CONFIG_CMSIS_DSP_FASTMATH and CONFIG_CMSIS_DSP_TRANSFORM pulls in many big tables:

https://github.com/zephyrproject-rtos/zephyr/blob/feb0e9f766b1328b45666e5e71134c34ae17b742/modules/Kconfig.cmsis_dsp#L60-L61

https://github.com/zephyrproject-rtos/zephyr/blob/feb0e9f766b1328b45666e5e71134c34ae17b742/modules/Kconfig.cmsis_dsp#L142-L143

 

Try the following:

 

1. Set CMSIS_DSP_TABLES_ALL_FAST and CMSIS_DSP_TABLES_ALL_FFT to n.

2. Select only the tables you need.

 

Also you can play with the configs in menuconfig and try getting the image size down.

 

Stephanos

 

From: devel@... <devel@...> On Behalf Of DKaplan via lists.zephyrproject.org
Sent: Monday, August 16, 2021 3:02 PM
To: devel@...
Subject: [Zephyr-devel] nRF9160 CMSIS DSP code bloat

 

Using SES v1.6.1 with the nRF9160 module, I added the necessary CMSIS DSP defines for my project. This adds a quite a lot of files and it does not look like the linker includes only files used.

My code size has went over 466Kb. After adding more unrelated features, the code went over the 512Kb mark after which I remark part of the added code since I do not want to get into adjusting boot loader defines yet (a learning curve also there).

 We need the CMSIS libraries (only a few functions) and the calculations seems to work but it looks like the linker adds a ton of files and functions that are not even called.
 Is there a way that the linker will remove them or should I just select all of the files I need in a new directory (bad I know).  How can I determine which files are used or not?
 
  CONFIG_CMSIS_DSP=y
  CONFIG_CMSIS_DSP_SUPPORT=y
  CONFIG_CMSIS_DSP_FASTMATH=y
  CONFIG_CMSIS_DSP_COMPLEXMATH=y
  CONFIG_CMSIS_DSP_STATISTICS=y
  CONFIG_CMSIS_DSP_TRANSFORM=y

I thought maybe to try to build a CMSIS DSP library that I would add to my Nordic CONNECT project that would pull in only files and tables that are used.
I saw the sdk-zephyr/samples/application_development/external_lib/ example but I just got a build error without any explanation of the problem.

I also saw a CMakeLists.txt directive that also did not work.
   target_link_libraries(app your_lib_name)

Can anyone help me on this or suggest what is the correct way to include only the used CMSIS DSP code?
Thanks David

 

 

 

Join devel@lists.zephyrproject.org to automatically receive all group messages.