Skip to content

Commit 870a6b0

Browse files
committed
Support MCUboot for NUMAKER_IOT_M467
1. Support MCUboot - Relevant file list at bootloader/MCUboot - Prebuilt bootloader binary "mbed-mcuboot-bootloader_xxx" - Compatible private key "signing-keys.pem" for signing built application binary - Public key "signing_keys.c" for mcuboot compile - Work around MCUBOOT_HAVE_LOGGING missing in mbed port's mcuboot_config.h - Change log level to 'INFO' - Secondary slot at internal flash (FLASHIAP) - Update mbed-client-for-aws.lib to enable AWS OTA PAL for MCUboot NOTE: mbed-mcuboot-demo build target NUMAKER_IOT_M467_FLASHIAP NOTE: MCUboot configuration must be consistent with mbed-mcuboot-demo. NOTE: Mbed CLI 2 doesn't support locating application to another address. Use Mbed CLI 1 instead. See: ARMmbed/mbed-tools#156 2. Support WiFi as default network type 3. Update readme 4. Direct mbed-os.lib to m467 branch temporarily. Use of target name 'NUMAKER_IOT_M467' will cause build failure because it hasn't yet added into mainline.
1 parent 97afe48 commit 870a6b0

10 files changed

+333
-33
lines changed

CMakeLists.txt

+10
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,16 @@ include(${MBED_PATH}/tools/cmake/app.cmake)
1111

1212
project(${APP_TARGET})
1313

14+
if("AWSIOT_OTA_PAL_MCUBOOT" IN_LIST MBED_TARGET_LABELS)
15+
# Mbed CLI 2 fails to pass MBED_APP_START and friends to build system. See:
16+
# https://github.com/ARMmbed/mbed-tools/issues/156
17+
message(FATAL_ERROR
18+
"Mbed CLI 2 doesn't support locating application to another address. "
19+
"Use Mbed CLI 1 instead. "
20+
"See: https://github.com/ARMmbed/mbed-tools/issues/156"
21+
)
22+
endif()
23+
1424
# Unnecessary due to defined in mbed_lib.json of mbed-client-for-aws
1525
#add_compile_definitions(MBEDTLS_THREADING_C)
1626
#add_compile_definitions(MBEDTLS_THREADING_ALT)

README.md

+189-31
Large diffs are not rendered by default.
Binary file not shown.

bootloader/MCUboot/signing-keys.pem

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
-----BEGIN PRIVATE KEY-----
2+
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDNldq0ipTdDF4G
3+
DlA7v0Py+/uM6GfWNkIAJv9BduYcl7znpX1Qeo7r79M1J9E2jbWzZAbx0OMBZQLG
4+
p5BjIaMOj6xV9TqehAKH75LUlx8Fm58xyTsrcKOldS7DTfDHGD18V2FGDuSoYCM9
5+
YPtWfsIVKxawG94yASjyR4q6AWdBUYKr8uYi+lL8SC6aaMpIJf+Puvo/uk/YTD0h
6+
VFYC2cEteGFpScdGGWtmIamdpiUW6VD+hkRdMmZoxky1STHGdpa1e4yxPDncmGu7
7+
AJfkc17s2yIIUSBMixcs+Yzrn8u7PkTegvZMm06YkU9hrS1rxDLsa8Js45mPZx20
8+
EROtB/7dAgMBAAECggEAcso2mNI8NoS+RyFc2U99cEIUfeQSfoBDL/SWWAY8jECJ
9+
YMp9gx87iC+bvbVi0tQjXWv/mKvq5I9zElrjewaAFhRQxJotxe6tvxsc4AkVcDsp
10+
k1Hp8OJu7WbV2oU9aN13D2N20/hi4kTzyETLcctLMSii/WhCE6ekJkueASfhcI1C
11+
6RJswOdISI5U8/YuvEy5MVXR2Kz3VPdZjAYxXfBxw9SXYcYDCkPfi+iMECk31yke
12+
CJMtVfkuRj1gQZKMcaFd+Zsho3c9VbY7rhF0f8u0kMAFmaJArUSA+vzGkRp09RH2
13+
bvA4EWe6J+HGiEJZ8IZ5Taz0HTkZSd5Ze1xxdQFk3QKBgQD1IhBBAdbYGBcVlT6v
14+
oHHUS7zHeI9rzWrM5ax2fXuOXeTqUKvyRwOvMzyOVXzXrGaIwXbMZggSemPO265I
15+
xi4PlBfLOF35HAJsYf7TQstM3FT5y1xMqpG6Rn6cOJPXiuaoKhYkMdLq4adVc/5/
16+
UpjeJixltAaCcmQas0BFk8B81wKBgQDWsvoMJfyKKhx6MqL+tAUy4jm9LISgdnyD
17+
KUeHvF7vY8KYTZKR6Tr7hR3mNpXyxJN3SppbuqW9hiJ50+ekCqGsCnTaGbYOWOyR
18+
ksVZBrQYDMGT4tKSnc2jDvlb2VseZfPBqihWi8891aeBbmhAUBypeO8vGANVSS+t
19+
jPUfNneXawKBgQCv6O/tFprMnA0EygMgGW1WQbuJEXUqkVDRFQh8R3RBKBQ8KgQa
20+
auez9HrCUYqzYt55yQuthpLIX9f7/B3Hz6ACQe4JQbv+JiF/EZvCky49S+gXEd58
21+
jfLhz/DPvrIpfV4k037sHm0TbTed1Q2O5QEaeh5mJZh+SASaPIQk6fC6JQKBgEkU
22+
uxCPjZrqIq9ltR3F4U8kukqucKa+LjvnPTXy5M3Pw1lcblvEbBNZiIfoZLoyN5AP
23+
kONQcUJF+k5F1z97bvTEymnC/rl7g2s57nsTURIupWXVe5/0nx615iNhpSZ/xa1S
24+
YlCzXmPJ6i6gilP58Qeu5pu9LMVHGDeXF4j8XVDpAoGAQAE8qCr25W0kMVyhUZvR
25+
WWZ8NNwpS19F/JYuA68Sr+E1TMFD7rxHqtRu6RKFaJFZszO2b9fA2ZumO9/kD3m8
26+
8COdXYIu9u63Uh1dTXApT/MJXOeyMIL3pP2eDh6dxo+mlvzsNSGbGC41/ib/6zu1
27+
rJdXTf0fCOpsVxg8adNS7hI=
28+
-----END PRIVATE KEY-----

