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内核裁剪是通过移除不必要的功能和模块,调整配置参数来优化内核,以满足特定需求,裁剪的方法包括使用配置选项、模块化设计和优化配置参数,图形裁剪工具如makeme... 目录简介一、 裁剪的原因二、裁剪的方法三、图形裁剪工具四、操作说明五、make menuconfig

Linux使用nohup命令在后台运行脚本

《Linux使用nohup命令在后台运行脚本》在Linux或类Unix系统中,后台运行脚本是一项非常实用的技能,尤其适用于需要长时间运行的任务或服务,本文我们来看看如何使用nohup命令在后台... 目录nohup 命令简介基本用法输出重定向& 符号的作用后台进程的特点注意事项实际应用场景长时间运行的任务服

什么是cron? Linux系统下Cron定时任务使用指南

《什么是cron?Linux系统下Cron定时任务使用指南》在日常的Linux系统管理和维护中,定时执行任务是非常常见的需求,你可能需要每天执行备份任务、清理系统日志或运行特定的脚本,而不想每天... 在管理 linux 服务器的过程中,总有一些任务需要我们定期或重复执行。就比如备份任务,通常会选在服务器资

Linux限制ip访问的解决方案

《Linux限制ip访问的解决方案》为了修复安全扫描中发现的漏洞,我们需要对某些服务设置访问限制,具体来说,就是要确保只有指定的内部IP地址能够访问这些服务,所以本文给大家介绍了Linux限制ip访问... 目录背景:解决方案:使用Firewalld防火墙规则验证方法深度了解防火墙逻辑应用场景与扩展背景:

Linux下MySQL8.0.26安装教程

《Linux下MySQL8.0.26安装教程》文章详细介绍了如何在Linux系统上安装和配置MySQL,包括下载、解压、安装依赖、启动服务、获取默认密码、设置密码、支持远程登录以及创建表,感兴趣的朋友... 目录1.找到官网下载位置1.访问mysql存档2.下载社区版3.百度网盘中2.linux安装配置1.

Linux使用粘滞位 (t-bit)共享文件的方法教程

《Linux使用粘滞位(t-bit)共享文件的方法教程》在Linux系统中,共享文件是日常管理和协作中的常见任务,而粘滞位(StickyBit或t-bit)是实现共享目录安全性的重要工具之一,本文将... 目录文件共享的常见场景基础概念linux 文件权限粘滞位 (Sticky Bit)设置共享目录并配置粘

linux-基础知识3

打包和压缩 zip 安装zip软件包 yum -y install zip unzip 压缩打包命令: zip -q -r -d -u 压缩包文件名 目录和文件名列表 -q:不显示命令执行过程-r:递归处理,打包各级子目录和文件-u:把文件增加/替换到压缩包中-d:从压缩包中删除指定的文件 解压:unzip 压缩包名 打包文件 把压缩包从服务器下载到本地 把压缩包上传到服务器(zip

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal