移植好st的tf-a文件后,修改自己板子对应的设备树,注意备份
设备树在tf-a/tf-a-stm32mp-2.2.r1/fdts中

stm32mp157d-szm.dts:

// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
/** Copyright (C) STMicroelectronics 2019 - All Rights Reserved* Author: Shao Zheming <957510530@qq.com> for study.*/
/dts-v1/;#include "stm32mp157.dtsi"
#include "stm32mp15xd.dtsi"
#include "stm32mp15-pinctrl.dtsi"
#include "stm32mp15xxaa-pinctrl.dtsi"
#include "stm32mp15xx-szm.dtsi" /* edx系列的通用开发文件,同样需要备份修改 */
#include <dt-bindings/soc/st,stm32-etzpc.h>/ {model = "STMicroelectronics STM32MP157D eval daughter";compatible = "st,stm32mp157d-ed1", "st,stm32mp157";chosen {stdout-path = "serial0:115200n8"; /* 标准输出serial0,不是开发板上的 */};aliases {serial0 = &uart4; /* 设置serial0是对应开发板的串口4 */};
};&cpu1 {cpu-supply = <&vddcore>;
};&etzpc {st,decprot = <DECPROT(STM32MP1_ETZPC_USART1_ID, DECPROT_NS_RW, DECPROT_UNLOCK)DECPROT(STM32MP1_ETZPC_SPI6_ID, DECPROT_NS_RW, DECPROT_UNLOCK)DECPROT(STM32MP1_ETZPC_I2C4_ID, DECPROT_NS_RW, DECPROT_UNLOCK)DECPROT(STM32MP1_ETZPC_I2C6_ID, DECPROT_NS_RW, DECPROT_UNLOCK)DECPROT(STM32MP1_ETZPC_RNG1_ID, DECPROT_NS_RW, DECPROT_UNLOCK)DECPROT(STM32MP1_ETZPC_HASH1_ID, DECPROT_NS_RW, DECPROT_UNLOCK)DECPROT(STM32MP1_ETZPC_DDRCTRL_ID, DECPROT_S_RW, DECPROT_LOCK)DECPROT(STM32MP1_ETZPC_DDRPHYC_ID, DECPROT_S_RW, DECPROT_LOCK)DECPROT(STM32MP1_ETZPC_STGENC_ID, DECPROT_S_RW, DECPROT_LOCK)DECPROT(STM32MP1_ETZPC_BKPSRAM_ID, DECPROT_S_RW, DECPROT_LOCK)DECPROT(STM32MP1_ETZPC_IWDG1_ID, DECPROT_S_RW, DECPROT_LOCK)>;
};

stm32mp157d-szm.dtsi:

删除vin和PMIC节点

// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
/** Copyright (C) STMicroelectronics 2017 - All Rights Reserved* Author: Ludovic Barre <ludovic.barre@st.com> for STMicroelectronics.*/#include <dt-bindings/clock/stm32mp1-clksrc.h>
#include <dt-bindings/power/stm32mp1-power.h>
#include "stm32mp15-ddr3-2x4Gb-1066-binG.dtsi"/ {memory@c0000000 {device_type = "memory";reg = <0xC0000000 0x40000000>;};/* 2022/05/18 shaozheming 修改 18-52 加入相关电源 *//* 芯片内核电源 */vddcore: regulator-vddcore {compatible = "regulator-fixed";regulator-name = "vddcore";regulator-min-microvolt = <1200000>;regulator-max-microvolt = <1350000>;regulator-off-in-suspend;regulator-always-on;};/* 描述3.3电源 */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 */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电源 */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;};
};&bsec {board_id: board_id@ec {reg = <0xec 0x4>;st,non-secure-otp;};
};&clk_hse {st,digbypass;
};&cpu0{cpu-supply = <&vddcore>;
};&hash1 {status = "okay";
};&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";secure-status = "okay";
};&iwdg2 {timeout-sec = <32>;status = "okay";secure-status = "okay";
};&nvmem_layout {nvmem-cells = <&cfg0_otp>,<&part_number_otp>,<&monotonic_otp>,<&nand_otp>,<&uid_otp>,<&package_otp>,<&hw2_otp>,<&pkh_otp>,<&board_id>;nvmem-cell-names = "cfg0_otp","part_number_otp","monotonic_otp","nand_otp","uid_otp","package_otp","hw2_otp","pkh_otp","board_id";
};&pwr_regulators {system_suspend_supported_soc_modes = <STM32_PM_CSLEEP_RUNSTM32_PM_CSTOP_ALLOW_LP_STOPSTM32_PM_CSTOP_ALLOW_LPLV_STOPSTM32_PM_CSTOP_ALLOW_STANDBY_DDR_SR>;system_off_soc_mode = <STM32_PM_CSTOP_ALLOW_STANDBY_DDR_OFF>;vdd-supply = <&vdd>;vdd_3v3_usbfs-supply = <&vdd_usb>;
};&rcc {st,hsi-cal;st,csi-cal;st,cal-sec = <60>;st,clksrc = <CLK_MPU_PLL1PCLK_AXI_PLL2PCLK_MCU_PLL3PCLK_PLL12_HSECLK_PLL3_HSECLK_PLL4_HSECLK_RTC_LSECLK_MCO1_DISABLEDCLK_MCO2_DISABLED>;st,clkdiv = <1 /*MPU*/0 /*AXI*/0 /*MCU*/1 /*APB1*/1 /*APB2*/1 /*APB3*/1 /*APB4*/2 /*APB5*/23 /*RTC*/0 /*MCO1*/0 /*MCO2*/>;st,pkcs = <CLK_CKPER_HSECLK_FMC_ACLKCLK_QSPI_ACLKCLK_ETH_DISABLEDCLK_SDMMC12_PLL4PCLK_DSI_DSIPLLCLK_STGEN_HSECLK_USBPHY_HSECLK_SPI2S1_PLL3QCLK_SPI2S23_PLL3QCLK_SPI45_HSICLK_SPI6_HSICLK_I2C46_HSICLK_SDMMC3_PLL4PCLK_USBO_USBPHYCLK_ADC_CKPERCLK_CEC_LSECLK_I2C12_HSICLK_I2C35_HSICLK_UART1_HSICLK_UART24_HSICLK_UART35_HSICLK_UART6_HSICLK_UART78_HSICLK_SPDIF_PLL4PCLK_FDCAN_PLL4RCLK_SAI1_PLL3QCLK_SAI2_PLL3QCLK_SAI3_PLL3QCLK_SAI4_PLL3QCLK_RNG1_LSICLK_RNG2_LSICLK_LPTIM1_PCLK1CLK_LPTIM23_PCLK3CLK_LPTIM45_LSE>;/* VCO = 1066.0 MHz => P = 266 (AXI), Q = 533 (GPU), R = 533 (DDR) */pll2: st,pll@1 {compatible = "st,stm32mp1-pll";reg = <1>;cfg = <2 65 1 0 0 PQR(1,1,1)>;frac = <0x1400>;};/* VCO = 417.8 MHz => P = 209, Q = 24, R = 11 */pll3: st,pll@2 {compatible = "st,stm32mp1-pll";reg = <2>;cfg = <1 33 1 16 36 PQR(1,1,1)>;frac = <0x1a04>;};/* VCO = 594.0 MHz => P = 99, Q = 74, R = 74 */pll4: st,pll@3 {compatible = "st,stm32mp1-pll";reg = <3>;cfg = <3 98 5 7 7 PQR(1,1,1)>;};
};&rng1 {status = "okay";secure-status = "okay";
};&rtc {status = "okay";secure-status = "okay";
};
/* 2022/05/18 shaozheming 226-245 修改sd卡设置*/
&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";
};&timers15 {secure-status = "okay";st,hsi-cal-input = <7>;st,csi-cal-input = <8>;
};&uart4 {pinctrl-names = "default";pinctrl-0 = <&uart4_pins_a>;status = "okay";
};
/* 2022/05/18 shaozheming 259-268 修改USB_OTG */
&usbotg_hs {phys = <&usbphyc_port1 0>;phy-names = "usb2-phy";usb-role-switch;status = "okay";
};&usbphyc {status = "okay";
};&usbphyc_port0 {phy-supply = <&vdd_usb>;
};&usbphyc_port1 {phy-supply = <&vdd_usb>;
};

编译

serialboot修改

我们构建的系统烧写目录中,用到了正点原子出厂镜像中的stm32mp157datk-serialboot.stm32,前面讲了,STM32CubeProgrammer 首先通过 USB 或串口向开发板下载stm32mp157d-atk-serialboot.stm32,名字里面有个“serialboot”,翻译过来就是串行启动,此镜像主要用于初始化 DDR,并且提供 USB 或串口功能,目的是为了进一步将 uboot 镜像下载到 DDR的指定位置,最终通过 uboot 来向外部 flash 设备烧写整个系统镜像。