bootloader/MCUboot/signing_keys.c

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
/* Autogenerated by imgtool.py, do not edit. */
2+
const unsigned char rsa_pub_key[] = {
3+
0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01,
4+
0x00, 0xcd, 0x95, 0xda, 0xb4, 0x8a, 0x94, 0xdd,
5+
0x0c, 0x5e, 0x06, 0x0e, 0x50, 0x3b, 0xbf, 0x43,
6+
0xf2, 0xfb, 0xfb, 0x8c, 0xe8, 0x67, 0xd6, 0x36,
7+
0x42, 0x00, 0x26, 0xff, 0x41, 0x76, 0xe6, 0x1c,
8+
0x97, 0xbc, 0xe7, 0xa5, 0x7d, 0x50, 0x7a, 0x8e,
9+
0xeb, 0xef, 0xd3, 0x35, 0x27, 0xd1, 0x36, 0x8d,
10+
0xb5, 0xb3, 0x64, 0x06, 0xf1, 0xd0, 0xe3, 0x01,
11+
0x65, 0x02, 0xc6, 0xa7, 0x90, 0x63, 0x21, 0xa3,
12+
0x0e, 0x8f, 0xac, 0x55, 0xf5, 0x3a, 0x9e, 0x84,
13+
0x02, 0x87, 0xef, 0x92, 0xd4, 0x97, 0x1f, 0x05,
14+
0x9b, 0x9f, 0x31, 0xc9, 0x3b, 0x2b, 0x70, 0xa3,
15+
0xa5, 0x75, 0x2e, 0xc3, 0x4d, 0xf0, 0xc7, 0x18,
16+
0x3d, 0x7c, 0x57, 0x61, 0x46, 0x0e, 0xe4, 0xa8,
17+
0x60, 0x23, 0x3d, 0x60, 0xfb, 0x56, 0x7e, 0xc2,
18+
0x15, 0x2b, 0x16, 0xb0, 0x1b, 0xde, 0x32, 0x01,
19+
0x28, 0xf2, 0x47, 0x8a, 0xba, 0x01, 0x67, 0x41,
20+
0x51, 0x82, 0xab, 0xf2, 0xe6, 0x22, 0xfa, 0x52,
21+
0xfc, 0x48, 0x2e, 0x9a, 0x68, 0xca, 0x48, 0x25,
22+
0xff, 0x8f, 0xba, 0xfa, 0x3f, 0xba, 0x4f, 0xd8,
23+
0x4c, 0x3d, 0x21, 0x54, 0x56, 0x02, 0xd9, 0xc1,
24+
0x2d, 0x78, 0x61, 0x69, 0x49, 0xc7, 0x46, 0x19,
25+
0x6b, 0x66, 0x21, 0xa9, 0x9d, 0xa6, 0x25, 0x16,
26+
0xe9, 0x50, 0xfe, 0x86, 0x44, 0x5d, 0x32, 0x66,
27+
0x68, 0xc6, 0x4c, 0xb5, 0x49, 0x31, 0xc6, 0x76,
28+
0x96, 0xb5, 0x7b, 0x8c, 0xb1, 0x3c, 0x39, 0xdc,
29+
0x98, 0x6b, 0xbb, 0x00, 0x97, 0xe4, 0x73, 0x5e,
30+
0xec, 0xdb, 0x22, 0x08, 0x51, 0x20, 0x4c, 0x8b,
31+
0x17, 0x2c, 0xf9, 0x8c, 0xeb, 0x9f, 0xcb, 0xbb,
32+
0x3e, 0x44, 0xde, 0x82, 0xf6, 0x4c, 0x9b, 0x4e,
33+
0x98, 0x91, 0x4f, 0x61, 0xad, 0x2d, 0x6b, 0xc4,
34+
0x32, 0xec, 0x6b, 0xc2, 0x6c, 0xe3, 0x99, 0x8f,
35+
0x67, 0x1d, 0xb4, 0x11, 0x13, 0xad, 0x07, 0xfe,
36+
0xdd, 0x02, 0x03, 0x01, 0x00, 0x01,
37+
};
38+
const unsigned int rsa_pub_key_len = 270;

