转载:如何为您的 Thingy:91 项目添加 DFU 支持(二)
2. 添加正确的 bootloader 设置如果我们现在尝试对 DFU 映像进行编程,它不会工作,原因有两个:映像使用错误的算法签名,并且没有使用正确的 flash 分区方案。让我们先处理第一个问题。MCUBoot 支持 ECDSA 和 RSA 签名,在 nRF9160 上,它将默认使用 ECDSA 签名。但是,这会带来一些问题,如 MCUBoot 文档中所述。由于这些问题,Thingy:91 引导加载程序改用 RSA 签名。因此,我们必须配置 MCUBoot 以使用 RSA 对我们的 DFU 映像进行签名,以使其与 Thingy:91 上的引导加载程序兼容。虽然我们可以通过多种方式更改 MCUBoot 配置,但最好的方法是添加一个 configuration overlay 文件。这样,我们就不必对 MCUBoot 进行任何更改,并且可以将所有修改保留在项目本地。要制作配置叠加文件,请在项目目录中创建一个新文件(例如 nrf/samples/nrf9160/gps),并为其指定一个合适的名称,例如 mcuboot_overlay-rsa.conf。配置覆盖文件将包含以下配置选项:全屏1
2
CONFIG_BOOT_SIGNATURE_TYPE_RSA=y
CONFIG_BOOT_SIGNATURE_KEY_FILE=“root-rsa-2048.pem”
注意:这会将 MCUBoot 配置为使用默认 RSA 密钥,以便它与出厂时 Thingy:91 上的引导加载程序兼容。它们只能用于开发。在 生产 中,您应该使用自己的密钥,这些密钥是保密的。有关更多信息,请参阅此处。这将得到以下文件:
5165.mcuboot_overlay-thingy91.conf注意:DevZone 倾向于在文件名中添加数字以使其唯一。如果要使用此文件(不更改 CMakeLists.txt 文件中的名称),则必须从文件名中删除这些数字。现在,我们需要将文件添加到我们的项目中。为此,我们可以将以下行添加到 CMakeLists.txt 文件中,就在 cmake_minimum_required 行的正下方:
全屏1
2
3
list(APPEND mcuboot_OVERLAY_CONFIG
“${CMAKE_CURRENT_SOURCE_DIR}/mcuboot_overlay-thingy91.conf”
)
如果您为配置叠加文件选择了不同的名称,或将其放置在其他位置,则必须相应地更改文件路径。对于 gps 示例,CMakeLists.txt 文件现在应如下所示:
全屏1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#
# 版权所有 (c) 2019 Nordic Semiconductor
#
# SPDX 许可证标识符:LicenseRef-BSD-5-Clause-Nordic
#
cmake_minimum_required(版本 3.13.1)
list(APPEND mcuboot_OVERLAY_CONFIG
“${CMAKE_CURRENT_SOURCE_DIR}/mcuboot_overlay-thingy91.conf”
)
find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
项目(gps_socket_sample)
zephyr_library_sources(src/main.c)
zephyr_library_sources_ifdef(
CONFIG_SUPL_CLIENT_LIB
来源:src/supl_support.c
)
页:
[1]