]> begriffs open source - cmsis/log
cmsis
6 years agoDoxygen: Fixed input file for Core(A).
Jonatan Antoni [Tue, 3 Sep 2019 11:37:57 +0000 (13:37 +0200)]
Doxygen: Fixed input file for Core(A).

Change-Id: Ic32c3526ef8c0f85d0cf2ea312df4e483efe7af7

6 years agoCclass="IoT Service" added
reinhardkeil [Mon, 2 Sep 2019 06:21:47 +0000 (08:21 +0200)]
Cclass="IoT Service" added

6 years agoreworked __NVIC_SetVector(), __NVIC_GetVector() in core CM0, CM0+ include files ...
GuentherMartin [Wed, 21 Aug 2019 09:41:14 +0000 (11:41 +0200)]
reworked __NVIC_SetVector(), __NVIC_GetVector() in core CM0, CM0+ include files (#655).
 - checked that the code works for ARMCC, ARMCLANG and GCC.

6 years agoreworked __NVIC_SetVector(), __NVIC_GetVector() in core_cm*.h include files (#655).
GuentherMartin [Tue, 20 Aug 2019 05:45:18 +0000 (07:45 +0200)]
reworked __NVIC_SetVector(), __NVIC_GetVector() in core_cm*.h include files (#655).

6 years agoUpdate README.md
Reinhard Keil [Wed, 14 Aug 2019 13:59:47 +0000 (15:59 +0200)]
Update README.md

6 years agoUpdate README.md
Reinhard Keil [Wed, 14 Aug 2019 13:58:57 +0000 (15:58 +0200)]
Update README.md

6 years agoCore(M): Added additional parentheses to MPUv8 function-like-macro parameters.
Jonatan Antoni [Fri, 9 Aug 2019 11:01:38 +0000 (13:01 +0200)]
Core(M): Added additional parentheses to MPUv8 function-like-macro parameters.

Change-Id: I709f1977c92330eb301ffa85ba00ba4655f31fb1

6 years agoCMSIS-NN: Added missing intrinsics for Cortex-A.
Christophe Favergeon [Mon, 5 Aug 2019 07:09:19 +0000 (09:09 +0200)]
CMSIS-NN: Added missing intrinsics for Cortex-A.

6 years agoGCC/Clang: cope with __set_CPSR changing condition codes
Kevin Bracey [Mon, 14 Jan 2019 08:03:14 +0000 (10:03 +0200)]
GCC/Clang: cope with __set_CPSR changing condition codes

Add a "cc" clobber to __set_CPSR to reflect the fact that it could be
changing the condition codes.

6 years agoIAR: RRX doesn't modify flags, but has flags as input
Kevin Bracey [Wed, 9 Jan 2019 13:51:08 +0000 (15:51 +0200)]
IAR: RRX doesn't modify flags, but has flags as input

IAR assembler version of RRX had a "cc" clobber for RRX, but this is
unneeded - it doesn't modify the condition codes - it's not "RRXS".

Instead the assembler should have a volatile, as already seen in GCC and Clang
versions to reflect the CC input to the instruction.

CMSIS intrinsics use "volatile" attributes to force ordering of
instructions that work on the PSR, either input or output.

A "cc" clobber does not have that effect, at least in gcc; it only
indicates "changes condition codes", not "reads condition codes", so
CC-clobbering instructions can be reordered. This reflects that in
general the compilers make no guarantees about preserving flag state
between assembler sequences, meaning that __RRX will always be prone to
unreliability.

But the volatile marker increases the chances of stuff coming out in the
right order.

6 years agoGCC: add WFI/WFE compiler barriers
Kevin Bracey [Wed, 9 Jan 2019 12:22:32 +0000 (14:22 +0200)]
GCC: add WFI/WFE compiler barriers

Add "memory" clobber to __WFI and __WFE. Architecturally these should
always be immediately preceded by a __DSB (eg to ensure the write buffer
is drained). Without a barrier on WFI, the following compiler reordering
would be permitted:

     __DSB();             __DSB();
     __WFI();       ->    val_in_ram = 3;
     val_in_ram = 3;      __WFI();

This could cause some power issues with the external bus not being
idle.

The added barrier should have no impact on code size, assuming these
instructions are always accompanied by DSB, as DSB does have its own
memory clobber already.

SEV not modified as there are no issues with the equivalent reordering;
we only need the SEV to not be reordered before the DSB, which is
ensured by volatile.

6 years agoGCC: SSAT and USAT need asm volatile
Kevin Bracey [Fri, 11 Jan 2019 10:23:24 +0000 (12:23 +0200)]
GCC: SSAT and USAT need asm volatile

Both SSAT and USAT modify the Q flag, so need something to order them
with respect to reads of the PSR. Add `volatile`, matching SADD8 et al.

Also SSAT16 and USAT16.

Change-Id: Ia2a5669609fd9533ccedc8dbdae791ec5d86b054

6 years agoIAR: LDRT et al must be asm volatile
Kevin Bracey [Wed, 9 Jan 2019 13:23:03 +0000 (15:23 +0200)]
IAR: LDRT et al must be asm volatile

As these functions take volatile pointers, the API is promising that the
loads and stores will happen, so the assembler statements need volatile
qualifiers too.

If the functions took non-volatile pointers, or had a separate
non-volatile overload for C++, then the volatile could be omitted - the
instructions are normal loads and stores with no side-effects.

GCC and clang assembler already is "asm volatile", and armcc uses
intrinsics.

Change-Id: I4f5ce19ad732caa03ea9110501f0634175c85d4e

6 years agoGCC: remove unneeded asm volatiles
Kevin Bracey [Wed, 9 Jan 2019 12:34:02 +0000 (14:34 +0200)]
GCC: remove unneeded asm volatiles

Many assembler intrinsics are pure - they read only the input registers,
write only the output registers, and change no PSR flags.

Remove volatile from all such intrinisics to improve potential
optimisation.

   REV, REV16, REVSH, RBIT
   QADD8, SHADD8, UQADD8, UHADD8
   QSUB8, SHSUB8, UQSUB8, UHSUB8
   QADD16, SHADD16, UQADD16, UHADD16
   QSUB16, SHSUB16, UQSUB16, UHSUB16
   QASX, SHASX, UQASX, UHASX
   QSAX, SHSAX, UQSAX, UHSAX
   USAD8, USADA8
   UXTB16, UXTAB16, SXTB16, SXTAB16
   SMMLA

Change-Id: Id7e245e621dfc78b027db89f073102cf99d92174

6 years agoGCC: remove stray EMBEDDED_ASM annotations
Kevin Bracey [Fri, 11 Jan 2019 13:50:05 +0000 (15:50 +0200)]
GCC: remove stray EMBEDDED_ASM annotations

REV16 for Core_A/cmsis_gcc.h had a __NO_EMBEDDED_ASM test and section
directive - presumably a copy-paste error.

Align with other intrinsics and Core REV16 version.

6 years agoCore(M): Add LDA/STL memory clobbers
Kevin Bracey [Fri, 18 Jan 2019 12:43:22 +0000 (14:43 +0200)]
Core(M): Add LDA/STL memory clobbers

Constrain compiler reordering around acquire and release accesses by
adding memory clobbers to assembler fragments for LDA/STL and
LDAEX/STLEX.

Fixes #494.

Change-Id: Icdf7a4007e34a731f4de0bdc6474e4e9807d32f2

6 years agoRevert "Core(M): Added memory clobbers to get_PRIMASK on GCC to prevent (erroneous...
Kevin Bracey [Thu, 17 Jan 2019 14:19:40 +0000 (16:19 +0200)]
Revert "Core(M): Added memory clobbers to get_PRIMASK on GCC to prevent (erroneous) instruction reordering. [Issue #261]"

GCC bug was fixed in October 2017 - change went to GCC 6.5, 7.3 and 8.1.

Remove the unnecessary memory clobbers to improve optimisation, on the
assumption that people will have updated their compilers.

This reverts commit 6261e0c956188bf51065b84e6edfe5ffda2c87e7.

Change-Id: I0e6fff7910c8cdc0d50176cabc9c03369083ebe2

6 years agoARMCC: remove explicit DSB/DMB/ISB barriers
Kevin Bracey [Thu, 17 Jan 2019 13:53:51 +0000 (15:53 +0200)]
ARMCC: remove explicit DSB/DMB/ISB barriers

ARMCC documentation states that the __dsb etc intrinsics act as
optimisation barriers. Even though that's a bit woolly about the exact
equivalent barrier intrinsic, take its word that it's doing the right
thing.

It seems safe to assume that it is, because the __schedule_barrier()
intrinsics here are not actually sufficient for DSB and DMB. They need a
__memory_barrier(). If no-one has seen any problems, then presumably
they already include one.

Change-Id: I5b72e8c11b52d8b14bfd3d906bcb178ab33425f3

6 years agoCore(A)/armclang: Remove ISB/DSB/DMB barriers
Kevin Bracey [Thu, 17 Jan 2019 13:39:17 +0000 (15:39 +0200)]
Core(A)/armclang: Remove ISB/DSB/DMB barriers

Core(M) versions of files already do not have explicit barriers, so this
makes Core(A) consistent - the built-ins are specified as having barriers
anyway.

Change-Id: Icc661c0ea053fb17523732f6495d5d0577a94a86

6 years agoCore(M): Fixed MPUv7 inner cache policy evaluation in ARM_MPU_ACCESS_NORMAL definitio...
Jonatan Antoni [Tue, 30 Jul 2019 09:42:06 +0000 (11:42 +0200)]
Core(M): Fixed MPUv7 inner cache policy evaluation in ARM_MPU_ACCESS_NORMAL definition. (#532)

Change-Id: Ie796c33e671e410c27602961694aaae0bf5e490a

6 years agoDriver: Added template for WiFi Driver.
Jonatan Antoni [Tue, 23 Jul 2019 14:17:42 +0000 (16:17 +0200)]
Driver: Added template for WiFi Driver.

Change-Id: Icd2d86e0a4aa4d5c6ab9a7f83fe234678202a02a

6 years agoDriver: Added template for Driver NAND.
Jonatan Antoni [Tue, 23 Jul 2019 14:03:26 +0000 (16:03 +0200)]
Driver: Added template for Driver NAND.

Change-Id: I8f50d19d59f1bc515cdc5047b70cb57d2ba6ce60

6 years agoCore(M): Enhanced MVE support for Armv8.1-MML
Jonatan Antoni [Tue, 23 Jul 2019 13:43:03 +0000 (15:43 +0200)]
Core(M): Enhanced MVE support for Armv8.1-MML
- Added __MVE_USED macro.
- Enable CP10/CP11 during SystemInit if MVE is used.

Change-Id: I0ea0b16b99bd166df334d2865ead09bcb6c406dc

6 years agoPack: Updated file version of Cortex-M device startup components.
Jonatan Antoni [Tue, 23 Jul 2019 12:24:11 +0000 (14:24 +0200)]
Pack: Updated file version of Cortex-M device startup components.

Change-Id: Ia25d6119880775ec9b3433a84f5617ac4e8c41f9

6 years agoDoxygen: Enhanced NVIC exception table with standardized handler function names.
Jonatan Antoni [Wed, 17 Jul 2019 15:01:25 +0000 (17:01 +0200)]
Doxygen: Enhanced NVIC exception table with standardized handler function names.

Change-Id: Ibb09ef6371cf513c7c0686df3f0beec75417812c

6 years agoDoxygen: Fixed typo in description for MSP and PSP access functions.
Jonatan Antoni [Wed, 17 Jul 2019 14:57:07 +0000 (16:57 +0200)]
Doxygen: Fixed typo in description for MSP and PSP access functions.

Change-Id: I6cd45cc161b6e06c024b65c12409b484a0e3bb3b

6 years agoCMSIS-DSP: New testing framework
Christophe Favergeon [Wed, 12 Jun 2019 11:29:14 +0000 (13:29 +0200)]
CMSIS-DSP: New testing framework
(For our internal use. In short term, we won't give support about it).
CMSIS-DSP: Update to cmake build for the testing framework
CMSIS-NN:Implementation of arm_fully_connected_s8
Use API and quantization compatible with TF Lite.

6 years agoReworked 'Interrupt Vector Remap' description.
GuentherMartin [Tue, 16 Jul 2019 06:20:31 +0000 (08:20 +0200)]
Reworked 'Interrupt Vector Remap' description.

6 years agoPack: Bump version after release.
Jonatan Antoni [Wed, 10 Jul 2019 13:52:17 +0000 (15:52 +0200)]
Pack: Bump version after release.

Change-Id: Ib7974094c13eb314bc5bdfb85eb6757be0ef1d1b

6 years agoPack: Fixed version history.
Jonatan Antoni [Wed, 10 Jul 2019 13:05:34 +0000 (15:05 +0200)]
Pack: Fixed version history.

Change-Id: I21ba0090d36ca813e4d6cb22ffa7b855c5a36170

6 years agoosThreadState for joinable threads clearified.
reinhardkeil [Wed, 10 Jul 2019 11:22:16 +0000 (13:22 +0200)]
osThreadState for joinable threads clearified.

6 years agoDoxygen:
Jonatan Antoni [Tue, 9 Jul 2019 11:44:41 +0000 (13:44 +0200)]
Doxygen:
- Aligned version of CMSIS-Zone documentation with upcoming release.
- Relaxed condition on CMSIS-Drivers, i.e. applicable to all Cortex processors.

Change-Id: Id2b81f1d87bfd70fdb404b99f903d3d1a72c8aaf

6 years agoSVDConv v3.3.27
Thorsten de Buhr [Tue, 9 Jul 2019 11:50:59 +0000 (13:50 +0200)]
SVDConv v3.3.27

fixed:
- define __SAUREGION_PRESENT (was: define __SAU_REGION_PRESENT)

6 years agoFixed version information and release history.
Jonatan Antoni [Wed, 3 Jul 2019 12:10:35 +0000 (14:10 +0200)]
Fixed version information and release history.

Change-Id: Ic39ca65be8b53761a93aa0cabd58022549803f0f

6 years agoBump pack version to 5.6.0-rc1
Jonatan Antoni [Wed, 3 Jul 2019 10:48:39 +0000 (12:48 +0200)]
Bump pack version to 5.6.0-rc1

Change-Id: Id2b0efc7d880696e516f332f9aba1adfd42aeaa4

6 years agoAdded note to osThreadTerminate
Christopher Seidl [Wed, 3 Jul 2019 09:23:18 +0000 (11:23 +0200)]
Added note to osThreadTerminate

6 years agoOverview description about the components clarified
reinhardkeil [Fri, 28 Jun 2019 15:16:12 +0000 (17:16 +0200)]
Overview description about the components clarified

6 years agoUpdate README.md
Reinhard Keil [Fri, 28 Jun 2019 15:00:24 +0000 (17:00 +0200)]
Update README.md

6 years agoUpdate README.md
Reinhard Keil [Fri, 28 Jun 2019 14:17:50 +0000 (16:17 +0200)]
Update README.md

6 years agoUpdate README.md
Reinhard Keil [Fri, 28 Jun 2019 14:14:58 +0000 (16:14 +0200)]
Update README.md

Added CMSIS component overview

6 years agoUpdated general introduction
Christopher Seidl [Fri, 28 Jun 2019 10:50:18 +0000 (12:50 +0200)]
Updated general introduction

6 years agoRevert "Core(M): Fixed definition of Armv8-M MPU_Type to be C99 compliant."
Jonatan Antoni [Thu, 27 Jun 2019 11:46:40 +0000 (13:46 +0200)]
Revert "Core(M): Fixed definition of Armv8-M MPU_Type to be C99 compliant."

This reverts commit 2a132fa7f135cfb231579ecd62096913d42accb1.

The change breaks compatibility with released software components.
Anonymous structs/unions are not strict C99 but available as an extension. Its a reasonable feature to be used. The code is more clean and readable.

Change-Id: I26be856a90c6326dbb0e6cddaf13dea49a7bda9b

6 years agoCoreValidation: Fixup to CV_CoreFunc suite.
Jonatan Antoni [Thu, 27 Jun 2019 06:32:49 +0000 (08:32 +0200)]
CoreValidation: Fixup to CV_CoreFunc suite.

Change-Id: I92c3566864944d1c8c4ed1b98c54a1cf6baa5788

6 years agoCMSIS Driver WiFi: Updated version information (removed beta)
Robert Rostohar [Thu, 27 Jun 2019 05:49:24 +0000 (07:49 +0200)]
CMSIS Driver WiFi: Updated version information (removed beta)

6 years agoMinor tweak
Christopher Seidl [Tue, 25 Jun 2019 11:44:03 +0000 (13:44 +0200)]
Minor tweak

6 years agoClarified the scope of CMSIS for Arm Cortex-based microcontrollers
Christopher Seidl [Tue, 25 Jun 2019 11:42:23 +0000 (13:42 +0200)]
Clarified the scope of CMSIS for Arm Cortex-based microcontrollers

6 years agoUpdate of revision history for CMSIS-NN
Felix Johnny [Tue, 25 Jun 2019 08:55:12 +0000 (10:55 +0200)]
Update of revision history for CMSIS-NN

6 years agoUpdated all versions and change histories for upcoming release 5.6.0
Jonatan Antoni [Tue, 25 Jun 2019 11:01:11 +0000 (13:01 +0200)]
Updated all versions and change histories for upcoming release 5.6.0

Change-Id: I37bfdf5fbaf187d6c4e919bba8e664709b960df2

6 years agoDoxyGen: Added documentation for new Core(M) provisions for C startup code.
Jonatan Antoni [Tue, 25 Jun 2019 11:00:34 +0000 (13:00 +0200)]
DoxyGen: Added documentation for new Core(M) provisions for C startup code.

Change-Id: I7824070cb1ff1619fd36f90b15ad23d30007b811

6 years agoUpdated history files for new CMSIS-DSP version.
Christophe Favergeon [Tue, 25 Jun 2019 07:29:51 +0000 (09:29 +0200)]
Updated history files for new CMSIS-DSP version.

6 years agoWiFi Driver API 1.0.0 (removed beta, bumped up pack minor version)
Robert Rostohar [Mon, 24 Jun 2019 08:44:56 +0000 (10:44 +0200)]
WiFi Driver API 1.0.0 (removed beta, bumped up pack minor version)

6 years agoCMSIS-Driver WiFi documentation typo correction
Robert Rostohar [Tue, 11 Jun 2019 06:54:22 +0000 (08:54 +0200)]
CMSIS-Driver WiFi documentation typo correction

6 years agoUpdate README.md
Reinhard Keil [Wed, 5 Jun 2019 20:02:08 +0000 (22:02 +0200)]
Update README.md

6 years agoUpdate README.md
Reinhard Keil [Wed, 5 Jun 2019 19:59:55 +0000 (21:59 +0200)]
Update README.md

6 years agoCoreValidation: Added -Wpedantic to GCC compiler options.
Jonatan Antoni [Mon, 3 Jun 2019 15:29:48 +0000 (17:29 +0200)]
CoreValidation: Added -Wpedantic to GCC compiler options.

Change-Id: I8bda8f335837706f25ed11cb596d2e9d7735ee2e

6 years agoCore(M): Fixed definition of Armv8-M MPU_Type to be C99 compliant.
Jonatan Antoni [Mon, 3 Jun 2019 15:28:10 +0000 (17:28 +0200)]
Core(M): Fixed definition of Armv8-M MPU_Type to be C99 compliant.
- Not using anonymous struct/unions.

Change-Id: I08bce08d08c684f13bd43b04ab145d9b0ba20305

6 years agoUpdated WiFi Driver API 1.0.0-beta
Robert Rostohar [Fri, 31 May 2019 10:48:06 +0000 (12:48 +0200)]
Updated WiFi Driver API 1.0.0-beta

Minor change (added const to config parameter in function Activate)

6 years agoAdded missing ACTLR register.
GuentherMartin [Fri, 31 May 2019 08:37:13 +0000 (10:37 +0200)]
Added missing ACTLR register.
corrected differences to core_cm3.

6 years agoRTOS2: minor improvements in templates
Robert Rostohar [Thu, 23 May 2019 08:52:45 +0000 (10:52 +0200)]
RTOS2: minor improvements in templates

6 years agoCoreValidation: Aligned GNU linker scripts with templates.
Jonatan Antoni [Wed, 22 May 2019 14:40:32 +0000 (16:40 +0200)]
CoreValidation: Aligned GNU linker scripts with templates.

Change-Id: I06f65b96dfffdb1970d5cb22e66e45721154c70a

6 years agoCoreValidation: Fixed GCC tests and linker scripts.
Jonatan Antoni [Wed, 22 May 2019 12:30:58 +0000 (14:30 +0200)]
CoreValidation: Fixed GCC tests and linker scripts.

Change-Id: Ie015f7a066f829d63ce51e7563431accf1d5314c

6 years agoCoreValidation: Fixed Cortex-M0plus build config.
Jonatan Antoni [Wed, 22 May 2019 07:04:12 +0000 (09:04 +0200)]
CoreValidation: Fixed Cortex-M0plus build config.

Change-Id: I7dc71d3ba12b2e9e1930aea62cacb7adc0758ade

6 years agoCoreValidation: Fixed include path case for Cortex-A targets.
Jonatan Antoni [Tue, 21 May 2019 13:33:04 +0000 (15:33 +0200)]
CoreValidation: Fixed include path case for Cortex-A targets.

Change-Id: If088e4902e02ea896e97d6f44a6667eacd901104

6 years agoCoreValidation: Fixed RAM size in GNU linker script.
Jonatan Antoni [Tue, 21 May 2019 13:16:42 +0000 (15:16 +0200)]
CoreValidation: Fixed RAM size in GNU linker script.

Change-Id: Icb0e5c53cd02f67cf918634e36a89ae980e6f7cf

6 years agoCoreValidation: Updated tests to use reworked device startup code.
Jonatan Antoni [Tue, 21 May 2019 12:32:32 +0000 (14:32 +0200)]
CoreValidation: Updated tests to use reworked device startup code.

Change-Id: I360d253e3659ba91ddeb5baedc0d3408015a355e

6 years agoUpdated WiFi Driver API 1.0.0-beta
Robert Rostohar [Tue, 21 May 2019 07:29:55 +0000 (09:29 +0200)]
Updated WiFi Driver API 1.0.0-beta

Simplified API:
 - removed Ad-hoc mode
 - merged Configure into Activate

6 years agoDevice: Fixed filename case of scatter files.
Jonatan Antoni [Mon, 20 May 2019 15:28:51 +0000 (17:28 +0200)]
Device: Fixed filename case of scatter files.

Change-Id: I3b9e53dd14a558e2263cfcd29c487b011551f95a

6 years agoRTOS2/RTX: Updated all examples to use C Startup variant.
Jonatan Antoni [Mon, 20 May 2019 10:13:15 +0000 (12:13 +0200)]
RTOS2/RTX: Updated all examples to use C Startup variant.

Change-Id: Ie116cb90fd09da7aba723ac03752600adc6dbe96

6 years agoDevice: Added generic C startup for all Cortex-M family devices.
Jonatan Antoni [Mon, 20 May 2019 09:30:09 +0000 (11:30 +0200)]
Device: Added generic C startup for all Cortex-M family devices.

Change-Id: I6e856a2c5fce7a5d83c892c87741593243df31f3

6 years agoCore(M): Adopted GCC __cmsis_startup scatter loading to be clib independent.
Jonatan Antoni [Fri, 17 May 2019 08:51:30 +0000 (10:51 +0200)]
Core(M): Adopted GCC __cmsis_startup scatter loading to be clib independent.

Change-Id: Ia8d5c52dbbd1142be10fa6ab9f87550ae5a4f8a7

6 years agoCore(A): Fixed GCC __ASM macro __asm. (#593)
Jonatan Antoni [Fri, 17 May 2019 08:16:23 +0000 (10:16 +0200)]
Core(A): Fixed GCC __ASM macro __asm. (#593)

Change-Id: I7c093ee59133665b438aaee2a78ac7a33b615001

6 years agoDevices: Moved Core(A) memory and system config files to avoid include path issues
Daniel Brondani [Wed, 15 May 2019 14:11:43 +0000 (16:11 +0200)]
Devices: Moved Core(A) memory and system config files to avoid include path issues

6 years agoDevices: Updated Core(A) default memory regions and MMU configurations
Daniel Brondani [Wed, 15 May 2019 14:00:21 +0000 (16:00 +0200)]
Devices: Updated Core(A) default memory regions and MMU configurations

6 years agoCore(A): Fixed __FPU_Enable function not to mess registers. (#589)
Jonatan Antoni [Wed, 15 May 2019 12:38:01 +0000 (14:38 +0200)]
Core(A): Fixed __FPU_Enable function not to mess registers. (#589)
- Enhanced function to use only two temporary registers.
- Added used registers to clobber list.

Change-Id: If7c9462ed4424781e40379fbe12a5e4e3257920f

6 years agoCoreValidation: Added test case for __FPU_Enable.
Jonatan Antoni [Wed, 15 May 2019 12:35:31 +0000 (14:35 +0200)]
CoreValidation: Added test case for __FPU_Enable.

Change-Id: I7d478282cb0f85a348866b411ae0a3db724b4f5c

6 years agoCMSIS RTOS2 Documentation: updated example for Mutex creation with user-defined alloc...
Robert Rostohar [Mon, 13 May 2019 10:58:16 +0000 (12:58 +0200)]
CMSIS RTOS2 Documentation: updated example for Mutex creation with user-defined allocation

6 years agoMerge pull request #572 from clamar01/develop
Christophe Favergeon [Mon, 13 May 2019 07:00:42 +0000 (09:00 +0200)]
Merge pull request #572 from clamar01/develop

New NEON float32 algorithms for Cortex A5 with armDS project

6 years agoUpdated code example as reuested in SDMDK-8496.
Christopher Seidl [Fri, 10 May 2019 06:13:35 +0000 (08:13 +0200)]
Updated code example as reuested in SDMDK-8496.

6 years agoCMSIS Driver SAI: typo correction in comment
Robert Rostohar [Fri, 10 May 2019 05:58:14 +0000 (07:58 +0200)]
CMSIS Driver SAI: typo correction in comment

6 years ago__NVIC_EnableIRQ compiler barriers
Kevin Bracey [Wed, 16 Jan 2019 13:34:55 +0000 (15:34 +0200)]
__NVIC_EnableIRQ compiler barriers

__NVIC_DisableIRQ and __NVIC_EnableIRQ can be used to function as a
mutex-style protection lock against a particular interrupt handler,
similar to __disable_irq and __enable_irq for all interrupts.

However, __NVIC_EnableIRQ, unlike a mutex unlock or __enable_irq, had no
compiler barriers. Being just a volatile write, in the following code
sequence:

    NVIC_DisableIRQ(devx);
    // modify some RAM accessed by devx IRQ handler
    NVIC_EnableIRQ(devx);

there would be nothing preventing the RAM accesses from moved below the
NVIC_EnableIRQ.

Add barriers to NVIC_EnableIRQ, so that the above code works the same as
a mutex or __disable_irq, without any added need to mark the shared RAM
as volatile.

Fixes issue #493

6 years agoAdd __COMPILER_BARRIER
Kevin Bracey [Wed, 16 Jan 2019 13:25:17 +0000 (15:25 +0200)]
Add __COMPILER_BARRIER

Add a macro to represent a compiler optimisation barrier - memory loads
and stores can not be reordered across this barrier.

6 years agoNVIC_SetVector: Add DSB to newer cores
Kevin Bracey [Tue, 23 Apr 2019 10:38:08 +0000 (13:38 +0300)]
NVIC_SetVector: Add DSB to newer cores

Architecturally, a barrier is required after a vector table change
to ensure that the newly-written entry is used by an
immediately-occurring exception.

Without a barrier, the following sequences could fail:

    NVIC_SetVector(irq, irq_handler);
    NVIC_EnableIRQ(irq);

or

    NVIC_SetVector(SVCall_IRQn, svc_handler);
    __SVC(0);

A DSB at the end of `NVIC_SetVector` covers both cases.

A failure due to lack of barrier in the first case has been observed on
Cortex-M7.

For earlier Cortex-M cores, ARM Application Note 321 ("ARM Cortex-M
Programming Guide to Memory Barrier Instructions") states:

    ARM recommends that the architectural requirements are adopted.

    ... architecturally a memory barrier instruction is
    required after the vector table entry is updated, and if the
    exception is to be activated immediately.

    ...

    In the Cortex-M processors, omission of the DSB or DMB instructions
    does not cause any issue in vector entry modifications.

We take this last statement to apply to the M0, M0+, M1, M3 and M4 that
the document covers, assuming further that it applies to all revisions
beyond those listed, and also to the SC000 and SC300 (as variants of the
M0 and M3).

ARM has not published similar implementation specifications for later
cores, so a DSB is added to M7, M23, M33, M35P, and the generic ARMv8-M
variants.

6 years agoCore(M): Enhanced Startup and Lowlevel init provisions.
Jonatan Antoni [Wed, 8 May 2019 14:17:09 +0000 (16:17 +0200)]
Core(M): Enhanced Startup and Lowlevel init provisions.
- Added ifdef's to allow provisions to be given externally.
- Removed extern declarations for used linker symbols.
- Added provision to rename the vector table, e.g. for IAR.
- Added default data/bss init routine for GCC.

Change-Id: I093804e4f3b2f62c56f2dabc55eae88e7cac39b9

6 years agoExpanded code example as requested in SDMDK-8496.
Christopher Seidl [Wed, 8 May 2019 12:56:28 +0000 (14:56 +0200)]
Expanded code example as requested in SDMDK-8496.

6 years agoRemoved CMSIS-Zone specific stylesheet and applied left-aligned images to the complet...
Christopher Seidl [Wed, 8 May 2019 11:56:48 +0000 (13:56 +0200)]
Removed CMSIS-Zone specific stylesheet and applied left-aligned images to the complete CMSIS documentation.

6 years agoFixed problem with new CSS file for CMSIS-Zone.
Christopher Seidl [Wed, 8 May 2019 07:53:05 +0000 (09:53 +0200)]
Fixed problem with new CSS file for CMSIS-Zone.

6 years agoRTX4: updated provisions for Arm Compiler 6 when using Cortex-M0/M0+
Robert Rostohar [Tue, 7 May 2019 10:07:42 +0000 (12:07 +0200)]
RTX4: updated provisions for Arm Compiler 6 when using Cortex-M0/M0+

6 years agoDevice: Fixed Armv8.1-MML scatter file template to use secure ram by default.
Jonatan Antoni [Tue, 7 May 2019 08:36:06 +0000 (10:36 +0200)]
Device: Fixed Armv8.1-MML scatter file template to use secure ram by default.

Change-Id: I325d047ccae3d05b4aa5480d8919fee5f2052348

6 years agoDevice: Fixed/generalized startup code for Armv8.1-MML.
Jonatan Antoni [Mon, 6 May 2019 14:29:20 +0000 (16:29 +0200)]
Device: Fixed/generalized startup code for Armv8.1-MML.

Change-Id: I547b404c9398996ac4b67fb6e1469a5339fa5583

6 years agoCore(M): Introduced provisions for compiler-independent C startup code.
Jonatan Antoni [Mon, 6 May 2019 14:28:48 +0000 (16:28 +0200)]
Core(M): Introduced provisions for compiler-independent C startup code.

Change-Id: Iee9b5a81dd778fb05736f9116f4b80b3a6dc55f7

6 years agoAdded initial CMSIS-Zone usage documentation.
Christopher Seidl [Fri, 3 May 2019 12:25:35 +0000 (14:25 +0200)]
Added initial CMSIS-Zone usage documentation.

6 years agoAdded some compiler specific intrinsics for Core A for the future
ClaudioMartino [Fri, 3 May 2019 11:14:20 +0000 (13:14 +0200)]
Added some compiler specific intrinsics for Core A for the future

6 years agoRTX5: updated revision history
Robert Rostohar [Fri, 26 Apr 2019 09:01:02 +0000 (11:01 +0200)]
RTX5: updated revision history

6 years agoRTX5: fixed osMutexRelease issue (#574 #578)
Robert Rostohar [Fri, 26 Apr 2019 05:51:54 +0000 (07:51 +0200)]
RTX5: fixed osMutexRelease issue (#574 #578)
Corrected mutex list handling when thread is owning multiple mutexes.

6 years agoREADME: Enhanced Readme with reference to Git-LFS.
Jonatan Antoni [Tue, 23 Apr 2019 09:47:06 +0000 (11:47 +0200)]
README: Enhanced Readme with reference to Git-LFS.

Change-Id: I320dbcf9a5d422632692280db84c293d05b7c726

6 years agoAdded details for osThreadJoin ..
Vladimir Marchenko [Thu, 18 Apr 2019 12:58:40 +0000 (14:58 +0200)]
Added details for osThreadJoin ..
.. which causes undefined behaviour when called
simultaneously from multiple threads.

Change-Id: I0799559312647cc2a88bd1bfce300cbd8113309a

6 years agoNew NEON float32 algorithms for Cortex A5 (TransformFunctions excluded) with armDS...
ClaudioMartino [Wed, 17 Apr 2019 13:08:03 +0000 (15:08 +0200)]
New NEON float32 algorithms for Cortex A5 (TransformFunctions excluded) with armDS project

6 years agoAdded documentation for creating SVC functions, as requested in SDCMSIS-886.
Christopher Seidl [Thu, 11 Apr 2019 12:07:54 +0000 (14:07 +0200)]
Added documentation for creating SVC functions, as requested in SDCMSIS-886.

6 years agoMinor fix-ups left from last release.
Jonatan Antoni [Wed, 10 Apr 2019 08:43:19 +0000 (10:43 +0200)]
Minor fix-ups left from last release.

Change-Id: I094ec256b39eb3672e8b43617baca970cd0c60ae

6 years agoCortex-M7: Add SCB_InvalidateICache_by_Addr
Kevin Bracey [Thu, 28 Mar 2019 14:46:51 +0000 (16:46 +0200)]
Cortex-M7: Add SCB_InvalidateICache_by_Addr