TencentOS-tiny 正式開源,全網首發評測,帶你極速上手體驗!

上百篇原創人工智能系列教程,從理論到實戰,手把手帶你掌握人工智能,點擊☞這裏☜進入傳送門~

mark

文末有體驗心得和RTOS比較,趕時間的小夥伴可以直接拉到文末哦~

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.

mark

放上Github,用代碼說話,開幹!

2. 文件目錄架構概覽

TencentOS-tiny的整個文件目錄如圖,嗯,是我熟悉的風格:

mark

這個文件目錄組織架構,普普通通,給箇中肯的評價吧。

不過其中有幾個特點倒是值得一提:

board文件夾

這個文件夾是 TencentOS-tiny 適配的開發板集合,這點做的非常好,開發者在移植完之後可以提交PR合併上去,避免後續開發者再進行重複的移植工作,到手就可以用,目前的情況還是和可觀的,如圖:

mark

device文件夾

在這個文件夾中,可以看到 TencentOS-tiny 支持的通信模組設備還是很豐富的,覆蓋了常用的 NB-iot 模組、WIFI模組、2G/4G模組、lora模組

mark

TencentCloud_SDK 上雲組件

components/connectivity 這個文件夾中,可以看到 TencentCloud_SDK 上雲組件,毫無疑問,騰訊自家的OS,肯定對自家的雲平臺支持性最好:

mark

3. 眼見爲虛,上手爲實

這裏我使用的是小熊派開發板,和官網EVK板是親兄弟(斜眼笑.jpg),主控是STM32L431RCT6,剛好TencentOS-tiny/board中有移植好的,直接拿來用哈哈哈,先體驗一下這個操作系統:

mark

進入board/TencentOS_tiny_EVB_MX:

mark

OS配置文件

進入後即可看到 TencnetOS-tiny 系統的配置文件 tos_config.h,同樣,該OS使用宏定義開關來配置需要的模塊,比如內核中的信號量、事件集、隊列等等:

mark

對於系統中一些重要的參數,也在宏定義中配置:

mark

BSP板級支持包

對於開發板上的硬件,TencentOS-tiny並沒有提供設備驅動框架,所以直接使用STM32CubeMX + HAL 庫來操作板上硬件

mark

Keil工程 —— HelloWorld

這裏我使用的是 Keil MDK 5.28,所以進入 Keil 文件夾,進入後 TencentOS-tiny 提供了針對該開發板的很多示例工程,這點是我沒有想到的,點個贊

mark

剛接觸到 TencentOS-tiny,先來個 HelloWorld,直接上雲的話,步子有點大,容易扯到…進入 hello_world文件夾打開工程。

4. 初探 TencentOS-tiny

在上一步打開工程後,開始探索一下這個新系統~

工程架構

在MDK中整個工程架構還是很清晰的,如圖:

mark

TencentOS-tiny內核啓動流程

這一點要值得讚賞,內核啓動非常簡潔,就是一個main函數:

mark

板級初始化

先來看啓動流程第一步:板級初始化。

該函數在mcu_init.c文件中,因爲我使用的板子是小熊派開發板,沒有DHT11和OLED,只想串口打印HelloWorld,所以將需要的代碼都屏蔽了:

mark

printf重定向到串口

在 main 函數中,OS啓動時有這樣一句代碼:

printf("Welcome to TencentOS tiny\r\n");

那麼,TencentOS-tiny是如何重定向printf函數呢?

答案還是在mcu_init.c

mark

如果想知道爲什麼實現這三個函數就可以將printf重定向到串口,可以參考我的這篇博客:【STM32Cube-09】重定向printf函數到串口輸出的多種方法

在代碼中可以看到,printf函數被重定向到了串口2,因爲這是其他開發板的支持包,不能更改實現代碼,所以只能再找一個USB轉串口,將小熊派的UART2連接到電腦上,如圖:

mark

HelloWorld示例

探索完OS是如何啓動的之後,再來探索一下HelloWorld線程是如何創建的,打開hello_world.c文件可以看到創建線程的代碼非常簡潔:

首先進行線程相關宏定義:

mark

然後是線程主體函數:

mark

最後是創建線程的函數:

mark

那麼,創建線程的函數如何執行呢?

別急,答案就在 main.c 中:

mark

所以,當在hello_world.c中定義了函數application_entry時,main.c中弱定義的函數失效,系統就會執行用戶定義的函數

編譯代碼

接下來編譯代碼,編譯之後的信息如下:

mark

在map文件中看看:

mark

我的天這代碼寫的也太簡潔了吧好評!!!

下載運行

下載代碼到開發板上,可以在串口助手中看到系統正常運行並打印結果:

mark

至此,對 TencentOS-tiny 這個新的操作系統有所瞭解了吧哈哈,後續再來帶大家玩玩上雲,不然都對不起生它的騰訊爸爸~

5. 體驗心得

總的來說,TencentOS-tiny給我的感覺還是很好的:

  • 和雲廠家的物聯網操作系統相比(比如菊廠的LiteOS)
    TOS顯然做的很有優勢,在board中適配了主流的一些開發板,極大的方便了開發者,並且在代碼風格方面和裸機開發沒太大的區別,代碼量上也做的非常小。

  • 和RT-Thread相比:
    這個,,,沒法比,拿轎車和卡車比,不在一個級別上。

最後給點建議,對於還沒有深入學習RTOS的小夥伴,建議學習RT-Thread,生態非常完善,如果已經學習過RTOS,那麼TencentOS-tiny非常值得一試,相對於LiteOS,AliOS,非常簡潔,玩的很爽,而且是騰訊家的東西,後期要開發微信小程序也是非常方便的,都是自己的東西。

更多精彩文章及資源,請關注我的微信公衆號:『mculover666』。

mark

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章