Commit Graph

184 Commits (master)

Author SHA1 Message Date
Rami Elkhatib fdf37c3217 MPS2 CM3DS ethernet words instead of bytes
The functions smsc9220_receive_by_chunks and smsc9220_send_by_chunks are
supposed to implement receiving and sending packets by chunks. However,
the functions SMSC9220_EMAC::low_level_input and SMSC9220_EMAC::link_out,
which call them respectively, already require or assemble the full packet.
Also, smsc9220_receive_by_chunks doesn't implement the "chunks" part.

This commit renames the functions to smsc9220_receive_packet and
smsc9220_send_packet. The functions now do their operations by word
instead of by bytes. The functions SMSC9220_EMAC::low_level_input and
SMSC9220_EMAC::link_out already handle allocation, continuity and word
alignment of the packet buffer.
2022-05-12 18:27:49 -04:00
Rami Elkhatib f7aca62865 MPS2 CM3DS ethernet fix packet bug
The function smsc9220_receive_by_chunks loads data from the Ethernet port.
It is expected to return the Ethernet frame without the 4 CRC bytes.
However, it is required to call the Ethernet data port register (32-bit)
an amount equal to the number of frame words (including the 4 CRC bytes)
to pop all frame words. The current code doesn't call the register for the
last word (which has CRC data). This causes subsequent calls to have this
missed word at the beginning. The impact of this is huge as the high level
API is getting fed wrong data. The fix adds one additional call to the data
port register.
2022-05-12 18:25:15 -04:00
Hari Limaye f4e5359710 GPIO: Use uintptr_t for gpio_irq_api context
The HAL gpio_irq_api stores object IDs, which serve as a form of context
for the dispatch of the interrupt handler in the drivers level
InterruptIn Class. The way this is achieved is that the InterruptIn
Class casts its address to uint32_t, which is stored as the ID.
This results in compilation failure when the size of an object pointer
is greater than uint32_t, for example when building on a PC for unit
testing.

In order to allow Unit Testing of the InterruptIn Class, we replace the
use of uint32_t with uintptr_t (type capable of holding a pointer),
which allows portability and expresses intentions more clearly.
In aid of this latter goal, we also replace the use of the name "id"
with "context", to improve clarity - these are addresses of the context
related to that callback.
2022-01-26 18:12:52 +00:00
Robert Walton a43103faac TFM: MUSCA: Import partition maps from upstream
Import the latest partition headers from upstream. We no longer need to
patch the headers to define the BL2 macro as we now define it in the
scatter files for the MUSCA targets.
2021-09-14 17:32:42 +01:00
Robert Walton 33e57ee577 TFM: Remove BL2 macro workaround for mbed-cli1/ARMClang
We worked around an issue with mbed-cli1 not recognising the BL2 macro
from targets.json by adding patched versions of region_defs.h and
flash_layout.h for ARM_MUSCA targets. In the patched headers we defined
the BL2 macro to ensure it can be picked up by the ARM scatter files
that include the headers.

The current solution is not robust, because it means that the
aforementioned headers easily become out of date. A workaround of
defining the macros in the scatter files which need them was suggested
in https://github.com/ARMmbed/mbed-os/issues/14762

This commit applies the suggested changes to the ARM_MUSCA scatter
files.
2021-09-14 17:32:42 +01:00
Robert Walton 56ffd54dd4 tfm: Move tfm_ns_interface.c
tfm_ns_interface.c is intended to be overriden by clients to support
different targets. We copy this file from upstream into the mbed-os
platform library. We also have a specific "strong" overridden version
for the NU_M2354 target, which is located in its target library.
Previously the implementations in the platform library were decorated
with __attribute__(weak), and we provided a strong definition for the
NU_M2354 target. This worked fine because of weak linking, the linker
will pick the first "strong" definition and use that, avoiding any ODR
violations. However, upstream have removed __attribute__(weak) from the
function definitions, which caused multiply defined symbol errors when
trying to build the NU_M2354 target.

