Commit Graph

215 Commits (f4febdcb9df0a7c52ae31e14e0856c05421f8657)

Author SHA1 Message Date
Hugues Kamba 2a6a840903 CMake: Refactor Nuvoton targets
Refactor all Nuvoton targets to be CMake buildsystem targets. This removes
the need for checking MBED_TARGET_LABELS repeatedly and allows us to be
more flexible in the way we include MBED_TARGET source in the build.

A side effect of this is it will allow us to support custom targets
without breaking the build for 'standard' targets, as we use CMake's
standard mechanism for adding build rules to the build system, rather
than implementing our own layer of logic to exclude files not needed for
the target being built. Using this approach, if an MBED_TARGET is not
linked to using `target_link_libraries` its source files will not be
added to the build. This means custom target source can be added to the
user's application CMakeLists.txt without polluting the build system
when trying to compile for a standard MBED_TARGET.
2021-02-12 19:09:11 +00:00
Chun-Chieh Li 68df919e3f Nuvoton: Remove DISABLE/ENABLE macro definitions in BSP
These are not used on Mbed OS. Remove them to avoid name conflict with other modules.
2020-12-09 14:27:23 +08:00
Martin Kojtal 28eeee2b4c
Merge pull request #13922 from 0xc0170/cmake-nuvoton
CMake: add nuvoton targets
2020-11-27 11:02:53 +00:00
Martin Kojtal 0efffa3411 CMake nuvoton: fix ARMClang linker script command 2020-11-25 13:18:15 +00:00
Martin Kojtal 6574054d26 CMake: remove M2351 cmakelists, not supported yet 2020-11-20 13:46:15 +00:00
Martin Kojtal 02c35fdd48 CMake: add nuvoton targets 2020-11-18 15:18:18 +00:00
pea-pod 507181d262 Change MBED_STATIC_ASSERTs version for built-in 2020-10-27 08:30:40 -05:00
cyliangtw ffee35a5c8 Fix NuMaker I2C timeout,
some H/W timer count is 24 bits only, hardcode 0xffffffff causing
  wrong judgement of timeout as while H/W timer counting overflow.
2020-09-29 21:01:18 +08:00
Martin Kojtal 468372e759
Merge pull request #13492 from talorion/fix-PwmOut-resets-after-suspend
Fix pwm out resets after suspend
2020-09-10 12:40:18 +01: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
Chun-Chieh Li ce63a17212 Nuvoton: Fix degrading QSPI to SPI
In most cases, we can control degraded QSPI H/W to standard through BSP SPI driver directly as if it is just SPI H/W.
However, BSP SPI driver distinguishes among SPI H/W instances in below functions:
-   SPI_Open
-   SPI_Close
-   SPI_SetBusClock
-   SPI_GetBusClock
In these cases, we must change to QSPI version instead for QSPI H/W.

