科技 · 创新 · 未来

基于NUCLEO-L496ZG为嵌入式裸机应用添加PX5 RTOS

6aaca9b1824a5 - 软件应用 操作系统 编程开发 开源 办公软件 设计软件 应用推荐

PX5 RTOS是一种专为资源受限的嵌入式设备设计的实时操作系统(RTOS),该实时操作系统可在大多数微处理器上实现亚微秒级上下文切换和API调用,从而提供超高的性能。

PX5原生实现POSIX pthread标准的API,可实现与嵌入式Linux及其他POSIX实时操作系统(RTOS)的兼容性,使该RTOS成为使用最简单的系统之一。通过可选扩展功能,它成为深度嵌入式实时应用的最佳选择。

本文将基于Nucleo-L496ZG开发板,参考文档,将PX5 RTOS添加到项目STM32Cube\Repository\STM32Cube_FW_L4_V1.18.2\Projects\NUCLEO-L496ZG\Examples\GPIO\GPIO_IOToggle中。

步骤1:添加RTOS源文件

6aaca9b1dfdcf - 软件应用 操作系统 编程开发 开源 办公软件 设计软件 应用推荐

在EWARM v9.50.1中,将PX5调度器实现文件(px5.c)和Cortex-M架构实现文件(px5_binding.S)添加到项目。

6aaca9b224c81 - 软件应用 操作系统 编程开发 开源 办公软件 设计软件 应用推荐

设置工程Options->C/C++ Compiler->Preprocessor指向PX5的源文件目录,

6aaca9b27f6a2 - 软件应用 操作系统 编程开发 开源 办公软件 设计软件 应用推荐

由于PX5使用了PendSV机制,需修改stm32f4xx_it.c文件,注释掉裸机应用提供中的PendSV_Handler处理函数。

构建项目,PX5 RTOS成功编译。

步骤2:启动调度器

6aaca9b2c634e - 软件应用 操作系统 编程开发 开源 办公软件 设计软件 应用推荐

在main.c中添加POSIX线程头文件:

#include <pthread.h>

然后调用px5_pthread_start()初始化RTOS:

px5_pthread_start(0,NULL,0);

与许多RTOS的启动序列不同,PX5 RTOS中,px5_pthread_start()在调度器初始化完成后会返回。从此时起,main()函数成为由PX5 RTOS管理的一个POSIX线程。这是PX5设计中一个较为有趣的特点。

运行该应用,LED闪烁行为与裸机应用一致。

步骤3:添加系统节拍

6aaca9b322bd3 - 软件应用 操作系统 编程开发 开源 办公软件 设计软件 应用推荐

使用时间相关的服务,需在节拍定时器处理函数SysTick_Handler()中调用px5_timer_interrupt_process(),函数位于stm32l4xx_it.c,按如下方式对其进行修改:

在文件顶部添加#include <pthread.h>

修改SysTick_Handler,增加px5_timer_interrupt_process()。

6aaca9b354de4 - 软件应用 操作系统 编程开发 开源 办公软件 设计软件 应用推荐

步骤4:验证RTOS已正确添加到

裸机环境中

6aaca9b38ee91 - 软件应用 操作系统 编程开发 开源 办公软件 设计软件 应用推荐

验证定时器服务是否正常运行,修改main线程中的while循环,将HAL_Delay替换为:

px5_pthread_tick_sleep(10);

6aaca9b3d44de - 软件应用 操作系统 编程开发 开源 办公软件 设计软件 应用推荐

在PX5 RTOS多任务环境中,线程运行使用PSP堆栈,因此,还需设置并初始化PSP堆栈。

修改工程的startup_stm3l496xx.s启动文件,初始化PSP栈。

6aaca9b42b682 - 软件应用 操作系统 编程开发 开源 办公软件 设计软件 应用推荐

修改stm32l496xx_flash.icf文件,

6aaca9b47b829 - 软件应用 操作系统 编程开发 开源 办公软件 设计软件 应用推荐

构建工程,LED闪烁,定时器服务正常运行,调度器与系统滴答协同工作。我们以一个已运行的STM32裸机应用为基础,成功添加了PX5 RTOS。之后便可逐步演化为多线程设计,每个线程负责单一任务。

麦克泰技术是PX5 RTOS的合作伙伴和代理商,长期致力于嵌入式安全操作系统的市场与技术服务工作,欢迎联系info@bmrtech.com咨询相关信息。

PX5文章推荐

6aaca9b4ba416 - 软件应用 操作系统 编程开发 开源 办公软件 设计软件 应用推荐

产品购买(麦克泰)

6aaca9b502eec - 软件应用 操作系统 编程开发 开源 办公软件 设计软件 应用推荐

产品购买(贝尼思)

6aaca9b54e8b3 - 软件应用 操作系统 编程开发 开源 办公软件 设计软件 应用推荐

线上课程(网校)

欢迎关注微信公众号【麦克泰技术】,回复 “加群” 按提示可加入技术交流群


产品咨询:

北京:010-62975900

上海:021-62127690

  深圳:0755-82977971

6aaca9b596726 - 软件应用 操作系统 编程开发 开源 办公软件 设计软件 应用推荐分享、在看与点赞,至少我要拥有一个吧



6aaca9b5d3c64 - 软件应用 操作系统 编程开发 开源 办公软件 设计软件 应用推荐

未经允许不得转载:点森科技 - 科技资讯_数码产品_互联网观察_智能硬件 » 基于NUCLEO-L496ZG为嵌入式裸机应用添加PX5 RTOS

分享到: 生成海报