码迷,mamicode.com
首页 > 其他好文 > 详细

第09章 TF-A移植

时间:2021-02-20 12:15:06      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:elf   pmi   进入   oem   描述   efi   文件夹   style   交叉编译   

编译ST官方TF-A

新建 my-tfa文件夹
mkdir ~/linux/atk-mp1/my-tfa
将6.1.2小节准备好的ST官方的TF-A源码拷贝到 my-tfa 目录。
cp -r ~/linux/atk-mp1/tf-a/* ~/linux/atk-mp1/my-tfa
cd ~/linux/atk-mp1/my-tfa
技术图片

修改Makefile.sdk

将Makefile.sdk中的交叉编译器指定为 arm-none-linux-gnueabihf-
技术图片
进入TF-A源码中的 tf-a-stm32mp-2.2.r1,编译
~/linux/atk-mp1/my-tfa/tf-a-stm32mp-2.2.r1
make -f ../Makefile.sdk all
编译成功后,在 Makefile.sdk 同级目录(即my-tfa)中会生成 build 文件夹
cd ~/linux/atk-mp1/my-tfa/build
技术图片
在 trusted 目录下有个刚刚编译出来的 tf-a-stm32mp157d-ev1-trusted.stm32,将它烧录到开发板中。
可以看到无法运行,因为这是ST官方的TF-A,我们需要移植。

TF-A移植

新建自己开发板对应的设备树

创建板子对应设备树

板子设备树路径:tf-a-stm32mp-2.2.r1/fdts
cd ~/linux/atk-mp1/my-tfa/tf-a-stm32mp-2.2.r1/fdts
正点原子是基于ST官方的EVK板设计的,因此要参考 stm32mp157d-ev1.dts 这个设备树 。我们拷贝一份 stm32mp157d-ev1.dts,重命名为 stm32mp157d-atk.dts。
cp stm32mp157d-ed1.dts stm32mp157d-atk.dts 
用vscode打开 stm32mp157d-atk.dts 可以看到引用了头文件 stm32mp157d-ed1.dts
技术图片
主要工作都是在 stm32mp157d-ed1.dts,因此拷贝一份 stm32mp157d-ed1.dts,重命名为 stm32mp157d-atk.dts。
cp stm32mp157d-ed1.dts stm32mp157d-atk.dtsi
用vscode打开 stm32mp157d-atk.dtsi,并进行如下修改。
将第12行的 #include "stm32mp15xx-edx.dtsi" 修改为 #include "stm32mp157d-atk.dtsi"

编译

在 Makefile.sdk 里添加 stm32mp157d-atk.dts 到编译列表,即在TFA_DEVICETREE 配置项中添加“stm32mp157d-atk”。
技术图片
修改完后保存退出,编译TF-A
cd tf-a-stm32mp-2.2.r1
make -f ../Makefile.sdk all

修改设备树电源管理

ST官方电源管理使用I2C接口的PMIC芯片,成本高。
正点原子使用的是分离电源,所以要去掉PMIC的配置。
修改 stm32mp157d-atk.dtsi 文件
1、删:删除ST官方的电源芯片描述信息
第54行 pmic: stpmic@33设备树表示的是PMIC芯片的描述信息,需要删掉这一整个节点,即删除54到281行
删除完后&i2c4节点信息仅如下
技术图片

2、改:修改设备的电源描述信息
将17行vin节点的内容删掉
技术图片
vin节点原位置添加如下代码
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节点,修改成如下
&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节点,修改成如下
&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设备树

1、改:找到&usbotg_hs节点,修改成如下
&usbotg_hs {
	phys = <&usbphyc_port1 0>;
	phy-names = "usb2-phy";
	usb-role-switch;
	status = "okay";
};
2、增:在 &usbotg_hs 后面增加一个 &usbphyc 节点,内容如下
&usbphyc {
	status = "okay";
};

编译测试

编译

修改Makefile.sdk的TFA_DEVICETREE ,只保留stm32mp157d-atk,即只编译stm32mp157d-atk.dts
技术图片
修改完保存退出,编译
cd tf-a-stm32mp-2.2.r1
make -f ../Makefile.sdk all

烧写测试

烧写完可以根据TF-A

使用新的核心板烧录


stm32mp157d-atk-serialboot.stm32 编译方法

修改Makefile.sdk的EXTRA_OEMAKE_SERIAL如下
技术图片
保存后编译
cd tf-a-stm32mp-2.2.r1
make -f ../Makefile.sdk clean 
make -f ../Makefile.sdk TFA_DEVICETREE=stm32mp157d-atk TF_A_CONFIG=serialboot ELF_DEBUG_ENABLE=‘1‘ all 
编译成功会在 build/serialboot 目录下生成 tf-a-stm32mp157d-atk-serialboot.stm32
cd ~/linux/atk-mp1/my-tfa/build/serialboot
ls tf-a-stm32mp157d-atk-serialboot.stm32 -l
将编译好的 tf-a-stm32mp157d-atk-serialboot.stm32 和tf-a-stm32mp157d-atk-trusted.stm32 烧录到板子
技术图片





第09章 TF-A移植

标签:elf   pmi   进入   oem   描述   efi   文件夹   style   交叉编译   

原文地址:https://www.cnblogs.com/orangebear/p/14417083.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!