
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
"单步仿真一切正常,全速离线必崩"是嵌入式最折磨人的一类 BUG。本篇拆解根因:编译器把重复读取优化掉了(volatile 缺失)、多字节共享变量被中断打断(数据撕裂)、外设地址跨核越权访问。同时澄清两个流传很广的错误说法:volatile 不是"绕过 CPU 缓存",单步调试也不是"强制刷新内存"。

排查 90% 的指针异常,核心只有三件事:地址是否合法、内存生命周期是否有效、访问是否冲突。本篇先把 STM32MP157 M4 核的内存地图画清楚(256KB SRAM、向量表在 0x10000000、栈顶 0x10040000),再用"客栈"模型把全局/静态、栈、指针的角色讲透,最后逐条拆解 7 个最易混淆的指针基础概念。

Trae 等 AI 编程工具可直接读写 STM32 本地工程,快速生成单片机业务代码,轻松跑通硬件 Demo。这让不少嵌入式学习者疑惑是否还需要深耕单片机。本文结合 STM32F103C8T6 实测,分析 AI 工具的优势与局限,指出 AI 只能作为效率辅助,底层原理、硬件排错、工程能力仍需要扎实学习。

运行一键下载脚本,OpenOCD 输出一切看着正常,但板子 LED 不闪烁、程序没跑起来;用手动 GDB 连接调试却一切正常,可以单步、可以跑 main。本文讲清楚两条高频警告的真相,以及旧脚本命令链里埋着的三个致命问题,并给出最小改动的修复方案与验证标准。💡 适用场景:STM32MP157 M4 独立运行在内部 SRAM、LiteOS-M 操作系统、GCC + Makefile 裸金属开发,不

运行一键下载脚本,OpenOCD 输出一切看着正常,但板子 LED 不闪烁、程序没跑起来;用手动 GDB 连接调试却一切正常,可以单步、可以跑 main。本文讲清楚两条高频警告的真相,以及旧脚本命令链里埋着的三个致命问题,并给出最小改动的修复方案与验证标准。💡 适用场景:STM32MP157 M4 独立运行在内部 SRAM、LiteOS-M 操作系统、GCC + Makefile 裸金属开发,不

基于 STM32MP157‑M4 的 LiteOS‑M 移植复盘,辨析 RTOS 首任务启动 SVC 机制。SVC 并非硬件强制,取决于 CPU 运行上下文:Handler 模式必须 SVC;Thread 模式下 LiteOS‑M 原生HalStartToRun直接配置寄存器即可启动任务。FreeRTOS、RT‑Thread 普遍采用 SVC 用于兼容任意调用上下文。任务间 PendSV 切换必须

STM32MP157 M4 跑内部 SRAM 踩坑,OpenOCD 二次下载后 LED 常亮 / 熄灭,无法正常闪烁;实测对比 reset‑halt 带来调试报错重连问题,通俗讲解 unknown state 警告为什么删不掉,给出 AIRCR 软复位 + RETRAM 伪向量表一键 bat 脚本,梳理开发容易踩的隐形陷阱。

STM32MP157 M4 跑内部 SRAM 踩坑,OpenOCD 二次下载后 LED 常亮 / 熄灭,无法正常闪烁;实测对比 reset‑halt 带来调试报错重连问题,通俗讲解 unknown state 警告为什么删不掉,给出 AIRCR 软复位 + RETRAM 伪向量表一键 bat 脚本,梳理开发容易踩的隐形陷阱。

STM32MP157 的 M4 内核调试,程序下载到 M4 内部 SRAM。Windows 环境下 OpenOCD + GDB 组合会遇到一堆细碎坑:新建 GDB 连接后报无法修改 PC/SP;关闭 GDB 重连出现 10054 套接字错误;刚 attach 直接进入 UsageFault_Handler;出现 CP1252 编码转换警告;时而看到??()无符号,时而直接显示异常函数符号。本文记录

移植 LiteOS‑M 存在两种主流工程范式:直接修改内核源码,以及完整保留原版内核、板级适配与内核完全隔离。本文对比两种方案的工程结构、优缺点、适用场景,结合 STM32MP157‑M4+Makefile 实战,分析内核污染、版本升级、维护风险,给出工程选型建议。








