Can't install CMSIS on ModusToolbox 2.0.0.1703-windows

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
PaNe_4601741
Level 1
Level 1
First question asked First reply posted

I've installed ModusToolbox 2.0.  I've created a few projects and had them working.  Now I need some DSP functionality and I've hit a roadblock.

I want to use CMSIS, but in my install is different from the instruction videos in several ways.

1)  I don't have the CMSIS Perspective.  In the Cypress ModusToolbox 101: Lesson 2-1 the CMSIS Pack Manager is clearly shown at 1:20 in the video when discussing perspectives

2) Instructions from GNU say to install the GNU MCU C/C++ Packs (Experimental) to add the CMSIS Pack Manager.  When I use Help -> Install New Software and then choose GNU MCU Eclipse Plug-ins - http://gnu-mcu-eclipse.netlify.com/v4-neon-updates then the GNU ARM update it fails to install with dependency issues

     This is the error log from the failed install

+---- START LOG -----+

Your original request has been modified.

  "GNU MCU C/C++ ARM Cross Compiler" is already installed, so an update will be performed instead.

  "GNU MCU C/C++ PyOCD Debugging" is already installed, so an update will be performed instead.

  "GNU MCU C/C++ J-Link Debugging" is already installed, so an update will be performed instead.

  "GNU MCU C/C++ OpenOCD Debugging" is already installed, so an update will be performed instead.

Cannot complete the install because of a conflicting dependency.

  Software being installed: GNU MCU C/C++ ARM Cross Compiler 2.7.1.201911052135 (ilg.gnumcueclipse.managedbuild.cross.arm.feature.feature.group 2.7.1.201911052135)

  Software currently installed: ModusToolbox 2.0.0 (ModusToolbox 2.0.0)

  Only one of the following can be installed at once:

    GNU MCU C/C++ ARM Cross Compiler 2.7.1.201911052135 (ilg.gnumcueclipse.managedbuild.cross.arm 2.7.1.201911052135)

    GNU MCU C/C++ ARM Cross Compiler 2.6.4.201901011632 (ilg.gnumcueclipse.managedbuild.cross.arm 2.6.4.201901011632)

  Cannot satisfy dependency:

    From: ModusToolbox 2.0.0 (ModusToolbox 2.0.0)

    To: org.eclipse.equinox.p2.iu; ilg.gnumcueclipse.managedbuild.cross.arm.feature.feature.group [2.6.4.201901011632,2.6.4.201901011632]

  Cannot satisfy dependency:

    From: GNU MCU C/C++ ARM Cross Compiler 2.6.4.201901011632 (ilg.gnumcueclipse.managedbuild.cross.arm.feature.feature.group 2.6.4.201901011632)

    To: org.eclipse.equinox.p2.iu; ilg.gnumcueclipse.managedbuild.cross.arm [2.6.4.201901011632,2.6.4.201901011632]

  Cannot satisfy dependency:

    From: GNU MCU C/C++ ARM Cross Compiler 2.7.1.201911052135 (ilg.gnumcueclipse.managedbuild.cross.arm.feature.feature.group 2.7.1.201911052135)

    To: org.eclipse.equinox.p2.iu; ilg.gnumcueclipse.managedbuild.cross.arm [2.7.1.201911052135,2.7.1.201911052135]

+----END LOG---+

The log shows that the GNU MCU C/C++ ARM Cross Compiler is already installed, but can't be updated.  That leads to the the next thing.

3) When I look at the plug-ins listed in the Help -> About ModusToolbox then open Installation Details it shows some GNU MCU Eclipse features under "ModusToolbox" in the Installed Software tab.  Those seem to be the dependencies (e.g. GNU MCU C/C++ ARM Cross Compiler 2.6.4.201901011632) that means I can't update the GNU MCU featuers.   And there are no available updates to the ModusToolbox or any of the features listed under it, and when I use the Update button on that interface or alternatively look for updates through Help->Check For Updates, there are no updates.

So I'm stuck at the moment and I'm wondering how to get the CMSIS Pack Manager because my install of ModusToolbox doesn't have it and I can't seem to add it.  When the instruction videos other sources also say ModusToolbox comes with the CMSIS Pack Manager I wonder if it is a problem in the latest installer.

I'd appreciate is anyone knows about this and how to fix it. 

0 Likes
1 Solution

Looks like this thread might have got lost because you marked it resolved and then unmarked it. Sorry about the delay.

Please download the CMSIS DSP Library from here: CMSIS_5/CMSIS at develop · ARM-software/CMSIS_5 · GitHub

Now you need to make some edits in the Makefile before you start using it:

