专业网站推广引流,厦门工程建设招聘信息网站,做网站建设注册商标是多少类,网站建设储蓄卡目录 一、TF-A概述
二、编译官方代码
2.1 解压源码
2.2 打补丁
2.3 编译准备
#xff08;1#xff09;修改Makfile.sdk
#xff08;2#xff09;设置环境变量
#xff08;3#xff09;编译
三、移植
3.1 复制官方文件
3.2 修改电源
3.3 修改TF卡和emmc
3.4 添…目录 一、TF-A概述
二、编译官方代码
2.1 解压源码
2.2 打补丁
2.3 编译准备
1修改Makfile.sdk
2设置环境变量
3编译
三、移植
3.1 复制官方文件
3.2 修改电源
3.3 修改TF卡和emmc
3.4 添加clk_hse
3.5 删除其他串口
3.6 修改引脚
四、编译 一、TF-A概述 总而言之和安全相关篇幅受限不做详细介绍可以参考其他博主的帖子本帖只做移植教程 二、编译官方代码
2.1 解压源码 这里面有一个压缩包把它解压可以得到源码根据版本不同不要照搬只要能解压出来就行
tar xf tf-a-stm32mp-v2.8.6-stm32mp-r1-r0.tar.xz
特别注意有一个README.HOW_TO.txt这是官方写给我们的使用文档完全可以按照里面的方法去编译 2.2 打补丁 官方的源码还是不能编译的要先打补丁 先进入到源码目录就是上一步解压出来的文件夹
cd tf-a-stm32mp-v2.8.6-stm32mp-r1-r0.tar.xz
for p in ls -1 ../*.patch; do patch -p1 $p; done
2.3 编译准备
1修改Makfile.sdk 编译源码不使用源码目录下的Makefile使用上一级目录的Makefile.sdk先对他进行修改。 DEPLOYDIR ? $(SRC_PATH)/../../FIP_artifacts/arm-trusted-firmware Makefile.sdk第4行把DEPLOYDIR目录指向FIP_artifacts下的arm-trusted-firmware这样编译出来的文件会直接输出到arm-trusted-firmware文件夹方便后面fiptool打包 TF_A_DEVICETREE ? stm32mp135f-dk Makefile.sdk第19行把其他设备树都给删了只留下135的板子之后添加自己板子的时候也要在这里添加
2设置环境变量 打开一个终端之后就不要关闭它了 终端要在源码目录下打开源码
source /opt/st/stm32mp1/4.2.1-openstlinux-6.1-yocto-mickledore-mp1-v23.06.21/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabiexport FIP_DEPLOYDIR_ROOT$PWD/../../FIP_artifactssource是要用arm-ostl-linux-gnueabi这个交叉编译器 export是设置FIP的目录绝对路径或者相对路径都可以可能写到Makefile.sdk里也可以可以写一个sh脚本不用每次都加载这个环境。 注意笔者交叉编译器安装路径直接默认了大家安装的时候记得路径记一下
3编译
make -f ../Makefile.sdk all 最后提示 Missing u-boot-stm32mp135f-dk.dtb file in folder: $FIP_DEPLOYDIR_UBOOT or $FIP_DEPLOYDIR_ROOT/u-boot 没有关系别在意这个这是因为Makefile.sdk里自动调用fiptool给我们打包了但是现在又还没有编译u-boot和optee所以会报这个 最后会在FIP_artifacts/arm-trusted-fimware里生成如下 1. tf-a-stm32mp135f-dk-emmc.stm32 2. tf-a-stm32mp135f-dk-usb.stm32 3. tf-a-stm32mp135f-dk-uart.stm32 4. ...(这几个都是.stm32文件不列了 n. metadata.bin n1. fwconfig/stm32mp135f-dk-fw-config-optee.dtb 三、移植
修改头文件引用 #include stm32mp13-pinctrl-atk.dtsi 3.1 复制官方文件
cd fdts/
cp stm32mp135f-dk.dts stm32mp135-atk.dts
cp stm32mp13-pinctrl.dtsi stm32mp13-pinctrl-atk.dtsi
cp stm32mp135f-dk-fw-config.dts stm32mp135-atk-fw-config.dts
cd ..
3.2 修改电源 最重要的部分就是修改电源配置ST官方使用的是电源管理芯片而正点原子考虑成本因素使用分立电源的设计。 打开stm32mp135-atk.dts文件第67行开始的代码这一部分的代码全部删了是ST官方关于电源的描述
i2c4 {pinctrl-names default;pinctrl-0 i2c4_pins_a;i2c-scl-rising-time-ns 185;i2c-scl-falling-time-ns 20;clock-frequency 400000;status okay;pmic: stpmic33 {compatible st,stpmic1;reg 0x33;status okay;regulators {compatible st,stpmic1-regulators;buck1-supply vin;buck2-supply vin;buck3-supply vin;buck4-supply vin;ldo1-supply vin;ldo4-supply vin;ldo5-supply vin;ldo6-supply vin;vref_ddr-supply vin;pwr_sw1-supply bst_out;pwr_sw2-supply v3v3_ao;vddcpu: buck1 {regulator-name vddcpu;regulator-min-microvolt 1250000;regulator-max-microvolt 1250000;regulator-always-on;regulator-over-current-protection;};vdd_ddr: buck2 {regulator-name vdd_ddr;regulator-min-microvolt 1350000;regulator-max-microvolt 1350000;regulator-always-on;regulator-over-current-protection;};vdd: buck3 {regulator-name vdd;regulator-min-microvolt 3300000;regulator-max-microvolt 3300000;regulator-always-on;st,mask-reset;regulator-over-current-protection;};vddcore: buck4 {regulator-name vddcore;regulator-min-microvolt 1250000;regulator-max-microvolt 1250000;regulator-always-on;regulator-over-current-protection;};vdd_adc: ldo1 {regulator-name vdd_adc;regulator-min-microvolt 3300000;regulator-max-microvolt 3300000;};vdd_usb: ldo4 {regulator-name vdd_usb;regulator-min-microvolt 3300000;regulator-max-microvolt 3300000;};vdd_sd: ldo5 {regulator-name vdd_sd;regulator-min-microvolt 3300000;regulator-max-microvolt 3300000;regulator-boot-on;};v1v8_periph: ldo6 {regulator-name v1v8_periph;regulator-min-microvolt 1800000;regulator-max-microvolt 1800000;};vref_ddr: vref_ddr {regulator-name vref_ddr;regulator-always-on;};bst_out: boost {regulator-name bst_out;};v3v3_sw: pwr_sw2 {regulator-name v3v3_sw;regulator-active-discharge 1;regulator-always-on;};};};
}; 然后在第49行代码之后补上我们对电源的描述↓↓
vddcore: regulator-vddcore {compatible regulator-fixed;regulator-name vddcore;regulator-min-microvolt 1250000;regulator-max-microvolt 1250000;regulator-off-in-suspend;regulator-always-on;};vddcpu: regulator-vddcpu {compatible regulator-fixed;regulator-name vddcpu;regulator-min-microvolt 1350000;regulator-max-microvolt 1350000;regulator-off-in-suspend;regulator-always-on;};v3v3: regulator-v3v3 {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;};
这里有一个天坑天真的我以为改了设备树就好了如果就这么改压根跑不起来烧录的时候卡死在第一步 找了全网只找到一个帖子提到了我们添加了电源描述之后还要去一个文件里修改电源描述的数量。
在plat\st\stm32mp1下的stm32mp1_def.h里第695行有一个
#define PLAT_NB_FIXED_REGUS U(6)
/* 把它改成电源描述数量1 */
3.3 修改TF卡和emmc 找到sdmmc1这个节点就在stm32mp135-atk.dts下删掉它替换成我们的
sdmmc1 {pinctrl-names default;pinctrl-0 sdmmc1_b4_pins_a sdmmc1_clk_pins_a;disable-wp;st,neg-edge;no-1-8-v;bus-width 4;vmmc-supply v3v3;status okay;
};sdmmc2 {pinctrl-names default;pinctrl-0 sdmmc2_b4_pins_a sdmmc2_b4_b7_pins_a sdmmc2_clk_pins_a;non-removable;st,neg-edge;mmc-ddr-3_3v;no-1-8-v;bus-width 8;vmmc-supply v3v3;vqmmc-supply v3v3;status okay;
};
3.4 添加clk_hse 在末尾添加一个节点
clk_hse {st,digbypass;
};
3.5 删除其他串口 ST官方板子有uart1和uart8我们把它删掉只留下uart4 aliases {serial0 uart4;serial1 usart1;// serial2 uart8;// serial3 usart2;};
uart8 {pinctrl-names default;pinctrl-0 uart8_pins_a;status disabled;
};usart1 {pinctrl-names default;pinctrl-0 usart1_pins_a;uart-has-rtscts;status disabled;
}; 然后打开stm32mp13-bl2.dtsi文件我们把对应删了的引脚也给删掉
// /omit-if-no-ref/ i2c4_pins_a;
/omit-if-no-ref/ sdmmc1_b4_pins_a;
/omit-if-no-ref/ sdmmc1_clk_pins_a;
/omit-if-no-ref/ sdmmc2_b4_pins_a;
/omit-if-no-ref/ sdmmc2_clk_pins_a;
/omit-if-no-ref/ uart4_pins_a;
// /omit-if-no-ref/ uart8_pins_a;
// /omit-if-no-ref/ usart1_pins_a;
3.6 修改引脚 切换到stm32mp13-pinctrl-atk.dtsi文件这里为了方便直接复制了原子的文件也可以对照着修改笔者直接用原子的文件替换掉了代码如下
// SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause)
/** Copyright (C) STMicroelectronics 2019 - All Rights Reserved* Author: Alexandre Torgue alexandre.torguest.com*/
#include dt-bindings/pinctrl/stm32-pinfunc.hpinctrl {sdmmc1_b4_pins_a: sdmmc1-b4-0 {pins {pinmux STM32_PINMUX(C, 8, AF12), /* SDMMC1_D0 */STM32_PINMUX(C, 9, AF12), /* SDMMC1_D1 */STM32_PINMUX(C, 10, AF12), /* SDMMC1_D2 */STM32_PINMUX(C, 11, AF12), /* SDMMC1_D3 */STM32_PINMUX(D, 2, AF12); /* SDMMC1_CMD */slew-rate 1;drive-push-pull;bias-disable;};};sdmmc1_clk_pins_a: sdmmc1-clk-0 {pins {pinmux STM32_PINMUX(C, 12, AF12); /* SDMMC1_CK */slew-rate 1;drive-push-pull;bias-disable;};};sdmmc2_b4_pins_a: sdmmc2-b4-0 {pins {pinmux STM32_PINMUX(B, 14, AF10), /* SDMMC2_D0 */STM32_PINMUX(B, 15, AF10), /* SDMMC2_D1 */STM32_PINMUX(B, 3, AF10), /* SDMMC2_D2 */STM32_PINMUX(B, 4, AF10), /* SDMMC2_D3 */STM32_PINMUX(G, 6, AF10); /* SDMMC2_CMD */slew-rate 1;drive-push-pull;bias-pull-up;};};sdmmc2_b4_b7_pins_a: sdmmc2-b4-b7-0 {pins {pinmux STM32_PINMUX(F, 0, AF10), /* SDMMC2_D4 */STM32_PINMUX(B, 9, AF10), /* SDMMC2_D5 */STM32_PINMUX(C, 6, AF10), /* SDMMC2_D6 */ STM32_PINMUX(C, 7, AF10); /* SDMMC2_D7 */slew-rate 1;drive-push-pull;bias-pull-up;};};sdmmc2_clk_pins_a: sdmmc2-clk-0 {pins {pinmux STM32_PINMUX(E, 3, AF10); /* SDMMC2_CK */slew-rate 1;drive-push-pull;bias-pull-up;};};uart4_pins_a: uart4-0 {pins1 {pinmux STM32_PINMUX(D, 6, AF8); /* UART4_TX */bias-disable;drive-push-pull;slew-rate 0;};pins2 {pinmux STM32_PINMUX(D, 8, AF8); /* UART4_RX */bias-pull-up;};};
};四、编译 先去Makefile.sdk里面把设备树修改成我们的板子 还记得刚才打开没关闭的终端吗如果关了那就要重新设置环境变量了哦回到2.3节的第二步重新把环境变量设置好然后编译
make -f ../Makefile.sdk all 可以看到FIP_artifacts/arm_trusted_firmware文件夹里多了几个文件 文章转载自: http://www.morning.pwmpn.cn.gov.cn.pwmpn.cn http://www.morning.pxjp.cn.gov.cn.pxjp.cn http://www.morning.jkftn.cn.gov.cn.jkftn.cn http://www.morning.rppf.cn.gov.cn.rppf.cn http://www.morning.nyhtf.cn.gov.cn.nyhtf.cn http://www.morning.srnhk.cn.gov.cn.srnhk.cn http://www.morning.lprfk.cn.gov.cn.lprfk.cn http://www.morning.hnkkf.cn.gov.cn.hnkkf.cn http://www.morning.pwppk.cn.gov.cn.pwppk.cn http://www.morning.mpxbl.cn.gov.cn.mpxbl.cn http://www.morning.jwwfk.cn.gov.cn.jwwfk.cn http://www.morning.swsrb.cn.gov.cn.swsrb.cn http://www.morning.nswcw.cn.gov.cn.nswcw.cn http://www.morning.lwnwl.cn.gov.cn.lwnwl.cn http://www.morning.ysgnb.cn.gov.cn.ysgnb.cn http://www.morning.nxfuke.com.gov.cn.nxfuke.com http://www.morning.jfnbh.cn.gov.cn.jfnbh.cn http://www.morning.xtkw.cn.gov.cn.xtkw.cn http://www.morning.tsyny.cn.gov.cn.tsyny.cn http://www.morning.zqwp.cn.gov.cn.zqwp.cn http://www.morning.jbqwb.cn.gov.cn.jbqwb.cn http://www.morning.rlhjg.cn.gov.cn.rlhjg.cn http://www.morning.kjjbz.cn.gov.cn.kjjbz.cn http://www.morning.tyjnr.cn.gov.cn.tyjnr.cn http://www.morning.tgmfg.cn.gov.cn.tgmfg.cn http://www.morning.tqrxm.cn.gov.cn.tqrxm.cn http://www.morning.mzmqg.cn.gov.cn.mzmqg.cn http://www.morning.cmrfl.cn.gov.cn.cmrfl.cn http://www.morning.nqcwz.cn.gov.cn.nqcwz.cn http://www.morning.flqkp.cn.gov.cn.flqkp.cn http://www.morning.ftzll.cn.gov.cn.ftzll.cn http://www.morning.kryn.cn.gov.cn.kryn.cn http://www.morning.cwkcq.cn.gov.cn.cwkcq.cn http://www.morning.rkbly.cn.gov.cn.rkbly.cn http://www.morning.mwmxs.cn.gov.cn.mwmxs.cn http://www.morning.kndt.cn.gov.cn.kndt.cn http://www.morning.gryzk.cn.gov.cn.gryzk.cn http://www.morning.trbxt.cn.gov.cn.trbxt.cn http://www.morning.rynq.cn.gov.cn.rynq.cn http://www.morning.nrddx.com.gov.cn.nrddx.com http://www.morning.txlxr.cn.gov.cn.txlxr.cn http://www.morning.fjmfq.cn.gov.cn.fjmfq.cn http://www.morning.zmpqt.cn.gov.cn.zmpqt.cn http://www.morning.wdhlc.cn.gov.cn.wdhlc.cn http://www.morning.nlkjq.cn.gov.cn.nlkjq.cn http://www.morning.rhkgz.cn.gov.cn.rhkgz.cn http://www.morning.cpmfp.cn.gov.cn.cpmfp.cn http://www.morning.zcnfm.cn.gov.cn.zcnfm.cn http://www.morning.wrysm.cn.gov.cn.wrysm.cn http://www.morning.glxmf.cn.gov.cn.glxmf.cn http://www.morning.xpqdf.cn.gov.cn.xpqdf.cn http://www.morning.bwmm.cn.gov.cn.bwmm.cn http://www.morning.mqmmc.cn.gov.cn.mqmmc.cn http://www.morning.wwznd.cn.gov.cn.wwznd.cn http://www.morning.mttqp.cn.gov.cn.mttqp.cn http://www.morning.wktbz.cn.gov.cn.wktbz.cn http://www.morning.mlwhd.cn.gov.cn.mlwhd.cn http://www.morning.kpmxn.cn.gov.cn.kpmxn.cn http://www.morning.qbdqc.cn.gov.cn.qbdqc.cn http://www.morning.qcrhb.cn.gov.cn.qcrhb.cn http://www.morning.ysqb.cn.gov.cn.ysqb.cn http://www.morning.klzt.cn.gov.cn.klzt.cn http://www.morning.gwdnl.cn.gov.cn.gwdnl.cn http://www.morning.cywf.cn.gov.cn.cywf.cn http://www.morning.jlthz.cn.gov.cn.jlthz.cn http://www.morning.gczzm.cn.gov.cn.gczzm.cn http://www.morning.fchkc.cn.gov.cn.fchkc.cn http://www.morning.jgnst.cn.gov.cn.jgnst.cn http://www.morning.hgsylxs.com.gov.cn.hgsylxs.com http://www.morning.dkfb.cn.gov.cn.dkfb.cn http://www.morning.fxxmj.cn.gov.cn.fxxmj.cn http://www.morning.gfkb.cn.gov.cn.gfkb.cn http://www.morning.nmqdk.cn.gov.cn.nmqdk.cn http://www.morning.kmqjx.cn.gov.cn.kmqjx.cn http://www.morning.zzfjh.cn.gov.cn.zzfjh.cn http://www.morning.dspqc.cn.gov.cn.dspqc.cn http://www.morning.dfhkh.cn.gov.cn.dfhkh.cn http://www.morning.nzqmw.cn.gov.cn.nzqmw.cn http://www.morning.rbsxf.cn.gov.cn.rbsxf.cn http://www.morning.srbmc.cn.gov.cn.srbmc.cn