Linux第34步_TF-A移植的第2步_修改设备树和tf-a.tsv

2024-01-22 10:04
文章标签 linux 移植 修改 tf 34 设备 tsv

本文主要是介绍Linux第34步_TF-A移植的第2步_修改设备树和tf-a.tsv,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在虚拟机中,使用VSCode打开linux /atk-mp1/atk-mp1/my-tfa/目录下tf-a.code-workspace”;

找到“tf-a-stm32mp-2.2.r1/fdts”目录,就是设备树文件所在的目录。

见下图:

一、修改“stm32mp157d-atk.dts”

修改后,见下图:

二、修改设备树中的电源管理

由于正点原子STM32MP157开发板没有使用“STPMIC1A”这个电源管理芯片,所以,要修改电源管理。ST公司的STM32MP157 EVK开发板将STPMIC1A芯片挂到了I2C4下,在设备树头文件中,我们要修改节点“i2c4”。

1、打开设备树头文件“stm32mp157d-atk.dtsi”,将“54~281行之间的代码”全部删除掉,就相当于删除掉“STPMIC1A”这个芯片的相关描述了

见下图:

2、在“stm32mp157d-atk.dtsi”文件里,面找到“vin节点”,见下图:

3、删除掉“vin节点”的内容,替换为下面的代码:

//描述VDDCORE电源,也就是STM32MP157的内核电源,最小为为1.2V,最大为1.35V

   vddcore: regulator-vddcore {

        compatible = "regulator-fixed";

        regulator-name = "vddcore";

        regulator-min-microvolt = <1200000>;

        regulator-max-microvolt = <1350000>;

        regulator-off-in-suspend;

        regulator-always-on;

    };

//描述3.3V电源,最小和大都是3.3V

    v3v3: regulator-3p3v {

        compatible = "regulator-fixed";

        regulator-name = "v3v3";

        regulator-min-microvolt = <3300000>;

        regulator-max-microvolt = <3300000>;

        regulator-off-in-suspend;

        regulator-always-on;

    };

//描述vdd电源,最小和大都是3.3V

    vdd: regulator-vdd {

        compatible = "regulator-fixed";

        regulator-name = "vdd";

        regulator-min-microvolt = <3300000>;

        regulator-max-microvolt = <3300000>;

        regulator-off-in-suspend;

        regulator-always-on;

    };

//描述vdd_usb电源,最小和大都是3.3V

    vdd_usb: regulator-vdd-usb {

        compatible = "regulator-fixed";

        regulator-name = "vdd_usb";

        regulator-min-microvolt = <3300000>;

        regulator-max-microvolt = <3300000>;

        regulator-off-in-suspend;

        regulator-always-on;

    };

见下图:

至此,设备树中的电源管理修改完成了。

三、修改TF卡和EMMC设备树

1、打开设备树头文件“stm32mp157d-atk.dtsi”,找到“sdmmc1”节点和“sdmmc2”节点。

见下图:

2、修改“TF卡和EMMC设备树”后的内容为:

&sdmmc1 {

pinctrl-names = "default";

pinctrl-0 = <&sdmmc1_b4_pins_a &sdmmc1_dir_pins_a>;

st,neg-edge;

    broken-cd;

bus-width = <4>;

vmmc-supply = <&v3v3>;

status = "okay";

};

&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";

};

修改“TF卡和EMMC设备树”后结果,见下图:

四、修改USB OTG设备树

1、打开设备树头文件“stm32mp157d-atk.dtsi”,找到“usbotg_hs”节点。

见下图:

 2、修改“usbotg_hs”节点的内容如下:

&usbotg_hs {

phys = <&usbphyc_port1 0>;

phy-names = "usb2-phy";

usb-role-switch;

status = "okay";

};

见下图:

 4、添加usbphyc节点,其内容如下:

&usbphyc {

status = "okay";

};

见下图:

 五、修改“linux /atk-mp1/atk-mp1/my-tfa/Makefile.sdk”

1、打开终端

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

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

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

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

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

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

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

见下图:

2、输入“vim Makefile.sdk回车”,使用vim命令打开已有的“Makefile.sdk”文件

 3、将“TFA_DEVICETREE ?=   stm32mp157a-dk1 stm32mp157d-dk1 stm32mp157c-dk2 stm32mp157f-dk2   stm32mp157c-ed1 stm32mp157f-ed1   stm32mp157a-ev1 stm32mp157c-ev1 stm32mp157d-ev1 stm32mp157f-ev1  stm32mp157d-atk”注释掉,只用“TFA_DEVICETREE ?= stm32mp157d-atk”,目的是:关闭多个STM32MP1开发板的TF-A镜像,只保留正点原子的开发板的TF-A镜像

