[技术问答] 新唐 M2354 的多 OS 兼容,如何简化安全系统开发?

[复制链接]
315|67
王派oo 发表于 2026-9-12 10:38 | 显示全部楼层
调试的时候记得用两个调试器或者支持多核调试的工具。M2354跑TF-M时,非安全侧的代码有时候会因为访问了安全侧禁止的资源而直接触发HardFault,而且报错信息还不明确。建议先在非安全侧把所有指针访问都检查一遍,特别是跨区调用的参数传递
低语之树 发表于 2026-9-12 13:47 | 显示全部楼层
先确保TF-M的初始化正确,再检查SEC_CONFIG配置,如果TF-M日志正常,但OS启动异常,可能是OS配置或内存隔离问题。
斧王FUWANG 发表于 2026-9-13 11:32 | 显示全部楼层
其实如果不追求极致的安全性认证,只是想做简单的数据加密,没必要上全套TF-M。M2354自带的Crypto硬件加速器配合简单的驱动就够了。TF-M更适合需要过CC EAL认证或者要做可信启动的项目,普通物联网设备用起来有点杀鸡用牛刀,开发成本太高
发GV第几啊 发表于 2026-9-14 08:16 | 显示全部楼层
关于RTOS兼容,关键是看调度器怎么实现上下文切换。TF-M要求进入安全世界前保存完整的Non-Secure状态。RT-Thread和FreeRTOS都有专门的port层来处理这个,千万别自己瞎改任务切换汇编代码,直接用官方适配好的版本,不然很容易出现任务跑飞或者内存泄漏
彩虹彼岸 发表于 2026-9-14 09:04 | 显示全部楼层
SEC_CONFIG配置要仔细,TF-M框架要熟悉,开发时多关注日志输出,安全分区创建问题要重视。
IntelCore 发表于 2026-9-15 17:02 | 显示全部楼层
多OS兼容性意味着M2354可以运行多个操作系统,这可能会提升系统性能,但也可能因资源分配问题影响性能。
感觉很反感mva 发表于 2026-9-16 10:01 | 显示全部楼层
建议多看看新唐官方出的NuMaker-M2354开发板例程。他们有个专门的Secure Image工程,里面把常用的安全服务都写好了。你只需要在非安全侧调用就行,比自己从头搭建TF-M环境要快得多。特别是那个安全存储的例子,省去了很多配置Flash控制器的麻烦
mintspring 发表于 2026-9-16 16:45 | 显示全部楼层
M2354 是Cortex‑M23(Armv8‑M+TrustZone‑M)安全 MCU,依靠TrustZone 硬件隔离、TF‑M/PSA 安全框架、NuSMP2.0 平台、多 OS 预适配 BSP,实现:安全域与业务域解耦,业务侧可自由切换 RTOS,安全底座一次开发、多 OS 复用,避免每个 OS 重复做安全底层开发
哪吒哪吒 发表于 2026-9-16 21:41 | 显示全部楼层
M2354在RTOS下实现安全隔离和互斥,需使用信号量、互斥锁等同步机制,确保不同任务在访问共享资源时不会冲突。
SophiaOP 发表于 2026-9-17 09:32 | 显示全部楼层
M2354支持多OS,安全分区配置要细致,SEC_CONFIG和TF-M日志多检查,别遗漏硬件隔离和加密配置。
kzlzqi 发表于 2026-9-17 13:17 | 显示全部楼层
M2354的中断控制器是可以配置归属权的。有些外设中断必须放在安全侧处理,比如看门狗或者关键的安全传感器。如果你的RTOS驱动非要抢占这些中断,会导致系统不稳定。设计之初就要列个中断分配表,哪些归Secure,哪些归Non-Secure
一点点0321 发表于 2026-9-18 16:10 | 显示全部楼层
编译工具链版本也很重要。TF-M对GCC和ARM Compiler的版本比较挑剔,版本不对经常报链接错误或者奇怪的符号未定义。建议严格按照TF-M官方文档推荐的工具链版本来,别为了追新用最新版编译器,稳定性第一
喂什么玩意 发表于 2026-9-19 09:18 | 显示全部楼层
如果选RT-Thread,可以用它的Env工具一键生成工程。里面有个选项是开启“使用TF-M作为安全子系统”,勾选后会自动配置好所有的宏定义和链接脚本。这比手动去改SConscript文件要靠谱得多,能避免很多因为漏配宏导致的功能缺失
突然下起雨 发表于 2026-9-20 08:01 | 显示全部楼层
性能方面,跨域调用(NSC)是有开销的。虽然M2354硬件优化过,但频繁调用还是会影响实时性。对于高频采集的数据,建议先在非安全侧做缓冲和处理,攒够一包再一次性传给安全侧进行签名或加密,别来一个字节调一次安全服务
怎么总是重复啊 发表于 2026-9-20 13:11 | 显示全部楼层
OTA升级的时候要注意签名验证。既然用了TF-M,固件更新必须走安全流程。你的Bootloader得支持验证新固件的签名才能写入Flash。这部分逻辑在TF-M的BL2阶段有实现,但需要你自己生成密钥对并集成到构建流程里,稍微有点繁琐
鹿鼎计 发表于 2026-9-20 14:54 | 显示全部楼层
安全框架的核心模块通常包括:身份认证、访问控制、数据加密、安全审计和事件响应。
私藏人间 发表于 2026-9-20 16:28 | 显示全部楼层
M2354 依托 TrustZone,安全侧运行 TF-M 可信固件,非安全侧可跑 FreeRTOS、RT-Thread 等多类 RTOS。自带 NuSMP2.0 安全平台、硬件加密与密钥存储,配套预适配 BSP 与安全例程。安全能力封装成统一 API,应用层无需关心底层密钥与加密,跨 OS 复用安全组件,大幅减少安全移植、认证与代码开发工作量。
灵犀幻影 发表于 2026-9-20 17:59 | 显示全部楼层
我试过在 RT-Thread 上集成,tfm_ns_lock_dispatch() 这个调用封装得挺干净,就是初始化顺序要注意,TF-M 必须先于 OS 启动。
lxs0026 发表于 2026-9-21 08:50 | 显示全部楼层
开发阶段可以把安全属性设为Debug模式,关闭一些严格的检查,方便打印日志。等系统稳定了再切回Release模式开启所有保护。不然一开始就开全防护,出了Bug连个报错都看不到,排查起来太痛苦了
zephyr9 发表于 2026-9-21 15:46 | 显示全部楼层
通过为每个安全服务分配独立的中断和定时器资源,以及使用任务优先级和互斥锁机制,m2354在多RTOS环境下可保证安全服务隔离与互斥。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部