CMSIS_5 | CMSIS Version 5 Development Repository | Frontend Framework library

 by   ARM-software C Version: 5.9.0 License: Apache-2.0

kandi X-RAY | CMSIS_5 Summary

kandi X-RAY | CMSIS_5 Summary

CMSIS_5 is a C library typically used in User Interface, Frontend Framework, React applications. CMSIS_5 has no bugs, it has no vulnerabilities, it has a Permissive License and it has medium support. You can download it from GitHub.

The following is an list of all CMSIS components that are available.
Support
    Quality
      Security
        License
          Reuse

            kandi-support Support

              CMSIS_5 has a medium active ecosystem.
              It has 928 star(s) with 1046 fork(s). There are 44 watchers for this library.
              OutlinedDot
              It had no major release in the last 12 months.
              There are 177 open issues and 692 have been closed. On average issues are closed in 373 days. There are 21 open pull requests and 0 closed requests.
              It has a neutral sentiment in the developer community.
              The latest version of CMSIS_5 is 5.9.0

            kandi-Quality Quality

              CMSIS_5 has 0 bugs and 0 code smells.

            kandi-Security Security

              CMSIS_5 has no vulnerabilities reported, and its dependent libraries have no vulnerabilities reported.
              CMSIS_5 code analysis shows 0 unresolved vulnerabilities.
              There are 0 security hotspots that need review.

            kandi-License License

              CMSIS_5 is licensed under the Apache-2.0 License. This license is Permissive.
              Permissive licenses have the least restrictions, and you can use them in most projects.

            kandi-Reuse Reuse

              CMSIS_5 releases are available to install and integrate.
              It has 15708 lines of code, 756 functions and 79 files.
              It has high code complexity. Code complexity directly impacts maintainability of the code.

            Top functions reviewed by kandi - BETA

            kandi's functional review helps you automatically verify the functionalities of the libraries and avoid rework.
            Currently covering the most popular Java, JavaScript and Python libraries. See a Sample of CMSIS_5
            Get all kandi verified functions for this library.

            CMSIS_5 Key Features

            No Key Features are available at this moment for CMSIS_5.

            CMSIS_5 Examples and Code Snippets

            No Code Snippets are available at this moment for CMSIS_5.

            Community Discussions

            QUESTION

            LLVM linker places stack in the wrong place
            Asked 2022-Feb-08 at 09:57

            I am trying to link Cortex-M4 firmware with clang + lld. The gcc build works fine. I am using the stock CMSIS linker script with only RAM & ROM size adjusted (bases are the same). Beginning of the script (without comments):

            ...

            ANSWER

            Answered 2022-Feb-08 at 09:57

            I fixed it by removing COPY and adding NOLOAD to the stack section. It builds and runs fine both with gcc and clang.

            Source https://stackoverflow.com/questions/70097305

            QUESTION

            Shift 1 and multiply vs direct shift
            Asked 2021-Oct-31 at 00:31

            I came across code similar to this in the ARM CMSIS-NN library:

            ...

            ANSWER

            Answered 2021-Oct-30 at 23:58

            It is always sign correct and forces the use of the proper FPU instructions and works with any type of data.

            Source https://stackoverflow.com/questions/69782975

            QUESTION

            How to cast unsigned integer to enum using CMSIS API
            Asked 2020-Sep-07 at 11:37

            I am using CMSIS API in my C program for ARM Cortex-M CPU.
            CMSIS defines NVIC_DisableIRQ function as

            ...

            ANSWER

            Answered 2020-Sep-07 at 11:37

            Assuming that SCB->ICSR -16 results in a uint32_t result, then you can't assign that to an enum variable (10.3) nor are you allowed to cast it to an enum (10.5). This is because enums have implementation-defined size and signedness.

            I suppose there might be various dirty tricks to dodge MISRA, but that defeats the rather sound rationale of these rules, which boil down to: don't use signed operands all over your code to make it go haywire in various subtle and severe ways. Such as changing the default compiler enum type causing all interrupts to change behavior - that is not good - dangerous as can be.

            The root of the problem is the enum type and CMSIS function __NVIC_DisableIRQ that requires an enum. If that one had been written differently, we could have used unsigned types. Pretty strange that sloppy non-MISRA compliant libraries are still getting rolled out in the year 2020.

            I would suggest that you drop that function and write a custom one. Most of these functions are just wrappers around simple single-line assembler instructions or register writes anyway, so if you have access to the function implementation, it might not be much of an effort.

            Note that MISRA-C (10.5) allows casts from enum to unsigned, so if you make an API based on uint32_t you may still be able to pass on the enum values by casting them.

            Source https://stackoverflow.com/questions/63775356

            QUESTION

            Platform configuration lost between _start and main
            Asked 2020-Aug-26 at 06:54

            ANSWER

            Answered 2020-Aug-25 at 20:16

            Global variables are initialized after your function is executed. So any modification to variables that are in .data and .bss segments will be lost and overwritten by the static initialization routine.

            Drop the method you are doing and use the gcc non-portable extension __attribute__((__constructor__)) to execute a function before main but after static initialization or alternatively add the address of the function to the .init section. Links newlib/arm/crt0.S gcc function attributes newlib/init.c gcc initialization

            A pseudocode example to illustrate what is going on:

            Source https://stackoverflow.com/questions/63585600

            QUESTION

            Using NEON instructions to speed up cascaded biquads - how it works?
            Asked 2020-Jul-21 at 11:40

            I am trying to understand how the cascaded biquad filtering is optimized for Arm processors in CMSIS using Neon extensions. The code is ifdefed under #if defined(ARM_MATH_NEON) here, and documentation is here.

            The NEON intrinsics are used when there are more than 4 biquads cascaded. I am puzzled how could any kind of parallel instruction execution be done if output from one biduaq is fed as input to the next one? Could anyone explain what is done in parallel in that peace of code?

            ...

            ANSWER

            Answered 2020-Jul-17 at 00:27

            Here’s the formula from the documentation:

            Source https://stackoverflow.com/questions/62939860

            QUESTION

            CMake Error: CMake was unable to find a build program corresponding to "Unix Makefiles". CMAKE_MAKE_PROGRAM is not set. in Ubuntu
            Asked 2020-Jul-01 at 04:37

            Is there anyone know this CMake build issue? I saw several similar question, but they are on Window

            In my case,

            • OS: Ubuntu 16.04
            • CMake version: 3.11

            When I write terminal below

            cmake -DROOT="/home/kyuhwanyeon/workspace/2000_CMSIS_ws/CMSIS_5" -DCMAKE_PREFIX_PATH="/home/kyuhwanyeon/gcc-arm-none-eabi-9-2020-q2-update/" -DCMAKE_TOOLCHAIN_FILE="/home/kyuhwanyeon/workspace/2000_CMSIS_ws/CMSIS_5/CMSIS/DSP/gcc.cmake" -DARM_CPU="cortex-m7" -G "Unix Makefiles" ..

            Then the result,

            ...

            ANSWER

            Answered 2020-Jul-01 at 04:37

            The add_link_options command was not available in CMake 3.11. You can read this version of the CMake manual here: https://cmake.org/cmake/help/v3.11/manual/cmake-commands.7.html and see that it's not listed.

            You'll need a newer version of CMake in order to build this software.

            You should tell the author of the software that they should specify the correct minimum version of CMake their CMakeFile.txt file requires, so that the errors are more clear. If they'd specified that they required CMake 3.13 (where this option was introduced) or better then you'd have received a message that you needed to upgrade CMake.

            Source https://stackoverflow.com/questions/62668112

            QUESTION

            Does ARM assume that all Cortex-M microcontrollers are little-endian?
            Asked 2020-May-27 at 22:57

            I am currently working on generating C++ code from SVD files.

            While researching what I could assume on bit-field layout in the ARM Application Binary Interface, I came across ARM's official C header file for the Cortex-M7 core (commit 10a6d292f2 at the time of writing).

            It contains the following code:

            ...

            ANSWER

            Answered 2020-May-27 at 22:57

            While other architectures have/do have a bit endianness as well as byte/word endianness arm does not as is clearly stated and shown in picture for in their documentation. But 31 is always bit 31 independent of endianness what byte address bit 31 lands in is what is affected by (byte addressable address) endianness and if it is a register then

            The endianness setting only applies to data accesses. Instruction fetches are always little endian.

            All accesses to the SCS are little endian

            Default endianness is chosen by the chip vendor not ARM:

            ARMv7-M supports a selectable endian model in which, on a reset, a control input determines whether the endianness is big endian (BE) or little endian (LE).

            The AIRCR.ENDIANNESS bit indicates the endianness

            Bits[10:8] reset to 0b000 , see register description for more information.

            cortex-m7

            Support for ARMv7-M big-endian byte-invariant or little-endian accesses.

            I had that backward in my comments, armv7m does show byte invariant, or BE-8 using an arm term.

            So the strap pin is not called out in the cortex-m7 trm, didnt look at the m3, m4, m8.

            The chip vendor has the biggest role here in how the chip works and what strap options or other compile time options were made for the core. Then their is their implementation and how well it does or doesn't conform, only the stuff in arms domain is within arms control, outside that it is chip vendor (including bit endianness).

            So registers within arms domain should be little endian (if less than word addressable) and bit 31 is bit 31 in the same byte address (if byte addressable).

            bit-fields have nothing to do with any of this they are implementation defined by the compiler author and versions of the language spec (C or C++) have evolved over time but it is still a really bad idea to use bitfields, you are not that tight on memory if you are using a compiler, the 1970s are over. You should never point structs nor unions across compile domains as those are implementation defined as well and not target defined nor language defined. (I use examples like these as interview questions to test the candidates experience and knowledge of the language). ARM and the chip vendors will clearly and legally state where their code should run and that they have no responsibility for the quality or failures from that code, basically it is all on you, so use code like that with care, and protect yourself, esp if you see this bitfield struct union thing (I normally toss the whole library if they can't get that part right what else to I have to dig for).

            So you cannot really devise any theories about what you see in bitfield based code, read the (good/better) documentation from ARM (meaning the architectural reference manual and the technical reference manual. AMBA/AXI manuals. The programmers references have been problematic) as well as whatever the chip vendor provides which is often not detailed at that level, and then do experiments for that chip and that core and make no assumptions about other chips from that vendor nor that core used in other products with that core same vendor or not.

            The safe play is to go little endian with almost anything arm. xscale is/was an exception I think Marvell bought those from Intel, as well as mixing in cores they buy from arm directly. I seem to remember the xscale I used could be used little endian, making a big endian gcc toolchain was a nightmare at best. I have not seen any cortex-ms from the major players, I have many but not all of course, st, nxp, atmel so far I have only seen little endian. ti has a cortex-r that they offer big or little and you can't switch but those are not cortex-ms.

            Stick with little endian with the cortex-ms, if you get screwed by a vendor, 1) that product wont last or was made for a specific customer 2) Blacklist that vendor for that kind of behavior. Otherwise you should have a happy life and not have to mess with toolchains not working be8 vs be32, internal core registers vs bus accesses to the outside vs external to the core registers implemented by the chip vendor. There is nothing to indicate that ARM will change it stance on endianness, it would be a bad, possibly fatal, move at this point, think of the endian choices you see in the documentation as marketing bullet points, yes we support big endian and little endian, and not features you would actually use.

            Source https://stackoverflow.com/questions/61701973

            QUESTION

            How do you use CMSIS without an IDE?
            Asked 2020-Feb-11 at 14:21

            I am working with STM32F103C8T6 and would like to use CMSIS, which is essentially just register definitions and no code, to make my life easier while still staying at a low level. The problem is that I have no idea how to install the library for use on the command line with Makefile. All documentation seems to be bound with a vendor-specific IDE like STM32CubeIDE.

            I suppose the first thing to do is to download the CMSIS library, which I found on GitHub. However, after unzipping ARM.CMSIS.5.6.0.pack I found no files named stm32f10x.h. I spend some more time and found a CMSIS pack for the specific MCU I'm using, but it doesn't contain core_cm3.h, which however presents in ARM.CMSIS.5.6.0.pack. The document says I need to include both to my project, so do I need to copy the files downloaded from different places to my project, or what?

            As a bonus question: what is the relationship between CMSIS and Keli? The device-specific CMSIS pack is downloaded from www.keil.com, but I don't want to use Keil MDK for now, as it appears to be a commercial product, and the GNU Arm toolchain is serving me pretty well.

            Edit: I should have been more specific from the beginning, but now let's focus on how to build the Basic CMSIS Example as a minimal, complete and verifiable example.

            What I have done:

            1. Download and unzip CMSIS-Core and CMSIS-DFP to /Users/nalzok/Developer/CMSIS/ARM.CMSIS.5.6.0/ and /Users/nalzok/Developer/CMSIS/Packs/Keil.STM32F1xx_DFP.2.3.0/, respectively.
            2. Create a file named main.c, and copy the content of the basic example to it.
            3. Add #define STM32F10X_MD on the very first line to specify the chip.
            4. Fix typos: replace the : on line 31 to ;, and replace line 33 to timer1_init (42);.
            5. Build and get an error
            ...

            ANSWER

            Answered 2020-Feb-10 at 23:48

            For the part of CMSIS your are referring to, some is supplied by ARM (CMSIS core) and some is supplied by your chip vendor (Device Family Pack). As you have discovered, CMSIS software packs are just zip files by another name. You may unzip them wherever you wish. As you are aware, core CMSIS and most of the vendor specific part consists of just header files. It is then necessary to include the proper directories in the compiler include path, typically using -I... command line options.

            One type of vendor software pack is called a Device Family Pack. In addition to vendor specific peripheral definitions, they usually contain start up code and often times linker scripts that match the layout of the SOC memory. These are worth finding and will save the work of vector table layout and other such low level code.

            For the bonus: Keil is a maker of software tools and is owned by ARM. The nicer features of CMSIS software packs, like distributing and updating them over a network, are supported by the Keil IDE and Keil maintains a repository of common SOC packs. I also usually use the GNU compiler, but have used Keil and its built-in CMSIS awareness and software pack availablity to good effect. I have even built a few software packs for custom work. I suggest a continued reading of the CMSIS documentation paying some attention to the section on packs. You don't have to have an IDE that manages the packs for you. Since they are simply zip files, you undertake that task yourself.

            Source https://stackoverflow.com/questions/60158918

            Community Discussions, Code Snippets contain sources that include Stack Exchange Network

            Vulnerabilities

            No vulnerabilities reported

            Install CMSIS_5

            You can download it from GitHub.

            Support

            Contributions are accepted under Apache 2.0. Only submit contributions where you have authored all of the code.
            Find more information at:

            Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items

            Find more libraries
            CLONE
          • HTTPS

            https://github.com/ARM-software/CMSIS_5.git

          • CLI

            gh repo clone ARM-software/CMSIS_5

          • sshUrl

            git@github.com:ARM-software/CMSIS_5.git

          • Stay Updated

            Subscribe to our newsletter for trending solutions and developer bootcamps

            Agree to Sign up and Terms & Conditions

            Share this Page

            share link