Commit Graph

674 Commits (85e8a59e8451a7adc956fb5bcd3893bd9a804392)

Author SHA1 Message Date
Martin Kojtal 1014f8ca72
Merge pull request #12971 from kjbracey-arm/memorypool
MemoryPool fixes
2020-05-15 08:07:38 +02:00
Martin Kojtal e371db441c
Merge pull request #12949 from 0xc0170/feature_CMSIS_5_b5f0603d6
CMSIS: update to CMSIS 5.7.0
2020-05-14 13:21:12 +02:00
Kevin Bracey 24e7955edf MemoryPool fixes
Various deprecated methods weren't correct following recent changes.
2020-05-14 11:31:46 +03:00
Martin Kojtal 0b4b2afaf4
Merge pull request #12901 from kjbracey-arm/mailchrono
Rationalise Mail/Queue/MemoryPool timing APIs
2020-05-12 17:10:43 +02:00
Kevin Bracey 181446331e Rationalise Queue/Mail get/put APIs
To line up with MemoryPool/Mail alloc, rework naming of get/put

    Queue::get -> try_get, try_get_for
    Queue::put -> try_put, try_put_for
    Mail::get -> try_get, try_get_for
    Mail::put (no change, but assert that it works)

In the future the names `get` and `put` can be used for untimed blocking
operations. In the interim, you have to use
`try_get_for(Kernel::wait_for_u32_forever)`.

`Mail::put` differs in that it has always been a non-blocking call, but
it can be assumed to always succeed when used correctly, because the
Queue has enough room to store a pointer to every block in the
MemoryPool. It could in future be made a `void` return, similar to the
change made to `Mutex::lock`.
2020-05-12 15:17:01 +03:00
Kevin Bracey 166ada084e Rationalise MemoryPool/Mail alloc APIs
alloc APIs were generally inconsistent - take the opportunity to align with
other APIs like Semaphore.

    alloc -> try_alloc
    alloc_for -> try_alloc_for
    alloc_until -> try_alloc_until

In future the name `alloc` can be used for an untimed blocking
allocation.
2020-05-12 15:17:01 +03:00
Martin Kojtal 7149ffed11 rtos: do not include RTE_Component header
RTE_Component can't be included in the assembly file, as it is application header file
(C/C++) therefore assembler fails in this case. If the symbol RTE_CMSIS_RTOS2_RTX5_ARMV8M_NS is
needed, just define it via config. Therefore I am leaving the rest of ifdef _RTE_ there.
2020-05-12 12:10:48 +01:00
Martin Kojtal 2fae95e85e rtos: fix incorrect conflict resolution
We used previously __FPU_USED so stay with it in M33 startup file.
2020-05-12 08:10:41 +01:00
Bartek Szatkowski 640e1fd896 CMSIS/RTX: Pre-processor defines used for assembly
CMSIS repo does not support pre-processor defines, hence multiple assembly
files are added for secure/non-secure and floating point tools.
Mbed OS tools support assembly file pre-processing, but the build system
does not support multiple assembly files for each target, hence updating
the assembly files.

1. Patch RTX so irq_cm4f.S files work with no FPU targets
2. Patch RTX so irq_armv8mml.S files to work with and without FPU
2. Patch RTX so irq_armv8mml.S and irq_armv8mbl.S files to work with secure and
   non-secure builds

(cherry picked from commit 96e0689204)
2020-05-11 11:25:59 +01:00
deepikabhavnani 30597a6ab9 CMSIS/RTX: Move Idle and Timer thread stack to bss section.
In case of ARM compiler, idle and timer thread stack though assigned
to `.bss.os` section since not zero initialized are part of `data` section.

In this commit, we are moving stacks of idle and timer thread to bss
section and thereby saving ROM space.

(cherry picked from commit 9549fff786)
2020-05-11 11:22:44 +01:00
Bartek Szatkowski f7dc7e92c8 CMSIS/RTX: Fix using FALSE/TRUE with preprocesor
(cherry picked from commit dd21ea0ae0)
2020-05-11 11:22:37 +01:00
Bartek Szatkowski 94d9406621 CMSIS/RTX: Allow overwriting mutex ops for ARMC
(cherry picked from commit 08ab8cc47d)
2020-05-11 11:18:04 +01:00
Bartek Szatkowski 63370074b1 CMSIS/RTX: Patch RTX4 to preserve osThreadDef compatibility
mbed OS used older RTX4 version and with osThreadDef accepting only 3
parameters, to preserve compatibility we hardcode the 'instances'
parameter to 1.

(cherry picked from commit 428acae1b2ac15c3ad523e8d40755a9301220822)
(cherry picked from commit 4360b7bbf8)
2020-05-11 11:17:54 +01:00
Martin Kojtal fb4f9e5b19 [CMSIS_5]: Updated to a65b7c9a3 2020-05-11 11:17:50 +01:00
Bartek Szatkowski 96e0689204 CMSIS/RTX: Pre-processor defines used for assembly
CMSIS repo does not support pre-processor defines, hence multiple assembly
files are added for secure/non-secure and floating point tools.
Mbed OS tools support assembly file pre-processing, but the build system
does not support multiple assembly files for each target, hence updating
the assembly files.