基于STM32MP157的tf-a移植相关推荐

  1. 移植根文件系统到linux内核 s3c2440,u-boot-2011.06在基于s3c2440开发板的移植之引导内核与加载根文件系统...

    三.根文件系统的制作 我们利用busybox来制作根文件系统 1.在下列网站下载busybox-1.15.0.tar.bz2 在当前目录下解压busybox tar -jxvf busybox-1.1 ...

  2. 基于ARM的嵌入式Linux移植真实体验(3)――操作系统

    基于ARM的嵌入式Linux移植真实体验(3)――操作系统 宋宝华[email]21cnbao@21cn.com[/email] 出处:dev.yesky.com 在笔者撰写的<C语言嵌入式系统 ...

  3. 基于STM32MP157的鸿蒙学习(一)— 资料下载及入门

    基于STM32MP157的鸿蒙学习(一)- 资料下载及入门 一.前言 本系列学习根据韦东山老师的鸿蒙课程,使用的开发板也是百问网的100ASK_STM32MP157 Pro开发板. 其核心板资源如下所 ...

  4. 基于FPGA+SDRAM+BT656视频解码移植总结

    基于FPGA+SDRAM+BT656视频解码移植总结 一.硬件准备 1.TVP5150模块(模拟视频信号解码模块). 2.模拟摄像头一个(PAL或NT格式输出 AV同轴) 3.FPGA开发板一块(EP ...

  5. 基于CubeMX+STM32F405RGT6+freeMODBUS_RTU的移植

    基于CubeMX+STM32F405RGT6+freeMODBUS_RTU的移植 目录 一.CubeMX的配置 二.freeMODBUS移植 三.测试 移植前准备工作(不限于以下方式): 硬件 开发板 ...

  6. 基于Linux C的CANopen移植

    基于Linux C的CANopen移植 0 基础要求 1 新建工程 1.1 h文件移植 1.2 c文件移植 2 建立自己的底层驱动文件 3 建立词典 4 main文件 5 CMakeLists编写 6 ...

  7. 基于ARM的嵌入式Linux移植真实体验(1)――基本概念

    基于 ARM 的嵌入式 Linux 移植真实体验( 1 ) ――基本概念 宋宝华   [email]21cnbao@21cn.com[/email] 出处:dev.yesky.com 1. 引言 AR ...

  8. 基于ARM的嵌入式Linux移植真实体验(4)――设备驱动

    基于 ARM 的嵌入式 Linux 移植真实体验( 4 ) ――设备驱动 宋宝华 [email]21cnbao@21cn.com[/email] 出处:dev.yesky.com 设备驱动程序是操作系 ...

  9. 基于stm32mp157 linux开发板ARM裸机开发教程4:Cortex-A7 内核存储系统与流水线(连载中)

    前言: 目前针对ARM Cortex-A7裸机开发文档及视频进行了二次升级持续更新中,使其内容更加丰富,讲解更加细致,全文所使用的开发平台均为华清远见FS-MP1A开发板(STM32MP157开发板) ...

  10. 基于stm32mp157 linux开发板ARM裸机开发教程3:Cortex-A7 架构与工作模式(连载中)

    前言: 目前针对ARM Cortex-A7裸机开发文档及视频进行了二次升级持续更新中,使其内容更加丰富,讲解更加细致,全文所使用的开发平台均为华清远见FS-MP1A开发板(STM32MP157开发板) ...

最新文章

  1. 排序与查找实验报告java,查找排序实验报告 - 范文大全 - 作文仓库-www.zuowencangku.com...
  2. Antenna Placement--POJ 3020
  3. 编程一万小时是种什么样的体验?
  4. 数据中心分布情况和业务占比分析
  5. 承担集团数万应用、研发人员日常工作,阿里持续交付平台的设计、迭代之道...
  6. 在用visio作图形界面设计,控件对齐的工具按钮
  7. 第 2 章 OpenStack 架构 - 017 - 部署 DevStack
  8. Java多线程面试问题
  9. 三星s7共享网络给linux,三星Galaxy S7WiFi状态下可以共享wifi热点吗【详解】
  10. Windows Azure Marketplaces上的Bing Search API可用啦!
  11. python中while的用法_Python—while循环,内涵五种九九乘法表
  12. rman一致性备份oracle数据库可以在非归档模式下么,探索ORACLE之RMAN_03一致性备份...
  13. SAP Client Copy
  14. python一对一参数_Python数值操作1
  15. 【新手基础教程】maix asr(自动语音识别)
  16. matlab中计算sinad,FFT频谱测试法Matlab代码
  17. MS08067红队攻防第二期 开班啦~(附最新授课目录)
  18. 写一篇靠谱的方案设计文档-之实践问题清单
  19. 淘宝直播数据丨食品行业研究报告2021年第一季度
  20. 实现一个Android输入法

热门文章

  1. 宝马屏幕共享android,宝马屏幕共享功能怎么用
  2. 《程序员修炼之道》解读
  3. gibboncode导入.stl格式模型,进行网格划分
  4. JMP数据清洗之“拆分” — 快速实现一列拆分为多列
  5. 阅读软件怎么添加书源_认识一波苹果安卓手机上,那些以一敌百的小说漫画软件...
  6. unity中的UV是什么
  7. Win11 WSA 安卓子系统 下载安装更新
  8. xlsread服务器出现意外情况
  9. 计算机 路由器教案,路由器教案
  10. 2015校招某度WEB前端笔试题