烧录OpenStLinux到Stm32mp157上

news2025/7/13 11:15:40

STM32CubeProgrammer是ST官方专门为Corex-A stm32mp157这样高端系列开发的烧录工具

你需要到ST官方网站上下载STM32CubeProgrammer

ST官方下载地址:https://www.st.com/zh/development-tools/stm32cubeprog.html

注意下载的系统版本,下载完成之后默认安装就可以了

本文使用的Linux版本的STM32CubeProgrammer

在你生成镜像的文件夹tmp-glibc/deploy/images/stm32mp1中会生成一个flashlayout_你生成的镜像名,例如我生成的镜像名是st-image-core,那么对应的文件夹就是flashlayout_st-image-core

这个文件夹下有四个文件夹:

  1. deleteall

  1. extensible

  1. optee

  1. trusted

这几个都是flashlayout文件存放目录,每个目录里flashlayout布局使用的固件都不同,这些是ST根据不同的信息生成的不同固件的配置方法,其中optee和trusted是我们常用的,flashlayout以tsv文件格式作为存储,可以看到trusted目录下的内容

FlashLayout_emmc_stm32mp157a-ev1-trusted.tsv        FlashLayout_nor-sdcard_stm32mp157d-ev1-trusted.tsv
FlashLayout_emmc_stm32mp157c-ed1-trusted.tsv        FlashLayout_nor-sdcard_stm32mp157f-ev1-trusted.tsv
FlashLayout_emmc_stm32mp157c-ev1-trusted.tsv        FlashLayout_sdcard_stm32mp157a-dk1-trusted.tsv
FlashLayout_emmc_stm32mp157d-ev1-trusted.tsv        FlashLayout_sdcard_stm32mp157a-ev1-trusted.tsv
FlashLayout_emmc_stm32mp157f-ed1-trusted.tsv        FlashLayout_sdcard_stm32mp157c-dk2-trusted.tsv
FlashLayout_emmc_stm32mp157f-ev1-trusted.tsv        FlashLayout_sdcard_stm32mp157c-ed1-trusted.tsv
FlashLayout_nand-4-256_stm32mp157a-ev1-trusted.tsv  FlashLayout_sdcard_stm32mp157c-ev1-trusted.tsv
FlashLayout_nand-4-256_stm32mp157c-ev1-trusted.tsv  FlashLayout_sdcard_stm32mp157d-dk1-trusted.tsv
FlashLayout_nand-4-256_stm32mp157d-ev1-trusted.tsv  FlashLayout_sdcard_stm32mp157d-ev1-trusted.tsv
FlashLayout_nand-4-256_stm32mp157f-ev1-trusted.tsv  FlashLayout_sdcard_stm32mp157f-dk2-trusted.tsv
FlashLayout_nor-sdcard_stm32mp157a-ev1-trusted.tsv  FlashLayout_sdcard_stm32mp157f-ed1-trusted.tsv
FlashLayout_nor-sdcard_stm32mp157c-ev1-trusted.tsv  FlashLayout_sdcard_stm32mp157f-ev1-trusted.tsv

这些文件就是STM32CubeProgrammer烧写文件,STM32CubeProgrammer会读取文件里的内容进行烧写,这里emmc、nand这些是flash的型号

在刷写之前根据你的板子拨码开关拨码到指定位置,这里我使用的是usb下载模式

我的flash是emmc的,所以我使用的是flash_emmc*的配置文件,这里打开配置文件看一下,如果你的是定制板那么可以向厂商索要这个文件

可以看到内容如下:

