Commit Graph

719 Commits (refactor_hal_greentea_cmake)

Author SHA1 Message Date
Chun-Chieh Li 6447b3d8f3 M2354: Fix LCDCP missing in TF-M CLK pass list
Besides LCD_MODULE, add LCDCP_MODULE into TF-M pass list for below CLK driver in NSPE:

-   CLK_SetModuleClock_S
-   CLK_EnableModuleClock_S
-   CLK_DisableModuleClock_S
-   CLK_GetModuleClockSource_S
2021-09-02 09:17:18 +08:00
Martin Kojtal d2a88f4400
Merge pull request #15024 from OpenNuvoton/nuvoton_m2354_tfm_sdh
M2354: Enhance TF-M SDH stability
2021-08-26 10:22:48 +01:00
Chun-Chieh Li 259ee6b17a M2354: Enhance TF-M SDH stability
1.  Lower TF-M SDH clock to avoid premature timeout
2.  Re-initialize TF-M SDH on (timeout) failure
2021-08-26 11:02:13 +08:00
cyliangtw f28181c32a M451 CAN API support mask feature 2021-08-24 19:14:27 +08:00
cyliangtw a33dc4e371 M480 CAN API support mask feature 2021-08-24 18:26:49 +08:00
Jaeden Amero 4125fd0786
Merge pull request #14972 from OpenNuvoton/nuvoton_m2354_tfm_psa_fwu
M2354: Support PSA Firmware Update
2021-08-11 13:57:57 +01:00
Robert Walton cfc68a0918 CMake: Use CMAKE_MODULE_PATH to locate nuvoton post build hook
We were previously relying on the global MBED_PATH variable to provide
the root for the include path to the post build hooks. We can't
guarantee that MBED_PATH will be set by any application building us, so
use CMAKE_MODULE_PATH (which we always set) like we do for the other
post-build hooks.
2021-08-11 10:15:42 +01:00
Chun-Chieh Li 5114e4c7c2 M2354: Support PSA Firmware Update
1.  Change from single image boot to multiple image boot
2.  SDH is configured to Secure for placing update firmware. It becomes inaccessible to Mbed.
3.  Post-build script supports both multiple image boot and single image boot
4.  Update readme to reflect above change
5.  Increase forced_reset_timeout due to longer booting time for Greentea test
2021-08-05 10:14:33 +08:00
Lingkai Dong 351680fb18 Rework post-build to support multiple executables
When building greentea tests, each test is an executable with its
own output binary path. This is also the case when a user project
produces multiple executables. But the current implementation of
post-build operations always assumes there's only one executable,
at the root of the build directory.

The post-build command depends on Mbed target, and it always takes
the the executable we build as an input file. To achieve this, we
let each Mbed target (that has a post-build command) define a function

    function(mbed_post_build_function target)

which takes a CMake executable target as an argument from which it can
get its binary path using generator expressions. It generates and adds
to the passed executable target a post-build custom command.

Notes:
* The function name needs to be exact, because CMake only supports
literal function calls - CMake can't dereference a function name from
a variable. To avoid multiple definitions of this function, each Mbed
target needs to guard it with a macro to check if the user is
building this Mbed target.
* `mbed_post_build_function()` is a function, but it is usually
defined by another macro rather than a parent function, because
nesting functions would make many variables inaccessible inside the
innermost `mbed_post_build_function()`.
* There's no more need to force regenerate images. Previously, post-
build commands were custom *targets* which always got to run, so we
force regenerated images on every build to avoid patching an image
that's already been patched once on previous build. Now post-build
commands are custom *commands* of the same executable target, and they
are only run if the executable target itself is rebuilt.
2021-07-22 17:31:22 +01:00
Chun-Chieh Li de00a5a4e8 Nuvoton: Support watchdog on M251/M261 series
Support watchdog on below targets:
-   NUMAKER_IOT_M263A
-   NUMAKER_IOT_M252
2021-06-08 11:03:55 +08:00
Martin Kojtal 1fe0650907
Merge pull request #14721 from OpenNuvoton/nuvoton_no-hxt-lxt
Nuvoton: Enable no HXT/LXT configurability
2021-06-07 20:50:10 +02:00
Chun-Chieh Li 0b6fdf46f0 M2354: Default to HXT not present
1.  Build TF-M v1.3 with GNUARM and HXT not present.
2.  Support configurability of HXT presence (targets.json).
3.  Default HXT to not present (targets.json). This must align with built TF-M secure code above.
2021-06-04 10:32:59 +08:00
Chun-Chieh Li 79cf5a01d5 M2354: Synchronize platform extra secure files from TF-M
These files are refactored on TF-M and make no logic change on Mbed.
2021-06-04 10:32:59 +08:00
Chun-Chieh Li 71c32de1d7 M2354: Refine TF-M import readme
Add bug report of GNU Arm Embedded Toolchain 10-2020-q4-major in CMSE support
2021-06-04 10:32:59 +08:00
Chun-Chieh Li 77ed6778d8 Nuvoton: Explicitly disable HXT/LXT on configured to not present
This is to guard from BSP driver which cannot see this configuration and still uses HXT/LXT.
2021-06-02 09:02:05 +08:00
Chun-Chieh Li a0c53896e0 Nuvoton: Enable no HXT/LXT configurabiliy
LXT/HXT are external crystl oscillator and can be absent on custom board.
This enables configuring LXT/HXT presence:
1.  By default, LXT/HXT are configured to be present, except M252 which has no HXT.
2.  When LXT is configured to not present, lp_ticker/watchdog will clock by LIRC instead.
3.  Limitations:
    (1) On all targets, LIRC-clocked lp_ticker gets inaccurate and fails to pass tests.
    (2) On NUC472/M453, HIRC-clocked PLL doesn't output 1MHz-aligned frequency. us_ticker gets slight inaccurate.
    (3) On all targets, LIRC-clocked RTC is not supported due to no H/W path/RTC clock source reset to LXT on reset/RTC not trimmed for other clock rates.