To work around the above issue, we remove the common definition in the
platform library; instead we copy the file to the Musca B1 and Musca S1
target libaries. This means the appropriate tfm_ns_interface.c is only
included in the build when compiling for the specific target which uses
it.
2021-09-14 17:32:42 +01:00
Robert Walton d11bac087c "Update secure binaries for [('ARM_MUSCA_S1', 'ARMCLANG')]" 2021-09-14 17:32:42 +01:00
Robert Walton f28a6eab4f "Update secure binaries for [('ARM_MUSCA_B1', 'ARMCLANG')]" 2021-09-14 17:32:42 +01:00
Martin Kojtal c0187712b1 musca targets: use IsException instead of removed isIrqMode 2021-07-29 14:31:39 +01:00
Lingkai Dong 5434722328 Updated secure binaries for [('ARM_MUSCA_S1', 'ARMCLANG')] 2021-04-29 11:09:23 +01:00
Lingkai Dong 68f8501885 Updated secure binaries for [('ARM_MUSCA_B1', 'ARMCLANG')] 2021-04-29 11:09:18 +01:00
Martin Kojtal afd938491a CMake platform: remove MBED_PATH, use standard variables
As we still use target labels, TFM is not visible to CMake. Protect include of their scripts with the same mechanism.
2021-04-14 13:09:26 +01:00
Martin Kojtal dfc4010e24 CMake targets: remove MBED_PATH, use stadard variables
- list files included via module path
- <project-name>_SOURCE_DIR for sources that are out of the current processed CMake
- CMAKE_CURRENT_LIST_DIR for listfiles
2021-04-14 13:09:26 +01:00
George Psimenos 61cfaa15cd Update UART pin names & add MBED_CONF_TARGET_STDIO_UART overrides 2021-03-23 11:17:17 +00:00
George Psimenos 3af96247a6 Update PinNames markers 2021-03-18 17:01:54 +00:00
George Psimenos 885cdef5f7 Add standard pin-names validation script & tests 2021-03-18 17:01:53 +00:00
Lingkai Dong 31cc82dabb "Updated secure binaries for [(ARM_MUSCA_S1, ARMCLANG)]"
This brings in the platform init fix:

    https://github.com/ARMmbed/trusted-firmware-m/pull/15
2021-03-09 10:22:58 +00:00
Lingkai Dong 3e19778597 CMake: Enable post binary hook for ARM_MUSCA_B1 2021-03-05 16:16:26 +00:00
Lingkai Dong 816f81d018 CMake: Enable post binary hook for ARM_MUSCA_S1 2021-03-05 16:16:26 +00:00
Lingkai Dong 4e45b0a4eb Copy signing keys into each Musca target's path
The signing keys were previously imported from trusted-firmware-m
and located in mbed-os/tools/targets/musca_* (path for Mbed CLI 1).
This PR copie them into each target's directory as per the
convention of the new tools. Keys in the old path remain untouched
for backward compatibility, but they will be eventually removed
once we stop supporting Mbed CLI 1.
2021-03-05 16:16:26 +00:00
Lingkai Dong 6ab4b1c1d4 "Updated secure binaries for [('ARM_MUSCA_S1', 'ARMCLANG')]" 2021-02-25 14:02:57 +00:00
Lingkai Dong 29f7f9f5d2 "Updated secure binaries for [('ARM_MUSCA_B1', 'ARMCLANG')]" 2021-02-25 14:02:57 +00:00
Lingkai Dong 63523bd0aa Remove _NS aliases for Musca B1/S1
In targets.json, ARM_MUSCA_B1 and ARM_MUSCA_S1 have alias target
names suffixed with `_NS`. They are identical to targets without
`_NS` and exist purely for compatibility with the old naming
convention we had. The CI builds them as separate targets and uses
extra resources.

