stm32mp1 tf-a fwconfig的解析

先埋个坑,记录一下学习tf-a设备树编写的过程

首先是现有的资料,正点原子给出了linux版本4.x的一个针对正点原子mp157daa1开发板的移植教程,确实可用,但其只给了怎么做,没有具体阐述为什么和如何改,这里试图探索一下具体怎么改。

FW_CONFIG 可以理解为用于bl2 tf-a 的  

用于查找后续启动偏移的文件

这里我的理解:这里说此文件是用设备树格式,但是此文件并不是tf-a里面的设备树,此文件更像一个给bl2解析fip.bin用的一个表

此特性替换了以前硬件编码的查找,即后续启动镜像地址组织更加容易更改

这里继续说一些他的注意事项:

这个文件的组织形式比较单一,包含三个东西:首地址,大小和id。主要是说明镜像地址和ddr

 这个文件是独立于tf-a的设备树的,其位于tfa源码fdts文件夹内,内容示例如下:

#define DDR_SIZE    0x20000000 /* 512MB */
#include "stm32mp15-fw-config.dtsi"

可见只包含了对ddr——size的声明和一个stm32mp15通用的fwconfig

下面分析一下stm32mp15-fw-config.dtsi:

#ifndef DDR_SIZE

#error "DDR_SIZE is not defined"

#endif

这里是刚才dk-fwconfig里定义的

然后是根据是否选择optee来进行一些条件编译

#ifdef AARCH32_SP_OPTEE

/* OP-TEE secure memory: located at DDR top */

#define DDR_SEC_SIZE    STM32MP_DDR_S_SIZE

#define DDR_SEC_BASE    (STM32MP_DDR_BASE + (DDR_SIZE - DDR_SEC_SIZE))

#define DDR_NS_SIZE (DDR_SEC_BASE - DDR_NS_BASE)

#else /* !AARCH32_SP_OPTEE */

#define DDR_NS_SIZE DDR_SIZE

#endif /* AARCH32_SP_OPTEE */

里面的一些定义可以在plat/st/stm32mp1/include/plat_tbbr_img_def.h 找到

这里我删除了使用optee部分的代码,假设我们使用sp_min

 

/ {

    dtb-registry {

        compatible = "fconf,dyn_cfg-dtb_registry";

        hw-config {

            load-address = <0x0 STM32MP_HW_CONFIG_BASE>;

            max-size = <STM32MP_HW_CONFIG_MAX_SIZE>;

            id = <HW_CONFIG_ID>;

        };

        nt_fw {

            load-address = <0x0 STM32MP_BL33_BASE>;

            max-size = <STM32MP_BL33_MAX_SIZE>;

            id = <BL33_IMAGE_ID>;

        };

        tos_fw {

            load-address = <0x0 STM32MP_BL32_BASE>;

            max-size = <STM32MP_BL32_SIZE>;

            id = <BL32_IMAGE_ID>;

        };

        tos_fw-config {

            load-address = <0x0 STM32MP_BL32_DTB_BASE>;

            max-size = <STM32MP_BL32_DTB_SIZE>;

            id = <TOS_FW_CONFIG_ID>;

        };

    };

    st-mem-firewall {

        compatible = "st,mem-firewall";

        memory-ranges = <

            DDR_NS_BASE DDR_NS_SIZE TZC_REGION_S_NONE TZC_REGION_NSEC_ALL_ACCESS_RDWR>;

    };

};

其中 id可以看下表:

#define FW_CONFIG_ID            U(1)
#define HW_CONFIG_ID            U(2)
#define GPT_IMAGE_ID            U(3)
#define ENC_IMAGE_ID            U(6)
#define BL32_EXTRA1_IMAGE_ID        U(8)
#define BL32_EXTRA2_IMAGE_ID        U(9)
#define FWU_METADATA_IMAGE_ID        U(12)
#define BKUP_FWU_METADATA_IMAGE_ID    U(13)
#define TOS_FW_CONFIG_ID        U(16)
#define STM32MP_CONFIG_CERT_ID        U(17)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值