7 Replies Latest reply on Dec 30, 2019 10:53 PM by DheerajK_81

    Can't install CMSIS on ModusToolbox 2.0.0.1703-windows

    PaNe_4601741

      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. 

        • 1. Re: Can't install CMSIS on ModusToolbox 2.0.0.1703-windows
          PaNe_4601741

          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.

          • 2. Re: Can't install CMSIS on ModusToolbox 2.0.0.1703-windows
            PaNe_4601741

            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?

            • 3. Re: Can't install CMSIS on ModusToolbox 2.0.0.1703-windows
              PaNe_4601741

              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

              • 4. Re: Can't install CMSIS on ModusToolbox 2.0.0.1703-windows
                PaNe_4601741

                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.

                • 5. Re: Can't install CMSIS on ModusToolbox 2.0.0.1703-windows
                  DheerajK_81

                  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

                   

                  • 6. Re: Can't install CMSIS on ModusToolbox 2.0.0.1703-windows
                    MaPh_4503556

                    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

                    • 7. Re: Can't install CMSIS on ModusToolbox 2.0.0.1703-windows
                      DheerajK_81

                      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