当前位置: 首页 > news >正文

Linux第25步_在虚拟机中备份“ST官方的TF-A源码”

TF-A是ARM公司提供的,ST公司通过修改它,做了一个自己的TF-A代码。因为在后期开发中,若硬件被改变了,我们需要通过修改"ST官方的TF-A源码"就可以自己的TF-A代码了。为了防止源文件被误改了,我们需要将"ST官方的TF-A源码"进行备份。

TF-A全称是Arm Trusted Firmware,有些资料也叫做ATF,一般中文资料叫做ARM可信固件。MP1内部集成了TrustZone,因此ST也提供了TF-A相关源码。

TF-A会先初始化DDR等外设,把UbootFlash(NANDNOR FLASHSDMMC )拷贝到 DDR 中。

如果我们直接去官方网站下载TF-A的源码,这样的开发难度太大。半导体厂商都会从TF-A官网下载源码,然后修改适配自己的芯片,把自家的芯片加进去。因此,我们可以直接使用半导体原厂给提供的TF-A即可

ST官方TF-Aubootkernel等源码下载链接为:

https://my.st.com/content/my_st_com/en/products/embedded-software/mcu-mpu-embedded-software/stm32-embedded-software/stm32-mpu-openstlinux-distribution/stm32mp1dev.html

记得我们已经创建过的目录,如下:

在根目录下,创建一个“linux”目录。

“linux” 目录下,创建一个“nfs”的文件夹,用来nfs服务器使用,便于我们的开发板上通过网络文件系统来访问这个”nfs“文件夹

linux目录下,创建一个tool文件夹,,创建tool文件夹,用来存放“Ubutun交叉编译工具链”

现在,我们还需要创建几个目录:

在“linux”目录下创建“atk-mp1”目录;

在“/linux/atk-mp1/目录下创建“tf-a”目录

在“/linux/atk-mp1/”目录下,创建“my-tfa”目录,用来保存“ST官方的TF-A源码

1、打开终端

输入“ls回车”,列出当前目录下所有的文件和文件夹

输入“cd linux回车”,切换到“linux”目录下

输入“ls回车”,列出当前目录下所有的文件和文件夹

输入“mkdir atk-mp1回车”,在“linux”目录下创建“mkdir atk-mp1”目录

输入“ls回车”,列出当前目录下所有的文件和文件夹

2、将“ST官方的TF-A源码”

en.SOURCES-stm32mp1-openstlinux-5-4-dunfell-mp1-20-06-24.tar.xz” 压缩包,使用FileZilla把它拷贝到“atk-mp1”目录下。见下图:

见下图上传中:

上传成功后,见下图:

 3、输入“cd atk-mp1回车”,切换“atk-mp1”目录下

输入“ls回车”,列出当前目录下所有的文件和文件夹

 4、输入下面的命令

输入“tar -xvf en.SOURCES-stm32mp1-openstlinux-5-4-dunfell-mp1-20-06-24.tar.xz回车”,解压该文件。

输入“ls回车”,列出当前目录下所有的文件和文件夹

输入“cd stm32mp1-openstlinux-5.4-dunfell-mp1-20-06-24/回车”

输入“ls回车”,列出当前目录下所有的文件和文件夹

输入“cd sources/回车”,切换到“sources”目录下

输入“ls回车”,列出当前目录“sources”目录下所有的文件和文件夹

输入“cd arm-ostl-linux-gnueabi/回车”,切换到“arm-ostl-linux-gnueabi”目录下

输入“ls回车”,列出当前目录下所有的文件和文件夹

 tf-a-stm32mp-2.2.r1-r0支持ST所有的所有的STM32MP1芯片,也支持各种启动方式例如:EMMC、 NAND、NOR FLASH 等。tf-a-stm32mp-2.2.r1-r0里面包含了ST自家所有的MP1评估板,后续的移植都是以STM32MP157C-EV1开发板为蓝本,在此基础上进行修改