1. Patch RTX so irq_cm4f.S files work with no FPU targets
2. Patch RTX so irq_armv8mml.S files to work with and without FPU
2. Patch RTX so irq_armv8mml.S and irq_armv8mbl.S files to work with secure and
   non-secure builds
2020-05-11 10:36:13 +01:00
deepikabhavnani 9549fff786 CMSIS/RTX: Move Idle and Timer thread stack to bss section.
In case of ARM compiler, idle and timer thread stack though assigned
to `.bss.os` section since not zero initialized are part of `data` section.

In this commit, we are moving stacks of idle and timer thread to bss
section and thereby saving ROM space.
2020-05-11 10:35:25 +01:00
Bartek Szatkowski dd21ea0ae0 CMSIS/RTX: Fix using FALSE/TRUE with preprocesor 2020-05-11 10:34:45 +01:00
Bartek Szatkowski 08ab8cc47d CMSIS/RTX: Allow overwriting mutex ops for ARMC 2020-05-11 10:28:12 +01:00
Bartek Szatkowski db2ef01580 CMSIS/RTX: Patch RTX4 to preserve osThreadDef compatibility
mbed OS used older RTX4 version and with osThreadDef accepting only 3
parameters, to preserve compatibility we hardcode the 'instances'
parameter to 1.

(cherry picked from commit 428acae1b2ac15c3ad523e8d40755a9301220822)
(cherry picked from commit 4360b7bbf8)
2020-05-11 09:47:34 +01:00
Martin Kojtal 48747cdb26 [CMSIS_5]: Updated to b5f0603d6 2020-05-11 09:47:34 +01:00
Kevin Bracey 3f67eed31c Correct core RTOS sleep routine timing
Chrono conversions inadvertantly changed the core timed sleep routine
used by the RTOS idle to use `OsTimer::update_and_get_tick()` instead of
`OsTimer::get_tick()`.

Correct this, and expand/clarify documentation and naming to try to
prevent recurrence.

