在STM32 NUCLEO-H563ZI Board上运行embOS
来源: | 作者:风标电子工程师 | 发布时间: 2024-07-17 | 3 次浏览 | 🔊 点击朗读正文 ❚❚ | 分享到:

在嵌入式系统开发中,安全问题日益受到重视。STM32H563ZI作为ST公司推出的一款高性能微控制器,支持TrustZone技术,允许开发者在同一个芯片上同时运行安全和非安全代码。

本文将带您了解如何在NUCLEO-H563ZI开发板上,使用SEGGER工具和embOS实时操作系统,embOS在非安全模式中运行,同时任务可以调用安全模式中的函数,实现安全与非安全环境的协同工作。

 一、STM32H563ZI与embOS介绍

STM32H563ZI是一款基于ARM CortexM33内核的微控制器,具备高达480 MHz的处理速度和丰富的外设支持。

自1992年以来,embOS一直是嵌入式市场中工程师的首选实时操作系统(RTOS)。它易于使用,并保证任何嵌入式设备都能实现100%确定性实时操作。embOS高度可移植,并且在所有平台上完全源代码兼容,这使得将应用程序移植到不同的核心变得很容易。


 二、开发环境配置

MCU: STM32H563ZI

开发板: NUCLEO-H563ZI

开发工具: SEGGER Embedded Studio v8.14a

调试器: SEGGER J-Link

实时操作系统: SEGGER embOS 5.18.3.0


 三、安全与非安全项目的内存布局

STM32H563ZI_secure项目:

   Flash: 0x0C0000000x0C0FFFFF

   RAM: 0x300000000x3004EFFF

STM32H563ZI_non_secure项目:

   Flash: 0x081000000x081FFFFF

   RAM: 0x200500000x2009FFFF(非安全应用)

        0x3004F0000x3004FFFF(安全函数)


 三、硬件初始化与函数调用

STM32H563ZI_secure项目:

   所有I/O默认为安全,释放GPIOB、GPIOF和GPIOG到非安全以供LED闪烁。

   系统时钟源配置为HSI(64 MHz)。

   内部SRAM默认为安全,配置SRAM3为非安全。

   跳转到非安全模式,获取主栈的初始值和重置处理程序的地址。

   安全函数可通过embOS和非安全应用程序调用。

STM32H563ZI_non_secure项目:

   安全任务:增加非安全计数器,调用安全函数IncrementCounter_S()增加安全计数器,需要安全模式的上下文扩展。

   高优先级任务(HPTask)和低优先级任务(LPTask):切换红色和黄色LED。


STM32全国巡回研讨会上,风标电子将会展示在STM32 NUCLEO-H563ZI Board上运行embOS。