一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

全面解析騰訊最新開(kāi)源 loT 操作系統(tǒng) TencentOS tiny

丫丫119 ? 來(lái)源:未知 ? 作者:肖冰 ? 2019-09-28 06:12 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

近期騰訊低調(diào)地在GitHub上開(kāi)源了自己的loT操作TencentOS tiny,截至發(fā)稿,已經(jīng)累積了2000多個(gè)Star,引發(fā)了不小的關(guān)注。由于筆者曾經(jīng)做過(guò)CSDN的嵌入式大版當(dāng)過(guò)很長(zhǎng)時(shí)間的版主,所以第一時(shí)間到https://github.com/Tencent/TencentOS-tiny下載了全部的代碼,第一時(shí)間為大家?guī)?lái)解讀。

TencentOS tiny整體架構(gòu)

TencentOS tiny 提供精簡(jiǎn)的 RTOS內(nèi)核,其架構(gòu)圖如下:

目前看其內(nèi)核部分已經(jīng)開(kāi)發(fā)完成,并已經(jīng)完全開(kāi)源。從目前TencentOS tiny的情況看,騰訊入局物聯(lián)網(wǎng)的相關(guān)鏈條已經(jīng)規(guī)劃完整:

布署了TencentOS tiny的的嵌入式開(kāi)發(fā)板也已經(jīng)制造出來(lái),所以看來(lái)鵝廠在物聯(lián)網(wǎng)時(shí)代對(duì)于入口的爭(zhēng)奪也不會(huì)有絲毫的放松。

下面我將對(duì)于TencentOS tiny代碼中內(nèi)核及l(fā)oT協(xié)議部分進(jìn)行相關(guān)解讀。

TencentOS tiny內(nèi)核信號(hào)量與互斥鎖解讀

TencentOS tiny的官宣文檔中對(duì)于其內(nèi)核的描述如下:TencentOS tiny 實(shí)時(shí)內(nèi)核包括任務(wù)管理、實(shí)時(shí)調(diào)度、時(shí)間管理、中斷管理、內(nèi)存管理、異常處理、軟件定時(shí)器、鏈表、消息隊(duì)列、信號(hào)量、互斥鎖、事件標(biāo)志等模塊。其中定時(shí)器、消息隊(duì)列等在之前都有過(guò)相應(yīng)介紹,這里就為大家來(lái)解讀一下信號(hào)量與互斥鎖的相關(guān)代碼。信號(hào)量與互斥鎖的異同:1.信號(hào)量與互斥鎖最根本的不同點(diǎn)在于:互斥鎖的取值只能是0或者1,而信號(hào)量的取值范圍則可以定義。2.信號(hào)量的作用域可以進(jìn)程也可以是線程,而互斥鎖只能是線程。簡(jiǎn)單來(lái)說(shuō)互斥鎖可以實(shí)現(xiàn)線程對(duì)于唯一資源的使用保護(hù),而信號(hào)量則可以實(shí)現(xiàn)多線程或者進(jìn)程間數(shù)量有限資源的使用保護(hù)。從某種意義上講互斥鎖是只能一個(gè)資源可用的信號(hào)量。關(guān)于TencentOS tiny互斥體的實(shí)現(xiàn),首先來(lái)看其數(shù)據(jù)結(jié)構(gòu)具體解讀如下:

