日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 物聯(lián)網(wǎng) > 網(wǎng)絡(luò)協(xié)議
[導(dǎo)讀] ConTIki由幾個獨立的模塊組成,是一個開放源碼、多任務(wù)事件驅(qū)動的嵌入式網(wǎng)絡(luò)專用操作系統(tǒng),微輕量級的控制器,無線傳感網(wǎng)絡(luò)協(xié)議棧Rime。整個應(yīng)用包括kernel、libraries、user

ConTIki由幾個獨立的模塊組成,是一個開放源碼、多任務(wù)事件驅(qū)動的嵌入式網(wǎng)絡(luò)專用操作系統(tǒng),微輕量級的控制器,無線傳感網(wǎng)絡(luò)協(xié)議棧Rime。整個應(yīng)用包括kernel、libraries、user code,對于一些周期性的操作或者網(wǎng)絡(luò)協(xié)議很有幫助。

一.協(xié)議??傮w框架

ConTIki系統(tǒng)為了支持多種硬件平臺和軟件協(xié)議設(shè)計了如圖1.1所示的層次框架,通過conTIki-conf.h的宏定義用戶可以靈活地選擇協(xié)議類型,如:

#define NETSTACK_CONF_NETWORK rime_driver

#define NETSTACK_CONF_MAC csma _driver

#define NETSTACK_CONF_RDC cxmac_driver

#define NETSTACK_CONF_RADIO sx1278_radio_driver

#define NETSTACK_CONF_FRAMER framer_nullmac

圖1.1協(xié)議棧層次

ConTIki V2.7支持的各層次協(xié)議類別如圖1.2所示,其中NETSTACK_MAC是一個概念層次,真正處理MAC邏輯是由NETSTACK_RDC(Radio Duty Cycling)完成的;而NETSTACK_RADIO層支持的射頻驅(qū)動,用戶可以自由擴(kuò)展。

圖1.2 Contiki V2.7支持的協(xié)議類型

二.收發(fā)Radio Packet的調(diào)用與時序

1. 接收Radio Packet

圖2.1顯示了接收Radio Packet的調(diào)用邏輯與時序,當(dāng)射頻硬件接收到數(shù)據(jù)包時ISR通知rf_process,rf_process自底向頂調(diào)用:RDC-》MAC-》NETWORK協(xié)議棧的接收函數(shù),最后將數(shù)據(jù)包提交給應(yīng)用程序綁定的進(jìn)程。

圖2.1接收Radio Packet

2. 發(fā)送Radio Packet

如圖2.2所舉例,process_i需要發(fā)送abc(Anonymous best-effort local area Broad Cast)數(shù)據(jù)包,進(jìn)程自頂向底調(diào)用:MAC-》RDC-》RADIO協(xié)議棧的發(fā)送函數(shù),最后通過射頻硬件以無線電方式傳輸。

圖2.2發(fā)送Radio Packet

三.CSMA(Carrier Sense Multiple Access)協(xié)議原理

CSMA協(xié)議提供相對可靠的MAC層傳輸,每次調(diào)用RDC層發(fā)送數(shù)據(jù)包后,它根據(jù)反饋信息判斷是否需要緩存并重傳該數(shù)據(jù)包。

CSMA的關(guān)鍵數(shù)據(jù)結(jié)構(gòu)如圖3.1所示,struct neighbor_queue根據(jù)不同的接收地址緩存數(shù)據(jù)包;struct rdc_buf_list將同一個接收地址的不同PACKETBUF_ATTR_MAC_SEQNO的數(shù)據(jù)包進(jìn)行鏈接;struct queuebuf保存需要重傳的數(shù)據(jù)包頭和數(shù)據(jù)實體;struct qbuf_metadata存儲回調(diào)函數(shù)指針等信息。

圖3.1 csma關(guān)鍵數(shù)據(jù)結(jié)構(gòu)

CSMA根據(jù)RDC層發(fā)送數(shù)據(jù)包的反饋信息選擇相應(yīng)邏輯動作:

MAC_TX_OK:發(fā)送成功,回收緩存數(shù)據(jù)結(jié)構(gòu)和善后工作;

MAC_TX_NOACK:啟動ctimer,隨機(jī)延時后重傳,直到發(fā)送次數(shù)超過MAX;

MAC_TX_COLLISION:繼續(xù)重傳,且發(fā)送次數(shù)不受限。

一個CSMA的典型時序如圖3.2所示,當(dāng)RDC層發(fā)送完數(shù)據(jù)包后,CSMA的回調(diào)函數(shù)packet_sent()根據(jù)發(fā)送結(jié)果選擇動作(見上面邏輯描述),如果需要重傳則根據(jù)重傳次數(shù)選擇一個隨機(jī)時間設(shè)置ctimer,當(dāng)ctimer定時器超時后再次發(fā)送該緩存的數(shù)據(jù)包。

圖3.2 csma邏輯與時序

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