小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

騰訊物聯(lián)網(wǎng)操作系統(tǒng)TencentOS tiny技術(shù)架構(gòu)及開發(fā)案例講解

 SocFans 2020-12-30

騰訊物聯(lián)網(wǎng)操作系統(tǒng)(TencentOS tiny)是騰訊面向物聯(lián)網(wǎng)領(lǐng)域開發(fā)的實(shí)時(shí)操作系統(tǒng),具有低功耗,低資源占用,模塊化,可裁剪等特性。TencentOS tiny 為物聯(lián)網(wǎng)終端廠家提供一站式軟件解決方案,方便各種物聯(lián)網(wǎng)設(shè)備快速接入騰訊云,可支撐智慧城市、智能水表、智能家居、智能穿戴、車聯(lián)網(wǎng)等多種行業(yè)應(yīng)用。

「騰訊云大學(xué)」為大家整理了參與了TencentOS tiny技術(shù)特性規(guī)劃及開發(fā)的「騰訊云高級(jí)工程師戴勝冬」老師直播課的內(nèi)容。課程針對新接觸TencentOS tiny的開發(fā)者,從宏觀角度分解TencentOS tiny的技術(shù)架構(gòu),讓開發(fā)者快速了解TencentOS tiny的軟件能力棧;針對弱基礎(chǔ)的基于RTOS內(nèi)核的嵌入式開發(fā)者,設(shè)計(jì)了基于TencentOS tiny的嵌入式RTOS開發(fā)范式講解環(huán)節(jié),此環(huán)節(jié)展示基于嵌入式RTOS內(nèi)核基本能力的開發(fā)案例;針對端測最常見的基于模組聯(lián)網(wǎng)場景,設(shè)計(jì)了基于TencentOS tiny模組通訊框架的開發(fā)講解環(huán)節(jié),此環(huán)節(jié)展示基于TencentOS tiny AT框架的模組驅(qū)動(dòng)開發(fā)范式;最后一個(gè)環(huán)節(jié),基于TencentOS tiny集成的騰訊云sdk能力,展示一個(gè)具體的上云案例開發(fā)流程,助力開發(fā)者快速構(gòu)建自己的物聯(lián)應(yīng)用。

一、TencentOS tiny技術(shù)架構(gòu)講解

下圖是TencentOS tiny github官網(wǎng)首頁README中的整體架構(gòu)圖。

這個(gè)架構(gòu)較為籠統(tǒng),我們通過從TencentOS tiny作為一個(gè)端測操作系統(tǒng)的角度對架構(gòu)進(jìn)行拆解:

TencentOS tiny底層是一個(gè)實(shí)時(shí)操作系統(tǒng)(RTOS)核心,此核心提供了中斷管理、內(nèi)存管理、異常管理、多任務(wù)管理、時(shí)間管理、實(shí)時(shí)調(diào)度等最基本的RTOS功能,在此之上提供了信號(hào)量、互斥鎖、事件、消息隊(duì)列、完成量、計(jì)數(shù)鎖等多任務(wù)通信機(jī)制。在內(nèi)核的基礎(chǔ)接口之上,提供了cmsis接口適配層,對于用戶來說,可以通過cmsis接口訪問內(nèi)核功能,也可以直接訪問內(nèi)核層的接口。

從硬件抽象能力的角度對架構(gòu)進(jìn)行拆解,TencentOS tiny對下支持IoT領(lǐng)域最常見的CPU核心(包括arm v6、v7架構(gòu),以及RISC-V架構(gòu)),集成了最常見的mcu板級(jí)開發(fā)包(noridc、st、nxp、TI等),以及常見的一些硬件驅(qū)動(dòng)包。在內(nèi)核與板級(jí)開發(fā)包之間提供一層硬件抽象層,統(tǒng)一化對硬件的訪問。

從組件能力的角度對架構(gòu)進(jìn)行拆解,針對IoT場景對系統(tǒng)能力的核心訴求,我們圍繞內(nèi)核構(gòu)建了高效的文件系統(tǒng)、設(shè)備管理組件,硬件自組網(wǎng)能力、極簡的功耗管理框架、固件OTA差分升級(jí)能力等。

作為物聯(lián)網(wǎng)操作系統(tǒng),“聯(lián)網(wǎng)”是一個(gè)重要的能力方面。

針對最常見的基于AT模組的聯(lián)網(wǎng)方式,我們提供了極簡的AT框架實(shí)現(xiàn),并實(shí)現(xiàn)了基于AT框架的常見模組(esp8266、BC26、SIM800)驅(qū)動(dòng),對上封裝成統(tǒng)一的sal接口;針對基于LoRA的聯(lián)網(wǎng)場景,集成了常見的LoRA芯片板級(jí)驅(qū)動(dòng)及LoRA協(xié)議棧,對上封裝成統(tǒng)一的LoRaWan API;對于基于open模式的聯(lián)網(wǎng)能力開發(fā),我們集成了常見的芯片板級(jí)驅(qū)動(dòng)及常見的IoT協(xié)議棧(ble 5.0、wifi等),并積極與芯片廠商合作,對上封裝統(tǒng)一的抽象接口;對于基于以太網(wǎng)的聯(lián)網(wǎng)方式,我們集成了常見的以太網(wǎng)控制器板級(jí)驅(qū)動(dòng)以及LwIP協(xié)議棧,對上提供統(tǒng)一的socket接口。