As we are upgrading Musca targets to TF-M v1.2, it's time to clean
up the aliases.
2021-02-25 14:02:57 +00:00
Lingkai Dong 88a38c2750 Musca S1: include missing `cmsis_nvic.h`
The vector table needs to be copied from ROM to RAM, in order for us
to set IRQ handlers at run time. The address in RAM is defined by
`NVIC_RAM_VECTOR_ADDRESS` in `cmsis_nvic.h`, but its inclusion
was missing from Musca S1's `cmsis.h` and consequently the vector
table was not copied.

On most targets this results in a memory access error when we set
vectors. But Musca S1's ROM is in its MRAM (which can be accessed
like any RAMs), and this causes the ROM image to be modified
with no error/warning. On the next boot, MCUboot fails the image
integrity check.

This commit adds the missing include, in the same spirit as
01dd997d55.
2021-02-25 14:02:57 +00:00
Lingkai Dong ac4533a5bd Exclude Musca signing layouts from compilation
Files containing signing layouts are parsed by the post build
hook for signing purpose only.
2021-02-25 14:02:57 +00:00
Vikas Katariya 39e226bf6a Update target `ARM_MUSCA_S1` TF-M V1.2 binaries
* Remove the old `mcuboot.bin`
* Add `bl2.bin`
* Update TF-M secure binaries

GCC_ARM toolchain used.
2021-02-25 14:02:56 +00:00
Vikas Katariya c0721a95ca Update partition files for `ARM_MUSCA_S1`
* Partition files are synced with TF-M v1.2
* To have uniformity with TF-M v1.2, rename the following:
 ** image_macros_preprocessed_ns.c to `signing_layout_ns.c`
 ** image_macros_preprocessed_s.c to `signing_layout_s.c`
* `MCUBOOT_IMAGE_NUMBER` is set to 2 by default for TF-M v1.2,
therefore it is necessary that Mbed OS compiles the right macros
for when linking and using the partition files.
2021-02-25 14:02:56 +00:00
Vikas Katariya 65e2d45d99 Update target `ARM_MUSCA_B1` TF-M V1.2 binaries
* Remove the old `mcuboot.bin`
* Add `bl2.bin`
* Update TF-M secure binaries

GCC_ARM toolchain used.
2021-02-25 14:02:56 +00:00
Vikas Katariya 0ccf4db143 Update partition files for `ARM_MUSCA_B1`
* Partition files are synced with TF-M v1.2
* To have uniformity with TF-M v1.2, rename the following:
 ** image_macros_preprocessed_ns.c to `signing_layout_ns.c`
 ** image_macros_preprocessed_s.c to `signing_layout_s.c`
* `MCUBOOT_IMAGE_NUMBER` is set to 2 by default for TF-M v1.2,
therefore it is necessary that Mbed OS compiles the right macros
for when linking and using the partition files

