使用STM32处理器的用户,可以通过STM32Cube工具生成基础工程,免费评估功能安全操作系统Flexible Safety RTOS二进制库了。
STM32Cube生态系统包含软件工具和嵌入式软件库,提供了一套完整的PC软件工具,解决完整项目开发周期的所有需求;包含在STM32微控制器和微处理器上运行的嵌入式软件块,如Flexible Safety RTOS。
图1
通过在STM32CubeMX工具添加STM32Cube扩展包集成嵌入式软件块,简化创建软件包工程的过程。
软件版本
在Flexible SafetyRTOS集成和应用的开发过程中,我们使用的开发环境版本信息如下:
STM32Cube MX v6.11.1
STM32Cube IDE v1.15.1
旧的软件版本可能无法正常工作,为了避免这种情况,我们建议更新本地STM32Cube环境到最新版本。
安装扩展包
在STM32CubeMX用户手册(https://www.st.com/resource/en/user_manual/um1718-stm32cubemx-for-stm32-configuration-and-initialization-c-code-generation-stmicroelectronics.pdf )中详细解释了STM32Cube扩展包的安装。本节介绍如何激活中间件软件Flexibe Safety RTOS(FS-RTOS)。
1 通过https://www.embedded-office.net/download/public/pack/st/EmbeddedOffice.I-CUBE-FS-RTOS.1.0.1.pack 链接,下载软件包。
2 在STM32CubeMX中,选择Help->Manage embedded software packages,点击From Local…,阅读并接受License Agreement评估许可协议,开始安装,并在安装完成后关闭Embedded Software Package Manager。
图2
FS-RTOS软件包使用
基于MCU或评估板创建STM32CubeMX工程后,通过单击“Software Packs”选项卡并选择“Select Components”,如图3所示
图3
在打开的“Software Packs Component Selector”窗口,找到安装的“EmbeddedOffice.I-CUBE-FS-RTOS”组件。打开组件下拉菜单,设置FS-RTOS为“Eval”,然后选择一个应用程序,例如“Blinky”,单击Ok按钮。
图4
硬件设置
为了使项目正常工作,需检查下列设置:
1 在System Core->RCC->High Speed Clock中,使用外部晶振。
2 确保在Clock Configuration选项卡中将系统时钟设置为合理的值(例如HCLK设置为max)。
3 在生成的应用程序中,使用SysTick作为RTOS时基,因此,HAL库需使用另外的时钟源。可以通过System Core->SYS->Timebase Source,修改HAL时基为其它定时器(如Tim1)或禁止HAL时基(选择None)。
注:如果禁用HAL时基,用户需要在RTOS时钟节拍处理回调函数App_TimeTickHook()中调用HAL_IncTick()函数,回调函数位于文件Blinky/App/app_blinky_callback.c中。
4 至少需要选择和配置一个GPIO输出引脚,该GPIO输出引脚用于应用参数设置。
在生成的演示应用前,我们可能还需到System Core->NVIC中配置中断的优先级,以确保系统正常工作。
配置Flexible Safety RTOS
在“Pinout&Configuration”选项卡中,在“Middleware and Software Packs”类别中找到I-CUBE-FS_RTOS组件,配置项目:
1 选择Flexible Safety RTOS组件:I-CUBE-FS_RTOS。
2 将Flexible Safety RTOS集成到您的项目中(无需额外的参数设置)。
3 生成选定的演示应用程序(例如Blinky)。
4 指定与应用程序相关的外设,以生成所需的BSP函数。在图5中,必须为LED选择配置好的GPIO输出引脚。
图5
代码生成
最后,我们在Project Manager选项卡中为代码生成执行一些基本配置:
Project name:项目名称。
Project Location:工作空间目录,保存项目。
Application Structure:Advanced(不勾选Do not generate the main())。
Toolchain/IDE:选择工具链STM32CubeIDE(或EWARM…),选中Generate Under Root。
图6
其它设置保持不变。
项目结构
使用GENERATE CODE按钮,开始生成项目。STM32CubeMX生成的项目结构如下:
图7
您可以在ST定义的目录树中找到Flexible Safety RTOS评估包,位于Middleware和Blinky目录。
RTOS集成
当使用STM32Cube扩展包生成项目后,Flexible Safety RTOS集成已经完成。如果你想要手动集成Flexible Safety RTOS到现有项目中,需要在生成的回调函数文件Blinky/App/app_blinky_callback.c中添加RTOS系统滴答处理:
图8
默认配置中OS_TICKS_PER_SEC为1000,因此内部SysTick计时器每秒会产生1000个系统滴答中断。
诊断
内存异常处理
如果更改例程并进行实验,可能会遇到内存异常的问题。在这种情况下,我们建议在生成的项目中添加一个访问错误诊断处理程序。
在生成的中断处理程序文件Core/Src/_it.c中,在函数MemManage_Handler()中增加访问违规信息收集:
图9
访问位于Blinky/App/app_blinky_callback.c中的故障回调函数,获取下列信息:
info->CurPrio:哪个任务执行导致内存冲突。
info->IAddress:发生异常的指令地址。
info->DAddress:写保护的数据地址
图10
通过以上操作,我们完成了RTOS集成工作。接下来,可以深入Flexible SafetyRTOS组件的文件结构(https://www.embedded-office.net/eval/manual/latest/os/file.html#file-str...),开始构建应用。
Flexible Safety RTOS是基于μC/OS-II扩展的功能安全预认证操作系统,麦克泰技术是Flexible Safety RTOS在中国的代理商,具有超过20年嵌入式实时操作系统和功能安全软件服务的市场、服务和培训经验。
来源:麦克泰技术
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。