在這些基礎(chǔ)聯(lián)網(wǎng)能力之上,集成TLS/DTLS傳輸層加密套件以及常見的物聯(lián)網(wǎng)應(yīng)用層協(xié)議棧(MQTT、CoAP、HTTP)。

二、嵌入式RTOS開發(fā)范式講解

從上云能力的角度來看,以前面所述的聯(lián)網(wǎng)能力為基礎(chǔ),我們集成了無縫對接騰訊云的SDK套件,提供端測快速對接云端MQTT、CoAP、OTA、Shadow等能力。

RTOS是實(shí)時(shí)操作系統(tǒng)(RealTime OperationSystem)的縮寫,使用的場景一般是對實(shí)時(shí)性處理要求較高的、資源受限的設(shè)備,可以解決裸機(jī)程序下“多任務(wù)”之間不可能實(shí)時(shí)搶占的問題。

我們從三個(gè)維度考慮為什么使用RTOS:

一、你的場景是否是資源受限的? 二、你的硬件是否帶內(nèi)存管理單元? 三、你的業(yè)務(wù)場景是否有實(shí)時(shí)性訴求?

再了解了什么是RTOS后,我們該如何使用RTOS呢?多任務(wù)的本質(zhì)就是提供了上下文yield語義,以及高優(yōu)先級(jí)搶占式調(diào)度的策略?;赗TOS開發(fā),相較于邏輯程序而言,可以享受一系列多任務(wù)間異步同步的機(jī)制。

互斥鎖主要是解決多任務(wù)之間臨界區(qū)資源的互斥性訪問的問題,使用互斥鎖可以保證一段臨界區(qū)資源在任意時(shí)刻只會(huì)有一個(gè)任務(wù)在對其進(jìn)行訪問。假設(shè)你有一段代碼,或者一段數(shù)據(jù),當(dāng)有多個(gè)任務(wù)并行操作時(shí),會(huì)導(dǎo)致結(jié)果的不確定性(不可重入性,這段代碼或者數(shù)據(jù)就叫臨界區(qū)資源)。而你的業(yè)務(wù)恰恰存在這種情況,并且想得到這種確定性,那么在訪問這段代碼或這段數(shù)據(jù)(臨界區(qū))前,使用互斥鎖來確保一個(gè)臨界區(qū),在任意時(shí)刻,只會(huì)有一個(gè)任務(wù)在對其進(jìn)行訪問。

信號(hào)量解決的是“系統(tǒng)可用資源數(shù)”信息在多任務(wù)間傳遞的問題,通俗化理解就是,對系統(tǒng)某種資源可用數(shù)量進(jìn)行仲裁、管理的機(jī)制,可以用來操作系統(tǒng)中最經(jīng)典的解決生產(chǎn)者、消費(fèi)者問題。

事件解決的是多任務(wù)之間傳遞一種“信號(hào)類”信息,一個(gè)具體的事件就是一個(gè)uint32_t中的比特位。

隊(duì)列用來解決多任務(wù)之間傳遞帶負(fù)載的消息。有些RTOS實(shí)現(xiàn)中也稱之為“郵箱”?!笆录睓C(jī)制是通知一個(gè)任務(wù)發(fā)生了一件什么事,更多具體的信息就沒有了。隊(duì)列提供了傳遞“額外信息”的機(jī)制。

總結(jié)一下以上的基本組件之任務(wù)間通信:

1. 互斥鎖解決的是不可重入資源的競爭性訪問:誰先獲得了鎖,誰才有權(quán)訪問資源。 2. 信號(hào)量解決的是系統(tǒng)“可用資源數(shù)”這個(gè)信息在各任務(wù)間同步的問題:生產(chǎn)者、消費(fèi)者問題。 3. 事件解決的是任務(wù)間某種“事件”是否發(fā)生的同步問題。 4. 隊(duì)列[郵箱]解決的是帶“負(fù)載”的消息傳遞問題。

當(dāng)需要定時(shí)觸發(fā)一些邏輯時(shí),會(huì)使用到軟件定時(shí)器。軟件定時(shí)器是不依賴于特定硬件,純粹用軟件實(shí)現(xiàn)的定時(shí)器??梢詫?shí)現(xiàn)“任務(wù)”的定期執(zhí)行。

系統(tǒng)在沒有用戶業(yè)務(wù)需要處理的時(shí)候(進(jìn)入idle),系統(tǒng)會(huì)自動(dòng)進(jìn)入低功耗模式(sleep),TencentOS tiny實(shí)現(xiàn)了兩級(jí)功耗管理方案:第一級(jí)功耗管理,直接在系統(tǒng)配置文件tos_config.h中使能TOS_CFG_PWR_MGR_EN配置項(xiàng)即可,系統(tǒng)會(huì)在沒有用戶業(yè)務(wù)需要處理的時(shí)候(進(jìn)入idle)自動(dòng)進(jìn)入低功耗模式。第二級(jí)功耗管理,提供“非周期性”時(shí)鐘機(jī)制。需要用戶在tos_config.h中使能TOS_CFG_TICKLESS_EN配置項(xiàng),并實(shí)現(xiàn)喚醒鬧鐘機(jī)制以及tickless配置接口。

