完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
1. TencentOS-tiny 正式开源 国产 RTOS 如雨后春笋般诞生的今天,腾讯于昨日正式开源发布了自己的物联网操作系统:TencentOS-tiny,来看看官方怎么说: TencentOS tiny是腾讯面向物联网领域开发的实时操作系统,具有低功耗,低资源占用,模块化,安全可靠等特点,可有效提升物联网终端产品开发效率。TencentOS tiny 提供精简的 RTOS 内核,内核组件可裁剪可配置,可快速移植到多种主流 MCU (如STM32全系列)及模组芯片上。而且,基于RTOS内核提供了丰富的物联网组件,内部集成主流物联网协议栈(如 CoAP/MQTT/TLS/DTLS/LoRaWAN/NB-IoT 等),可助力物联网终端设备及业务快速接入腾讯云物联网平台。作为一个码农,我要这堆balabala的文字有何用??? Talk is cheap, Show me the code. 放上Github,用代码说话,开干! 2. 文件目录架构概览 TencentOS-tiny的整个文件目录如图,嗯,是我熟悉的风格: 这个文件目录组织架构,普普通通,给个中肯的评价吧。 不过其中有几个特点倒是值得一提: board文件夹 这个文件夹是 TencentOS-tiny 适配的开发板集合,这点做的非常好,开发者在移植完之后可以提交PR合并上去,避免后续开发者再进行重复的移植工作,到手就可以用,目前的情况还是和可观的,如图: device文件夹 在这个文件夹中,可以看到 TencentOS-tiny 支持的通信模组设备还是很丰富的,覆盖了常用的 NB-iot 模组、WIFI模组、2G/4G模组、lora模组: TencentCloud_SDK 上云组件 在 components/connectivity 这个文件夹中,可以看到 TencentCloud_SDK 上云组件,毫无疑问,腾讯自家的OS,肯定对自家的云平台支持性最好: 3. 眼见为虚,上手为实 这里我使用的是小熊派开发板,和官网EVK板是亲兄弟(斜眼笑.jpg),主控是STM32L431RCT6,刚好TencentOS-tiny/board中有移植好的,直接拿来用哈哈哈,先体验一下这个操作系统: 进入board/TencentOS_tiny_EVB_MX: OS配置文件 进入后即可看到 TencnetOS-tiny 系统的配置文件 tos_config.h,同样,该OS使用宏定义开关来配置需要的模块,比如内核中的信号量、事件集、队列等等: 对于系统中一些重要的参数,也在宏定义中配置: BSP板级支持包 对于开发板上的硬件,TencentOS-tiny并没有提供设备驱动框架,所以直接使用STM32CubeMX + HAL 库来操作板上硬件: Keil工程 —— HelloWorld 这里我使用的是 Keil MDK 5.28,所以进入 Keil 文件夹,进入后 TencentOS-tiny 提供了针对该开发板的很多示例工程,这点是我没有想到的,点个赞: 刚接触到 TencentOS-tiny,先来个 HelloWorld,直接上云的话,步子有点大,容易扯到…进入 hello_world文件夹打开工程。 4. 初探 TencentOS-tiny 在上一步打开工程后,开始探索一下这个新系统~ 工程架构 在MDK中整个工程架构还是很清晰的,如图: TencentOS-tiny内核启动流程 这一点要值得赞赏,内核启动非常简洁,就是一个main函数: 板级初始化 先来看启动流程第一步:板级初始化。 该函数在mcu_init.c文件中,因为我使用的板子是小熊派开发板,没有DHT11和OLED,只想串口打印HelloWorld,所以将需要的代码都屏蔽了: printf重定向到串口 在 main 函数中,OS启动时有这样一句代码: printf("Welcome to TencentOS tinyrn"); 那么,TencentOS-tiny是如何重定向printf函数呢? 答案还是在mcu_init.c: 如果想知道为什么实现这三个函数就可以将printf重定向到串口 在代码中可以看到,printf函数被重定向到了串口2,因为这是其他开发板的支持包,不能更改实现代码,所以只能再找一个USB转串口,将小熊派的UART2连接到电脑上,如图: HelloWorld示例 探索完OS是如何启动的之后,再来探索一下HelloWorld线程是如何创建的,打开hello_world.c文件可以看到创建线程的代码非常简洁: 首先进行线程相关宏定义: 然后是线程主体函数: 最后是创建线程的函数: 那么,创建线程的函数如何执行呢? 别急,答案就在 main.c 中: 所以,当在hello_world.c中定义了函数application_entry时,main.c中弱定义的函数失效,系统就会执行用户定义的函数。 编译代码 接下来编译代码,编译之后的信息如下: 在map文件中看看: 我的天这代码写的也太简洁了吧好评!!! 下载运行 下载代码到开发板上,可以在串口助手中看到系统正常运行并打印结果: 至此,对 TencentOS-tiny 这个新的操作系统有所了解了吧哈哈,后续再来带大家玩玩上云,不然都对不起生它的腾讯爸爸~ 5. 体验心得 总的来说,TencentOS-tiny给我的感觉还是很好的:
|
|
|
|
只有小组成员才能发言,加入小组>>
3320 浏览 9 评论
3000 浏览 16 评论
3497 浏览 1 评论
9069 浏览 16 评论
4090 浏览 18 评论
1190浏览 3评论
612浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
603浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2339浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1899浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-27 16:56 , Processed in 1.268196 second(s), Total 77, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号