5、输入“cd tf-a-stm32mp-2.2.r1-r0/回车”,切换到“tf-a-stm32mp-2.2.r1-r0”目录下

输入“ls回车”,列出当前目录下所有的文件和文件夹

输入“ls回车”,输入“ls -l回车

6、输入“tar -vxf tf-a-stm32mp-2.2.r1-r0.tar.gz回车,解压

输入“ls回车”,列出“tf-a-stm32mp-2.2.r1-r0”目录下所有的文件和文件夹

7、输入“cd tf-a-stm32mp-2.2.r1/回车”,切换到“tf-a-stm32mp-2.2.r1”目录下

输入“ls回车”,列出“tf-a-stm32mp-2.2.r1”目录下所有的文件和文件夹

输入“for p in `ls -1 ../*.patch`; do patch -p1 < $p; done回车

说明:“for p in `ls -1 ../*.patch`; do patch -p1 < $p; done回车”,这条命令的意思是把上一层目录下的所有“.patch”后缀的文件都通过patch命令打补丁到TF-A的源码目录,在这里就是将001-st-update-v2.2-r2.0.0.patch这个补丁打入到 TF-A源码里面。由于“ST官方源码”的目录实在太长了,为了方便调试,在 atk-mp1目录下创建一个名为“tf-a”的子目录,然后将打完补丁的 tf-a-stm32mp-2.2.r1-r0目录下的所有文件都拷贝到 “tf-a”目录下

8、我们再另外打开一个新的终端

输入“ls回车”,列出当前目录下所有的文件和文件夹

输入“cd linux/回车”,切换到“linux”目录下;

输入“ls回车”,列出当前目录下所有的文件和文件夹

输入“cd atk-mp1/回车”,切换到“atk-mp1”目录下;

输入“ls回车”,列出当前目录下所有的文件和文件夹

输入“mkdir tf-a/回车”,在“atk-mp1”目录下创建“tf-a”目录

输入“ls回车”,列出“tf-a”目录下所有的文件和文件夹

输入“cd stm32mp1-openstlinux-5.4-dunfell-mp1-20-06-24/回车”,切换到“stm32mp1-openstlinux-5.4-dunfell-mp1-20-06-24”目录下;

输入“ls回车”,列出“stm32mp1-openstlinux-5.4-dunfell-mp1-20-06-24”目录下所有的文件和文件夹

输入“cd sources/回车”,切换到“sources”目录下;

输入“ls回车”,列出“sources”目录下所有的文件和文件夹

输入“cd arm-ostl-linux-gnueabi/回车”,切换到“arm-ostl-linux-gnueabi”目录下;

输入“ls回车”,列出“arm-ostl-linux-gnueabi”目录下所有的文件和文件夹

输入“cd tf-a-stm32mp-2.2.r1-r0/回车”,切换到“tf-a-stm32mp-2.2.r1-r0”目录下;

输入“ls回车”,列出“tf-a-stm32mp-2.2.r1-r0”目录下所有的文件和文件夹

输入“cp * /home/zgq/linux/atk-mp1/tf-a/ -rf回车”,拷贝文件到tf-a

输入“cd ..回车”,返回至上层目录,到达“arm-ostl-linux-gnueabi”目录

输入“cd ..回车”,返回至上层目录,到达“sources”目录下

输入“cd ..回车”,返回至上层目录,到达“stm32mp1-openstlinux-5.4-dunfell-mp1-20-06-24”目录下

输入“ls回车”,列出“stm32mp1-openstlinux-5.4-dunfell-mp1-20-06-24”目录下所有的文件和文件夹

输入“cd ..回车”,返回至上层目录,到达“atk-mp1”目录下

输入“ls回车”,列出“atk-mp1”目录下所有的文件和文件夹

输入“cd tf-a回车”,切换到“tf-a”目录下;

输入“ls回车”,列出“tf-a”目录下所有的文件和文件夹

 

9、创建TF-A工作区

