【北京迅为】《STM32MP157开发板嵌入式开发指南》-第六十七章 Trusted Firmware-A 移植

iTOP-STM32MP157开发板采用ST推出的双核cortex-A7+单核cortex-M4异构处理器,既可用Linux、又可以用于STM32单片机开发。开发板采用核心板+底板结构,主频650M、1G内存、8G存储,核心板采用工业级板对板连接器,高可靠,牢固耐用,可满足高速信号环境下使用。共240PIN,CPU功能全部引出:底板扩展接口丰富底板板载4G接口(选配)、千兆以太网、WIFI蓝牙模块HDMI、CAN、RS485、LVDS接口、温湿度传感器(选配)光环境传感器、六轴传感器、2路USB OTG、3路串口,CAMERA接口、ADC电位器、SPDIF、SDIO接口等


  •  嵌入式Linux系统移植篇

第六十七章 Trusted Firmware-A 移植

在“第十章 编译TF-A”已经对Trusted Firmware-A进行了编译以及介绍,且对编译出的文件作用做了简单的说明,下面我们对官方提供的源码来进行移植,以此来适配我们自己的开发板。

官方提供的系统源码存放路径为“iTOP-STM32MP157开发板网盘资料汇总\07_系统移植\01_官方源码”下的tf-a-stm32mp-2.2.r1-r0文件夹。

移植好的系统源码存放路径为“iTOP-STM32MP157开发板网盘资料汇总\07_系统移植\02_移植好的源码\tf-a”。

67.1 源码的导入以及打补丁

将官方提供的系统源码文件夹拷贝到ubuntu上,如下图所示

 

使用命令“cd tf-a-stm32mp-2.2.r1-r0/”,进入源码文件夹如下图所示: 

然后使用命令“tar -vxf tf-a-stm32mp-2.2.r1-r0.tar.gz”,对源码的压缩文件进行解压,如下图所示: 

解压完成之后,使用命令“ cd tf-a-stm32mp-2.2.r1”进入tf-a-stm32mp-2.2.r1源码文件如下图所示: 

然后使用命令“for p in `ls -1 ../*.patch`; do patch -p1 < $p; done ”对源码打上ST官方提供好的补丁,如下图所示: 

67.2 准备编译所用到工具(用我们提供的环境可以跳过本小节)

在编译TF-A之前需要先编译 stm32wrapper4dbg 这个工具,否则编译会报错。ST 提供了这个工具的源码,我们需要在 Ubuntu 下编译并安装这个源码,源码的下载地址为:https://github.com/STMicroelectronics/stm32wrapper4dbg存放的路径为:iTOP-STM32MP157开发板光盘资料\04_TF-A、uboot和内核源码\stm32wrapper4dbg-master.zip”,将源码压缩包通过ssh拷贝到 Ubuntu下,如下图所示: 

然后使用命令进行解压缩,如下图所示:

unzip stm32wrapper4dbg-master.zip

 

使用命令“cd stm32wrapper4dbg-master”进入stm32wrapper4dbg-master文件夹之中,如下图所示: 

然后使用命令“make”,命令进行编译,如下图所示,即编译成功: 

然后将编译出来的工具使用命令

cp stm32wrapper4dbg /usr/bin

拷贝到/usr/bin目录下。至此我们的准备工作就结束了。

67.3 编译TF-A源码

67.3.1 增设自己的平台

回到源码文件之后,使用命令“cd fdts进入设备树文件存放目录,可以看到ST官方开发板的设备树文件,而我们的板子同样也是参照官方开发板来进行设计的,所以为了方便我们直接通过修改官方开发板的设备树文件来适配我们自己的开发板。

使用以下命令,将官方的设备树文件进行复制并修改文件名,如下图所示

cp stm32mp15xx-dkx.dtsi stm32mp15xx-itop.dtsi

cp stm32mp157a-dk1.dts stm32mp157a-itop.dts

使用命令“vim stm32mp157a-itop.dts”进入stm32mp157a-itop.dts文件,将头文件中的

#include "stm32mp15xx-dkx.dtsi"

修改为

#include "stm32mp15xx-itop.dtsi"

修改完成如下图所示:

 

并将model从STMicroelectronics STM32MP157A-DK1 Discovery Board修改为STMicroelectronics STM32MP157A-iTOP Discovery Board,修改完成如下图所示: 

保存退出之后使用以下命令进入stm32mp15xx-itop.dtsi文件夹

vim stm32mp15xx-itop.dtsi

由于官方的DK1开发板内存默认为512MB而我们的内存为1G,所以我们需要将头文件之中的

#include "stm32mp15-ddr3-1x4Gb-1066-binG.dtsi"

修改为