#Opt   Id      Name    Type    IP      Offset  Binary
-       0x01    fsbl1-boot      Binary  none    0x0     arm-trusted-firmware/tf-a-stm32mp157f-ev1-serialboot.stm32
-       0x03    ssbl-boot       Binary  none    0x0     bootloader/u-boot-stm32mp157f-ev1-trusted.stm32
P       0x04    fsbl1   Binary  mmc1    boot1   arm-trusted-firmware/tf-a-stm32mp157f-ed1-trusted.stm32
P       0x05    fsbl2   Binary  mmc1    boot2   arm-trusted-firmware/tf-a-stm32mp157f-ed1-trusted.stm32
PD      0x06    ssbl    Binary  mmc1    0x00080000      bootloader/u-boot-stm32mp157f-ed1-trusted.stm32
P       0x21    boot    System  mmc1    0x00280000      st-image-bootfs-openstlinux-eglfs-stm32mp1.ext4
P       0x22    vendorfs        FileSystem      mmc1    0x04280000      st-image-vendorfs-openstlinux-eglfs-stm32mp1.ext4
P       0x23    rootfs  FileSystem      mmc1    0x05280000      st-image-core-openstlinux-eglfs-stm32mp1.ext4
P       0x24    userfs  FileSystem      mmc1    0x33C80000      st-image-userfs-openstlinux-eglfs-stm32mp1.ext4

意义:

Opt:烧写状态标识符

Id:烧写ID

Name:分区名称

Type:分区类型

IP:那个存储设备

Offset:烧写到磁盘那个位置

Binary:烧写的文件

其中FileSystem里存储的就是具有根文件系统的内核文件

ST官方参考wiki:https://wiki.st.com/stm32mpu/wiki/STM32CubeProgrammer_flashlayout

将你的下载线插入到Host主机上并确保拨码开关正确,使用lsusb查看设备

$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 008: ID 8087:0aaa Intel Corp.
Bus 001 Device 006: ID 048d:5702 Integrated Technology Express, Inc. ITE Device
Bus 001 Device 004: ID 05e3:0608 Genesys Logic, Inc. Hub
Bus 001 Device 020: ID 0483:df11 STMicroelectronics STM Device in DFU Mode
Bus 001 Device 003: ID 05e3:0608 Genesys Logic, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

可以看到Bus 001 Device 020: ID 0483:df11 STMicroelectronics STM Device in DFU Mode的字样,这个就是STM32的otg usb下载设备

接下来就可以进行烧录了,使用STM32_Programmer_CLI这个工具进行烧录,在STM32CubeProgrammer安装目录下的bin文件夹下,这个是CUI工具你也可以使用STM32CubeProgrammer是GUI工具,需要Java的支持

注意需要使用sudo,因为要访问usb设备

sudo STM32_Programmer_CLI -c port=usb1 -w ./flashlayout_st-image-core/trusted/FlashLayout_emmc_stm32mp157c-ed1-trusted.tsv

这里解释一下命令:-c是指定usb设备,-w是指定flash_layout文件路径

第一次烧录卡在了这里:

Memory Programming ...
Opening and parsing file: tf-a-stm32mp157d-ev1-serialboot.stm32
  File          : tf-a-stm32mp157d-ev1-serialboot.stm32
  Size          : 232.32 KB
  Partition ID  : 0x01
 
Download in Progress:
[==================================================] 100%
 
File download complete
Time elapsed during download operation: 00:00:01.033
 
RUNNING Program ...
  PartID:      :0x01
Error: Start operation failed at partition 0x01
Error: TSV flashing service failed

这个原因是因为我的板子是定制板,我联系了厂商获得了tf-a-serialboot的固件文件替换后就可以了,替换之后烧录u-boot卡在了这个地方:

File download complete
Time elapsed during download operation: 00:00:01.007
 
RUNNING Program ...
  PartID:      :0x01
Start operation done successfully at partition 0x01
 
Flashlayout Programming ...
[==================================================] 100%
Running Flashlayout Partition ...
Flashlayout partition started successfully
 
 
Memory Programming ...
Opening and parsing file: u-boot-stm32mp157d-ev1-trusted.stm32
  File          : u-boot-stm32mp157d-ev1-trusted.stm32
  Size          : 888.06 KB
  Partition ID  : 0x03
 
Download in Progress:
[==================================================] 100%
 
File download complete
Time elapsed during download operation: 00:00:00.964
 