1)在Ubuntu桌面,找到Visual Studio Code,在图标上右击鼠标,点击“打开”,见下图: 

得到下图:

2)点击“文件”,再点击“打开文件夹”,见下图:

3)点击下图中的“其他位置”

4)点击“计算机”,点击“home” ,点击“zgq”,点击“linux”,点击“atk_mp1”,点击“tf-a”,见下图:

5)点击 “确定”,得到下面的界面:

6)将“欢迎使用”关闭,再点击“文件”,点击“将工作区另存为…”,见下图操作:

 得到下图:

7)输入“tf-a”,再点击“保存”

得到下图,可见到tf-a.code-workspace工作区间文件:

10,在/linux/atk-mp1/目录下创建my-tfa目录,用来保存ST官方的TF-A源码”。

1)打开终端

2)输入“ls回车”,列出当前目录下所有的文件和文件夹

输入“cd linux/回车”,切换到“linux”目录下;

输入“ls回车”,列出当前目录下所有的文件和文件夹

输入“cd atk-mp1/回车”,切换到“atk-mp1”目录下;

输入“ls回车”,列出当前目录下所有的文件和文件夹

输入“mkdir my-tfa/回车”,在“/linux/atk-mp1/”目录下创建“my-tfa”目录,用来保存“ST官方的TF-A源码”

输入“ls回车”,列出当前目录下所有的文件和文件夹

输入“cd tf-a/回车”,切换到“tf-a”目录下;

输入“ls回车”,列出当前目录下所有的文件和文件夹

输入“cp * /home/zgq/linux/atk-mp1/my-tfa/ -rf回车”,拷贝到“my-tfa”目录中,用来保存“ST官方的TF-A源码”

输入“cd ..回车”,返回至上层目录,到达“atk-mp1”目录下

输入“ls回车”,列出当前目录下所有的文件和文件夹

输入“cd my-tfa回车”,切换到“my-tfa”目录 

输入“ls -l回车

至此,在虚拟机中,备份“ST官方的TF-A源码”完成。 

注意:

目前,“my-tfa”目录和“tf-a”目录里的内容完全相同,用来备份“ST官方的TF-A源码”。

将来“tf-a”目录里的内容需要被用来修改,用作自己的tf-a

相关文章:

Linux第25步_在虚拟机中备份“ST官方的TF-A源码”

TF-A是ARM公司提供的&#xff0c;ST公司通过修改它&#xff0c;做了一个自己的TF-A代码。因为在后期开发中&#xff0c;若硬件被改变了&#xff0c;我们需要通过修改"ST官方的TF-A源码"就可以自己的TF-A代码了。为了防止源文件被误改了&#xff0c;我们需要将"S…...

统计学-R语言-4.1

文章目录 前言编写R函数图形的控制和布局par函数layout函数 练习 前言 安装完R软件之后就可以对其进行代码的编写了。 编写R函数 如果对数据分析有些特殊需要&#xff0c;已有的R包或函数不能满足&#xff0c;可以在R中编写自己的函数。函数的定义格式如下所示&#xff1a; …...

C++(1) —— 基础语法入门

目录 一、C初识 1.1 第一个C程序 1.2 注释 1.3 变量 1.4 常量 1.5 关键字 1.6 标识符命名规则 二、数据类型 2.1 整型 2.2 sizeof 关键字 2.3 实型&#xff08;浮点型&#xff09; 2.4 字符型 2.5 转义字符 2.6 字符串型 2.7 布尔类型 bool 2.8 数据的输入 三…...

构建基于RHEL8系列(CentOS8,AlmaLinux8,RockyLinux8等)的支持63个常见模块的PHP8.1.20的RPM包

本文适用&#xff1a;rhel8系列&#xff0c;或同类系统(CentOS8,AlmaLinux8,RockyLinux8等) 文档形成时期&#xff1a;2023年 因系统版本不同&#xff0c;构建部署应略有差异&#xff0c;但本文未做细分&#xff0c;对稍有经验者应不存在明显障碍。 因软件世界之复杂和个人能力…...

