NuMaker bootloader with SD mode

Committer:
shliu1
Date:
Thu Feb 25 10:17:10 2021 +0800
Revision:
6:4dc994a04a99
Parent:
1:659cc7618f73
Support the both V5.X and V6.0 for mbed os

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ccli8 1:659cc7618f73 1 # Getting started with bootloader on mbed OS
ccli8 1:659cc7618f73 2
ccli8 1:659cc7618f73 3 This example is a clone of [mbed-os-example-bootloader](https://github.com/ARMmbed/mbed-os-example-bootloader)
ccli8 1:659cc7618f73 4 with SD card in SPI mode replaced with SD mode.
ccli8 1:659cc7618f73 5 For bootloader flow details, please refer to the [original](https://github.com/ARMmbed/mbed-os-example-bootloader) one.
ccli8 1:659cc7618f73 6
ccli8 1:659cc7618f73 7 ## Supported platforms
ccli8 1:659cc7618f73 8 - [NuMaker-PFM-NUC472](https://developer.mbed.org/platforms/Nuvoton-NUC472/)
ccli8 1:659cc7618f73 9 - [NuMaker-PFM-M487](https://developer.mbed.org/platforms/NUMAKER-PFM-M487/)
ccli8 1:659cc7618f73 10
ccli8 1:659cc7618f73 11 For targets which don't support SD card in SD mode, please refer back to the [original](https://github.com/ARMmbed/mbed-os-example-bootloader) one.
ccli8 1:659cc7618f73 12 - [NuMaker-PFM-M453](https://developer.mbed.org/platforms/Nuvoton-M453/)
ccli8 1:659cc7618f73 13 - [NuMaker-PFM-NANO130](https://os.mbed.com/platforms/NUMAKER-PFM-NANO130/)
ccli8 1:659cc7618f73 14
ccli8 1:659cc7618f73 15 ## Configuration for a new target
ccli8 1:659cc7618f73 16 To support a new target, we need to modify `mbed_app.json` for the new target:
ccli8 1:659cc7618f73 17 1. Specify bootloader image size after padding. Here it is 0x20000 for both **NUMAKER_FPM_NUC472** and **NUMAKER_FPM_M487**.
ccli8 1:659cc7618f73 18 1. Specify application image name which would be saved in SD card.
ccli8 1:659cc7618f73 19 Same as the [original](https://github.com/ARMmbed/mbed-os-example-bootloader) one,
ccli8 1:659cc7618f73 20 the application image is built from [mbed-os-example-bootloader-blinky](https://github.com/ARMmbed/mbed-os-example-bootloader-blinky).
ccli8 1:659cc7618f73 21 1. The SPI pins `sd_card_mosi`/`sd_card_miso`/`sd_card_sck`/`sd_card_cs` are for SD card in SPI mode.
ccli8 1:659cc7618f73 22 They are for information and are not used here.
ccli8 1:659cc7618f73 23 ```
ccli8 1:659cc7618f73 24 "NUMAKER_PFM_NUC472": {
ccli8 1:659cc7618f73 25 "target.restrict_size": "0x20000",
ccli8 1:659cc7618f73 26 "update_file": "\"mbed-os-example-bootloader-blinky_application.bin\"",
ccli8 1:659cc7618f73 27 "sd_card_mosi": "PF_0",
ccli8 1:659cc7618f73 28 "sd_card_miso": "PD_15",
ccli8 1:659cc7618f73 29 "sd_card_sck": "PD_14",
ccli8 1:659cc7618f73 30 "sd_card_cs": "PD_13"
ccli8 1:659cc7618f73 31 },
ccli8 1:659cc7618f73 32 "NUMAKER_PFM_M487": {
ccli8 1:659cc7618f73 33 "target.restrict_size": "0x20000",
ccli8 1:659cc7618f73 34 "update_file": "\"mbed-os-example-bootloader-blinky_application.bin\"",
ccli8 1:659cc7618f73 35 "sd_card_mosi": "D11",
ccli8 1:659cc7618f73 36 "sd_card_miso": "D12",
ccli8 1:659cc7618f73 37 "sd_card_sck": "D13",
ccli8 1:659cc7618f73 38 "sd_card_cs": "D10"
ccli8 1:659cc7618f73 39 }
ccli8 1:659cc7618f73 40 ```
ccli8 1:659cc7618f73 41
ccli8 1:659cc7618f73 42 ## SD card in SD mode
ccli8 1:659cc7618f73 43 In `main.cpp`, include header file for block device of SD card in SD mode:
ccli8 1:659cc7618f73 44 ```
ccli8 1:659cc7618f73 45 #include "mbed.h"
ccli8 1:659cc7618f73 46 #if defined(TARGET_NUMAKER_PFM_NUC472) || defined(TARGET_NUMAKER_PFM_M487)
ccli8 1:659cc7618f73 47 #include "NuSDBlockDevice.h"
ccli8 1:659cc7618f73 48 #else
ccli8 1:659cc7618f73 49 #include "SDBlockDevice.h"
ccli8 1:659cc7618f73 50 #endif
ccli8 1:659cc7618f73 51 #include "FATFileSystem.h"
ccli8 1:659cc7618f73 52 ```
ccli8 1:659cc7618f73 53 In `main.cpp`, instantiate block device of SD card in SD mode:
ccli8 1:659cc7618f73 54 ```
ccli8 1:659cc7618f73 55 #if defined(TARGET_NUMAKER_PFM_NUC472) || defined(TARGET_NUMAKER_PFM_M487)
ccli8 1:659cc7618f73 56 NuSDBlockDevice sd;
ccli8 1:659cc7618f73 57 #else
ccli8 1:659cc7618f73 58 //Pin order: MOSI, MISO, SCK, CS
ccli8 1:659cc7618f73 59 SDBlockDevice sd(MBED_CONF_APP_SD_CARD_MOSI, MBED_CONF_APP_SD_CARD_MISO,
ccli8 1:659cc7618f73 60 MBED_CONF_APP_SD_CARD_SCK, MBED_CONF_APP_SD_CARD_CS);
ccli8 1:659cc7618f73 61 #endif
ccli8 1:659cc7618f73 62 ```