RUNNING Program ...
  PartID:      :0x03
 
Reconnecting the device ...

一直卡在Reconnecting the device,最后过一会就失败了,联系厂商之后换了新的u-boot固件仍然如此,这个问题似乎是因为STM32CubeProgrammer在启动时会去监控串口,来固件是否刷成功与启动成功,因为当固件刷入之后STM32CubeProgrammer会尝试通过OTG向stm32芯片发送命令让它启动这些固件,当刷了uboot之后会去通过uboot去下载其它固件到flash里,这个时候STM32CubeProgrammer需要知道uboot是否启动成功,似乎STM32CubeProgrammer采用的方式是通过读取串口输出,当我把串口接上之后重新刷一遍这个问题就得到了解决,可以看到串口输出的内容以及正则刷固件的信息:

等待几分钟刷写完成之后会输出如下内容:

随后将拨码开关拨到EMMC启动并板子

重启后串口输出:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/362719.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

必备 | Elasticsearch 8.X 最少必要知识视频(全)

1、你使用 Elasticsearch 8.X 了吗?Elastic Stack 数据平台由Logstash、Beats、ElasticSearch和Kibana四大核心产品组成,在数据摄取、存储计算分析及数据可视化方面有着无可比拟的优势。在存储、计算和分析方面,ElasticSearch允许执行和合并多…

40、基于51单片机收音机 LCD1602显示系统设计

摘要 本文在具体分析了STC89C52单片机的技术特点与数字FM收音机的基础上,提出了采用单片机控制收音机实现数字调频的方法,并给出了具体的软硬件设计。该系统利主要由STC89C52单片机、液晶显示器、按键、调频收音模块TEA5767、功放LM386组成。实际运行时…

「TCG 规范解读」第12章 TPM工作组 TCG身份验证研讨

