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

麦克泰技术 2026-09-18 11:00
基于NUCLEO-L496ZG为嵌入式裸机应用添加PX5 RTOS图1

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源文件

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

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

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

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

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

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

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

步骤2:启动调度器

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

在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:添加系统节拍

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

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

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

修改SysTick_Handler,增加px5_timer_interrupt_process()。

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

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

裸机环境中

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

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

px5_pthread_tick_sleep(10);

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

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

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

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

修改stm32l496xx_flash.icf文件,

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

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

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

PX5文章推荐

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

产品购买(麦克泰)

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

产品购买(贝尼思)

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

线上课程(网校)

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


产品咨询:

北京:010-62975900

上海:021-62127690

  深圳:0755-82977971

基于NUCLEO-L496ZG为嵌入式裸机应用添加PX5 RTOS图15分享、在看与点赞,至少我要拥有一个吧



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

关于科技区角:国内科技展会垂直内容策划服务商,提供从论坛内容全案策划、会展市场化IP打造到精准专业观众一站式邀约服务,以产业内容吸引高质量B端人群,打通展会从议题设计、演讲嘉宾邀约、宣传预热、精准邀观到供需对接全链路。
声明:内容取材于网络,仅代表作者观点,如有内容违规问题,请联系处理。
嵌入式
more
展品合集|算力下沉・赋能边缘,嵌入式标杆产品齐聚elexcon 2026
金胜电子携双品牌亮相elexcon深圳国际电子展暨嵌入式展
2026年,嵌入式的离职潮彻底消失了。。。
基于Codex创建嵌入式专用代码审查Skill
深圳,嵌入式工程师首选城市!
从WAIC上AI终端百花齐放,到elexcon电子与嵌入式如何定义智能落地下限
产业链齐聚铺展全栈展品版图,打造华南电子与嵌入式核心枢纽
注册观展 | elexcon打造产业高地,汇聚电子与嵌入式解决方案,锚定细分赛道增量未来
安谋科技“星辰300”揭秘!基于Arm技术嵌入式芯片也能跑主流AI小模型了!
NXP 想买安霸:嵌入式老厂的 AI 焦虑,遇上边缘 AI 公司的规模天花板
Copyright © 2025-成都区角科技有限公司
蜀ICP备2025143415号-1
  
川公网安备51015602001305号