4.  On M263, TRNG's clock source defaults to LXT and needs special handling without LXT.
5.  On M252, replace target.hxt-enable with target.hxt-present for consistency.
2021-06-02 09:02:05 +08:00
Chun-Chieh Li 3fc81fb883 M2354: Comply with standard pin naming rule 2021-05-26 09:35:05 +08:00
Chun-Chieh Li e2491509f5 M2354: Update to TF-M 1.3 2021-05-26 09:35:05 +08:00
Chun-Chieh Li 98f5a99219 M2354: Refine TF-M/Mbed integration readme 2021-05-26 09:35:04 +08:00
Chun-Chieh Li 9fee7d9b18 M2354: Use TF-M exported region_defs.h to replace target.mbed_rom_start and friends 2021-05-26 09:35:04 +08:00
Chun-Chieh Li 7db441401b M2354: Support TRNG as entropy source on TF-M
1.  Update TF-M Secure bin enabling TRNG as entropy source
2.  Replaced with above, remove TRNG HAL stuff on Mbed, including platform extra secure functions, cmake, etc.
2021-05-26 09:35:04 +08:00
Chun-Chieh Li 2c3fb3d727 M2354: Reduce output image size
1.  Enable mcuboot no padding option
2.  Support output image format Intel Hex
2021-05-26 09:35:03 +08:00
Chun-Chieh Li 356c8fdeb3 M2354: Add serial_tx_empty(...)
Enable serial sync with the below PR:
https://github.com/ARMmbed/mbed-os/pull/14600
2021-05-26 09:35:03 +08:00
Chun-Chieh Li fd8ac31537 M2354: Support TF-M
1.  Configure non-secure target name to NU_M2354 (targets/targets.json). No NU_M2354_NS alias
2.  Following template target, enable image signing and concatenating in post-build process
    (1) Add post-build script (tools/targets).
    (2) Enable TF-M custom build by centralize relevant stuff imported from TF-M (COMPONENT_TFM_S_FW).
3.  Add M2354Code.merge_secure into whitelist of uvision6 (tools/export/uvision/__init__.py).
4.  Add M2354 CMSIS pack database (tools/arm_pack_manager/index.json).
5.  Configure stdio baudrate to 115200 to match TF-M port (platform/mbed_lib.json).
6.  Define CMSIS_NVIC_VIRTUAL to override NVIC_SystemReset with TF-M version (cmsis_nvic_virtual.h).
7.  Override tfm_ns_interface_xxx(...) to enable NS secure call:
    (1) At pre-rtos stage
    (2) In SVC context
8. Implement secure function call with tfm_platform_ioctl(...).
9. Combine stddriver_secure.h/c and hal_secure.h/c into platform_extra_secure.h/c.
10. Fix peripheral base to non-secure (PeripheralNames.h) (TrustZone-unaware since Mbed OS 6.0).
11. Fix NU_PORT_BASE/NU_GET_GPIO_PIN_DATA/NU_SET_GPIO_PIN_DATA to non-secure (PinNamesCommon.h) (TrustZone-unaware since Mbed OS 6.0).
12. NSC convention for StdDriver sys/clk (both TF-M and Mbed must follow)
    (1) SYS_ResetModule
        Usage: Replaced with SYS_ResetModule_S on Mbed OS
        Action: Make it inaccessible from Mbed (neither source nor NSC). Provide SYS_ResetModule_S on Mbed via platform ioctl instead.
    (2) CLK_GetXxx
        Usage: Called in bpwm/i2s/qspi/sc/sdh and system_M2354 on Mbed OS
        Action: Make them inaccessible from Mbed (neither source nor NSC). Re-provide them on Mbed via platform ioctl instead.
