本文介绍如何在NUCLEO-U5A5ZJ-Q上移植TobudOS内核,并创建多个任务实现对板卡上RGB灯的控制。
TobudOS简介
TobudOS 是面向物联网领域开发的实时操作系统,基于腾讯自研的物联网操作系统TencentOS Tiny开源项目,2020年由腾讯捐赠到开放原子开源基金会进行孵化,2023年正式更名为TobudOS,TobudOS具有低功耗,低资源占用,模块化,安全可靠等特点,可有效提升物联网终端产品开发效率,提供精简的 RTOS 内核,内核组件可裁剪可配置,可快速移植到多种主流 MCU (如 STM32 全系列) 及模组芯片上。而且,基于 RTOS 内核提供了丰富的物联网组件,内部集成主流物联网协议栈(如 CoAP/MQTT/TLS/DTLS/LoRaWAN/NB-IoT 等),可助力物联网终端设备及业务快速接入物联网云平台。
NUCLEO-U5A5ZJ-Q 硬件
NUCLEO-U5A5ZJ-Q是基于ST的STM32U5A5ZJT6Q设计的评估板。
板载了通用的外设,比如按键、LED灯、串口等。本次实验使用的RGB灯在板上的位置如图所示。通过产看原理图可知,LED对应的管脚如下表。
功能 | 引脚 |
---|---|
红灯 | PG2 |
绿灯 | PC7 |
蓝灯 | PB7 |
模板工程创建
ST为开发者提供了很多开发工具的支持,比如Keil、IAR、STM32CubeIDE、Makefile等。本文选择STM32CubeIDE作为开发环境。
在STM32Cube IDE的创建工程菜单中选择创建STM32 project类型的工程。
在选择目标板卡的界面中选择目标板卡。
输入工程名和工程选项,完成工程的创建。
在完成工程的创建,工程的目录树如图所示。
TobudOS 内核移植
TobudOS内核移植涉及到的文件有
在工程的顶层文件夹创建tiny文件夹用于存放操作系统相关的代码。
arch文件夹中包含了多种内核架构的代码,本文使用的NUCLEO_U5A5ZJ-Q的芯片内核为cortexm33,所以只保留如下的文件夹中的代码即可。
kernel文件夹中的代码是操作系统的源码,全部复制过来即可。
osal文件夹中包含了cmsisos和POSIX接口,本文中保留的文件如下。
到此,从TobudOS仓库中添加代码的工作就结束了,在工程的菜单栏中更行文件的索引。
在工程的属性对话框中,添加头文件路径和源代码路径
由于TobudOS的代码编译是条件编译,需要在工程中添加配置文件来开启相应的功能。
在Core/Inc文件中添加tos_config.h
文件的具体内容如下。
#ifndef _TOS_CONFIG_H_
#define _TOS_CONFIG_H_
#include "stm32u5xx.h" // 目标芯片头文件,视特定芯片而定
#define TOS_CFG_TASK_PRIO_MAX 10u // 配置TobudOS默认支持的最大优先级数量
#define TOS_CFG_ROUND_ROBIN_EN 0u // 配置TobudOS的内核是否开启时间片轮转