(1) You need to create a make variable that holds the relative path to the DSP library. For example, if you placed the downloaded library files one level down the makefile directory then you would create a variable as shown below:

DSP_DIR=../CMSIS_5-develop/CMSIS/DSP

(2) Add the header files using the INCLUDE variable

INCLUDES=$(DSP_DIR)/Include

(3) Add the library files using the LDLIBS variable

LDLIBS=$(wildcard -l$(DSP_DIR)/Lib/GCC/*.a)

Now you should be able to use the library without any problems

Regards,

Dheeraj

View solution in original post

0 Likes
7 Replies
PaNe_4601741
Level 1
Level 1
First question asked First reply posted

HI,

I have been looking at this and installed the older ModusToolbox 1.1.  It has the CMSIS Pack Manager installed "out of the box". 

Can anyone shed any light on if it is a bug that it is not in ModusToolbox 2.0 and if there is any know work around.

0 Likes

I've been digging deeper and I've found that the CMSIS DSP definitions are tucked away in ModusToolbox 2.0.  

CMSIS and arm_math.h are buried under the psoc6pdl library includes. 

I followed the instructions in arm_math.h,  which has all the dsp functions and added the include below

   #include "arm_math.h"

HOWEVER, with that include compilation fails due to redefinition errors. This is due to definitions in both arm_math.h and  in ./libs/psoc6pdl/cmsis/include/cmsis_gcc.h which is included from the default cy_pdl.h.

E.g.  Below is an example of the errors that causes compile to fail.

In file included from main.c:45:0:

./libs/psoc6pdl/cmsis/include/arm_math.h:680:41: error: redefinition of '__QADD8'

   CMSIS_INLINE __STATIC_INLINE uint32_t __QADD8(

                                         ^~~~~~~

In file included from ./libs/psoc6pdl/cmsis/include/cmsis_compiler.h:54:0,

                 from ./libs/psoc6pdl/cmsis/include/core_cm4.h:162,

                 from ./libs/psoc6pdl/devices/include/cy8c624abzi_d44.h:478,

                 from ./libs/psoc6pdl/devices/include/cy_device_headers.h:164,

                 from ./libs/psoc6pdl/drivers/include/cy_pdl.h:29,

                 from main.c:42

Has anyone used CMSIS functionality via these psoc6pdl includes.  It seems it needs a particular build flag or include to use instead of going directly to arm_math.h

If anyone knows how to get it to work or how it should work I would love to hear from you. Is there anyone in the Cypress ModusToolbox team that can give guidance on this?

0 Likes

THE ANSWER

I found out how to do this.

To use CMSIS in ModusToolbox 2.0 with the CY8CProto-062-4343W here are the two changes to make to in main.c

#define ARM_MATH_CM4          //<---- add this define

#include "cy_pdl.h"

#include "cyhal.h"

#include "cybsp.h"

#include "cy_retarget_io.h"

#include "stdlib.h"

#include "arm_math.h"               //<---- add this include

//with these two changes all the CMSIS dsp functions are available in your program

0 Likes

Well, the answer above was partially correct.

Some of the DSP maths was available after the changes above, but not all.  I'm still digging

Any guidance or workarounds in add CMSIS into ModusToolbox 2.0 would be appreciated.

0 Likes

Looks like this thread might have got lost because you marked it resolved and then unmarked it. Sorry about the delay.

Please download the CMSIS DSP Library from here: CMSIS_5/CMSIS at develop · ARM-software/CMSIS_5 · GitHub

Now you need to make some edits in the Makefile before you start using it:

(1) You need to create a make variable that holds the relative path to the DSP library. For example, if you placed the downloaded library files one level down the makefile directory then you would create a variable as shown below:

DSP_DIR=../CMSIS_5-develop/CMSIS/DSP

(2) Add the header files using the INCLUDE variable

INCLUDES=$(DSP_DIR)/Include

(3) Add the library files using the LDLIBS variable

LDLIBS=$(wildcard -l$(DSP_DIR)/Lib/GCC/*.a)

Now you should be able to use the library without any problems

Regards,

Dheeraj

0 Likes

Hi Dheeraj,

i followed your instruction and get stucked by "#error "No appropriate startup file found!" in DSP/DSP_Lib_TestSuite/platform/startup_generic.S

What should i do to solve this problem?

Regards,
Linh Phan

0 Likes

In your ModusToolbox project, hope you have selected atleast one BSP in the Library Manager. Please share your ModusToolbox project so that I can have a look at your setup.

libmanager.png

Regards,
Dheeraj

0 Likes