可信计算组织(Ttrusted Computing Group,TCG)是一个非盈利的工业标准组织,它的宗旨是加强在相异计算机平台上的计算环境的安全性。TCG于2003年春成立,并采纳了由可信计算平台联盟(the Trusted Computing Platform Alli…

XC7K70T-1FBG676C应用XC7K70T-L2FBG484E Kintex-7, FPGA 规格参数

概述Kintex-7 FPGA为快速增长应用和无线通信提供最优性价比和低功耗。Kintex-7 FPGA允许设计人员构建卓越带宽和12位数字可编程模拟,同时满足成本和功耗要求。144GMACS数字信号处理器 (DSP) 的独特功耗使得多功能Kintex-7器件成为便携式超声波设备和下一代通信等应用…

5. 阿里巴巴程序员开发手册黄山版

学习的动力不止于此: 最近阅读了刘典武大神推荐的阿里巴巴Java开发手册泰山版。里面的很多规范不仅仅适用于Java。非常值得我们一起学习。 于是,我找了最新的版本–黄山版。 正所谓,五岳归来不看山,黄山归来不看岳。最新版本—…

06_MySQL多表查询

多表查询,也称为关联查询,指两个或更多个表一起完成查询操作。前提条件:这些一起查询的表之间是有关系的(一对一、一对多),它们之间一定是有关联字段,这个关联字段可能建立了外键,也…

Crafting interpreters 中文翻译(全),持续修正

本书在线地址 http://craftinginterpreters.com/ 感谢作者 作者用近 4 年的时间持续创作和改进本书,并把其 Web 版本公开在网上。这本纸质书于今年 7 月出版,立刻在 Hacker News 等网络媒介上引起关注和讨论。 书中作者首先定义了一个动态类型的语言 …

如何写新闻稿?写好新闻稿的技巧与步骤

新闻稿是传递新闻事件和信息的重要手段,是传媒工作中不可或缺的一部分。写好一篇新闻稿可以让受众了解更多信息,进一步提高他们的关注度。以下是一些写好新闻稿的技巧和步骤,帮助你有效地传达新闻。1、确定新闻的核心信息在开始写新闻稿之前&…

解决doc命令startup.bat运行不了tomcat并配置tomcat服务器(超详细)

一、本文主要解决两个问题: 使用dos命令 startup.bat来运行tomcat,发现运行不了配置tomcat服务器变量 二、问题说明 2.1、启动Tomcat服务器只配置path对应的bin目录是不行的。有两个环境变量需要配置: JAVA_HOMEJDK的根CATALINA_HOMETomca…

「TCG 规范解读」第10章 TPM工作组 保护你的数字环境

可信计算组织(Ttrusted Computing Group,TCG)是一个非盈利的工业标准组织,它的宗旨是加强在相异计算机平台上的计算环境的安全性。TCG于2003年春成立,并采纳了由可信计算平台联盟(the Trusted Computing Platform Alli…

项目管理中,项目经理需要具备哪些能力?

项目经理是团队的领导者,是带领项目团队对项目进行策划、执行,完成项目目标,对于项目经理来说,想要有序推进项目,使项目更成功,光有理论知识是不够的,也要具备这些能力: 1、分清主…

[ELasticSearch]-Logstash的使用

[ELasticSearch]-Logstash的使用 森格 | 2023年2月 介绍:Logstash在Elastic Stack中担当着ELK的工作,在本文主要阐述Logstash的处理流程以及一些应用案例。 文章目录[ELasticSearch]-Logstash的使用一、Logstash介绍1.1 What is Logstash?1.…

分享5款小众良心软件,好用到让人惊艳

目前win7渐渐退出视野,大部分人都开始使用win10了,笔者在日常的工作和使用中,为了能够让效率的大提升,下载了不少软件,以下的软件都是个人认为装机必备,而且都是可以免费下载,且没有插件的。 1…

Node-RED 3.0升级,新增特性介绍

前言 最近给我的树莓派上的Node-RED(以下简称NR)做了一下升级,从2.x升级到得了3.0。这是一个比较大的版本升级,在用户体验方面,NR有了有很大的提升。下面让我们一起来看一如何升级以及,3.0新增了那些特性 升级3.0 由于之前的NR是直接使用npm来进行安装的,所以此处升级…

库存管理系统-课后程序(JAVA基础案例教程-黑马程序员编著-第六章-课后作业)

【案例6-1】 库存管理系统 【案例介绍】 1.任务描述 像商城和超市这样的地方,都需要有自己的库房,并且库房商品的库存变化有专人记录,这样才能保证商城和超市正常运转。 本例要求编写一个程序,模拟库存管理系统。该系统主要包…

Mybatis持久层框架 | Mapper加载方式、目录结构解析

💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! Mapper(resource、class、package)加载方式 resource方式加载 通过resource或url加载单个mapper,接口文件与映射文件不在同一路径下,只能用re…

Java使用MD5加盐对密码进行加密处理,附注册和登录加密解密处理

前言 在开发的时候,有一些敏感信息是不能直接通过明白直接保存到数据库的。最经典的就是密码了。如果直接把密码以明文的形式入库,不仅会泄露用户的隐私,对系统也是极其的不厉,这样做是非常危险的。 那么我们就需要对这些铭文进…

【C++】内存管理知识

💙作者:阿润菜菜 📖专栏:C 本文目录 C/C内存区域分布 对比C语言内存管理的方式 C内存管理的方式 operator new与operator delete函数(new和delete实现的底层调用) new和delete的实现原理 malloc/free…

行为型设计模式之中介者模式

中介者模式 中介者模式又称为调解者模式或调停者模式,属于行为型模式。它用一个中介对象封装系列的对象交互,中介者使各对象不需要显示地相互作用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 中介者模式包装了一系列对…

「TCG 规范解读」第11章 TPM工作组 TCG算法注册表

可信计算组织(Ttrusted Computing Group,TCG)是一个非盈利的工业标准组织,它的宗旨是加强在相异计算机平台上的计算环境的安全性。TCG于2003年春成立,并采纳了由可信计算平台联盟(the Trusted Computing Platform Alli…