Change target:
-   NUMAKER_PFM_M487
-   NUMAKER_IOT_M487
-   NU_PFM_M2351*
2020-09-03 10:25:08 +08:00
talorion b03d80fd08 pwmout - fixed compile errors 2020-09-02 13:39:17 +02:00
talorion b859d7039f pwmout - M2351 - add read methods for period and pulsewidth 2020-09-02 13:39:13 +02:00
Martin Kojtal e2fb52aab7 M2351: fix startup after cmsis update
Don't use CMSIS low level startup
2020-05-13 12:21:05 +01:00
Martin Kojtal 2c8be47525 Revert "Use cmsis gcc types instead of own"
This reverts commit 606ccbceff.
2020-05-13 10:43:57 +01:00
Martin Kojtal 606ccbceff Use cmsis gcc types instead of own
This caused a conflict. As CMSIS update introduced low level init, lets use the types
from CMSIS. We could potentionally use __cmsis_start but as I saw for some targets,
the init routine is slightly different. So rather keep what we have in targets, and just
use types already defined in CMSIS.
2020-05-12 16:01:21 +01:00
Chun-Chieh Li e6823c6af5 M2351: Add SPDX license identifier for BSP files 2020-03-24 10:47:03 +08:00
Chun-Chieh Li d1655854c9 M2351: Add SPDX license identifier 2020-03-24 10:03:44 +08:00
Chun-Chieh Li 427e8eb777 M2351: Support custom board
1. Introduce MCU_M2351 target to be inheritable
2. Re-organize PinNames.h to be overridable
3. Enable configurability of USB/STDIO UART pins
2020-03-20 09:39:16 +08:00
Martin Kojtal 119931e56d
Merge pull request #12478 from OpenNuvoton/nuvoton_m2351_minor
M2351: Fix some minor issues
2020-02-24 12:51:52 +00:00
Chun-Chieh Li 34d3d43f0d M2351: Fix NSC_Init(...)
Actually, NSC_Init(...) is not used by secure code currently. No need to rebuild secoure image/lib.
2020-02-19 17:59:49 +08:00
Chun-Chieh Li 7328467012 M2351: Fix interrupt vector with BSP update 2020-02-19 17:57:01 +08:00
Chun-Chieh Li d5620b66a7 M2351: Fix RTC comment 2020-02-19 17:51:49 +08:00
Chun-Chieh Li 8df96ec50a Nuvoton: Make SPI inter-frame (delay match configured suspend interval
In no MISO case, skip SPI read so that no more write/read delay contribute to SPI inter-frame delay when data is written successively.

Update targets:
-   NUMAKER_PFM_NANO130
-   NUMAKER_PFM_NUC472
-   NUMAKER_PFM_M453
-   NUMAKER_PFM_M487/NUMAKER_IOT_M487
-   NU_PFM_M2351_*
-   NUMAKER_IOT_M263A
-   NUMAKER_M252KG
2020-02-17 15:00:09 +08:00
Chun-Chieh Li 769781cfb3 M2351: Update PSA secure image/lib with RTC LXT 2020-02-13 11:24:02 +08:00
Chun-Chieh Li 4c9e0f1fcd M2351: Update non-PSA secure image/lib with RTC LXT 2020-02-13 11:24:02 +08:00
Chun-Chieh Li 9f9ca0acaa M2351: Fix CRYPTO_MODBASE() when crypto module is configured to secure
This bug results from BSP update:

-   CRPT: Base address of secure or non-secure crypto module, dependent on partition
-   CRPT_S: Base address of secure crypto module
-   CRPT_NS: Base address of non-secured crypto module
2020-02-13 11:24:02 +08:00
Chun-Chieh Li 834e1aad60 M2351: Fix delay code with RTC clock source
Explicitly configure RTC clock source to LXT
2020-02-13 11:24:02 +08:00
Chun-Chieh Li 28495bb075 M2351: Refine gpio_irq_set(...) with inconsistent GPIO_EnableInt(...) implementations
No logic change
2020-02-13 11:24:02 +08:00
Chun-Chieh Li 582c08c129 M2351: Refine code layout of PeripheralPins.c
No logic change
2020-02-13 11:24:01 +08:00
Martin Kojtal 8e522056a0
Merge pull request #12404 from OpenNuvoton/nuvoton_m2351_bsp
M2351: Update BSP and bugfix
2020-02-11 15:43:10 +00:00
Chun-Chieh Li 3d9c7b2519 M2351: Update PSA secure image/lib with BSP update 2020-02-10 18:37:30 +08:00
Chun-Chieh Li ee8236b22e M2351: Update non-PSA secure image/lib with BSP update 2020-02-10 17:50:15 +08:00
Chun-Chieh Li 6f793fbb5a M2351: Fix GPIO rising/falling edge interrupts cannot exist simultaneously 2020-02-10 17:44:55 +08:00
Chun-Chieh Li a2c9ae6b7d M2351: Update BSP and bugfix
Align with mainline BSP and fix relevant bugs:

1.  Align with SPI module naming
    (1) Remove SPI5
    (2) Degrade QSPI0 to SPI4 so that it can use for standard SPI
2.  Fix some code lacking GPIO H
3.  Implement __PC(...) by following BSP instead of with MBED_CALLER_ADDR()
4.  Add SCU_IRQHandler(). Change printf(...) with interrupt-safe error(...)
5.  Other minor alignment change
2020-02-10 16:23:32 +08:00
Chun-Chieh Li 82770d7e2b M2351: Refine PeripheralNames.h
No logic change and bugfix
2020-02-10 09:07:13 +08:00
Przemyslaw Stekiel a4e1354769 Remove pinmap_restricted_peripherals() function from Nuvoton (STDIO uart is restricted by default) 2020-02-07 10:45:02 +01:00
Martin Kojtal 32675cc6ac
Merge pull request #11874 from fkjagodzinski/armc6_build-enable_lto_for_release
ARMC6: Add a build profile extension with the link-time optimizer enabled
2020-02-05 14:42:16 +00:00
Chun-Chieh Li 9faa236dfc M2351: Refactor startup file
1.  Re-organize to make clear for all targets/toolchains support in single startup file
2.  Inline assembly syntax is limited, esp. on IAR. Try paving the way for accessing external symbols still in inline assembly instead of re-write in assembly.
2020-02-05 10:14:26 +08:00
Maciej Bocianski 6d896f032f NU_PFM_M2351_NPSA: keep __vector_handlers symbol in LTO builds
Add a "used" attribute to __vector_handlers to fix ARMC6 build with
the "-flto" flag.
(Error: L6236E: No section matches selector - no section to be FIRST/LAST.)

This attribute, attached to a function/variable, means that code must be emitted
for the function even if it appears that the function is not referenced.
2020-02-04 12:38:26 +01:00
Chun-Chieh Li 94762d02a1 M2351: Support IAR
1.  Enable IAR on non-secure targets
2.  Disable IAR on secure targets because:
    (1) IAR toolchain bug: As of IAR 8.32, cmse_nonsecure_caller() is not always inlined.
    (2) TFM hasn't supported IAR yet.
2020-01-30 13:12:31 +08:00
Chun-Chieh Li 359d41adef M2351: Remove LPTICKER to spare memory for non-PSA minimal secure build 2020-01-16 09:58:32 +08:00
Martin Kojtal 117201d77d "Update secure binaries for NU_PFM_M2351_S (ARMC6)" 2020-01-14 14:27:54 +00:00
Martin Kojtal af03f839e2
Merge pull request #10959 from OpenNuvoton/nuvoton_m2351_psa
M2351: Support TFM level 1
2020-01-08 16:09:35 +01:00
cyliangtw 95be7da860 Add CLKSEL0_USBSEL_HIRC48 in m2351_clk.h 2020-01-06 19:08:52 +08:00
Chun-Chieh Li 22e4f93400 [M2351] Add pre-built secure images for PSA 2020-01-06 15:55:01 +08:00
Chun-Chieh Li c9b4474d50 [M2351] Merge secure idle/powerdown sequences into one
Merge SYS_UnlockReg_S()/CLK_Idle_S() or CLK_PowerDown_S()/SYS_LockReg_S()
into nu_idle_s() or nu_powerdown_s() when they are available.
2020-01-06 15:55:01 +08:00
Chun-Chieh Li a0a1c4d52c [M2351] Override NS interface by locking kernel scheduler
Lock kernel scheduler rather than mutex to guarantee serialization of NS
secure calls
2020-01-06 15:55:01 +08:00
ccli8 dec84ede7e [M2351] Enforce locked entry into TFM for platform-specific NSC calls
On M2351, some spaces like SYS/CLK are hard-wired to secure and cannot change.
To access these spaces from non-secure world, we must provide platform-specific NSC
functions. With TFM introduced, we must synchronize NSC calls into TFM to keep TFM
in sync instead of straight NSC calls. To achieve this goal, we go with the following
approach:

1. Like PSA APIs, enforce locked entry through tfm_ns_lock_dispatch().
2. Run platform-specific secure functions in default secure partition, in which SYS/CLK
   spaces have been configured to be accessible.
2020-01-06 15:55:00 +08:00