工具/软件:
在工程中添加 OAD 函数后、该应用程序在上电后运行大约需要 4 秒。 如何快速进入应用程序?从文档中我了解到、设备通电后、mcuboot 程序将验证应用程序的完整性。 那么、如何跳过特定要求下的验证?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:
在工程中添加 OAD 函数后、该应用程序在上电后运行大约需要 4 秒。 如何快速进入应用程序?从文档中我了解到、设备通电后、mcuboot 程序将验证应用程序的完整性。 那么、如何跳过特定要求下的验证?
您好、
您使用的是哪个 SDK?
9.10 F3 SDK 中的默认 mcuboot 似乎已经绕过映像验证、这会使加电和应用程序启动之间间隔几秒钟: MCUBOOT_VALIDATE_PRIMARY_SLOT

请参阅一些相关主题:
谢谢、
Toby
我使用的版本是 SDK。在这个版本中、似乎没有启用 simplelink_lowpower_f3_SDK_8_10_01_02。MCUBOOT_VALIDATE_PRIMARY_SLOT

2.定义 slot 时、主 slot 不应该是一个 app 程序吗?第二个插槽是持久性程序吗?因此、我将它的宏定义修改为

然而、经过这样的修改后、没有任何效果。从待机模式运行到 app 程序仍然需要大约 4 秒。
您好、
您也可以先禁用 LED 功能。 LED 功能也需要大约 1.5 秒。 尝试注释掉所有 LED 功能。
您可以设置一个标志并将其存储在内部闪存中。
根据标志值、您可以决定是否必须执行影像验证。
下面显示的“mcuboot_flag"可“可在 OAD 一次期间设置、并可从主应用程序代码中清除为零。
boot_image_check(struct boot_loader_state *state, struct image_header *hdr,
const struct flash_area *fap, struct boot_status *bs)
{
TARGET_STATIC uint8_t tmpbuf[BOOT_TMPBUF_SZ];
uint8_t image_index;
int rc;
FIH_DECLARE(fih_rc, FIH_FAILURE);
#if (BOOT_IMAGE_NUMBER == 1)
(void)state;
#endif
(void)bs;
(void)rc;
image_index = BOOT_CURR_IMG(state);
#ifdef MCUBOOT_ENC_IMAGES
if (MUST_DECRYPT(fap, image_index, hdr)) {
rc = boot_enc_load(BOOT_CURR_ENC(state), image_index, hdr, fap, bs);
if (rc < 0) {
FIH_RET(fih_rc);
}
if (rc == 0 && boot_enc_set_key(BOOT_CURR_ENC(state), 1, bs)) {
FIH_RET(fih_rc);
}
}
#endif
if(mcuboot_flag[0] == 0x01)
{
fih_rc = FIH_SUCCESS;
FIH_RET(fih_rc);
}
else
{
FIH_CALL(bootutil_img_validate, fih_rc, BOOT_CURR_ENC(state), image_index,
hdr, fap, tmpbuf, BOOT_TMPBUF_SZ, NULL, 0, NULL);
FIH_RET(fih_rc);
}
}这实际上是一种通过设置内部闪存中的标志位来确定是否跳过验证的好方法。 但是、也许我的发言不是很正确。 关于 CC2340 在加电后从 mcuboot 运行到应用程序所需的时间、我更担心如何缩短从关断模式唤醒到应用程序的 4 秒时间。 因为当我从关断模式唤醒时、CC2340 无法运行 mcuboot。 持久性程序也没有运行、这使我不确定在添加 OAD 函数后唤醒程序时程序会从哪里开始运行。 因为当我不添加 OAD 功能时、该程序是一个从关断模式唤醒后立即运行的应用程序。
在 mcuboot 程序中添加标志位后、模块从关断唤醒到应用程序运行所需的时间从 4 秒缩短到大约 1.8 秒。 但这段时间能更短吗? 从 mcuboot 程序中的 LED 现象来看、如果不加标志位、加电时红色指示灯将首先闪烁。 大约 2 秒后,在成功验证应用程序后,绿色指示灯将闪烁三次。 添加标记位时、上电后、它会直接跳过红灯约 2 秒、并使绿灯闪烁三次。 我想、添加标志位后、缩短的时间是红灯亮起所需的 2 秒、也就是验证应用程序所需的时间。 稍后,我会尝试评论绿色指示灯闪烁三次的说法,以验证时间是否可以更短。
非常感谢、Sandeep 和 Toby。
添加标志位并禁用 LED 后、从上电到应用程序(包括从关断唤醒到应用程序)的时间都达到了理想情况。
总结一下该问题、加电或复位时、mcuboot 程序将正常运行(即 LED 点亮)、但从关断模式唤醒时、运行 mcuboot 程序时 LED 灯不会点亮。 目前尚不清楚导致这种情况的原因。 由于上述问题,当我从关机模式醒来, LED 指示灯没有亮起,这导致我错误地认为程序运行不正常,导致我无法理解程序的运行模式。
谢谢、
樱桃