移植 MP157 TF-A

ST账号:tianli0929@126.com 密码:

1、系统源码获取并进行解压

STM32MP1Dev - STM32MP1 OpenSTLinux Developer Package - STMicroelectronics

  在Linux创建 st-sources  把源文件复制到此文件夹中

sudo  mkdir st-sources

 解压

sudo tar -xvf en.SOURCES-stm32mp1-openstlinux-5-4-dunfell-mp1-20-06-24.tar.xz

2、TF-A 源码打补丁

 进入文件

2、解压

sudo tar -xvf tf-a-stm32mp-2.2.r1-r0.tar.gz 

  进入文件夹 cd tf-a-stm32mp-2.2.r1

sudo for p in `ls -1 ../*.patch`; do patch -p1 < $p; done

问题 :-bash: syntax error near unexpected token `do'

临时解决  把命令保存为文件 .sh 然后执行 . /*.sh 命令

切换为root 用户执行

首先设置root 密码

sudo passwd root     密码设置为0

然后切换  su root 用户 

复制文件到

sudo cp *  /home/tcl/linux/tf-a/ -rf

二、编译和烧录 TF-A

1、安装 stm32wrapper4dbg 这个工具

下载地址 https://github.com/STMicroelectronics/stm32wrapper4dbg

2、解压

unzip stm32wrapper4dbg-master.zip

3、编译

cd stm32wrapper4dbg-master //进入到此文件夹
make //编译

4、拷贝到 Ubuntu 的/usr/bin 目录下

sudo cp stm32wrapper4dbg /usr/bin
命令查看
stm32wrapper4dbg -s

三、编译移植官方 tf-a

1、首先安装设备树编译相关命令,输入如下命令:

sudo apt-get install device-tree-compiler

2、 修改 Makefile.sdk

VIM 编辑器打开 Makefile.sdk, 找到“CROSS_COMPILE”,将其改为“arm-none-linux-gnueabihf-”,

3、编译

保存退出 进入到图  tf-a-stm32mp-2.2.r1 目录下
 

cd tf-a-stm32mp-2.2.r1/ //进入到 tf-a 源码目录下
make -f ../Makefile.sdk all //编译

../Makefile.sdk:45: recipe for target 'host_tools' failed   切换为root 用户执行命令
/usr/local/arm/gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf/bin

sudo adduser tcl sudo  把TCL用户权限改为管理员权限

以上是没有移植先进行编译i测试

一下开始移植

1、创建板子对应的设备树(设备树文件文件后缀为.dts  头文件后缀为.dtsi)

打开 tf-a-stm32mp-2.2.r1\fdts 目录, fdts 目录下保存的就是所有开发板的设备树文件
 

cd fdts
cp stm32mp157d-ed1.dts stm32mp157d-tcl.dts //复制
cp stm32mp15xx-edx.dtsi stm32mp157d-tcl.dtsi

2、修改 stm32mp157d-atk.dts 

// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
/*
 * Copyright (C) STMicroelectronics 2019 - All Rights Reserved
 * Author: Alexandre Torgue <alexandre.torgue@st.com> for STMicroelectronics.
 */
/dts-v1/;

#include "stm32mp157.dtsi"
#include "stm32mp15xd.dtsi"
#include "stm32mp15-pinctrl.dtsi"
#include "stm32mp15xxaa-pinctrl.dtsi"
#include "stm32mp157d-atk.dtsi"
#include <dt-bindings/soc/st,stm32-etzpc.h>

/ {
	model = "STMicroelectronics STM32MP157D eval daughter";
	compatible = "st,stm32mp157d-ed1", "st,stm32mp157";

	chosen {
		stdout-path = "serial0:115200n8";
	};

	aliases {
		serial0 = &uart4;
	};
};

&cpu1 {
	cpu-supply = <&vddcore>;
};

重点是修改后的第 12 行  修改头文件  #include "stm32mp157d-tcl.dtsi"

2、 修改  Makefile.sdk

第24行 添加 stm32mp157d-tcl

3、修改设备树电源管理

打开 stm32mp157d-atk.dtsi 文件
将 代码 中第 54~281 行的内容全部删除掉

删除后为

删除17-23行

替换为

vddcore: regulator-vddcore {
    compatible = "regulator-fixed";
    regulator-name = "vddcore";
    regulator-min-microvolt = <1200000>;
    regulator-max-microvolt = <1350000>;
    regulator-off-in-suspend;
    regulator-always-on;
};

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: 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: 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 设备树

修改为

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

修改USB OTG

修改为:

&usbotg_hs {
    phys = <&usbphyc_port1 0>;
    phy-names = "usb2-phy";
    usb-role-switch;
    status = "okay";
};

添加 “usbphyc”节点里面的“status”属性值
 

&usbphyc {
    status = "okay";
};

编译 生成了 tf-a-stm32mp157d-tcl.stm32 镜像文件
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dodo_code

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值