首页/新闻资讯/正文详情

TF-M BL2 和 TFM_S 的配置和编译

发布时间:2026/11/4 19:56:12 来源:云帆数科 栏目:资讯中心
TF-M BL2 和 TFM_S 的配置和编译
文章目录BL2 和 TFM_S 的配置和编译flash 布局配置 tfm编译qemu 启动BL2 和 TFM_S 的配置和编译前面介绍了 bl2 的启动文件链接文件和启动流程等。flash 布局区域Flash offset物理地址大小用途BL20x000000000x100000000x80000512 KBMCUboot bootloaderPrimary image0x000800000x100800000x1000001 MBSecure 和 Non-Secure 主镜像Secondary image0x001800000x101800000x1000001 MBSecure 和 Non-Secure 升级镜像Scratch0x002800000x102800000x1000001 MB镜像交换的临时区域Protected Storage0x003800000x103800000x500020 KBPS 持久化数据Internal Trusted Storage0x003850000x103850000x400016 KBITS 持久化数据OTP / NV counters0x003890000x103890000x20008 KBOTP 和安全计数器未使用0x0038B0000x1038B000468 KB未分配空间镜像区域的前0x400字节由 BL2 image header 使用剩余空间存放镜像正文和 trailer。Secure 镜像的代码从 primary slot 的offset 0x400开始Non-Secure 镜像同理。所以 tfm_s 的镜像是从0x10080400开始的。配置 tfm按照之前bl2 tfm_s的配置命令如下cd/home/tyustli/Desktop/tyustli/study/code/qemu/trust_firmware/tfm/code/trusted-firmware-msource env/bin/activate cmake-S.-B build_an521_ninja-G Ninja \-DTFM_PLATFORMarm/mps2/an521 \-DCMAKE_BUILD_TYPEDebug \-DMCUBOOT_IMAGE_NUMBER1\-DTFM_PARTITION_CRYPTOON \-DTFM_PARTITION_INTERNAL_TRUSTED_STORAGEON \-DTFM_PARTITION_PROTECTED_STORAGEON \-DTFM_PARTITION_PLATFORMON配置效果如下-----------Secure Partitions------------------------Non-Secure Mailbox Agent OFF Protected Storage Partition ON TF-M Internal Trusted Storage Partition ON TFM Crypto Partition ON TFM Platform Partition ON TFM Initial Attestation Partition OFF TFM Firmware Update Partition OFF------------------------------------------------------如果想生成compile_commands.json供 clangd 等工具查询源文件的编译参数。可以使用如下命令cmake-S.-Bbuild_an521_make-DCMAKE_EXPORT_COMPILE_COMMANDSON-S .指定当前目录为源码目录。-B build_an521_make使用已有构建目录保留其中的其他配置。-DCMAKE_EXPORT_COMPILE_COMMANDSON开启编译命令导出生成compile_commands.json供 clangd 等工具查询源文件的编译参数。编译cmake--build build_an521_ninja--target install编译产物如下[58/73]Linking C executable bin/bl2.axf Memory region Used Size Region Size%age Used FLASH:49352B512KB9.41%RAM:25376B2MB1.21%[66/73]Generating../bin/secure_fw.hex Merged:/home/tyustli/Desktop/tyustli/study/code/qemu/trust_firmware/tfm/code/trusted-firmware-m/build_an521_ninja/bin/secure_fw.hex[68/73]Linking C executable bin/tfm_s.axf Memory region Used Size Region Size%age Used FLASH:153984B511KB29.43%RAM:45632B1MB4.35%[71/73]Generating tfm_s_signed.bin,../../../bin/tfm_s_signed.bin wrapper.py:PSA key ids provided:0x7fff816bimage.py:sign the payload[72/73]Install the project...--Install configuration:Debug从编译产物可以看到同时生成了 bl2 和 tfm_s 两个固件。可以分别看下 bl2 和 tfm_s 的 elf 布局查看 bl2 的布局arm-none-eabi-objdump-s-j.text build_an521_ninja/bin/bl2.elf|head-32bl2 的布局如下1000000020530038f51600109d140010 a3140010 S.8............10000010a9140010 af140010 b5140010 bb140010................10000020000000000000000000000000c1140010................10000030c714001000000000cd140010 d3140010................10000040d9140010 df140010 e5140010 eb140010................10000050f1140010 f7140010 fd14001003150010................1000006000000000091500100f15001015150010................查看 tfm_s 的布局arm-none-eabi-objdump-s-j.TFM_VECTORS build_an521_ninja/bin/tfm_s.elf|head-32tfm_s 的布局如下10080400f8150038 c1e6091069200a10 a5220a10...8....i.....10080410b5220a10 c5220a10 e5220a10 d5220a10............100804200000000000000000000000005dfb0910............]...100804306f200a100000000075200a107b200a10 o......u..{..1008044081200a1087200a108d200a1093200a10............1008045099200a109f200a10 a5200a10 ab200a10............1008046000000000b1200a10 b7200a10 bd200a10.............bl2 从 0x10000000 开始tfm_s 从 0x10080400 开始前面 0x400 放 image headerqemu 启动qemu-system-arm \-M mps2-an521 \-cpu cortex-m33 \-nographic \-device loader,file/home/tyustli/Desktop/tyustli/study/code/qemu/trust_firmware/tfm/code/trusted-firmware-m/build_an521_ninja/bin/bl2.hex\-device loader,file/home/tyustli/Desktop/tyustli/study/code/qemu/trust_firmware/tfm/code/trusted-firmware-m/build_an521_ninja/bin/tfm_s_signed.hex这里启动 bl2 tfm_s日志如下[INF]Starting bootloader[INF]Beginning BL2 provisioning[WRN]TFM_DUMMY_PROVISIONING is not suitableforproduction!This device is NOT SECURE[INF]PSA Crypto init done,sig_type:EC-P256,using builtin keys[INF]Image index:0,Swap type:none[INF]Bootloader chainload address offset:0x80000[INF]Image version:v2.3.0[INF]Jumping to the first image slot[NOT]Booting TF-M v2.3.0[NOT]Built Thu29Oct202609:12:54UTC[INF]Beginning TF-M provisioning[WRN]TFM_DUMMY_PROVISIONING is not suitableforproduction!This device is NOT SECURE[WRN]This device was provisioned with dummy keys.This device is NOT SECURE[VER]Isolation level is:1Creating an empty ITS flash layout.Creating an empty PS flash layout.[INF][Crypto]Provision entropy seed...[INF][Crypto]Provision entropy seed...complete.[VER][Crypto]Init TF-PSA-Crypto1.1.0...[VER][Crypto]Internal heap size is12288bytes[VER][Crypto]Init TF-PSA-Crypto1.1.0...complete.[INF][PS]Encryption alg:0x5500200

相关推荐

门店移动进销存如何处理查询、盘点和调拨状态?
门店移动进销存如何处理查询、盘点和调拨状态?

移动端的核心不是复刻后台菜单,而是在货架、库位和收货点捕捉业务事实。手机记录的每一次盘点或调拨操作,都应关联商品 SKU、门店/仓位、人员、时间和业务单据。 查询不是一个库存数字 服饰门店先按款色码定位 SKU,再区分账面、订单占用、调… · 2026/11/4 19:56:12

出海 IPO 情报:如何从招股书中看懂竞品的真实底牌?
出海 IPO 情报:如何从招股书中看懂竞品的真实底牌?

出海 IPO 情报:如何从招股书中看懂竞品的真实底牌? 前言:公关稿讲愿景,招股书讲约束 在前面的出海商业情报系列里,我们聊过招聘、裁员、并购,以及如何把这些信号串成一条可以执行的工作流。 今天来看一个更… · 2026/11/4 19:56:12

TF-M Secure 链接脚本常用语法
TF-M Secure 链接脚本常用语法

文章目录TF-M Secure 链接脚本常用语法MEMORY 定义 Secure 区域PHDRS 和 FLAGS输出段和位置标签TrustZone Veneer 段链接脚本怎样放置 veneer平台怎样使用这两个边界分区加载信息表AT > FLASH 的数据段NOLOAD 和 Secure 栈分区私有数据和边界对齐Overlay 运行时栈ASSERT 和 … · 2026/11/4 19:56:12

Electron+Vue3+TypeScript构建金融桌面应用实践
Electron+Vue3+TypeScript构建金融桌面应用实践

1. 项目背景与核心价值 十年前我刚入行时,前端开发还停留在jQuery操作DOM的阶段。如今随着工程化体系成熟,我们不仅能构建复杂SPA应用,还能用前端技术栈开发跨平台桌面应用。这个转变背后,是前端工程化从CLI工具链到GUI应用架构的… · 2026/11/4 22:00:52

hindsight 深度解析:基于 MCP 与 Docker 的 LLM Agent 回溯式记忆系统
hindsight 深度解析:基于 MCP 与 Docker 的 LLM Agent 回溯式记忆系统

1. 从“事后诸葛亮”说起:hindsight 到底想解决什么问题第一次看到 hindsight 这个词,我脑子里蹦出来的就是“事后诸葛亮”。英文里 hindsight 指的是事后再回头看时的那种清晰认知,所谓 hindsight is 20/20,事后看什么都明白。把… · 2026/11/4 22:00:52

离散数学核心概念:从命题逻辑到图论应用
离散数学核心概念:从命题逻辑到图论应用

1. 离散数学学习笔记:从命题逻辑到图论 作为一名计算机专业的学生,我深刻体会到离散数学在计算机科学中的重要性。这门课程不仅是数据结构、数据库等后续课程的基础,更是培养计算思维和抽象建模能力的核心课程。下面我将分享我在学习《离散数… · 2026/11/4 22:00:52

直流无刷电机AX/BY/CZ相序详解:别再误解为垂直轴线
直流无刷电机AX/BY/CZ相序详解:别再误解为垂直轴线

前阵子在维修群里看到一组照片:一台直流无刷电机的接线盒拆开,六根引出线分别标着 A、X、B、Y、C、Z。有人问了一句:“AX、BY、CZ是按垂直轴线划分的吗?”我第一反应是哭笑不得,但转念一想,这问题其实非常典… · 2026/11/4 21:59:50

LeNet-5从零手撕:理解CNN底层逻辑的母语级入门
LeNet-5从零手撕:理解CNN底层逻辑的母语级入门

1. 为什么今天还要重读LeNet:它不是古董,而是神经网络的“母语词典”你打开任何一本深度学习入门教材,翻到卷积神经网络那一章,十有八九第一张图就是那个由7层结构、不到6万个参数组成的简陋模型——LeNet-5。很多人扫一眼就跳过去… · 2026/11/4 21:59:50

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38

AI辅助技术栈评估:提升研发决策效率60%
AI辅助技术栈评估:提升研发决策效率60%

1. 项目背景与核心价值技术决策一直是研发团队面临的重大挑战。随着技术生态的快速演进,技术栈的选择、维护和迭代变得愈发复杂。我们团队在过去两年里,先后经历了三次重大技术栈迁移,每次都需要投入大量人力进行技术评估和风险分析。直到去年… · 2026/11/4 0:00:17

从生成Token到直接决策:Jev如何重塑AI Agent工程实践
从生成Token到直接决策:Jev如何重塑AI Agent工程实践

1. 从"生成文字"到"拍板决策":Jev 到底在解决什么问题大多数人第一次接触大模型,脑子里建立的模型是"输入问题、输出文字"。你问它今天天气怎么样,它给你一段描述;你让它写个周报,它给你… · 2026/11/4 0:00:17

32G统一内存跑大模型:内存账、TPS实测与端云分流
32G统一内存跑大模型:内存账、TPS实测与端云分流

想在一台 32G 统一内存的小主机上把大模型跑成"日常可用",这件事我前后折腾了小半年。标题里说的这台 Mac mini M6,是我们这次讨论的目标平台,具体到手规格以实物为准;但下面这套推算方法和实测思路,对任何统… · 2026/11/4 0:00:17

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码