Nuvoton
/
NuMaker-mbed-bootloader-example
NuMaker bootloader with SD mode
README.md@7:90af0e9f9fa4, 17 months ago (annotated)
- Committer:
- cyliang
- Date:
- Mon Mar 13 02:08:34 2023 +0000
- Revision:
- 7:90af0e9f9fa4
- Parent:
- 1:659cc7618f73
Update main.cpp, SD lib & OS to v6.17.0
Who changed what in which revision?
User | Revision | Line number | New 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 | ``` |