VSCODE 打开 tf-a-stm32mp-2.2.r1\fdts 目录并且打开终端
复制这两个文件stm32mp157d-ed1.dts,stm32mp15xx-edx.dtsi 为atk,我测试了qcy不能用。。。
cp stm32mp157d-ed1.dts stm32mp157d-atk.dts
cp stm32mp15xx-edx.dtsi stm32mp157d-atk.dtsi
头文件名称也要修改
打开 stm32mp157d-atk.dtsi 文件,第 54~281 行的内容全部删除掉,pmic节点信息内容全部删除。
将上面vin 节点内容全部删除掉,也就是将 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;};
继续操作 stm32mp157d-atk.dtsi 这个文件,找到“sdmmc1”和“sdmmc2”这 2 个节点。
将 sdmmc1 和 sdmmc2 节点改为如下所示内容:
&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";
};
继续操作 stm32mp157d-atk.dtsi,找到
“usbotg_hs”这个节点。
将 usbotg_hs 节点改为如下所示内容:
并文件里面添加了一个名为“usbphyc”的节点。
&usbotg_hs {phys = <&usbphyc_port1 0>;phy-names = "usb2-phy";usb-role-switch;status = "okay";
};&usbphyc {status = "okay";
};
#remove default variable
LDFLAGS=
CFLAGS=
CPPFLAGS=
CC=
CPP=
AS=
AR=
LD=
NM=LOCAL_PATH=$(PWD)EXTRA_OEMAKE=CROSS_COMPILE=arm-none-linux-gnueabihf- DEBUG=1 LOG_LEVEL=40 PLAT=stm32mp1 ARCH=aarch32 ARM_ARCH_MAJOR=7 STM32MP_SDMMC=1 STM32MP_EMMC=1 STM32MP_SPI_NOR=1 STM32MP_RAW_NAND=1 STM32MP_SPI_NAND=1
#EXTRA_OEMAKE_SERIAL= STM32MP_UART_PROGRAMMER=1 STM32MP_USB_PROGRAMMER=1EXTRA_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# Set default config
ELF_DEBUG_ENABLE ?= 1
TF_A_CONFIG ?= trusted optee serialboot# Set specific OEMAKE config
TF_A_CONFIG_OEMAKE = trusted,"AARCH32_SP=sp_min" optee,"AARCH32_SP=optee" serialboot,"AARCH32_SP=sp_min"
# Set default TFA_DEVICETREE
#TFA_DEVICETREE ?= stm32mp157d-atk atm32mp157d-qcy stm32mp157a-dk1 stm32mp157d-dk1 stm32mp157c-dk2 stm32mp157f-dk2 stm32mp157c-ed1 stm32mp157f-ed1 stm32mp157a-ev1 stm32mp157c-ev1 stm32mp157d-ev1 stm32mp157f-ev1 TFA_DEVICETREE ?= stm32mp157d-atk#Set default TF_A_ENABLE_DEBUG_WRAPPER
TF_A_ENABLE_DEBUG_WRAPPER ?= 1help:@echo@echo "Available targets:"@echo " all : build TF-A binaries for defined config(s)"@echo " clean : clean build directories from generated files"@echo@echo "TF-A configuration:"@echo " TF_A_CONFIG = $(TF_A_CONFIG)"@echo " TFA_DEVICETREE = $(TFA_DEVICETREE)"@echo " ELF_DEBUG_ENABLE = '$(ELF_DEBUG_ENABLE)' ('1' to export elf files)"@echo " TF_A_ENABLE_DEBUG_WRAPPER = '$(TF_A_ENABLE_DEBUG_WRAPPER)' ('1' to generate tf-a for debugging)"@echoall: tfhost_tools:@$(MAKE) --no-print-directory -C $(LOCAL_PATH)/tools/stm32imagetf: host_toolsfor config in $(TF_A_CONFIG) ; do \# Init any extraoemake \add_extraoemake= ; \for fullconfig in $(TF_A_CONFIG_OEMAKE) ; do \extraconfig=$$(echo $$fullconfig | cut -d',' -f1) ; \if [ "$$extraconfig" = "$$config" ]; then \add_extraoemake=$$(echo $$fullconfig | cut -d',' -f2) ; \fi ; \done ; \mkdir -p $(LOCAL_PATH)/../build/$$config ; \if test -n "$(TFA_DEVICETREE)" ; then \for dt in $(TFA_DEVICETREE) ; do \if [ "$(TF_A_CONFIG)" != "serialboot" ]; then \$(MAKE) $(EXTRA_OEMAKE) -C $(LOCAL_PATH) DTB_FILE_NAME=$$dt.dtb BUILD_PLAT=$(LOCAL_PATH)/../build/$$config $$add_extraoemake ; \else \$(MAKE) $(EXTRA_OEMAKE_SERIAL) -C $(LOCAL_PATH) DTB_FILE_NAME=$$dt.dtb BUILD_PLAT=$(LOCAL_PATH)/../build/$$config $$add_extraoemake ; \fi \# Copy binary file with explicit name \cp -f $(LOCAL_PATH)/../build/$$config/tf-a-$$dt.stm32 $(LOCAL_PATH)/../build/$$config/tf-a-$$dt-$$config.stm32 ; \if [ "$(TF_A_ENABLE_DEBUG_WRAPPER)" = "1" ]; then \# Generate wrapper for debugging \stm32wrapper4dbg -s $(LOCAL_PATH)/../build/$$config/tf-a-$$dt.stm32 -d $(LOCAL_PATH)/../build/$$config/debug-tf-a-$$dt-$$config.stm32 ; \fi \done ; \else \$(MAKE) $(EXTRA_OEMAKE) -C $(LOCAL_PATH) BUILD_PLAT=$(LOCAL_PATH)/../build/$$config $$add_extraoemake; \tf_version=$$(find $(LOCAL_PATH)/../build/$$config -name tf-a*.stm32 -exec basename {} \; | sed "s/\.stm32//") ; \# Copy binary file with explicit name \cp -f $(LOCAL_PATH)/../build/$$config/$$tf_version.stm32 $(LOCAL_PATH)/../build/$$config/$$tf_version-$$config.stm32 ; \if [ "$(TF_A_ENABLE_DEBUG_WRAPPER)" = "1" ]; then \# Generate wrapper for debugging \stm32wrapper4dbg -s $(LOCAL_PATH)/../build/$$config/$$tf_version.stm32 $(LOCAL_PATH)/../build/$$config/debug-$$tf_version-$$config.stm32 ; \fi \fi ; \# Copy elf files with explicit name \if [ "$(ELF_DEBUG_ENABLE)" = "1" ] ; then \if [ -f $(LOCAL_PATH)/../build/$$config/bl2/bl2.elf ] ; then \cp -f $(LOCAL_PATH)/../build/$$config/bl2/bl2.elf $(LOCAL_PATH)/../build/$$config/tf-a-bl2-$$config.elf ; \fi ; \if [ -f $(LOCAL_PATH)/../build/$$config/bl32/bl32.elf ] ; then \cp -f $(LOCAL_PATH)/../build/$$config/bl32/bl32.elf $(LOCAL_PATH)/../build/$$config/tf-a-bl32-$$config.elf ; \fi ; \fi ; \doneclean:@for config in $(TF_A_CONFIG) ; do \rm -rf $(LOCAL_PATH)/../build/$$config ; \done
make -f ../Makefile.sdk TFA_DEVICETREE=stm32mp157d-atk TF_ACONFIG=serialboot ELF_DEBUG_ENABLE='1' all