__API__k_err_ttos_mutex_pend_timed(k_mutex_t*mutex,k_tick_ttimeout) { TOS_CPU_CPSR_ALLOC(); k_err_terr; TOS_PTR_SANITY_CHECK(mutex); TOS_IN_IRQ_CHECK(); #ifTOS_CFG_OBJECT_VERIFY_EN>0u if(!pend_object_verify(&mutex->pend_obj,PEND_TYPE_MUTEX)){ returnK_ERR_OBJ_INVALID; } #endif TOS_CPU_INT_DISABLE();//將CPU鎖住,防止其它進(jìn)程進(jìn)入 if(mutex->pend_nesting==(k_nesting_t)0u){//沒(méi)有等待 mutex_fresh_owner_mark(mutex,k_curr_task);//將此mutex的owner置為當(dāng)前task TOS_CPU_INT_ENABLE();//將CPU解鎖 returnK_ERR_NONE;//返回成功 } if(knl_is_self(mutex->owner)){ if(mutex->pend_nesting==(k_nesting_t)-1){//等待數(shù)量如果超限則返回overflow TOS_CPU_INT_ENABLE(); returnK_ERR_MUTEX_NESTING_OVERFLOW; } ++mutex->pend_nesting; TOS_CPU_INT_ENABLE(); returnK_ERR_MUTEX_NESTING; } if(timeout==TOS_TIME_NOWAIT){//如果鎖已經(jīng)被占用超時(shí)時(shí)間為不等待,則直接返回 TOS_CPU_INT_ENABLE(); returnK_ERR_PEND_NOWAIT; } if(knl_is_sched_locked()){//如果任務(wù)被鎖定,則直接返回 TOS_CPU_INT_ENABLE(); returnK_ERR_PEND_SCHED_LOCKED; } if(mutex->owner->prio>k_curr_task->prio){ tos_task_prio_change(mutex->owner,k_curr_task->prio);//如果owner的優(yōu)先級(jí)更低,也就是其數(shù)值更大,則調(diào)整優(yōu)先級(jí) } pend_task_block(k_curr_task,&mutex->pend_obj,timeout);//阻塞pending的任務(wù) TOS_CPU_INT_ENABLE();//解鎖CPU總線 knl_sched();//解鎖任務(wù)高度 err=pend_state2errno(k_curr_task->pend_state); if(err==K_ERR_NONE){//如果沒(méi)有錯(cuò)誤 TOS_CPU_INT_DISABLE(); mutex_new_owner_mark(mutex,k_curr_task);//刷新mutex當(dāng)前的owner TOS_CPU_INT_ENABLE(); } returnerr; }

TencentOS tiny信號(hào)量的實(shí)現(xiàn)

首先來(lái)看k_sem_st的結(jié)構(gòu)體:

__STATIC__k_err_tsem_do_post(k_sem_t*sem,opt_post_topt) { TOS_CPU_CPSR_ALLOC();//為CPU的CPSR進(jìn)行預(yù)分配為后面恢復(fù)做準(zhǔn)備 TOS_PTR_SANITY_CHECK(sem); #ifTOS_CFG_OBJECT_VERIFY_EN>0u if(!pend_object_verify(&sem->pend_obj,PEND_TYPE_SEM)){ returnK_ERR_OBJ_INVALID; } #endif TOS_CPU_INT_DISABLE();//CPU鎖定防止其它進(jìn)程入 if(sem->count==(k_sem_cnt_t)-1){//若資源數(shù)量為-1則返回超限 TOS_CPU_INT_ENABLE(); returnK_ERR_SEM_OVERFLOW; } if(pend_is_nopending(&sem->pend_obj)){//如果無(wú)pending的情況則直接返回 ++sem->count; TOS_CPU_INT_ENABLE(); returnK_ERR_NONE; } pend_wakeup(&sem->pend_obj,PEND_STATE_POST,opt);//喚醒pending的進(jìn)程 TOS_CPU_INT_ENABLE();//恢復(fù)CPU knl_sched();//恢復(fù)任務(wù)調(diào)度 returnK_ERR_NONE; }

所以從上述解讀相信各位讀者也能看到,TencentOS tiny的內(nèi)核的確是被精心修減過(guò),針對(duì)物聯(lián)網(wǎng)場(chǎng)景做了相應(yīng)的優(yōu)化,去掉了一些沒(méi)有必要的功能代碼。

TencentOS tiny對(duì)于MQTT的實(shí)現(xiàn)

在TencentOS tiny的官宣中對(duì)于IoT 協(xié)議棧介紹如下:TencentOS tiny 提供 lwip、AT Adapter、SAL 層,支持不同的網(wǎng)絡(luò)硬件,例如以太網(wǎng)、串口 Wi-Fi、GPRS、NB-IoT4G通信模塊。TCP/IP 網(wǎng)絡(luò)協(xié)議棧上提供常用的物聯(lián)網(wǎng)協(xié)議棧,例如 CoAP、MQTT,支撐終端業(yè)務(wù)快速接入騰訊云。其中MQTT可以算是物聯(lián)網(wǎng)時(shí)代比較通用的基于IP網(wǎng)絡(luò)的協(xié)議了,它基于發(fā)布/訂閱消息模式,提供一對(duì)多的消息分發(fā)有三種消息傳遞服務(wù)質(zhì)量。1.最多一次,也就是消息發(fā)布者只會(huì)發(fā)布一次消息,不管對(duì)端是否收到也不會(huì)發(fā)布第二次。一般用于環(huán)境傳感器的數(shù)據(jù)讀取,因?yàn)橐话悱h(huán)境傳感器讀取的密度很高,丟失幾個(gè)數(shù)據(jù)并沒(méi)有什么大問(wèn)題?!?.確保到達(dá),這個(gè)一般用在數(shù)據(jù)非常重要的情況,發(fā)送端將不斷重復(fù)發(fā)送直到對(duì)端響應(yīng)收到。但這樣可能出現(xiàn)數(shù)據(jù)重復(fù)。3.確保恰好一次送達(dá),確保消息正好到達(dá)一次。這個(gè)級(jí)別用于計(jì)費(fèi)系統(tǒng),重復(fù)或丟失的數(shù)據(jù)可能導(dǎo)致一定的損失。由于MQTT適合在低帶寬、高延時(shí)網(wǎng)絡(luò)運(yùn)行的特性所以在特聯(lián)網(wǎng)中的應(yīng)用很多。不過(guò)呢騰訊針對(duì)此部分的實(shí)現(xiàn)則是完全拷貝于Eclipse Paho項(xiàng)目個(gè)人制作的原理動(dòng)畫(huà)如下圖:

但是考慮到物聯(lián)網(wǎng)終端其實(shí)僅需要MQTT的發(fā)布方即可,訂閱方的代碼其實(shí)沒(méi)有太大必要保留,而且從目前發(fā)布支持的場(chǎng)景來(lái)看,MQTT一些通訊質(zhì)量模式其實(shí)用處也不多,不過(guò)在這方面TencentOS tiny是沒(méi)有做任何優(yōu)化與裁減的。所以這應(yīng)該也可以看做是TencentOS tiny的一個(gè)不足吧。

后記

隨著移動(dòng)互聯(lián)網(wǎng)+智能硬件的不斷發(fā)展,IoT的新業(yè)態(tài)大門(mén)徐徐開(kāi)啟,這里不但有眾多互聯(lián)網(wǎng)企業(yè),也有傳統(tǒng)家電甚至金融企業(yè)不斷入局。但是與傳統(tǒng)互聯(lián)網(wǎng)軟件+硬件的模式不同,物聯(lián)網(wǎng)除了軟、硬件外還多了一個(gè)側(cè)面-場(chǎng)景,能將軟、硬件及場(chǎng)景整合化一的公司才能笑到最后。就像HTML整合了互聯(lián)網(wǎng)一樣,MQTT等loT協(xié)議會(huì)是整合全鏈條的利器,所以最后筆者也呼吁各方除了重視操作系統(tǒng)內(nèi)核外也需要大力參與loT通訊協(xié)議,尤其注重標(biāo)準(zhǔn)制訂,這樣才能跟上loT的時(shí)代潮流。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    7152

    瀏覽量

    125610
  • 騰訊
    +關(guān)注

    關(guān)注

    7

    文章

    1678

    瀏覽量

    50306
  • LOT
    LOT
    +關(guān)注

    關(guān)注

    3

    文章

    15

    瀏覽量

    6123
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    投入超十億!四周完成芯片適配!理想宣布開(kāi)源自研汽車操作系統(tǒng)

    電子發(fā)燒友網(wǎng)報(bào)道(文/梁浩斌)在最近的2025中關(guān)村論壇年會(huì)上,理想汽車董事長(zhǎng)兼CEO李想宣布,將自研汽車操作系統(tǒng)“理想星環(huán)OS”全面開(kāi)源。過(guò)去車企自研操作系統(tǒng)其實(shí)也有一些案例,不過(guò)確
    的頭像 發(fā)表于 03-30 01:29 ?2116次閱讀
    投入超十億!四周完成芯片適配!理想宣布<b class='flag-5'>開(kāi)源</b>自研汽車<b class='flag-5'>操作系統(tǒng)</b>

    深度操作系統(tǒng)deepin 25正式發(fā)布

    歷經(jīng) Preview、Alpha、Beta 三輪社區(qū)共創(chuàng)測(cè)試,deepin 25 于今日發(fā)布亮相!本次版本以 “萬(wàn)物向新” 為核心,四大革新特性全面進(jìn)化,1000+ 項(xiàng)優(yōu)化修復(fù)落地,為廣大開(kāi)發(fā)者與用戶朋友們帶來(lái)更可靠、更流暢、更自由的開(kāi)源
    的頭像 發(fā)表于 07-01 16:57 ?534次閱讀

    OrangePi 5 Plus 全面兼容openKylin操作系統(tǒng),拓展高性能邊緣計(jì)算新生態(tài)

    近日,深圳市迅龍軟件有限公司宣布,OrangePi5Plus開(kāi)發(fā)板已完成與openKylin開(kāi)源操作系統(tǒng)的深度適配。繼支持Android、Ubuntu、Debian等主流系統(tǒng)后,此次適配
    的頭像 發(fā)表于 06-20 15:11 ?344次閱讀
    OrangePi 5 Plus <b class='flag-5'>全面</b>兼容openKylin<b class='flag-5'>操作系統(tǒng)</b>,拓展高性能邊緣計(jì)算新生態(tài)

    開(kāi)源鴻蒙操作系統(tǒng)的生態(tài)成果與落地實(shí)踐

    電網(wǎng)、中國(guó)科學(xué)院軟件研究所、證通電子等合作單位共同支持。本次大會(huì)聚焦開(kāi)源鴻蒙 5.1 Release版本,面向開(kāi)發(fā)者和伙伴深度展示開(kāi)源鴻蒙操作系統(tǒng)的生態(tài)成果與落地實(shí)踐。
    的頭像 發(fā)表于 06-05 14:27 ?541次閱讀

    普華基礎(chǔ)軟件開(kāi)源汽車操作系統(tǒng)新版本代碼上線

    近日,第二十一屆上海國(guó)際汽車工業(yè)展覽會(huì)現(xiàn)場(chǎng),開(kāi)源車用操作系統(tǒng)新版本代碼上線儀式在中國(guó)電科展臺(tái)成功召開(kāi)。全球首個(gè)開(kāi)源智能駕駛操作系統(tǒng)微內(nèi)核龘EasyAda V2.1和首個(gè)規(guī)模化、量產(chǎn)級(jí)安
    的頭像 發(fā)表于 04-30 09:17 ?434次閱讀

    普華基礎(chǔ)軟件開(kāi)源車用操作系統(tǒng)迎來(lái)全新版本

    近日,普華基礎(chǔ)軟件開(kāi)源車用操作系統(tǒng)媒體發(fā)布會(huì)在上海中國(guó)汽車會(huì)客廳召開(kāi)——全球首個(gè)開(kāi)源智能駕駛操作系統(tǒng)微內(nèi)核龘EasyAda、開(kāi)源安全車控
    的頭像 發(fā)表于 04-25 16:18 ?410次閱讀

    理想汽車開(kāi)源操作系統(tǒng)的特點(diǎn)及優(yōu)勢(shì)

    前天,李想官宣了理想自研汽車操作系統(tǒng)「理想星環(huán)OS」開(kāi)源。今天,在2025中國(guó)電動(dòng)汽車百人會(huì)論壇上,李想進(jìn)一步分享了「理想星環(huán)OS」的特點(diǎn)及優(yōu)勢(shì)。
    的頭像 發(fā)表于 04-01 16:12 ?436次閱讀

    國(guó)產(chǎn)銀河麒麟操作系統(tǒng)V10和星光麒麟V1.0操作系統(tǒng)如何選擇?

    國(guó)產(chǎn)銀河麒麟操作系統(tǒng)和星光麒麟操作系統(tǒng)都是由中國(guó)電子旗下科技企業(yè)麒麟軟件有限公司(簡(jiǎn)稱“麒麟軟件”)開(kāi)發(fā)的國(guó)產(chǎn)自主可控的操作系統(tǒng)。麒麟軟件介紹:麒麟軟件以安全可信操作系統(tǒng)技術(shù)為核心,面
    的頭像 發(fā)表于 01-24 09:14 ?2262次閱讀
    國(guó)產(chǎn)銀河麒麟<b class='flag-5'>操作系統(tǒng)</b>V10和星光麒麟V1.0<b class='flag-5'>操作系統(tǒng)</b>如何選擇?

    電力行業(yè)應(yīng)用開(kāi)源物聯(lián)操作系統(tǒng)如何賦能新型工業(yè)化

    ? 在2024開(kāi)放原子開(kāi)發(fā)者大會(huì)暨首屆開(kāi)源技術(shù)學(xué)術(shù)大會(huì)上,中國(guó)南方電網(wǎng)有限責(zé)任公司(簡(jiǎn)稱“南方電網(wǎng)”)精彩呈現(xiàn)了電力物聯(lián)網(wǎng)操作系統(tǒng)——“電鴻”的開(kāi)源應(yīng)用實(shí)例,全面展示了在
    的頭像 發(fā)表于 12-24 11:50 ?928次閱讀
    電力行業(yè)應(yīng)用<b class='flag-5'>開(kāi)源</b>物聯(lián)<b class='flag-5'>操作系統(tǒng)</b>如何賦能新型工業(yè)化

    開(kāi)源鴻蒙操作系統(tǒng)5.0 Release版本發(fā)布

    開(kāi)源鴻蒙操作系統(tǒng)5.0 Release版本。 該版本在系統(tǒng)完備度、分布式創(chuàng)新、開(kāi)發(fā)者體驗(yàn)以及系統(tǒng)穩(wěn)定性等方面均實(shí)現(xiàn)了顯著提升,標(biāo)志著開(kāi)源鴻蒙
    的頭像 發(fā)表于 12-23 11:35 ?2284次閱讀

    deepin操作系統(tǒng)介紹

    希望從自己的能力和對(duì)桌面操作系統(tǒng)的理解,能給 Linux 的用戶與開(kāi)發(fā)者更多的選擇。我們也相信 deepin 能夠得到更多用戶的認(rèn)可與喜愛(ài),成為開(kāi)源世界的最佳選擇。? 一、 deepin 操作系統(tǒng) 先說(shuō) Linux
    的頭像 發(fā)表于 12-23 09:08 ?2366次閱讀
    deepin<b class='flag-5'>操作系統(tǒng)</b>介紹

    名單公布!【書(shū)籍評(píng)測(cè)活動(dòng)NO.53】鴻蒙操作系統(tǒng)設(shè)計(jì)原理與架構(gòu)

    的架構(gòu)師來(lái)說(shuō),本書(shū)堪稱“出卷老師親自講解的考試出題思路”。 本書(shū)重點(diǎn)介紹了鴻蒙操作系統(tǒng)的設(shè)計(jì)背景、設(shè)計(jì)理念和設(shè)計(jì)原則,同時(shí)對(duì)鴻蒙操作系統(tǒng)的整體架構(gòu)、關(guān)鍵子系統(tǒng)的架構(gòu)設(shè)計(jì)思路進(jìn)行了詳細(xì)的解析
    發(fā)表于 12-16 15:10

    Arm加入OpenCloudOS操作系統(tǒng)開(kāi)源社區(qū)

    基于 Arm 架構(gòu)的應(yīng)用。近期,Arm 加入 OpenCloudOS 操作系統(tǒng)開(kāi)源社區(qū),共同推進(jìn)開(kāi)源操作系統(tǒng)的發(fā)展。 Arm 作為全球領(lǐng)先的計(jì)算平臺(tái)公司,在史上應(yīng)用最普及的 CPU
    的頭像 發(fā)表于 11-15 11:34 ?882次閱讀

    linux操作系統(tǒng)安裝步驟 linux操作系統(tǒng)的特點(diǎn)及組成

    Linux操作系統(tǒng)安裝步驟 Linux操作系統(tǒng)是一種開(kāi)源操作系統(tǒng),它以其穩(wěn)定性、安全性和靈活性而聞名。以下是安裝Linux操作系統(tǒng)的一般步
    的頭像 發(fā)表于 10-21 11:24 ?1226次閱讀

    面向功能安全應(yīng)用的汽車開(kāi)源操作系統(tǒng)解決方案

    在SAE 2024國(guó)際汽車安全大會(huì)上,Elektrobit的Linux專家王紅燕在操作系統(tǒng)與芯片技術(shù)的分論壇上為大家?guī)?lái)了“面向功能安全應(yīng)用的汽車開(kāi)源操作系統(tǒng)解決方案”主題演講。
    的頭像 發(fā)表于 09-27 09:21 ?911次閱讀
    面向功能安全應(yīng)用的汽車<b class='flag-5'>開(kāi)源</b><b class='flag-5'>操作系統(tǒng)</b>解決方案