Vue-插槽(Slots)

1. 介绍 在Vue.js中&#xff0c;插槽是一种强大的功能&#xff0c;它允许你创建可重用的模板&#xff0c;并在使用该模板的多个地方插入自定义内容。 插槽为你提供了一种方式&#xff0c;可以在父组件中定义一些“插槽”&#xff0c;然后在子组件中使用这些插槽&#xff0c;插…...

新火种AI|GPT-5前瞻!GPT-5将具备哪些新能力?

作者&#xff1a;小岩 编辑&#xff1a;彩云 Sam Altman在整个AI领域&#xff0c;乃至整个科技领域都被看作是极具影响力的存在&#xff0c;而2023年OpenAI无限反转的宫斗事件更是让Sam Altman刷足了存在感&#xff0c;他甚至被《时代》杂志评为“2023年度CEO”。 也正因此&…...

安防视频监控系统EasyCVR设备分组中在线/离线数量统计的开发与实现

安防视频监控EasyCVR系统具备较强的兼容性&#xff0c;它可以支持国标GB28181、RTSP/Onvif、RTMP&#xff0c;以及厂家的私有协议与SDK&#xff0c;如&#xff1a;海康ehome、海康sdk、大华sdk、宇视sdk、华为sdk、萤石云sdk、乐橙sdk等。EasyCVR平台可覆盖多类型的设备接入&am…...

spring cloud之集成sentinel

写在前面 源码 。 本文一起看下spring cloud的sentinel组件的使用。 1&#xff1a;准备 1.1&#xff1a;理论 对于一个系统来说&#xff0c;最重要的就是高可用&#xff0c;那么如何实现高可用呢&#xff1f;你可能会说&#xff0c;集群部署不就可以了&#xff0c;但事实并…...

让车辆做到“耳听八方”,毫米波雷达芯片与系统设计

摘要: 毫米波雷达,是指工作在毫米波波段(一般为30~300GHz频域,波长1~10mm)探测的雷达。毫米波雷达体积小、质量轻、空间分辨率高,穿透“雾烟灰”的能力强,还具备全天候全天时工作的优势。在智能网联汽车体系中,毫米波雷达是系统感知层不可或缺的重要硬件,能让智能驾…...

Python如何实现数据驱动的接口自动化测试

大家在接口测试的过程中&#xff0c;很多时候会用到对CSV的读取操作&#xff0c;本文主要说明Python3对CSV的写入和读取。下面话不多说了&#xff0c;来一起看看详细的介绍吧。 1、需求 某API&#xff0c;GET方法&#xff0c;token,mobile,email三个参数 token为必填项mobil…...

高级分布式系统-第15讲 分布式机器学习--联邦学习

高级分布式系统汇总&#xff1a;高级分布式系统目录汇总-CSDN博客 联邦学习 两种常见的架构&#xff1a;客户-服务器架构和对等网络架构 联邦学习在传统的分布式机器学习基础上的变化。 传统的分布式机器学习&#xff1a;在数据中心或计算集群中使用并行训练&#xff0c;因为…...

小程序基础学习(事件处理)

原理&#xff1a;组件内部设置点击事件&#xff0c;然后冒泡到页面捕获点击事件 在组件内部设置点击事件 处理点击事件&#xff0c;并告诉页面 页面捕获点击事件 页面处理点击事件 组件代码 <!--components/my-info/my-info.wxml--> <view class"title"…...

网络协议与攻击模拟_01winshark工具简介

一、TCP/IP协议簇 网络接口层&#xff08;没有特定的协议&#xff09; 物理层&#xff1a;PPPOE宽带拨号&#xff08;应用场景&#xff1a;宽带拨号&#xff0c;运营商切网过来没有固定IP就需要拨号&#xff0c;家庭带宽一般都采用的是拨号方式&#xff09;数据链路层网络层…...

【linux学习笔记】网络