demo_ota_mqtt/ota_demo_core_mqtt.cpp

+2
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,8 @@ extern "C" {
8585
}
8686
#if COMPONENT_AWSIOT_OTA_PAL_NVTBL
8787
#include "ota_pal_mbed.h"
88+
#elif COMPONENT_AWSIOT_OTA_PAL_MCUBOOT
89+
#include "ota_pal_mcuboot.h"
8890
#elif COMPONENT_AWSIOT_OTA_PAL_PSAFWU
8991
#include "ota_pal_psafwu.h"
9092
#endif

mbed-client-for-aws.lib

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
https://github.com/OpenNuvoton/mbed-client-for-aws.git#f1964ac0f2a2e61222128fe8e4869b3eabfaff2d
1+
https://github.com/OpenNuvoton/mbed-client-for-aws.git#e115b12e57dce9b44529f60519713fefcc9afa0e

mbed-os.lib

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
https://github.com/ARMmbed/mbed-os/#54e8693ef4ff7e025018094f290a1d5cf380941f
1+
https://github.com/OpenNuvoton/mbed/#0c3df6a83040577ee3c353df7b37f64d15ef3afd

mbed_app.json

+32
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,41 @@
66
"platform.error-filename-capture-enabled" : true,
77
"platform.stdio-convert-newlines" : true,
88
"platform.stdio-baud-rate" : 115200,
9+
"mbed-trace.enable" : true,
10+
"mbed-trace.max-level" : "TRACE_LEVEL_INFO",
11+
"mbed-trace.fea-ipv6" : false,
912
"platform.stack-stats-enabled" : true,
1013
"platform.heap-stats-enabled" : true
1114
},
15+
"NUMAKER_IOT_M467": {
16+
"target.components_add" : ["AWSIOT_MQTT", "AWSIOT_JOBS", "AWSIOT_JSON", "AWSIOT_OTA", "AWSIOT_OTA_PAL_MCUBOOT", "AWSIOT_PKCS11", "AWSIOT_PKCS11_KVSTORE"],
17+
"target.network-default-interface-type" : "WIFI",
18+
"nsapi.default-wifi-security" : "WPA_WPA2",
19+
"nsapi.default-wifi-ssid" : "\"SSID\"",
20+
"nsapi.default-wifi-password" : "\"PASSWORD\"",
21+
"esp8266.tx" : "D1",
22+
"esp8266.rx" : "D0",
23+
"esp8266.rts" : "A2",
24+
"esp8266.cts" : "A3",
25+
"esp8266.rst" : "D2",
26+
"esp8266.provide-default" : true,
27+
"target.mbed_app_start" : "0x11000",
28+
"target.mbed_app_size" : "0x70000",
29+
"mcuboot.bootloader-build" : 0,
30+
"target.macros_add" : ["MCUBOOT_HAVE_LOGGING"],
31+
"mcuboot.log-level" : "MCUBOOT_LOG_LEVEL_INFO",
32+
"mcuboot.primary-slot-address" : "0x10000",
33+
"mcuboot.slot-size" : "0x73000",
34+
"mcuboot.scratch-address" : "0xFE000",
35+
"mcuboot.scratch-size" : "0x2000",
36+
"mcuboot.max-img-sectors" : "0x73",
37+
"mcuboot.read-granularity" : 4,
38+
"aws-client-ota-mcuboot.provide-default-secondary-blockdevice" : true,
39+
"aws-client-ota-mcuboot.default-secondary-blockdevice-type" : "FLASHIAP",
40+
"storage_tdb_internal.internal_base_address" : "0xF6000",
41+
"storage_tdb_internal.internal_size" : "0x8000",
42+
"storage.storage_type" : "TDB_INTERNAL"
43+
},
1244
"NUMAKER_PFM_M487": {
1345
"target.components_add" : ["AWSIOT_MQTT", "AWSIOT_JOBS", "AWSIOT_JSON", "AWSIOT_OTA", "AWSIOT_OTA_PAL_NVTBL", "AWSIOT_PKCS11", "AWSIOT_PKCS11_KVSTORE", "SPIF"],
1446
"target.network-default-interface-type" : "ETHERNET",

mbed_app_bg96.json

+32
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,41 @@
77
"platform.error-filename-capture-enabled" : true,
88
"platform.stdio-convert-newlines" : true,
99
"platform.stdio-baud-rate" : 115200,
10+
"mbed-trace.enable" : true,
11+
"mbed-trace.max-level" : "TRACE_LEVEL_INFO",
12+
"mbed-trace.fea-ipv6" : false,
1013
"platform.stack-stats-enabled" : true,
1114
"platform.heap-stats-enabled" : true
1215
},
16+
"NUMAKER_IOT_M467": {
17+
"target.components_add" : ["AWSIOT_MQTT", "AWSIOT_JOBS", "AWSIOT_JSON", "AWSIOT_OTA", "AWSIOT_OTA_PAL_MCUBOOT", "AWSIOT_PKCS11", "AWSIOT_PKCS11_KVSTORE"],
18+
"target.network-default-interface-type" : "WIFI",
19+
"nsapi.default-wifi-security" : "WPA_WPA2",
20+
"nsapi.default-wifi-ssid" : "\"SSID\"",
21+
"nsapi.default-wifi-password" : "\"PASSWORD\"",
22+
"esp8266.tx" : "D1",
23+
"esp8266.rx" : "D0",
24+
"esp8266.rts" : "A2",
25+
"esp8266.cts" : "A3",
26+
"esp8266.rst" : "D2",
27+
"esp8266.provide-default" : true,
28+
"target.mbed_app_start" : "0x11000",
29+
"target.mbed_app_size" : "0x70000",
30+
"mcuboot.bootloader-build" : 0,
31+
"target.macros_add" : ["MCUBOOT_HAVE_LOGGING"],
32+
"mcuboot.log-level" : "MCUBOOT_LOG_LEVEL_INFO",
33+
"mcuboot.primary-slot-address" : "0x10000",
34+
"mcuboot.slot-size" : "0x73000",
35+
"mcuboot.scratch-address" : "0xFE000",
36+
"mcuboot.scratch-size" : "0x2000",
37+
"mcuboot.max-img-sectors" : "0x73",
38+
"mcuboot.read-granularity" : 4,
39+
"aws-client-ota-mcuboot.provide-default-secondary-blockdevice" : true,
40+
"aws-client-ota-mcuboot.default-secondary-blockdevice-type" : "FLASHIAP",
41+
"storage_tdb_internal.internal_base_address" : "0xF6000",
42+
"storage_tdb_internal.internal_size" : "0x8000",
43+
"storage.storage_type" : "TDB_INTERNAL"
44+
},
1345
"NUMAKER_PFM_M487": {
1446
"target.components_add" : ["AWSIOT_MQTT", "AWSIOT_JOBS", "AWSIOT_JSON", "AWSIOT_OTA", "AWSIOT_OTA_PAL_NVTBL", "AWSIOT_PKCS11", "AWSIOT_PKCS11_KVSTORE", "SPIF"],
1547
"target.network-default-interface-type" : "ETHERNET",

0 commit comments

Comments
 (0)