| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> ESP32-S2系统加固实践(一) -> 正文阅读 |
|
[嵌入式]ESP32-S2系统加固实践(一) |
LoRa网关功能调试完成了,需要加固,测试。 (1)看门狗参考ESP32学习笔记(40)——Watchdog看门狗使用 - 简书ESP-IDF 支持两种类型的看门狗:中断看门狗定时器和任务看门狗定时器(TWDT)。中断看门狗定时器和 TWDT 都可以使用项目配置菜单启用,但是 TWDT 也可以在运行时启用。中断看门狗负责检测 FreeRTOS 任务切换被长时间阻塞的情况。TWDT 负责检测任务长时间不让步 CPU 运行的情况。 Watchdogs - ESP32 - — ESP-IDF Programming Guide latest documentation 默认已经启动了,中断看门狗-300ms和TWDT,TWDT—idle task 5秒 中断看门狗 中断看门狗是围绕定时器组 1 中的硬件看门狗构建的。如果由于某种原因这个看门狗无法执行调用 panic 处理程序的 NMI 处理程序(例如,因为 IRAM 被垃圾覆盖),它将硬重置 SOC。--这个不用写任何代码。 ?任务看门狗定时器 (TWDT) 任务看门狗定时器 (TWDT) 负责检测运行的任务在长时间没有让出 CPU 的情况。这是 CPU "饥饿"的症状,通常是由一个高优先级任务不让出 CPU 资源的循环引起,从而使较低优先级任务无法获得 CPU 资源。这可能是外围设备上的代码写得不好,也可能是陷入无限循环的任务。 默认情况下,TWDT 将监视每个 CPU 的空闲任务,但任何任务都可以选择由 TWDT 监视。每个观察任务必须定期“重置” TWDT 以指示它们已被分配 CPU 时间。如果任务未在 TWDT 超时期限内重置,则将打印一条警告,其中包含有关哪些任务未能及时重置 TWDT 以及哪些任务当前正在 ESP32 CPU 上运行的信息。并且还有可能在用户代码中重新定义函数 默认情况下,make menuconfig 中的 CONFIG_TASK_WDT 将被启用,导致 TWDT 在启动期间自动初始化。同样,CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0 和 CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1 也会默认启用,导致两个空闲任务在启动期间订阅 TWDT。 ----需要用它来监测应用任务。如果某些任务一直没有正常执行,就直接重启系统了。如何操作? 参考文章给你如下代码,并不能复位系统呀
默认情况下,任务看门狗中断task_wdt_isr()会打印类似如下的信息: E (10299) task_wdt: Task watchdog got triggered. The following tasks did not reset the watchdog in time: 调用panic handler :在 make menuconfig --> Component config --> ESP32-specific选中 Invoke panic handler on Task Watchdog timeout--这个最简单 在main()中重新定义esp_task_wdt_isr_user_handler()函数,我在里面仅仅加了一个打印语句就会达到看门狗触发重启的效果,也不知道这是不是正确姿势。 ?----不是所有的task都适合task wdt?一般都有一个while循环。应该都可以。 (2)stackstack参考 FreeRTOS 接口: vTaskList() - 可优化内存和 task 栈溢出定位_乐鑫科技 Espressif的博客-CSDN博客_freertos vtasklist使用注意 原来的heap剩余空间也继续保留。 vTaskList() 使用 注意: 使用 vTaskList() 前需使能:--默认是使能的。 make menuconfig -> Component config -> FreeRTOS -> Enable FreeRTOS trace facility make menuconfig -> Component config -> FreeRTOS -> Enable FreeRTOS trace facility -> Enable FreeRTOS stats formatting functions 通过上面配置,等同于使能 FreeRTOSConfig.h 中如下两个宏: configUSE_TRACE_FACILITY 和 configUSE_STATS_FORMATTING_FUNCTIONS (3)CPU占用率--需要打开一个选项 ESP32_FreeRtos_内存使用情况查看_weixin_50183638的博客-CSDN博客_freertos 内存使用查看 ? (4)heap查看是否内存泄漏 //ESP_LOGI("[up]", "WaterMark=%d", uxTaskGetStackHighWaterMark(NULL)); (5)实际代码
(6)实际效果第一列: task name 第二列: task 当前状态 X: running 第四列: 最小剩余 task 栈空间,字节为单位
?--可以看见有多少个task,dm9051_tsk曾经挂掉,增加点栈空间,同时把task wdt增加上去。 core dump也很重要,重启后需要分析,单独记录 |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 5:50:26- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |