| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> MCU启动异常分析记录 -> 正文阅读 |
|
[嵌入式]MCU启动异常分析记录 |
一.问题背景 量产的产品在品质抽检中出现设备概率无法正常使用的问题,经过初步定位确定是MCU上电未正常启动。 二.问题分析以及定位 在产品中考虑到MCU程序升级(RF SUB-1G升级,NB-IOT等无线升级方法),因此采用的的是IAP升级架构 以STM32F103为例来说明,该型号MCU FLASH起始地址0x08000000,大小512KB即 0x00080000FLASH 的ERASE是2KB。 MCU的FLASH分区主要包括以下几个部分
1)boot阶段异常,如启动流程卡住等; 2)boot阶段正常启动,但跳转到APP程序异常,如未跳转成功,此部分涉及CPU中断向量,中断设备,外设DMA设置等内容,需要重点检查 ; 3)boot阶段启动正常,boot跳转到app正常,app启动异常如启动流程卡住 1.复现问题方式 外接串口小板,通过不断的插拔电池,查看UART日志进行启动判断是否正常来复现问题 。这种方式比较考验体力 另外的自动化上下电启稳定性验证,即智能门锁设备+UART小板+电源控制工装, 其中电源控制工装,支持自定义设置上下电时间间隔,并支持UART特定单词监控,负责对智能门锁的上下电进行控制,并监控启动过程中打印,如正常启动的打印是app start ok,则代表当前启动成功,继续进行下电 上电启动验证,如在一定时间内未监控到app start ok,则代表当前启动异常,不进行下一次的上下电测试,保留现场,用于查看分析问题; 2.通过复现问题可定位是原因2,即boot阶段正常启动,但跳转到APP程序异常,未跳转成功,此部分涉及CPU中断向量,中断设备,外设DMA设置等内容,现有的启动跳转未对外设UART资源进行充分释放 三.解决问题及其方法原则 boot是一个可完全使用MCU资源的程序 app也是一完全使用MCU资源的程序 要求在boot跳转到app的时候,几个通用的程序处理流程; 1)boot程序正确设置跳转地址等相关信息 ,如下列参考代码
2)app程序正常映射FLASH的分区CPU及其外设资源 要充分释放干净,如UART的DMA通道要释放,DMA要停止运行,UART的中断要关闭 此部分是最容易被考虑不全忽略的,在此我们总结一个原则,原则上boot初始化用了哪些外设,如UART,DMA,中断等,跳转前均要做确认,是否需要释放 该部分操作在上述跳转代码前需要执行到位 3)app分区的相关地址空间设置以及代码连接文件正确
|
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
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 8:16:24- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |