新闻详情

新闻详情

首页 / 资讯中心 / 详情

STM32MP1(FS-MP1A)SD 卡启动排障与系统烧录实践总结

发布时间:2026/10/2 8:29:27来源:尧图网络
STM32MP1(FS-MP1A)SD 卡启动排障与系统烧录实践总结
一、问题背景目标将自行编译/移植的 TF-A、U-Boot、rootfs 烧录到 SD 卡使 FS-MP1ASTM32MP157A开发板从 SD 卡启动。过程中依次遇到三类问题最终全部解决系统完整启动。二、现象一dd 报“设备上没有空间”烧录 TF-A 时报错dd:写入/dev/sdb1:设备上没有空间记录了4130的读入/记录了4120的写出含义输入文件比目标分区还大写到分区末尾被截断。排查发现 fdisk 建分区时误将大小算错/dev/sdb1 34 445 412 206K ←只有206K而TF-A镜像为211456字节413个扇区/dev/sdb2 446 857 412 206K/dev/sdb3 858 4953 4096 2M/dev/sdb4 4954 250713 245760 120M解决删除旧分区重建前三个分区各给 2M第四个占剩余空间。注意 fdisk 中“2M”表示大小为 2M“2M”无加号会被当成结束扇区号 2097152曾因此误建出 1023M 的分区。三、插曲rootfs.tar 解包到了宿主机rootfs.tar 是 tar 压缩包而非 ext4 镜像需先挂载 sdb4 再解包。因 /mnt 未挂载成功tar -C /mnt 将 rootfs 解到了虚拟机系统盘df -h /mnt 显示 /dev/sda3SD 卡并未写入。教训tar 解包到未挂载的目录不会报错。解包前必须先确认 df -h /mnt 显示的是 /dev/sdb4。清理后按“格式化→挂载→df 确认设备名→解包→ls 确认→umount”流程重做成功。四、现象二烧录后板子无法启动串口无任何输出关键定位手段——对照实验将官方 sdcard.img 整盘烧回上电有完整串口输出证明硬件、串口接线、拨码开关全部正常问题出在自建分区表或镜像。4.1 最终生效的烧录方案1.整盘恢复官方镜像拿回官方分区表sudo dd ifsdcard.img of/dev/sdb convfsyncsync2.只替换三个分区的内容不动分区表sudo dd iftf-a-stm32mp157a-fsmp1a.stm32 of/dev/sdb1 convfsyncsudo dd iftf-a-stm32mp157a-fsmp1a.stm32 of/dev/sdb2 convfsyncsudo dd ifu-boot.stm32 of/dev/sdb3 convfsyncsync3.校验cmp无differ输出即通过sudo cmp tf-a-stm32mp157a-fsmp1a.stm32 /dev/sdb1 echo sdb1 OK烧录后上电启动链完整跑通TF-A(BL2 v2.5) → SP_MIN → U-Boot 2021.10 → Linux 内核 5.4.56 → 挂载 mmcblk0p4 → 出现 Welcome to fsmp1a 登录提示符。4.2 根因GPT 分区类型 GUID 不被 BootROM 接受STM32MP1 BootROM 从 SD 卡启动时并非见到分区就读镜像而是扫描 GPT 分区表只加载特定类型 GUID 的分区中的 FSBL。官方布局中各分区类型为 0700Microsoft basic dataGUID EBD0A0A2-B9E5-4433-87C0-68B6B72699C7并带有 fsbl1 / fsbl2 / ssbl 分区名而 fdisk 手动建分区默认给的是 8300Linux filesystemGUID 不同ROM 直接跳过表现为“串口完全无输出”。用 sdcard.img 整盘烧录之所以有效是因为它把官方分区表类型 GUID、分区名、偏移原样写回卡上随后 dd 只覆盖各分区内部的数据扇区分区表原封不动于是 ROM 认出了自己人。可用以下命令查看验证sudo gdisk -l /dev/sdb#如需手动建分区后修正类型与名字sudo sgdisk -t 1:0700 -t 2:0700 -t 3:0700 -t 4:0700 /dev/sdbsudo sgdisk -c 1:fsbl1 -c 2:fsbl2 -c 3:ssbl -c 4:rootfs /dev/sdb五、分区表保存在哪里分区表不属于任何分区位于磁盘镜像的固定扇区LBA 0保护性MBRLBA 1 GPT头EFI PART签名LBA 2~33 GPT分区表条目LBA 34分区1 (fsbl1)数据起点…LBA 250718 GPT备份分区表LBA 250750 GPT备份头←官方镜像共250751个扇区约128MBsdcard.img 与 SD 卡布局一致因此 dd 整盘写入时分区表字节被原样搬到卡上相同位置。直接对文件执行 sudo gdisk -l sdcard.img 也能读出分区表无需写卡。附带说明因 128MB 镜像写入 32GB 卡启动日志中的警告 “GPT: Alternate GPT header not at the end of the disk (250751 ! 61067263)” 属于无害提示。六、经验总结STM32MP1 SD 卡启动对分区表有四个要求分区大小、起始偏移、类型 GUID0700、分区名fsbl1/fsbl2/ssbl任一不符现象不同排查时逐项核对。“串口完全无输出”优先怀疑 ROM 未找到 FSBL先做官方镜像对照实验快速区分硬件问题与分区/镜像问题。dd 报错“设备上没有空间” 目标分区小于输入文件用 fdisk -l 核对分区大小。fdisk 中指定分区大小必须带 号2M 表示大小2M 表示结束扇区号。tar 解包到挂载点之前先 df -h 确认该目录背后是目标设备否则文件会静默写入宿主机目录。推荐烧录流程官方 sdcard.img 整盘打底保证分区表正确→ 单独 dd 替换 sdb1/sdb2TF-A、sdb3U-Boot→ 挂载 sdb4 解包 rootfs.tar → cmp 校验 → sync 后拔卡。。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

基于MPC的微电网日前日内调度优化:Matlab实现指南 2026/10/2 14:12:30

基于MPC的微电网日前日内调度优化:Matlab实现指南

搞微电网调度优化的朋友,大概率绕不开MPC这三个字母。不管是光伏、储能、负荷怎么协调,还是并离网怎么切换,模型预测控制(Model Predictive Control)都像是带着水晶球开车——提前看一段路,再决定踩油门还是…

阅读更多 →
2026 开源圈第一炸:DeepSeek Harness 一天 10 万星,TaoToken 配置骨架先跑通 2026/10/2 14:12:30

2026 开源圈第一炸:DeepSeek Harness 一天 10 万星,TaoToken 配置骨架先跑通

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
视图库开发实战:从建表到查询的拿来即用示例与性能调优 2026/10/2 14:12:30

视图库开发实战:从建表到查询的拿来即用示例与性能调优

简介:这是一套基于Java开发的视图库(View Library)完整示例工程,面向需要快速集成视图库能力的后端开发者与系统集成人员,主打“拿来即用”。资源支持1400标准接入与级联,覆盖注册、心跳、注销、订阅、回调…

阅读更多 →
AI Engineering from Scratch:产线级AI系统手工锻造指南 2026/10/2 14:12:24

AI Engineering from Scratch:产线级AI系统手工锻造指南

1. 这不是“搭积木”,而是亲手锻造AI系统的底层逻辑“AI Engineering from Scratch”——看到这个标题,很多人第一反应是:又要从零写Transformer?又要手推反向传播?其实完全不是。我带过六支AI工程团队,从金…

阅读更多 →
国产MCU实战对比:STM32、GD32与CH32V103在真实项目中的表现与选型 2026/10/2 14:12:24

国产MCU实战对比:STM32、GD32与CH32V103在真实项目中的表现与选型

1. 从一块“不听话”的板子说起去年这个时候,我手里同时开着三块开发板:一块STM32F103C8T6的最小系统板,一块GD32F103C8T6的替代板,还有一块CH32V103C8T6的RISC-V评估板。三块板子引脚基本兼容,价格却差了一大截。当时…

阅读更多 →
【保姆级教程】用 WeChat 3.9 + Memotrace + Claude Code 复现前任 Skills:把 settings 改到 TaoToken 2026/10/2 14:12:24

【保姆级教程】用 WeChat 3.9 + Memotrace + Claude Code 复现前任 Skills:把 settings 改到 TaoToken

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