MP157-2-TF-A移植:
创始人
2024-03-01 14:16:53
0

MP157-2-TF-A移植:

  • 1. TF-A移植:
    • 1.1 新建开发板的设备树
    • 1.2 修改设备树电源管理
    • 1.3修改TF卡和EMMC设备树
    • 1.4 修改USBOTG设备树
  • 2 编译测试
    • 2.1 Makefile.sdk 修改内容:
    • 2.2 编译命令:

正点原子第九章内容:
自己记的笔记,详细内容请参考正点原子教程STM32MP1 嵌入式 Linux 驱动开发指南2.0。

1. TF-A移植:

1.1 新建开发板的设备树

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

在这里插入图片描述
头文件名称也要修改
在这里插入图片描述

1.2 修改设备树电源管理

打开 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;};

1.3修改TF卡和EMMC设备树

继续操作 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";
};

1.4 修改USBOTG设备树

继续操作 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";
};

2 编译测试

2.1 Makefile.sdk 修改内容:

#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

2.2 编译命令:

make -f ../Makefile.sdk TFA_DEVICETREE=stm32mp157d-atk TF_ACONFIG=serialboot ELF_DEBUG_ENABLE='1' all

在这里插入图片描述

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...