#include "stm32mp15-ddr3-2x4Gb-1066-binG.dtsi"

修改完成如下图所示:

 

67.3.2 修改Makefile.sdk文件

然后回到tf-a-stm32mp-2.2.r1-r0目录下,使用命令“vim Makefile.sdk”进入编译配置文件夹,如下图所示:

进入文件夹之后首先修改交叉编译器,将“CROSS_COMPILE=arm-ostl-linux-gnueabi-”修改为“CROSS_COMPILE=arm-none-linux-gnueabihf-”,修改完成如下图所示: 

然后在EXTRA_OEMAKE_SERIAL配置项中添加以下内容,主要是设置交叉编译器,以及一些编译所需要的配置

CROSS_COMPILE=arm-none-linux-gnueabihf-  DEBUG=1 LOG_LEVEL=40 PLAT=stm32mp1 ARCH=aarch32 ARM_ARCH_MAJOR=7

添加完成之后如下图所示:

 

然后我们继续在TFA_DEVICETREE 配置项中添加 stm32mp157a-itop,将我们的设备树也添加到编译的进程之中,添加完成如下图所示: 

至此我们的Makefile.sdk文件就修改完成了。

67.3.3 编译TF-A文件

然后进入tf-a-stm32mp-2.2.r1源码文件夹,如下图所示:

 

使用命令“vim create.sh”,创建create.sh脚本文件,并在该脚本文件之中添加以下内容:

#!/bin/sh

make -f $PWD/../Makefile.sdk TFA_DEVICETREE=stm32mp157a-itop TF_A_CONFIG=trusted ELF_DEBUG_ENABLE='1' all

make -f $PWD/../Makefile.sdk TFA_DEVICETREE=stm32mp157a-itop TF_A_CONFIG=serialboot ELF_DEBUG_ENABLE='1' all

添加完成之后如下图所示:

 

 保存退出之后,使用命令“chmod 777 create.sh”,赋予create.sh文件可执行权限,如下图所示:

然后使用命令“./create.sh”,运行该脚本,如下图所示: 

编译完成如下图所示: 

回到上一级目录下,可以看到新生成了一个build文件夹,使用命令”cd build”,进入该文件 

可以看到两个文件夹,分别为serialboot和trusted。 

我们所需要的文件为serialboot文件夹内的tf-a-stm32mp157a-itop-serialboot.stm32和trusted文件夹内的tf-a-stm32mp157a-itop-trusted.stm32。如下图所示: 

 

这这里需要说明的是其中tf-a-stm32mp157a-itop-serialboot.stm32文件是使用OTG烧写所用到的文件,而tf-a-stm32mp157a-itop-trusted.stm32文件是真正要烧写到EMMC中的文件。

67.3.3 烧写初始TF-A镜像

注意由于官方的开发板默认没有配置EMMC,我们本小节使用TF卡进行烧写测试,如果目前手上没有TF卡,可以不进行本小节的测试,但对应的流程需要浏览一下。

将“iTOP-STM32MP157开发板光盘资料\02_开发板烧写工具\02_烧写文件模板”路径下的image文件夹拷贝到ubuntu虚拟机上,拷贝完成如下图所示:

然后我们使用命令“ ls tf-a/”命令查看对应的文件夹,可以看到tf-a文件夹内的文件正是我们上一小节所编译出来的文件夹,如下图所示: 

使用命令将编译出来文件拷贝到tf-a文件夹内,对原有的文件进行替换如下图所示(每个人路径并不一样,在此需要注意): 

使用命令“stm32.sh”打开烧写软件,如下图所示: 

烧写的tsv规则文件我们选择tfcard.tsv如下图所示: 

 将开发板的拨码开关设置为“0000”,接好otg线之后,对开发板进行上电。在烧写软件之中选中对应的设备USB1,然后进行烧写(具体的烧写过程可以查看第八章STM32MP157烧写系统,在这里没有进行太多的讲解)。

烧写完成之后将拨码开关设置为“1010”,然后重启开发板,打印信息如下图所示:

从打印信息来看,我们成功进入了uboot证明我们的移植并没有出现问题,由于目前还没有配置EMMC,所以用同样的方法将镜像烧写到EMMC之中,然后将拨码开关设置为“0100”通过emmc启动会报如下的错误,在下一小节之中,我们会配置tf-a的emmc。 

67.4 适配EMMC

再上一小节之中我们已经成功的通过TF卡经过tf-a启动到了u-boot,但是emmc并没有适配,所以会启动错误,下面我们来适配EMMC。

首先进入tf-a源码目录,如下图所示:

然后使用命令

vim fdts/stm32mp15xx-itop.dtsi

进入stm32mp15xx-itop.dtsi设备树文件如下图所示:

 

