通过armv8-m架构支持的trustzone技术,可以将关键安全固件和私有程序(如安全引导、固件更新和密钥)与其余应用程序隔离,极大降低被攻击的可能性,增加嵌入式系统安全。segger的embos目前已支持armv8-m trustzone,这使得embos成为高效、安全的嵌入式系统的良好基础。
embos cortex-m 提供了基于embedded studio的nxp lpc55s69 (nxp lpcxpresso55s69)trustzone演示项目,其中embos完全在非安全状态下运行,但任务可以调用安全状态的函数。
我们基于该例程了解一下embos如何支持arm trustzone。
要在embos中使用arm trustzone,首先打开工作区: start boardsupportnxplpc55s69_lpcxpresso55s69_trustzonestart_lpc55s69.emproject。
打开后,工作区中将包含两个独立的工程:
1、在安全状态下运行的应用start_lpc55s69_s。
2、在非安全状态下运行的非安全应用start_lpc55s59_ns。
安全项目用于准备和启动设备。非安全应用演示如何使用trustzone实现应用。
armv8-m内核启动时处于安全状态。这意味着复位后将运行安全应用程序,初始化安全属性单元(sau),然后启动非安全应用。安全应用程序还包括从非安全状态读写安全寄存器的函数。
非安全应用程序使用embos来调度任务。这意味着本示例中的embos在非安全状态运行。由embos创建的任务仍然可以使用安全状态的函数。
非安全示例应用程序创建了两个任务。每个任务控制一个led。hptask()调用安全状态函数incrementcounter_s(),该函数只是递增安全计数器counter_s。
构建安全工程start_lpc55s69_s,
构建非安全工程start_lpc55s69_ns,
启动安全项目start_lpc55s69_s的调试。当应用程序运行时,两个led将开始闪烁。安全应用设置sau,初始化非安全堆栈指针并调用非安全复位处理程序。
在hptask()中设置一个断点。hptask()调用安全函数incrementcounter_s(),递增安全计数器counter_s,同时递增非安全计数器counter_ns。通过os_arm_tz_settaskcontextextension(&arm_tz_apilist, stackhp_s, sizeof(stackhp_s)) 扩展任务上下文。hptask()需要在安全状态下使用独立的任务堆栈。trustzone任务上下文扩展控制安全寄存器psp_s和psplim_s。安全任务堆栈stackhp_s需位于安全内存中。
总结
part
last
通过运行这个示例项目,可以清楚地看到,embos可以在非安全状态下运行,而应用程序可以轻松访问位于安全状态下的受信任的软件。被访问的软件可能包含加密功能,安全引导等。这是最常见的场景, embos也能够在安全状态下运行。
嵌入式C语言中结构体封装函数详解
人工智能芯片将助力可穿戴设备
音箱和耳机应该先买哪个
iOS11即将来临,与iOS10的差距一定要知道!iOS10.3或在3月推出
DMX512 LED灯光控制器的设计与开发
embOS如何支持Arm TrustZone
选用差分放大电路的原因是什么?
三星暗示折叠屏手机Galaxy Z Flip新款将至
台北电脑展浦科特推M9Pe固态硬盘:持续读取速度达3100MB/s
什么是结型场效应管JFET
EeIE 智博会 | 倒计时3天,邀您E起来参观!
知识图谱将再度引领2018大数据与AI的技术浪潮,燃爆这个冬日
活动回顾|地心引力 · 2023 DolphinDB 年度峰会
NGMN联盟开始启动6G发展事宜
技术资讯 I 哪些原因会导致 BGA 串扰?
改变PCB设计和制造的物联网传感器技术
英特尔为加速设计全新系统芯片,斥资收购NetSpeed Systems
区块链+旅游将会催生出怎样的商业模式
一文看懂RTC实时时钟
荷兰首座电动汽车“换电站”投入使用(图)