见下图:

 4、按下ESC”键,输入“:wq,保存退出。

六、编译TF-A

1、输入“cd tf-a-stm32mp-2.2.r1/回车”,进入到“tf-a-stm32mp-2.2.r1”目录下;

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

输入“make -f ../Makefile.sdk all回车”, 执行编译, '-f'的意思是重新指定Makefile。

如果需要加快编译速度,可是使用多线程编译,线程数量最好和自己给虚拟机分配的物理核心保持一致,使用-j来指定线程数,命令如下:

make -f ../Makefile.sdk -j8 all //使用8线程编译

见下图:

2、输入“cd ..回车”,返回上层目录“my-tfa”目录下

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

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

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

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

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

见下图:

可见,还可以看到多个STM32MP1开发板的TF-A镜像,所以要删除“build”目录和“build目录下所有文件”。

3、输入“cd ..回车”,返回上层目录“build”目录下

输入“cd ..回车”,返回上层目录“my-tfa”目录下

输入“rm build -rf回车”,删除“build”目录和“build目录下所有文件

注意:通常用输入“make -f ../Makefile.sdk clean”,清除以前的编译

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

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

输入“make -f ../Makefile.sdk all回车”, 执行编译, '-f'的意思是重新指定Makefile。

如果需要加快编译速度,可是使用多线程编译,线程数量最好和自己给虚拟机分配的物理核心保持一致,使用-j来指定线程数,命令如下:

make -f ../Makefile.sdk -j8 all //使用8线程编译

见下图:

 4、输入“cd ..回车”,返回上层目录“my-tfa”目录下

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

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

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

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

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

见下图:

至此,生成了“tf-a-stm32mp157d-atk-trusted.stm32镜像文件”。

七、再次修改“linux /atk-mp1/atk-mp1/my-tfa/Makefile.sdk”

1、打开终端

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

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

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

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

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

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

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

见下图:

 2、输入“vim Makefile.sdk回车”,使用vim命令打开已有的“Makefile.sdk”文件

将“EXTRA_OEMAKE_SERIAL= STM32MP_UART_PROGRAMMER=1 STM32MP_USB_PROGRAMMER=1”注释掉

换成下面的语句:

EXTRA_OEMAKE_SERIAL=$(filter-out STM32MP_SDMMC=1 STM32MP_EMMC=1 STM32MP_SPI_NOR=1 STM32MP_RAW_NAND=1 STM32MP_SPI_NAND=1,$(EXTRA_OEMAKE)) STM32MP_UART_PROGRAMMER=1 STM32MP_USB_PROGRAMMER=1

见下图:

按下ESC”键,输入“:wq,保存退出。

八、再次编译TF-A

1、输入“cd tf-a-stm32mp-2.2.r1/回车”,进入到“tf-a-stm32mp-2.2.r1”目录下;

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

输入“make -f ../Makefile.sdk clean”,清除以前的编译;

输入“make -f ../Makefile.sdk all回车”, 执行编译, '-f'的意思是重新指定Makefile。

如果需要加快编译速度,可是使用多线程编译,线程数量最好和自己给虚拟机分配的物理核心保持一致,使用-j来指定线程数,命令如下:

make -f ../Makefile.sdk -j8 all //使用8线程编译

见下图:

 2、输入“cd ..回车”,返回上层目录“my-tfa”目录下

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

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

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

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

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

至此,生成了“tf-a-stm32mp157d-atk-serialboot.stm32”。

九、创建新的“tf-a.tsv”文件

1、从以前的拷贝一份“tf-a.tsv”文件,修改为新的“tf-a.tsv”文件。

路径:C:\Program Files\STMicroelectronics\images

见下图:

 2、使用“Notepad++”打开“tf-a.tsv”文件

见下图:

3、修改后,见下图:

“PE”:不用更新程序,即“指定的分区”或“指定的设备”不需要烧写固件

十、烧录

打开虚拟机,使用“FileZilla Client”,将tf-a-stm32mp157d-atk-trusted.stm32tf-a-stm32mp157d-atk-serialboot.stm32传到“C:\Program Files\STMicroelectronics\images”目录下;

