软件包指导老师和学生崔基于开发摘要腾讯的物联网操作系统是腾讯面向物联网领域开发的实时操作系统,具有低功耗、低资源占用、模块化、可裁剪等特点。图中断功能处理生成工程配置,显示如下界面配置,最后点击,并点击。
基于STM32Cube MX的TencentOS-Tiny软件包
2021/11/10
导师:学生:崔电子邮箱:1797878653@qq.com
TencentOS tiny是腾讯面向物联网领域开发的实时操作系统,具有低功耗、低资源占用、模块化、可裁剪的特点。TencentOS tiny提供最简单的RTOS内核,内核组件可裁剪可配置,可灵活移植到各种终端MCU上;基于RTOS内核,提供COAP/MQTT/TLS/DTLS等常用IOT协议栈和组件,方便用户快速访问腾讯云物联网中枢;。同时为物联网终端厂商提供一站式软件解决方案,方便各类物联网设备快速接入腾讯云,可支持智慧城市、智能穿戴、车联网等行业应用。
为了减少开发人员将TencentOS tiny移植到STM32系列单片机的开发时间,研究了STM32Cube MX软件包的制作,基于STM32 PackCreator完成了TencentOS Tiny软件包的封装,并在STM32Cube IDE和MDK-ARM v5上完成了软件包的移植测试。因此,用户安装这个软件包后,可以使用pack在STM32Cube MX上直接生成适合不同MCU的TencentOS Tiny项目。
目录
1.STM32 Cube MX软件包介绍1.1软件包介绍1.2软件包制作1.2.1软件包开发流程1 . 2 . 2 PDSC文件准备1.2.3软件包生成2、TencentOS-tiny软件包2.1软件包内容2.2软件包安装3、软件包测试3.1 ARM内核移植TencentOS tiny软件包3.2 STM32不依赖裸机工程移植3.3单片机裸机工程移植4、总结5、开发参考6、 附录-移植配置参考6.1 MDK5.14版本移植到ARM内核6.1.1 Cortex-M0内核移植6.1.2 Cortex-M小编内核移植6.1.3 Cortex-M3内核移植6.1.4 Cortex-M4内核移植6.1.5 Cortex-M7内核移植6.2 MDK5.14版本。 移植到ARM核的芯片6.2.1移植到stm32f103c8芯片6.2.2移植到stm32f767igt芯片6.3 MDK5.30和MDK5.35版本移植(Cortex-M小编,0,3,4,7核和芯片)和6.4 MDK5.30和MDK5.35版本移植(Cortex4
1.STM32 Cube MX软件包介绍1.1软件包介绍在开发嵌入式软件时,ARM为我们提供了软件包功能,可以集成封装软件算法等模块,方便第三方用户使用。ARM软件包可以为微控制器设备和开发板提供支持,包括驱动程序和中间件等软件组件,以及示例项目和代码模板。主要有以下类型的软件包:
(1)设备家族包:由硅供应商或工具供应商生成,为特定目标微控制器的软件应用的创建提供支持;
(2)板卡支持包:由电路板供应商发布,为安装在电路板上的外围硬件提供软件支持。
(3) CMIS软件包:由ARM提供,包括对CMIS核心、DSP和RTOS的支持;
(4)中间件包:由芯片供应商、工具供应商或第三方创建;通过为通用软件组件(如软件栈、专用硬件库等)提供软件集成。),开发时间减少;
(5)In-内部组件:由工具用户开发,用于内部或外部分发。
软件组件包括以下部分:
(1)源代码、库、头文件/配置文件和文档;
(2)一个完整的示例项目,展示软件组件的使用,可下载并在评估硬件上执行;
(3)代码模板便于软件组件的使用。
一个完整的软件包是一个ZIP文件,其中包含所有需要的软件库和文件,以及一个包含软件包所有信息的包描述文件(PDSC文件)。CMS is(http://www . keil . com/CMS is/Pack)中定义了ARM软件包的结构。
STM32 CubeMX是ST公司专门为生成STM32的HAL代码而设计的代码生成软件。它可以通过可视化界面完成项目的配置,同时生成可以在STM32 CubeMX、Keil等软件中运行的项目。STM32 Cube MX软件包是在ARM软件包的基础上,结合ST公司提供的软件包生成工具STM32 PackCreator制作的。有了这个软件,我们可以很容易地在图形界面中制作软件包。
如下图所示,使用STM32PackCreator需要我们的操作系统安装Java Runtime Environment(JRE)和JavaFX。目前STM32CubeMX已经更新到6.3版本,但是这个版本没有集成JavaFX。最方便的方法是安装STM 32 Cube MX版,省去了JavaFX的配置问题。
图1.1 STM 32 pack creator的使用要求
具体步骤如下:
(1)安装STM 32 cube MX 6 . 2 . 0:STM 32 cube MX -STM 32 cube初始化代码生成器-意法半导体;图1.2下载STM32CubeMX6.2.0
(2)双击安装目录下的STM32PackCreator,会提示安装JRE,点击确定,跳转到https://java.com/zh-CN/download/,,然后下载安装。图1.3 STM 32 Pack Creator使用前的配置
(3)然后双击再次打开STM32PackCreator.exe,STM32 PackCreator的界面如下图所示。
图1.4 STM32 PackCreator界面
1.2软件包开发1.2.1软件包开发过程软件包开发过程相当于完成一个产品的生产,因此引入了产品生命周期管理(PLM)的概念。PLM包括以下四个阶段:(1)概念产生,基于软件包需求的产品定义,创建第一个功能原型;(2)设计,根据技术特点和要求,进行样机测试和产品实现,通过大量测试验证产品的功能和规格;(3)发布,产品被制造出来并推向市场;(4)服务,产品维护,包括客户支持,最后持续优化结束产品周期。
在制作一个软件包时,我们主要面对以下几个过程:
图1.5软件包开发过程
先根据具体的组件生成软件包,即根据需求用PDSC文件组织相应的头文件、库文件等软件组件。组织完成后,使用软件包生成工具生成相应版本的软件包。然后,测试新生成的软件包,给出一个示例测试程序,然后将其包含在PDSC文件中。最后,测试完成后,生成最终的软件包。
1.2.2使用STM32PackCreator制作软件包STM32PackCreator可以通过图形界面设计软件包,省去了我们手动编写PDSC文件和为软件包生成脚本文件的步骤,使用起来非常方便快捷。以下是使用STM32PackCreator制作软件包的步骤。
(1)打开STM32 PackCreator后,点击File-new project从头开始。
图1.6生成新软件包
(2)配置软件包,包括软件包生成的文件夹、软件包的厂商、名称和描述属性。
图1.7软件包的初始配置
(3)配置完成后,可以看到有四个属性栏,分别代表软件包的基本配置、版本控制、组件内容和附加文件,如图1.7:图1.8软件包属性栏。
(4)以下是制作腾讯OS-tiny软件包时的配置:
(一)基本配置
(b)软件包版本控制图1.9软件包配置
(5)制作一个软件包的关键在于Pack细节的配置,其实就是手工编写的PDSC文件的图形界面显示。我们可以根据ARM PDSC文件的编写规范设计条件、组件结构和添加组件。
图1.10软件包组件配置
(6)添加附件。在附加文件中,我们需要添加软件包的描述文件(README.md),软件包生成的样例项目和STM32CubeMX文件夹。此时,我们可以点击File-Save,Generate Pack,在之前设置的路径中看到软件包。然后我们再次将这个软件包添加到附加文件中,如图1.11所示。我们可以点击File-Save,再次生成Pack,生成一个完整的STM32CubeMX软件包。
图1.11 STM32CubeMX文件夹
图1.12附加文件界面
图1.13生成软件包
(7)另外,STM32PackCreator提供了参数预配置的功能,使我们在生成STM32 CubeMX的项目时,可以提前配置软件包的参数。先在图1.13(a)中添加一系列我们需要用户提前配置的参数,然后在图1.13(b)中制作一个模板文件,在这里我将其设置为头文件,然后添加并保存一系列之前设置好的参数,这样用户在使用软件包生成项目时就可以提前配置参数,生成项目时自动生成一个名为tos_config的文件。
图1.14软件包参数配置
2.TencentOS-tiny软件包2.1软件包内容结合TencentOS tiny的算法架构,本文设计的软件包包括表2-1所示的内容:
表2-1软件包内容
内容函数arch包括腾讯OS-tiny/ ARM下的arch文件内核有Cortex-M小编,Cortex-M0,Cortex-M3,Cortex-M4,Cortex-M7,Cortex-M23,Cortex-M33,包括腾讯OS -Tiny/ Core下的,hal路径下的文件,Tencent OS -Tiny/osal/cmsis_os hello world _ main对应的tos_config文件CMS is _ OS用于测试软件包的主文件。在移植软件包时,需要根据这个文件修改中断函数。用户可以在该文件中添加与单片机对应的头文件包,功能如下:
(1)软件包为ARMCortex-M小编、Cortex-M0、Cortex-M3、Cortex-M4、Cortex-M7、Cortex-M23和Cortex-M33内核打包了TencentOS tiny软件,用户可以快速将软件包安装到TencentOS tiny相应内核的Keil项目中;
(2)软件包能自动适应用户选择的内核,并能根据内核自动显示arch文件,方便用户使用;
(3)当用户检查一个组件时,软件包会自动提示其他模块需要检查,可以使用界面中的Resolve按钮进行检查,防止遗漏;
(4)用户可以在STM32CubeMX上修改tos_config文件中的参数,裁剪TencentOS tiny的功能。
2.2软件包安装接下来,腾讯的安装。TencentOS-tiny软件包介绍。首先打开STM32 Cube MX软件,如图2.1(a)所示,点击安装/删除,然后将软件包拖入,点击我同意前面许可协议的所有条款,然后点击下一步安装。安装完成的界面如图2.1(b)所示。(a) (b)图2.1软件包安装
安装的软件包可以在安装路径中查看,路径可以在Help -UpdateSettings中查看。
(一)安装路径
(b)软件包安装参见图2.2软件包安装。
3.软件包测试3.1 STM32 MCU迁移测试(生成STM32 CubeIDE项目)迁移步骤如下:
(1)点击进入MCU选择器:
图3.1打开MCU选择界面。
(2)选择STM32F407ZGTx,点击开始项目:
图3.2选择MCU
(3)单击红色框中的选项。
图3.3选择软件包
(4)此时,生成使用STM32 CubeIDE编译的项目。首先选择gcc版本的arch(如果是MDK-ARM版本,点击armcc版本的arch),然后点击黄色感叹号,再点击解决。然后手动添加helloworld_main和cmsis_os,选择mcu版本对应的mcu_platform。最后,单击ok完成配置。
图3.4软件包配置
(5)单击软件包,在下面打勾并配置软件包的参数。
图3.5软件包参数配置
(6)注释中断函数PendSV()、void SysTick_Handler(void)等。这些都是在软件包中配置的。
图3.6中断功能处理
(7)生成项目配置,按照以下界面进行配置。最后,单击生成代码,然后单击打开项目。图3.7项目生成配置
(8)将头文件添加到tos_config头文件中:# #包含“mcu_platform_M4.h _ m4.h”,点击Build All,如下界面所示,软件包编译成功,完成移植。图3.8工程配置和编制
3.2 STM32板卡移植测试(生成MDK-ARM v5项目)(1)点击进入板卡选择器,选择板卡为NUCLEO-F401RE,点击开始项目:
图3.9电路板选择
(2)单击红色框中的选项。
图3.10选择软件包
(3)此时生成使用MDK-ARM编译的项目。首先选择armcc版本的arch(如果是STM32 CubeIDE版本,点击gcc版本的arch),然后点击黄色感叹号,再点击Resolve。然后手动添加helloworld_main和cmsis_os,选择mcu版本对应的mcu_platform。最后,单击ok完成配置。
图3.11软件包配置
(4)单击软件包,在下面打勾,并配置软件包的参数。
图3.12软件包参数配置
(5)注释中断函数PendSV()、void SysTick_Handler(void)等。,这些都是在软件包中配置的。
图3.13中断功能处理
(6)根据以下界面生成项目配置。最后,单击生成代码,然后单击打开项目。
图3.14工程代配置
(8)打开main_example.c,跳转到tos_config头文件,将头文件# # include“MCU _ platform _ M4 . h _ M4 . h”添加到其中,点击Build All,如下图界面所示,软件包编译成功。
图3.15移植编译
3.3单片机测试对单片机开发板进行测试,以punctual atomic explorer STM 32 f 407 zgt 6为例介绍TencentOS-tiny软件包的移植。
(1)点击进入MCU选择器:
图3.16打开MCU选择界面。
(2)选择STM32F407ZGTx,点击开始项目:
图3.17选择MCU
(3)单击红色框中的选项。
图3.18选择软件包
(4)此时生成使用MDK-ARM编译的项目。首先选择armcc版本的arch(如果是STM32 CubeIDE版本,点击gcc版本的arch),然后点击黄色感叹号,再点击Resolve。然后手动添加cmsis_os,选择mcu版本对应的mcu_platform。最后,单击ok完成配置。
图3.19软件包配置
(5)单击软件包,在下面打勾并配置软件包的参数。
图3.20软件包参数配置
(6)注释中断函数PendSV()、void SysTick_Handler(void)等。这些都在软件包里配置好了,然后我们需要修改串口,下载等模块,如下:
(一)中断功能处理
(b)中断优先级配置
(c)区域合作中心配置
(d)系统配置
(e)串行端口1的配置
(f)时钟树配置
图3.21模块配置
(7)根据以下界面配置生成的项目。最后点击右上角的生成代码,生成项目后点击打开项目。
图3.22工程配置
(8)打开tos_config头文件,添加头文件:# include“MCU _ platform _ M4 . h”,然后使用以下主文件:
/*用户代码BEGIN Includes */# include " CMS is _ OS . h "/*用户代码END Includes *//*用户代码BEGIN 0 *///task 1 # define task 1 _ STK _ size 512 void task 1(void * pdata);osThreadDef(task1,osPriorityNormal,1,task 1 _ STK _大小);//task 2 #定义task 2 _ STK _ size 512 void task 2(void * pdata);osThreadDef(task2,osPriorityNormal,1,task 2 _ STK _大小);void task 1(void * pdata){ int count = 1;char buffer[64]= { 0 };while(1) { snprintf(buffer,sizeof(buffer)," task 1 %04d/r/n ",count++);HAL_UART_Transmit(&huart1,(uint8_t*)buffer,strlen(buffer),0x ffff);osDelay(2000年);} } void task 2(void * pdata){ int count = 1;char buffer[64]= { 0 };while(1) { snprintf(buffer,sizeof(buffer)," task 2 %04d/r/n ",count++);HAL_UART_Transmit(&huart1,(uint8_t*)buffer,strlen(buffer),0x ffff);OS delay(1000);}}/*用户代码END 0 */int main(void){ /*用户代码BEGIN 1 */ /*用户代码END 1 */ /* MCU配置--------------------------------------------4*/HAL _ Init();/*用户代码开始Init */ /*用户代码结束Init */ /*配置系统时钟*/system clock _ Config();/*用户代码BEGIN SysInit */ /*用户代码END SysInit */ /*初始化所有配置的外设*/MX _ GPIO _ Init();MX _ usart 1 _ UART _ Init();/*用户代码BEGIN 2 */oskernel initialize();//TOS微小内核初始化osThreadCreate(osThread(task1),NULL);//Create task 1 osThreadCreate(osThread(task 2),NULL);//Create task 2 osKernelStart();//Start TOS Tiny /*用户代码END 2 */ /*无限循环*/ /*用户代码BEGIN WHILE */ while (1) { /*用户代码END WHILE */ /*由用户代码编译begin 3 */}/*用户代码end 3 */} (9),然后用ST-链接下载到守时atom explorer单片机。
图3.23编译器和下载程序
(10)使用串口助手检查,两个任务的延时设置不同,运行效果也不同:
图3.24串行视图界面
4、开发参考1、腾讯物联网操作系统网站https://github.com/OpenAtomFoundation/TencentOS-tiny.
2、ST官方教程如何开发一个STM 32立方体扩展包-STM 32 Cu(stmicroelectronics.cn)
3.制作STM32Cube软件包-使用-STM32 PackCreator和制作软件包-极限社区-连接开发者与智能计算生态(aijishu.com)
4、(stm32cubeMX软件包的制作-使用—STM 32 pack creator _林微_崔的博客-CSDN的博客
5.(2)制作stm32cubeMX软件包-制作简易软件包_林微_崔博客-CSDN博客
评论前必须登录!
注册