使用搜索命令查找sdmmc,只能找到sdmmc1的定义如下图所示: 

sdmmc1正是对应的TF卡,在该配置下方我们添加以下内容: 

&sdmmc2 {pinctrl-names = "default";pinctrl-0 = <&sdmmc2_b4_pins_a &sdmmc2_d47_pins_a>;non-removable;st,neg-edge;bus-width = <8>;vmmc-supply = <&v3v3>;vqmmc-supply = <&v3v3>;status = "okay";
};

 

保存退出之后,回到源码目录,使用命令“ ./create.sh”进行编译,如下图所示: 

编译完成之后根据“20.3.3烧写初始TF-A镜像”章节按照同样的步骤进行烧写,这次要烧写的是EMMC,所以我们在进行烧写配置选择的时候选择emmc,如下图所示: 

烧写完成之后,将拨码开关拨打“0100”EMMC启动,上电,在打印信息之中我们可以看到我们新编译出来的tf-a镜像已经能够成功进入uboot了。

至此我们的tf-a移植就结束了。移植好的源码我们存放路径为“iTOP-STM32MP157开发板网盘资料汇总\07_系统移植\02_移植好的源码\tf-a

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

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

相关文章

Qt | windows视频播放器小项目

点击上方"蓝字"关注我们 01、前言 >>> Windows平台如果播放不了视频,记得下载编解码工具:https://www.mediaplayercodecpack.com/#google_vignette media.player.codec.pack.v4.6.0.setup.exe 下载后双击安装。 02、videowidget.pro >>> (.pro…

Android Activity SingleTop启动模式使用场景

通知栏 当用户点击通知栏中的通知时,可以使用单顶启动模式来打开对应的活动,并确保只有一个实例存在。 简单集成极光推送 创建应用 获取appkey参数 切换到极光工作台 极光sdk集成 Project 根目录的主 gradle 配置 Module 的 gradle 配置 Jpush依赖配置 配置推送必须…

ssm基于vue框架和elementui组件的手机官网+vue

系统包含&#xff1a;源码论文 所用技术&#xff1a;SpringBootVueSSMMybatisMysql 免费提供给大家参考或者学习&#xff0c;获取源码请私聊我 需要定制请私聊 目 录 目 录 III 1 绪论 1 1.1 研究背景 1 1.2 目的和意义 1 1.3 论文结构安排 2 2 相关技术 3 2.1 SSM框…

【Android】perfetto使用学习

在开发者选项中的系统跟踪里抓取的perfetto文件是保存在/data/local/traces 里的 adb pull /data/local/traces ./ 主线程中的执行是受vsync信号控制的&#xff0c;即间隔调用的 如果写一个while线程&#xff0c;一直使用cpu&#xff0c;是怎样的呢&#xff0c;这里我们来试验一…

技术周总结 10.21~10.27周日

文章目录 一、10.24 周四 程序员节2.1&#xff09;问题01&#xff1a; Memory Analysis Tool的使用方法 二、10.27 周日2.1&#xff09; J2EE架构J2EE 的核心组件与技术J2EE 的多层架构J2EE 的优缺点J2EE 的应用场景 2.2&#xff09;web应用开发中的 "web服务器" 和 …

探讨Facebook的AI研究:未来社交平台的技术前瞻

在数字时代&#xff0c;社交媒体已成为人们日常生活的重要组成部分。作为全球最大的社交网络之一&#xff0c;Facebook不断致力于人工智能&#xff08;AI&#xff09;的研究与应用&#xff0c;以提升用户体验、增强平台功能并推动技术创新。本文将探讨Facebook在AI领域的研究方…

国标GB28181视频平台EasyGBS国标GB28181软件实现无需插件的视频监控对讲和网页直播

在当今社会&#xff0c;视频监控已经成为公共安全、企业管理、智能城市建设等领域不可或缺的一部分。然而&#xff0c;由于不同厂家和平台之间的兼容性问题&#xff0c;视频监控系统的联网和整合面临巨大挑战。为了解决这个问题&#xff0c;国家制定了《公共安全视频监控联网系…

【网络面试篇】三次握⼿、四次挥手综述

目录 一、三次握手 1. 过程描述 2. 为什么不是四次握手&#xff1f;为什么不能两次握手&#xff1f; 二、四次挥手 1. 过程描述 2. 为什么是四次挥手&#xff1f; 一、三次握手 1. 过程描述 ① 客户端 向 服务器 发送 SYN 报文、初始化序列号 ISN&#xff08;seqx&…

JavaSet集合