1、关闭虚拟机,防止开发板连接到虚拟机

2、将开发板上拨码开关拨到“000”位置

3、将USB导线连接电脑的USB3.0接口,另外一端连接开发板的USB OTG接口;

4、将USB导线连接电脑的USB3.0接口,另外一端连接到开发板的USB TTL接口;

5、双击“STM32CubeProgrammer”图标

6、选择图中的USB,然后点击“Connect”

7、点击“刷新”,直到出现USB1,表示连接成功。

8、点击“Open file”,找到“C:\Program Files\STMicroelectronics\images”目录下“tf-a.tsv”打开。

9、点击“Browse”,打开“C:\Program Files\STMicroelectronics\images”目录。

10、点击“选择文件夹”

11、点击“Download”

12、点击“确定”

 

13、将拨码开关设置为“010”

14、按下开发板的“复位按钮”,重新启动开发板。

TF-A运行信息,见下图:

uboot运行信息,见下图:

 至此,TF-A全部移植完成。

这篇关于Linux第34步_TF-A移植的第2步_修改设备树和tf-a.tsv的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/632640

相关文章

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

Linux中SSH服务配置的全面指南

《Linux中SSH服务配置的全面指南》作为网络安全工程师,SSH(SecureShell)服务的安全配置是我们日常工作中不可忽视的重要环节,本文将从基础配置到高级安全加固,全面解析SSH服务的各项参... 目录概述基础配置详解端口与监听设置主机密钥配置认证机制强化禁用密码认证禁止root直接登录实现双因素

在Linux终端中统计非二进制文件行数的实现方法

《在Linux终端中统计非二进制文件行数的实现方法》在Linux系统中,有时需要统计非二进制文件(如CSV、TXT文件)的行数,而不希望手动打开文件进行查看,例如,在处理大型日志文件、数据文件时,了解... 目录在linux终端中统计非二进制文件的行数技术背景实现步骤1. 使用wc命令2. 使用grep命令

Linux如何快速检查服务器的硬件配置和性能指标

《Linux如何快速检查服务器的硬件配置和性能指标》在运维和开发工作中,我们经常需要快速检查Linux服务器的硬件配置和性能指标,本文将以CentOS为例,介绍如何通过命令行快速获取这些关键信息,... 目录引言一、查询CPU核心数编程(几C?)1. 使用 nproc(最简单)2. 使用 lscpu(详细信

linux重启命令有哪些? 7个实用的Linux系统重启命令汇总

《linux重启命令有哪些?7个实用的Linux系统重启命令汇总》Linux系统提供了多种重启命令,常用的包括shutdown-r、reboot、init6等,不同命令适用于不同场景,本文将详细... 在管理和维护 linux 服务器时,完成系统更新、故障排查或日常维护后,重启系统往往是必不可少的步骤。本文

基于Linux的ffmpeg python的关键帧抽取

《基于Linux的ffmpegpython的关键帧抽取》本文主要介绍了基于Linux的ffmpegpython的关键帧抽取,实现以按帧或时间间隔抽取关键帧,文中通过示例代码介绍的非常详细,对大家的学... 目录1.FFmpeg的环境配置1) 创建一个虚拟环境envjavascript2) ffmpeg-py

SQL Server修改数据库名及物理数据文件名操作步骤

《SQLServer修改数据库名及物理数据文件名操作步骤》在SQLServer中重命名数据库是一个常见的操作,但需要确保用户具有足够的权限来执行此操作,:本文主要介绍SQLServer修改数据... 目录一、背景介绍二、操作步骤2.1 设置为单用户模式(断开连接)2.2 修改数据库名称2.3 查找逻辑文件名

Linux脚本(shell)的使用方式

《Linux脚本(shell)的使用方式》:本文主要介绍Linux脚本(shell)的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录概述语法详解数学运算表达式Shell变量变量分类环境变量Shell内部变量自定义变量:定义、赋值自定义变量:引用、修改、删

Linux链表操作方式

《Linux链表操作方式》:本文主要介绍Linux链表操作方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、链表基础概念与内核链表优势二、内核链表结构与宏解析三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势六、典型应用场景七、调试技巧与

详解Linux中常见环境变量的特点与设置

《详解Linux中常见环境变量的特点与设置》环境变量是操作系统和用户设置的一些动态键值对,为运行的程序提供配置信息,理解环境变量对于系统管理、软件开发都很重要,下面小编就为大家详细介绍一下吧... 目录前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变