三、模組通信框架開發(fā)講解

模組通信框架基于AT指令的模組通信方式,使用起來較為繁瑣,用戶要處理很多與模組之間串口的同步、異步通信流程。模組通信框架,是基于TencentOS tiny對串口的hal抽象接口,以及內(nèi)核提供的信號(hào)量、互斥鎖、字符隊(duì)列等機(jī)制,實(shí)現(xiàn)的一套AT處理框架,并基于AT框架實(shí)現(xiàn)最常見的AT模組驅(qū)動(dòng),對上提供統(tǒng)一的SAL訪問接口,極大簡化用戶對AT模組的使用流程。

以下是一個(gè)最典型的基于SAL接口及AT框架的模組訪問案例:

首先我們通過串口發(fā)送AT+RESTORE的命令讓模組復(fù)位,第二步把這個(gè)模組設(shè)置為station模式,再設(shè)置多連接模式,并最終發(fā)布數(shù)據(jù)。

接下來我們談?wù)勗趺词褂媚=M通信框架。

Void tos at uart write byte 這個(gè)接口是用來向AT框架灌入數(shù),一般用于與模組連接的串口中斷處理函數(shù)中被調(diào)用。串口中斷中收到數(shù)據(jù)后(從模組來的),調(diào)用此接口將數(shù)據(jù)灌入AT框架。

AT框架提供了一系列的接口,可以輔助用戶編寫模組訪問的AT驅(qū)動(dòng)。

上圖是基于AT框架編寫自己的模組驅(qū)動(dòng)的流程:

  1. 編寫單板的串口驅(qū)動(dòng)(一直吃的板級(jí)包不需要用戶自己編寫,如果不在我們的vendor bsp范圍內(nèi),需要用戶自己適配hal_uart_init接口)。
  2. 編寫連接模組的串口中斷服務(wù)程序,在中斷服務(wù)程序中獲取串口過來的數(shù)據(jù),并調(diào)用tos_at_uart_write_byte向AT框架中灌入數(shù)據(jù)。
  3. 按照sal模組接口標(biāo)準(zhǔn)構(gòu)造自己的驅(qū)動(dòng)模型。
  4. 編寫自己的模組初始化接口。一般是調(diào)用tos_at_init初始化AT框架、注冊當(dāng)前模組驅(qū)動(dòng)、初始化當(dāng)前模組驅(qū)動(dòng)。
  5. 利用AT框架提供的接口實(shí)現(xiàn)驅(qū)動(dòng)接口。實(shí)現(xiàn)connect、send、recv等基本驅(qū)動(dòng)接口。

在直播課中,戴勝冬老師講解了幾個(gè)驅(qū)動(dòng)編寫案例。

四、上云案例開發(fā)講解

TencentOS tiny基于TencentOS tiny開發(fā)評估套件及eps8266 AT模組的對接騰訊云mqtt服務(wù)的案例:

TencentOS-tiny\board\TencentOS_tiny_EVB_MX\KEIL\tencent_cloud_sdk_mqtt
1、qcloud_device_create 創(chuàng)建一個(gè)端測設(shè)備,接口參數(shù)為在云上控制臺(tái)中返回的設(shè)備信息。
2、qcloud_mqtt_connect_opt_create 創(chuàng)建mqtt連接選項(xiàng)。
3、qcloud_mqtt_client_create 用創(chuàng)建的設(shè)備及mqtt連接選項(xiàng)創(chuàng)建一個(gè)mqtt client。
4、qcloud_mqtt_client_connect 發(fā)起mqtt連接。
5、qcloud_mqtt_client_subscribe 訂閱主題。
6、qcloud_mqtt_client_publish 發(fā)布主題。
7、qcloud_mqtt_client_yield mqtt連接?;睢?/pre>

TencentOS tiny還提供了小程序框架,可以無縫對接騰訊云openAPI平臺(tái),直接在小程序中訪問設(shè)備狀態(tài)及設(shè)備狀態(tài)控制。

五、內(nèi)容總結(jié):

  1. 了解TencentOS tiny組件架構(gòu),快速定位自己的訴求。
  2. RTOS開發(fā)基本范式講解,快速入門,開啟嵌入式RTOS開發(fā)旅程。
  3. 了解模組驅(qū)動(dòng)開發(fā)框架,快速適配自己的新模組。
  4. 了解上云開發(fā)流程,快速構(gòu)建自己的上云程序。

除了文中提到的驅(qū)動(dòng)和端側(cè)對接云端的案例外,再直播課中還演示了TencentCloud IoT Hub平臺(tái)的使用,想具體了解的同學(xué)可以觀看詳細(xì)的課程錄播視頻。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多