13. Remove DISABLE/ENABLE macro definitions in BSP to avoid name conflict with other modules
14. Change to TMR4/5 from TMR2/3 for implementing us_ticker/lp_ticker because TMR2 is used for TF-M NSPE test
15. Support cmake

NOTE: Export(uvision6) doesn't support TF-M target. To enable it for partial compile on Keil, force below function to return true.
      is_target_supported(tools/export/uvision/__init__.py)
2021-05-26 09:35:02 +08:00
Martin Kojtal ccde03aac2
Merge pull request #14567 from OpenNuvoton/nvt_m480_wdt_rst
M487: Resolve WDT reset H/W limit
2021-05-03 12:11:30 +02:00
Chun-Chieh Li e38b691541 M487: Refine the WKT resolution to WDT reset from PD
1. Rephrase the comment
2. Pass WDT reset reason test
2021-04-22 19:12:52 +08:00
cyliangtw 7db85490e6 Align lines by space instead of tab 2021-04-20 19:39:14 +08:00
cyliangtw b26fd71855 Resolve M480 WDT reset H/W limit by reset from deep power-down 2021-04-20 18:18:00 +08:00
Chun-Chieh Li d489c92a1b Nuvoton: Fix hal_watchdog_kick() with WDT stopped
According to HAL spec, hal_watchdog_kick() shall do nothing when WDT is stopped.
2021-04-16 09:56:43 +08:00
Chun-Chieh Li df4f1a3387 M487: Adjust placement of SYS_UnlockReg in WDT reset from PD patch
This adjustment has two purposes:
1.  Avoid misleading placement of SYS_UnlockReg for WDT clock setting
2.  Safer for power-down
2021-04-08 17:18:38 +08: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 8cf2eccd47 Remove unused NUVOTON M2351 target files 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
Martin Kojtal 306172570a
Merge pull request #14379 from OpenNuvoton/nvt_high_res_pwm
Nuvoton: Enlarge NuMaker PWM duty cycle range
2021-03-11 17:12:25 +00:00
cyliangtw 5b693ff3b3 To keep proprietary BSP DutyCycle definition and rename HighDutyCycle in extend API 2021-03-10 11:53:55 +08:00
Harrison Mutai 7eb2122f63 Add bare metal support to Nuvoton targets
Modify `targets.json` to configure bare metal for the following targets:
NUMAKER_IOT_M252, NUMAKER_IOT_M263A, NUMAKER_IOT_M487, NUMAKER_PFM_M487,
NUMAKER_PFM_NUC472. Add target link interface between nuvoton library
and mbed-cmsis-cortex-m.
2021-03-05 14:50:20 +00:00
Harrison Mutai 46fb822d02 Remove uARM dependencies from Nuvoton targets 2021-03-05 14:48:17 +00:00
cyliangtw 045f443bb2 Support M251/M261/M453/NANO130/NUC472 PWM duty cycle range as 0 ~ 10000 2021-03-04 19:58:03 +08:00
cyliangtw abdcc7b831 Support M480 PWM duty cycle range as 0 ~ 10000 2021-03-04 17:10:04 +08:00
cyliangtw a3c09d0a3f Add mbed-cmsis-cortex-m into Nuvoton CMakeList 2021-03-04 11:35:14 +08:00
Martin Kojtal 120b25f138
Merge pull request #14315 from hugueskamba/hk_cmake_fix_nuvonton_m261
NUVOTON: Remove CMake listing of M261 include directory that do not exist
2021-02-22 20:10:02 +00:00
Martin Kojtal 3bb8de6ea3
Merge pull request #14308 from hugueskamba/hk_cmake_create_flash_cmsis_algo
Create FLASH CMSIS ALGO target to remove dependency on MBED_TARGET_LABELS
2021-02-22 14:36:44 +00:00
Hugues Kamba 3eb5296996 NUVOTON: Remove CMake listing of M261 include directory that do not exist
Remove listing of include directory that do not exist
2021-02-22 12:53:17 +00:00
Hugues Kamba 7d49d4bce1 Create FLASH CMSIS ALGO target 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 16:56:37 +00:00
Hugues Kamba a3a36ccb92 CMake: Fix some NUVOTON build
Correct source file listings for M251, M261.
Also remove unused input source files.
2021-02-19 16:48:32 +00:00
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