当前位置: 首页 > 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…...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段&#xff1a; 构建阶段&#xff08;Build Stage&#xff09;&#xff1a…...

边缘计算医疗风险自查APP开发方案

核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强&#xff0c;React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 &#xff08;1&#xff09;使用React Native…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

postgresql|数据库|只读用户的创建和删除(备忘)

CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命

在华东塑料包装行业面临限塑令深度调整的背景下&#xff0c;江苏艾立泰以一场跨国资源接力的创新实践&#xff0c;重新定义了绿色供应链的边界。 跨国回收网络&#xff1a;废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点&#xff0c;将海外废弃包装箱通过标准…...

【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具

第2章 虚拟机性能监控&#xff0c;故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令&#xff1a;jps [options] [hostid] 功能&#xff1a;本地虚拟机进程显示进程ID&#xff08;与ps相同&#xff09;&#xff0c;可同时显示主类&#x…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3

一&#xff0c;概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本&#xff1a;2014.07&#xff1b; Kernel版本&#xff1a;Linux-3.10&#xff1b; 二&#xff0c;Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01)&#xff0c;并让boo…...

适应性Java用于现代 API:REST、GraphQL 和事件驱动

在快速发展的软件开发领域&#xff0c;REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名&#xff0c;不断适应这些现代范式的需求。随着不断发展的生态系统&#xff0c;Java 在现代 API 方…...