目录 【linux学习笔记】网络检查、监测网络ping-向网络主机发送特殊数据包traceroute-跟踪网络数据包的传输路径netstat-检查网络设置及相关统计数据 通过网络传输文件ftp 【linux学习笔记】网络 检查、监测网络 ping-向网络主机发送特殊数据包 最基本的网络连接命令就是pin…...

JUC-线程中断机制和LockSupport

线程中断机制 概念 java提供了一种用于停止线程的协商机制-中断。称为中断标识协商机制。 常用API public void interrupt() 仅仅让线程的中断标志位设置为true。不进行其他操作。public boolean isInterrupted() 获取中断标志位的状态。public static boolean interrupted…...

哈希表与哈希算法(Python系列30)

在讲哈希表数据结构和哈希算法之前&#xff0c;我想先刨析一下数组和python中的列表 首先来讲一下数组&#xff0c;我想在这提出一个疑问&#xff1a; 为什么数组通过索引查询数据的时间复杂度为O(1)&#xff0c;也就是不管数组有多大&#xff0c;算法的执行时间都是不变的。…...

『 C++ 』AVL树详解 ( 万字 )

&#x1f988;STL容器类型 在STL的容器中,分为几种容器: 序列式容器&#xff08;Sequence Containers&#xff09;: 这些容器以线性顺序存储元素&#xff0c;保留了元素的插入顺序。 支持随机访问&#xff0c;因此可以使用索引或迭代器快速访问任何位置的元素。 主要的序列式…...

Python下载安装pip方法与步骤_pip国内镜像

前提&#xff1a;下载安装好 python 打开命令提示符winR->cmd&#xff08;不需要进入 python&#xff0c;直接在终端输入指令执行即可&#xff0c;也可以再 pycharm 终端执行命令&#xff09;加入要安装ipython&#xff0c;需要执行以下命令&#xff1a; pip install **<…...

自动化测试框架pytest系列之基础概念介绍(一)

如果你要打算学习自动化测试 &#xff0c;无论是web自动化、app自动化还是接口自动化 &#xff0c;在学习的道路上&#xff0c;你几乎会遇到pytest这个测试框架&#xff0c;因为自动化编写没有测试框架&#xff0c;根本玩不了 。 如果你已经是一位自动化测试人员 &#xff0c;…...

编码技巧:如何在Golang中高效解析和生成XML

编码技巧&#xff1a;如何在Golang中高效解析和生成XML 引言Golang中的XML基础解析XML文件生成XML文件错误处理和调试高级技巧和最佳实践总结 引言 在当今数据驱动的编程世界中&#xff0c;有效地处理各种数据格式是每个开发人员必备的技能之一。其中&#xff0c;XML&#xff…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势&#xff1a;专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发&#xff0c;是一款收费低廉但功能全面的Windows NAS工具&#xff0c;主打“无学习成本部署” 。与其他NAS软件相比&#xff0c;其优势在于&#xff1a; 无需硬件改造&#xff1a;将任意W…...

python打卡day49

知识点回顾&#xff1a; 通道注意力模块复习空间注意力模块CBAM的定义 作业&#xff1a;尝试对今天的模型检查参数数目&#xff0c;并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...

css实现圆环展示百分比,根据值动态展示所占比例

代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了&#xff1a;一行…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂

蛋白质结合剂&#xff08;如抗体、抑制肽&#xff09;在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上&#xff0c;高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术&#xff0c;但这类方法普遍面临资源消耗巨大、研发周期冗长…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版​分享

平时用 iPhone 的时候&#xff0c;难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵&#xff0c;或者买了二手 iPhone 却被原来的 iCloud 账号锁住&#xff0c;这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

零基础设计模式——行为型模式 - 责任链模式

第四部分&#xff1a;行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习&#xff01;行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想&#xff1a;使多个对象都有机会处…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词

Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵&#xff0c;其中每行&#xff0c;每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid&#xff0c;其中有多少个 3 3 的 “幻方” 子矩阵&am…...