Another minor fix observed while inspecting code - `OsClock` can't just
use `milliseconds`, it should match the period of `OsTimer`, which
theoretically can be different.
2020-05-07 11:43:01 +03:00
Martin Kojtal d1ae0d570c
Merge pull request #12425 from kjbracey-arm/chrono
C++ Chrono support
2020-04-30 11:41:43 +02:00
Martin Kojtal 6052b4540a
Merge pull request #12872 from rajkan01/kernel_interface_func_doxygen
Add the Doxygen note to non-supported RTOS kernel APIs.
2020-04-29 22:17:14 +02:00
Lingkai Dong 81e676b86b RTOS: use default boot-stack-size for nRF as SoftDevice is no longer used
Previously we overrode nRF targets to have a larger stack
due to memory required by SoftDevice. Having deprecated SoftDevice
in favour of Cordio for BLE (#12674), such requirement does not
apply anymore.
2020-04-27 17:22:49 +01:00
Rajkumar Kanagaraj 57e0063e8d Add the Doxygen note to non-supported RTOS kernel APIs. 2020-04-27 14:38:14 +01:00
Kevin Bracey e5e45d83e7 Chrono test fixes
* Remove ambiguity in single-parameter Queue::put and get
* Fix type problems in RTC test - add missing include
* Don't attempt to use TimerEvent default constructor
* Remove references to Timer::read_duration
2020-04-27 10:19:08 +03:00
Rajkumar Kanagaraj c71c980ccd Fix the CI build and unit test issue 2020-04-27 10:19:08 +03:00
Kevin Bracey 4575ad3f23 Add Chrono support to Queue,MemoryPool,Mail 2020-04-27 10:19:08 +03:00
Kevin Bracey f6e8ecadec Add Chrono support to EventFlags 2020-04-27 10:19:08 +03:00
Kevin Bracey 4f2fa53b37 Thread: minor space optimisation 2020-04-27 10:19:08 +03:00
Kevin Bracey 2c4e59012f Add Chrono support to Mutex 2020-04-27 10:19:08 +03:00
Kevin Bracey 53cfe0f610 Add Chrono support to Semaphore 2020-04-27 10:19:08 +03:00
Kevin Bracey 0223d92f7e Add Chrono support to ThisThread 2020-04-27 10:19:08 +03:00
Kevin Bracey fdc697ee85 Add Chrono and predicate support to ConditionVariable 2020-04-27 10:19:08 +03:00
Kevin Bracey f4e0ea2c75 Add Chrono support to Kernel and SysTimer 2020-04-27 10:19:08 +03:00
Martin Kojtal 31e3305c82
Merge pull request #12818 from rajkan01/rtos_driver_doxygen_note
Add the Doxygen note to non-supported RTOS and Driver class.
2020-04-21 15:48:18 +02:00
Rajkumar Kanagaraj 9b2cea75ad Add the Doxygen note to non-supported RTOS and Driver class. 2020-04-20 18:24:37 +01:00
Martin Kojtal a79d3ce18d
Merge pull request #12271 from jainvikas8/jae-feature-twincpu-6-mbed-os-integration
Make cypress psoc64 TFM ready and also add TF-M initialization
2020-04-17 15:48:58 +02:00
Martin Kojtal dcd863bfe9
Merge pull request #12736 from Patater/rtosv2-compat
rtos: Improve CMSIS-RTOSv2 app compatibility
2020-04-17 09:29:01 +02:00
Jaeden Amero 07a84ec10a psa: Remove MBED_SPM code
All MBED_SPM targets have been removed previously, via commits
5cc66282dd ("PSOC6: remove PSA targets") and 115b09aba43b ("psoc6:
Remove FUTURE_SEQUANA and FUTURE_SEQUANA_M0"). Remove all the dead
MBED_SPM code, as no targets use it.

Signed-off-by: Jaeden Amero <jaeden.amero@arm.com>
2020-04-16 14:10:54 +01:00
Devaraj Ranganna fa5a954031 rtos: Improve CMSIS-RTOSv2 app compatibility
Some non-Mbed-OS, pre-existing CMSIS-RTOSv2 applications depend on
CMSIS-RTOSv2 Automatic Dynamic Allocation, also known as Object-specific
memory pools. Mbed OS doesn't by default provide any memory to the
CMSIS-RTOSv2 Automatic Dynamic Allocation pool, as doing so would waste
memory if the feature is not used; even if the feature is used, as a
platform, Mbed OS can't know how many objects of which types will be
created by an application and therefore will either waste memory or not
provide enough memory in a hard to debug manner. Portable CMSIS-RTOSv2
applications depending on CMSIS-RTOSv2 Automatic Dynamic Allocation
should instead configure the memory pools themselves, as applications
know best their memory requirements.

Add Mbed configuration options which can be used by applications to
control the amounts of memory available to the CMSIS-RTOSv2 Automatic
Dynamic Allocation subsystem. This enables portable CMSIS-RTOSv2
applications, which can run on any CMSIS-RTOSv2 OS, to be able to run on
Mbed OS as well.

RTX's configuration options for CMSIS-RTOSv2 memory are documented at
http://www.keil.com/pack/doc/CMSIS_Dev/RTOS2/html/config_rtx5.html

Signed-off-by: Devaraj Ranganna <devaraj.ranganna@arm.com>
Signed-off-by: Jaeden Amero <jaeden.amero@arm.com>
2020-04-15 18:08:14 +01:00
Rajkumar Kanagaraj 9739b565b2 Fix the CI build issue 2020-04-08 10:35:07 +01:00
Rajkumar Kanagaraj 83be3f24a5 Remove mbed wait deprecated APIs 2020-04-08 10:35:07 +01:00
Vikas Katariya 9b7ef82b40 psa: Init IPC, Mailbox and Non-secure Interface
These changes are for TFM_DUALCPU and TFM_V8M platforms.
The initialization happens after mbed-os kernel is kicked off and
when the thread is up and running.

We are initializing the following for TFM_DUALCPU platforms:
* IPC Interrupts for syncing multi-core platforms.
* NS Mailbox to receive messages.
* NS interface.

We are only initializing Non-secure interface for TFM_V8M platforms.

mbed_tfm_init() in tfm_mbed_boot.c overrides the WEAK mbed_tfm_init()
for a specific platform.

Signed-off-by: Vikas Katariya <vikas.katariya@arm.com>
2020-04-03 15:48:58 +01:00
Martin Kojtal 6678efe571
Merge pull request #12696 from 0xc0170/fix_boot_iar_vector
rtos: declare vector table type as in Technical Note 11578
2020-04-01 12:22:21 +02:00
Martin Kojtal b090065dec
Merge pull request #12708 from rajkan01/ARM_compiler_version
Remove compatibility for Arm Compiler versions prior to 6.01.0050
2020-03-31 10:36:56 +02:00
Martin Kojtal 5cbf666347 rtos: fix iar vector table type
Following IAR guide for RAM vector table, this is in the code snippet there:

```
extern void * __vector_RAM_table [];
void main(void)
```

Found in https://github.com/ARMmbed/mbed-os/pull/12547
2020-03-30 13:37:15 +01:00
Rajkumar Kanagaraj 47e68b20cb - Remove the pre-processor directive __ARMCC_VERSION >= 6010050
- Add the code prior to 6.01.0050 versions.
2020-03-27 14:37:01 +00:00
Rajkumar Kanagaraj a6b78c6429 Remove Semaphore deprecated APIs 2020-03-16 09:37:45 -07:00
Evelyne Donnaes 4df8432523 Updated doxygen for Mail get API 2020-03-11 16:25:11 +00:00