** Workaround **
The `region_defs.h` has an explicit definition of `BL2`, even
though it is already defined in target.json for `ARM_MUSCA_B1`.
This is because of Mbed CLI 1, as it can't seem to use the right
macro when linking the files for Mbed OS application when using
the ARMCLANG toolchain.
2021-02-25 14:02:56 +00:00
Martin Kojtal 57a6fe3a8e
Merge pull request #14314 from hugueskamba/hk_cmake_fix_musca_ns
CMake: Fix ARM MUSCA NS targets build
2021-02-23 11:04:38 +00:00
Martin Kojtal 88a242f749
Merge pull request #14306 from hugueskamba/hk_cmake_create_cmsis_cortex_libs
CMake: Create CMSIS library targets to remove dependency on MBED_TARGET_LABELS
2021-02-23 08:36:49 +00:00
Hugues Kamba 0ce36ac5e2 CMake: Fix ARM MUSCA NS targets build
Add the missing CMake targets for NS Mbed boards.
2021-02-22 12:17:41 +00:00
Hugues Kamba 2c3481297c CMake: Create CMSIS library targets to remove dependency on MBED_TARGET_LABELS
This goes towards eventually removing reliance on targets.json to specify
the requirements of Mbed targets.
2021-02-19 13:39:32 +00:00
Harrison Mutai 0000b37124 Fix indentation in RW_IRAM1 load region description 2021-02-19 10:09:25 +00:00
Harrison Mutai 9f5f3ea855 Fix indentation in ER_IROM1 load region description 2021-02-18 14:47:36 +00:00
Harrison Mutai b31ce7a9c7 Refactor ARM MSP2 target scatter files for bare metal support 2021-02-18 14:44:46 +00:00
Harrison Mutai 0f233735af Add bare metal support to ARM_MPS2_Target family of targets 2021-02-18 09:34:16 +00:00
Martin Kojtal 0adb917dab CMake Arm SSG: refactor CMake targets
Create CMake target per each Mbed OS target.
2021-02-15 10:39:30 +00:00
Hugues Kamba 1d6214df0b CMake: Add support Arm Musca S1 target
Add CMakeLists.txt file for the target
2021-01-18 17:39:13 +00:00
Hugues Kamba 8123cdbe2f CMake: Add support for ARM's MUSCA B1 target
Add CMakeLists.txt input source file for the target
2021-01-18 17:39:13 +00:00
Hugues Kamba 0ac503312a CMake: Add support for Arm's MPS2 targets 2021-01-15 16:32:43 +00:00
Hugues Kamba 470cc1a1a6 CMake: Add support for Arm's CM3DS_MPS2 target 2021-01-15 16:32:43 +00:00
Hugues Kamba 96dbb42024 MUSCA_B1: Fix heap size formula in scatter files
The heap size was incorrectly calculated.
This fixes it by subtracting the Stack size, any memory chunks allocated
before the start of the application (for vectors and/or crash report), and
finally the size of the application from the total RAM size.
2021-01-08 18:35:33 +00:00
Harrison Mutai 4fad1112e5 Add SPDX license identifier to Arm files
Add license identifier to files which Arm owns the copyright to,
and contain either BSD-3 or Apache-2.0 licenses. This is to address
license errors raised by scancode analysis.
2020-10-15 10:47:27 +01:00
Martin Kojtal 6bfd89e656
Merge pull request #13196 from gbrtth/musca_s1_support_mbed6
Add ARM_MUSCA_S1 as a new target platform
2020-09-10 16:53:14 +01:00
Mark Horvath 37f26692b1 Workaround to fix clang build
Change-Id: Ib0d207d4ca22ae239f6b40b95618b66eb329a29c
Signed-off-by: Mark Horvath <mark.horvath@arm.com>
2020-09-10 13:59:32 +01:00
Gabor Toth bdf2306f16 Add platform support to Musca S1
Change-Id: Iebdd4bc402446caba6b7bd894eddb0a85ed884d8
Signed-off-by: Mark Horvath <mark.horvath@arm.com>
Signed-off-by: Gabor Toth <gabor.toth@arm.com>
2020-09-10 14:53:41 +02:00
Jaeden Amero 612b148fd4 stack: armc: Workaround config passing bug
Workaround a bug where the boot stack size configuration option is not
passed on to armlink, the Arm Compiler's linker. Prefer
MBED_CONF_TARGET_BOOT_STACK_SIZE if present, as this is what the
configuration system should provide. Fall back to MBED_BOOT_STACK_SIZE
if MBED_CONF_TARGET_BOOT_STACK_SIZE is not defined, as in the case of
buggy tools. If both MBED_CONF_TARGET_BOOT_STACK_SIZE and
MBED_BOOT_STACK_SIZE are not defined, then we fall back to a hard-coded
value provided by the linkerscript. See
https://github.com/ARMmbed/mbed-os/issues/13474 for more information.
2020-09-10 10:08:38 +01:00
Jaeden Amero 39e69d328d Use boot stack size from config system
To allow overriding of the boot stack size from the Mbed configuration
system, consistently use MBED_CONF_TARGET_BOOT_STACK_SIZE rather than
MBED_BOOT_STACK_SIZE.

Fixes #10319
2020-09-10 10:08:38 +01:00
Vikas Katariya 776ccce8d6 psa: Update TF-M for ARM_MUSCA_B1 2020-07-14 11:54:57 +01:00