From f3ff8a9505a9d6306df92f1015d445f9920e80da Mon Sep 17 00:00:00 2001 From: Chun-Chieh Li Date: Tue, 16 Jul 2019 15:36:09 +0800 Subject: [PATCH] Support NUMAKER_PFM_NUC472 Based on mbed-os-pelion-example master/mbed-bootloader 4.1.0/mbed-cloud-client 4.0.0, support Nuvoton targets: 1. Support Nuvoton targets: - NUMAKER_PFM_NUC472 2. Change storage to NUSD (SD card in SDIO bus mode) from SD (SD card SPI bus mode) (1) Add COMPONENT_NUSD.lib. (2) Add component NUSD (target.components_add). (3) Change default BlockDevice to NUSD: Override BlockDevice::get_default_instance (nusd.provide-default-blockdevice). Required since mbed-cloud-client 2.1.0 (arm_uc_blockdevice_ext) or in: mbed-bootloader/modules/storage/pal-blockdevice/source/arm_uc_pal_blockdevice_mbed.cpp (4) Enable kvstore with blockdevice type being "other". i) Override get_other_blockdevice() (nusd.provide-kvstore-other-blockdevice). ii) Configure storage type to "FILESYSTEM". iii)Configure file system type to "LITTLE". vi) Configure block device type to "other". v) Configure external size to 64MiB, which cannot overlap with update-client. storage-address/update-client.storage-size. 3. Requirements for mbed-os version: - mbed-os 5.13.0 (or afterwards) to support kvstore with block device type being "other" - mbed-os 5.13.1 (or afterwards) to fix 'undefined pal_plat_osEntropyInject(...)' error --- README.md | 1 + ...der-nuc472-block_device-kvstore-v4.1.0.bin | Bin 0 -> 41824 bytes drivers/storage/COMPONENT_NUSD.lib | 1 + mbed_app.json | 24 ++++++++++++++++++ 4 files changed, 26 insertions(+) create mode 100644 bootloader/mbed-bootloader-nuc472-block_device-kvstore-v4.1.0.bin create mode 100644 drivers/storage/COMPONENT_NUSD.lib diff --git a/README.md b/README.md index 2f4f408..f566364 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,7 @@ Board | Connectivity | Storage for credentials and `ST NUCLEO_F411RE` | Wi-Fi ESP8266 | SD card | `Ublox UBLOX_EVK_ODIN_W2` | Wi-Fi | SD card | `ST DISCO_L475VG_IOT01A` | Wi-Fi | QSPIF | +`Nuvoton NUMAKER_PFM_NUC472` | Ethernet | SD card (NUSD) | Build-only = This target is currently verified only via compilation, and is not verified at runtime. diff --git a/bootloader/mbed-bootloader-nuc472-block_device-kvstore-v4.1.0.bin b/bootloader/mbed-bootloader-nuc472-block_device-kvstore-v4.1.0.bin new file mode 100644 index 0000000000000000000000000000000000000000..5234adf109c944087ba518a6437c29c4bae6bc59 GIT binary patch literal 41824 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