完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我有一个生产固件的设备。我们启用了闪存加密,并启用了核心转储。不幸的是,我们没有在文档中的任何地方看到核心转储分区需要在分区表中明确标记为加密......
此时我们有我们的引导加载程序和 3 个应用程序分区(一个工厂和两个 OTA 分区) ,以及 FATFS 分区、核心转储分区和一些 NVS 分区等......对于我们现在运行此设置的(数千台)野外设备,我们希望能够将核心转储远程上传到我们的服务器,所以我们可以进行崩溃分析...... 不幸的是,当我们在开发固件中启用代码时,我们在运行时尝试读取核心转储数据时很快遇到以下错误: E (4122) esp_core_dump_elf:硬件和核心转储分区中启用的 Flash 加密未加密! 我从 coredump 函数中得到了 ESP_ERR_NOT_SUPPORTED。 该错误是由 esp_core_dump_get_summary 抛出的,我们只是将其用作测试,试图最初从标头获取摘要信息并通过 MQTT 发送它。 所以我有几个问题:
代码: sec_cert, 0x3F, , 0x11000, 0x3000, , # Never mark this as an encrypted partition nvs, data, nvs, 0x14000, 0x6000, otadata, data, ota, , 0x2000, phy_init, data, phy, , 0x1000, rmaker, data, nvs, , 0x6000, coredump, data, coredump, , 512K, factory, app, factory, 0xB0000, 3M, encrypted ota_0, app, ota_0, , 3M, encrypted ota_1, app, ota_1, , 3M, encrypted storage, data, fat, , 6M, encrypted 另外需要说明的是,现在我们在现场更新设备的唯一方法是我们的 OTA 过程,它通过安全的 MQTT 通道向设备发送 MQTT 命令,要求它从经过身份验证的 HTTPS 服务器获取新的应用程序图像使用 esp_https_ota 工作流程下载和应用。 |
|
相关推荐
2个回答
|
|
我看到这个错误来自 API `esp_core_dump_get_summary`,所以这个 API 的实现使用 mmap 从 coredump 分区读取数据,如果分区没有以加密方式写入,这将导致垃圾。
即使分区未在闪存上加密,我也没有看到您使用 coredump 模块的任何其他不兼容性。在这种情况下,只有 esp_core_dump_get_summary API 不起作用。 |
|
|
|
您可以在代码中检查以下变通方法来修复核心转储分区的“加密”标志:
代码: __attribute__((constructor)) void fix_partition_status(void) { ((esp_partition_t*)esp_partition_find_first(ESP_PARTITION_TYPE_DATA, ESP_PARTITION_SUBTYPE_DATA_COREDUMP, "coredump"))->encrypted = true; } 请将此视为解决方法。彻底修复将更新分区表,但考虑到现场设备的电源故障情况,这非常困难。 |
|
|
|
只有小组成员才能发言,加入小组>>
172个成员聚集在这个小组
加入小组430 浏览 1 评论
1293 浏览 1 评论
598浏览 6评论
495浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
481浏览 5评论
476浏览 4评论
462浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-12 05:50 , Processed in 0.754277 second(s), Total 49, Slave 43 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号