无序&#xff08;指的是添加顺序和获取出的数据顺序不一致&#xff0c;不重复&#xff0c;无索引 既然Set没有索引&#xff0c;因此功能同上一篇Connection的功能&#xff0c;几乎没有额外的功能 HashSet的原理 为什么是无序&#xff08;要构建红黑树&#xff09;&#xff0…

【测试平台】Odin-ws 工程环境部署

背景&#xff1a; 这个是我4年半以前接受测试平台过程中遇到问题记录&#xff0c;因为交接成都这边&#xff0c;拿出来直接用了。这里做个记录。 一、美东测试服务器相关 1.主服务器部署机器 该机器是美东服务器。 机器配置&#xff1a;t5.xlarge cpu 4核&#xff0c; 内存…

Android Junit 单元测试 | 依赖配置和编译报错解决

问题 为什么在依赖中添加了testImplement在build APK的时候还是会报错&#xff1f;是因为没有识别到test文件夹是test源代码路径吗&#xff1f; 最常见的配置有: implementation - 所有源代码集(包括test源代码集)中都有该依赖库.testImplementation - 依赖关系仅在test源代码…

如何将png格式的图片做成序列帧

类似以上的图片&#xff0c;根据图片的总长度和图片总数进行计算 <div class"frogeggitem"></div>.frogeggitem {width: 900rpx;height: 1000rpx;background: url(https://frog-skin.haoxgame.com/status2/frog/frogegg.png)no-repeat;background-size:…

学习笔记——动态路由——OSPF(距离矢量协议)OSPF路由类型

OSPF路由类型 在OSPF中&#xff0c;路由类型指的是不同种类的路由&#xff0c;用于描述网络中不同的路由信息及其传输方式。 1、Intra Area路由(区域内路由) Intra Area路由(区域内路由/本地路由/内部路由)是OSPF协议中的一种路由类型&#xff0c;用于描述在同一个OSPF区域内…

Android Studio Dolphin 下载、安装与配置教程

文章目录 Android Studio Dolphin简介一、核心特性二、新增功能三、用户体验优化 一&#xff0c;下载百度网盘迅雷云盘 二&#xff0c;安装三&#xff0c;下载组件四&#xff0c;添加SDK五&#xff0c;创建项目六&#xff0c;安装 Device模拟器运行项目 Android Studio Dolphin…

磁盘分区工具 DiskGenius Pro v5.5.0.1488 中文汉化版

DiskGenius 是一款专家级数据恢复软件&#xff0c;集数据恢复、硬盘分区、系统备份还原等多种功能于一身的超级工具软件&#xff0c;功能全面&#xff0c;安全可靠。可以提供磁盘的数据找回、备份、分区、修复、删除、格式化等操作&#xff0c;也能帮助用户修复磁盘坏道、彻底删…

《一人公司:失业潮中的高新技术工作者》读书笔记

基本信息 书名&#xff1a;一人公司&#xff1a;失业潮中的高新技术工作者作者&#xff1a;[美]卡丽莱恩&#xff08;Carrie M. Lane&#xff09;出版社&#xff1a;广东人民出版社出版时间&#xff1a;2023年11月 内容简介 本书通过18个月的田野调查和9年的跟踪寻访&#…

部署DNS主从服务器

一。DNS主从服务器作用&#xff1a; DNS作为重要的互联网基础设施服务&#xff0c;保证DNS域名解析服务的正常运转至关重要&#xff0c;只有这样才能提供稳定、快速日不间断的域名查询服务 DNS 域名解析服务中&#xff0c;从服务器可以从主服务器上获取指定的区域数据文件&…

es(1)(仅供自己参考)

elasticsearch&#xff08;ES&#xff09;是一款非常强大的开源搜索引擎&#xff0c;可以帮助我们从海量的数据中快速找到需要的内容。 elastic stack&#xff08;ELK&#xff09;&#xff1a;elasticsearch结合kibana、Logstash、Beats。被广泛的应用在日志数据分析、实时监控…

信创认证(信创人才考评证书)的含金量?到底有多少?

“信创认证”是什么&#xff1f; 信创认证是由工业和信息化部教育与考试中心推出的国家级权威认证&#xff0c;旨在推动信息技术应用创新产业的发展&#xff0c;并构建完善的信创产业人才培养体系。该认证在个人信息技术领域具有极高的认可度。 信创认证分为初级、中级和高级三…

新手铲屎官提问,有哪几款噪音低的宠物空气净化器推荐

相信很多铲屎官都明白的的痛就是猫咪掉毛太严重&#xff0c;所以每次看到满天飞的浮毛时只想赶紧逃离&#xff0c;一点都不想清理。但是家是自己的&#xff0c;猫是自己的&#xff0c;健康也是自己的&#xff0c;不清理也得清理。 为了更有效的清理浮毛&#xff0c;我朋友特意…