mac日記
發(fā)布時(shí)間:2017-01-27 來(lái)源: 日記大全 點(diǎn)擊:
mac日記篇一:Zigbee讀書(shū)日記(八)
Zigbee讀書(shū)日記(八)
--freakz移植之物理層
Freakz是什么?Contiki又是什么?這和我們現(xiàn)在學(xué)習(xí)的Zigbee有什么關(guān)系?也許看到這篇文章的讀者有不少對(duì)此還一無(wú)所知。如果您在學(xué)習(xí)Zigbee,相信對(duì)TI的CC系列IC應(yīng)該有所了解吧,那您肯定聽(tīng)過(guò)ZStack和OSAL這兩個(gè)詞,ZStack是TI公司按照Z(yǔ)igbee標(biāo)準(zhǔn)實(shí)現(xiàn)的一個(gè)Zigbee協(xié)議棧,而OSAL則為ZStack所使用的“操作系統(tǒng)”。如果這兩個(gè)概念搞得清楚,相信freakz和contiki就不難理解了。其實(shí),freakz也是一個(gè)zigbee協(xié)議棧,相應(yīng)的contiki則為freakz所使用的操作系統(tǒng)。
[注:本文源自“飛比”Zigbee論壇,為尊重勞動(dòng)者成果,如需轉(zhuǎn)載請(qǐng)保留此行,并通知作者]
那我們?yōu)槭裁床恢苯佑肸Stack+OSAL,而費(fèi)這么大的勁用freakz+contiki呢?其實(shí)原因很簡(jiǎn)單,不同于ZStack的“應(yīng)用層開(kāi)源”,freakz是一個(gè)徹底的開(kāi)源zigbee協(xié)議,而contiki也是一個(gè)徹底的開(kāi)源操作系統(tǒng),而且這個(gè)操作系統(tǒng)短小精悍,非常適合“物聯(lián)網(wǎng)”時(shí)代的MINI型設(shè)備,同時(shí),這套系統(tǒng)在全球已經(jīng)擁有了眾多的支持與使用者,已經(jīng)開(kāi)發(fā)了非常多的應(yīng)用,甚至有像IPV6這么強(qiáng)大而且的應(yīng)用,可以在其官方網(wǎng)站上下載到全套的代碼!
相對(duì)于另外一個(gè)開(kāi)源的WSN(Wireless Sensor Networking,無(wú)線(xiàn)傳感網(wǎng))操作系統(tǒng)TinyOS來(lái)講,contiki的代碼全部為C語(yǔ)言寫(xiě)成,用GCC進(jìn)行編譯,對(duì)廣大應(yīng)用C語(yǔ)言多年的開(kāi)發(fā)者來(lái)說(shuō),減少了學(xué)習(xí)另外一種語(yǔ)言與編譯平臺(tái)所帶來(lái)的時(shí)間花費(fèi)。同時(shí),我們考慮到很多開(kāi)發(fā)者,尤其是初學(xué)者,對(duì)Linux+GCC的平臺(tái)也并不熟悉,所以,我們選用了IAR這個(gè)極其穩(wěn)定、易用的編譯平臺(tái),對(duì)contiki進(jìn)行移植。您可以在其官方網(wǎng)站上下載試用版進(jìn)行學(xué)習(xí),對(duì)于商業(yè)用途的開(kāi)發(fā),請(qǐng)您購(gòu)買(mǎi)正版。
至于我們?yōu)槭裁醋罱K選擇了freakz而不是別的開(kāi)源協(xié)議,主要是因?yàn)檫@是目前我們找得到的相對(duì)最完整的,也是代碼寫(xiě)得比較規(guī)范的一套協(xié)議。不過(guò),為什么我們總得用別人的?這個(gè)問(wèn)題確實(shí)值得思考。
不扯遠(yuǎn)了,回到主題上來(lái)。目前這個(gè)項(xiàng)目,斷斷續(xù)續(xù)已經(jīng)做了將近兩個(gè)月了,采用的思路是,從操作系統(tǒng)的核心到周邊,再到基本的物理層和MAC層通訊一點(diǎn)點(diǎn)地進(jìn)行修改和編譯,理解一點(diǎn)就修改一點(diǎn),成功后再繼續(xù)下一步。到現(xiàn)在為止,已經(jīng)實(shí)現(xiàn)了節(jié)點(diǎn)1應(yīng)用層發(fā)送一個(gè)字符串“feibit”,MAC層按照協(xié)議規(guī)范進(jìn)行編碼,由物理層發(fā)送出去;節(jié)點(diǎn)2收到信息后,完成上述的反過(guò)程,直至收到字符串“feibit”,而且整個(gè)過(guò)程是在contiki系統(tǒng)框架內(nèi)完成的。
這個(gè)時(shí)候,我在猶豫一個(gè)問(wèn)題。實(shí)際上,freakz已經(jīng)用“軟件模擬器”實(shí)現(xiàn)了MAC層以上的協(xié)議內(nèi)容,并且在一個(gè)基于AVR的硬件平臺(tái)上進(jìn)行了移植。理論上講,現(xiàn)在我們已經(jīng)在FB2530EB的平臺(tái)上基本實(shí)現(xiàn)了CC2530的MAC層通訊,與上層對(duì)接后實(shí)現(xiàn)協(xié)議棧的基本功能應(yīng)該不是太難了。但反復(fù)考慮后,我覺(jué)得這不是一個(gè)好的方法。也許現(xiàn)在一股腦地把
所有的代碼都加進(jìn)來(lái),解決一些warning與error后,我可以驕傲地跟人講,我實(shí)現(xiàn)了開(kāi)源zigbee移植。但這并不是我的目的。我希望論壇有一個(gè)“開(kāi)放”跟“踏實(shí)”的氛圍,也希望自己跟論壇里的每一位學(xué)習(xí)者有一個(gè)不急功近利的心態(tài)。我們學(xué)習(xí)的目的不是跟隨,而是創(chuàng)造!
在freakz移植的過(guò)程中,我有一個(gè)感受,雖然我們做的只是“移植”而不是原創(chuàng),但這種學(xué)習(xí)方式比由上而下的方式來(lái)得有效,并且深入得多。當(dāng)然,讓一個(gè)完全對(duì)zigbee的基本概念與功能完全不懂的初學(xué)者來(lái)說(shuō),這可能也不是個(gè)最好的方法。所以,我覺(jué)得這兩種方式應(yīng)該結(jié)合起來(lái),“what”與“how”這兩個(gè)問(wèn)題采用由上而下的方式,而“why”這個(gè)問(wèn)題,就采用由下而上,從零搭建的方式,當(dāng)然前提要是開(kāi)源!而且我希望后面的事情,不是由我來(lái)寫(xiě),大家來(lái)讀,而是希望有更多的人能參與進(jìn)來(lái)。哪怕我把整個(gè)協(xié)議棧重新寫(xiě)了一遍,對(duì)于讀者來(lái)講,并不一定能對(duì)其中的重點(diǎn)內(nèi)容有深刻的體會(huì)。而且,如果能有更多的人參與,大家共同討論,共同進(jìn)步,這樣的學(xué)習(xí)效率是單兵作戰(zhàn)所無(wú)法比擬的!
所以,在FB2530EB開(kāi)發(fā)板發(fā)行之前,移植的工作準(zhǔn)備暫時(shí)告一段落。我會(huì)把這幾天物理層與MAC層移植的相關(guān)內(nèi)容,以筆記的形式寫(xiě)出來(lái),作為一個(gè)起點(diǎn)。有興趣的朋友可以在此基礎(chǔ)上繼續(xù)一點(diǎn)點(diǎn)地理解,一點(diǎn)點(diǎn)地移植。同時(shí)也希望我們能有組織、有規(guī)劃地去實(shí)現(xiàn)一個(gè)共同的目標(biāo)!
在前面的筆記(五)中,我們已經(jīng)對(duì)物理層的基本概念做了詳細(xì)的介紹。本篇可作為其理論知識(shí)的實(shí)踐篇,從一個(gè)基本的字符串“feibit”的發(fā)送與接收來(lái)學(xué)習(xí)CC2530的物理層收發(fā)功能,看看這個(gè)物理層“小弟”到底是怎么干活的。
另外,要說(shuō)明一點(diǎn),zigbee本身是一個(gè)很復(fù)雜的協(xié)議,其中任何一層,如果要將每一個(gè)細(xì)節(jié)都講清楚,都會(huì)是很龐大的工作。本文的側(cè)重點(diǎn)在于基本概念的理解,對(duì)于IC與Zigbee協(xié)議的細(xì)節(jié)請(qǐng)參考其規(guī)格書(shū)。
[注:本文源自--“飛比”Zigbee論壇,為尊重勞動(dòng)者成果,如需轉(zhuǎn)載請(qǐng)保留此行,并通知作者]
IC的應(yīng)用并不是一件簡(jiǎn)單的事情,因?yàn)樯婕暗搅撕芏郔C的細(xì)節(jié),如果沒(méi)有詳細(xì)的說(shuō)明及應(yīng)用例程,這些細(xì)節(jié)有時(shí)甚至是無(wú)從得知的。還好,相比其他家的無(wú)線(xiàn)IC,TI的資料與例程相對(duì)豐富,這也是我們選擇TI作為開(kāi)始的主要原因之一。本文中涉及到CC2530的應(yīng)用部分,有很多是源于TI提供的BasicRF平臺(tái)的,因?yàn)檫@也是一個(gè)開(kāi)源的平臺(tái),方便我們進(jìn)行移植。
要實(shí)現(xiàn)數(shù)據(jù)的收和發(fā),最早想到的自然是IC的收發(fā)機(jī)制與相應(yīng)寄存器的設(shè)置。走個(gè)捷徑,我們從BasicRF的代碼入手,了解CC2530的RADIO部分的初始化與讀取代碼。
首先是初始化的過(guò)程,這是保證IC在我們所需要的狀態(tài)下正常工作的前提。從BasicRF的per_test例程中,我們可以看到,這部分工作主要在以下兩個(gè)函數(shù)中進(jìn)行,halRfInit與basicRfInit。我們總結(jié)下其中與硬件相關(guān)的初始化工作如下:
1、設(shè)置MCU的晶振頻率,BasicRF下所用的函數(shù):halMcuInit
這個(gè)工作在開(kāi)始的時(shí)候容易被忽視,設(shè)置如果不對(duì),發(fā)送的數(shù)據(jù)包可能是亂的,也可能
會(huì)有些莫名其妙的問(wèn)題。
2、設(shè)置數(shù)據(jù)數(shù)據(jù)傳輸所使用的頻道,halRfSetChannel
這里我們選擇頻道11,則為2.405G
3、設(shè)備的PANID號(hào),halRfSetPanId,我們指定為0x2007
4、設(shè)備的短地址,halRfSetShortAddr
由于我們暫時(shí)先不涉及網(wǎng)絡(luò)層組網(wǎng)及地址安排等問(wèn)題,仿照BasicRF,發(fā)送與接收端分別指定如下:
#define TX_ADDR 0x2520
#define RX_ADDR 0xBEEF
5、對(duì)于發(fā)送端來(lái)說(shuō),需要增加一個(gè)發(fā)射功率的設(shè)置,halRfSetTxPower
我們按照無(wú)PA模式的最大功率4dB進(jìn)行設(shè)置,其實(shí)際值為2。
在系統(tǒng)的初始化階段,執(zhí)行以上過(guò)程,則將CC2530置于準(zhǔn)備狀態(tài)下,隨時(shí)可用于收發(fā)。首先我們來(lái)看下數(shù)據(jù)的發(fā)送:
從BasicRF的basicRfSendPacket函數(shù)中,我們可以總結(jié)出如下的發(fā)送流程:
?
?
?
?
?
?
?
?
? halRfReceiveOn(); // Wait until the transceiver is idle halRfWaitTransceiverReady(); // Turn off RX frame done interru(轉(zhuǎn)載于:www.zuancaijixie.com 蒲 公 英 文 摘:mac日記)pt to avoid interference on the SPI interface halRfDisableRxInterrupt(); // write frame to buffer halRfWriteTxBuf(buf->dptr, buf->len); // Turn on RX frame done interrupt for ACK reception halRfEnableRxInterrupt();
?? // Send frame with CCA. return FAILED if not successful
?? while (halRfTransmit() != SUCCESS);
?? halRfReceiveOff();
注:為突出基本原理的理解,我會(huì)經(jīng)常把一段代碼中的關(guān)鍵部分提取出來(lái)進(jìn)行分析,因?yàn)槲蚁M褟?fù)雜的事情變得簡(jiǎn)單,而不是相反!
有興趣的讀者,可以將以上的函數(shù)逐一展開(kāi),參照CC2530 datasheet進(jìn)行詳細(xì)了解。此處我們只關(guān)注其數(shù)據(jù)的發(fā)送函數(shù)halRfWriteTxBuf
?? /*************************************************************************
?? * @fn halRfWriteTxBuf
?? *
?? * @brief Write to TX buffer
?? *
?? * @param uint8* pData - buffer to write
?? * uint8 length - number of bytes
?? *
?? * @return none
?? */
?? void halRfWriteTxBuf(uint8* pData, uint8 length)
?? {
?? uint8 i;
??
?? ISFLUSHTX(); // Making sure that the TX FIFO is empty.
??
?? RFIRQF1 = ~IRQ_TXDONE; // Clear TX done interrupt
??
?? // Insert data
?? for(i=0;i<length;i++){
?? RFD = pData[ i ];
?? }
?? }
從中我們可以明顯地看出,要發(fā)送的數(shù)據(jù)pData,在此函數(shù)中,通過(guò)逐個(gè)寫(xiě)進(jìn)RFD的方式發(fā)送出去了。這不正是我們苦苦尋找的物理層“小弟”嗎?不就是他一個(gè)一個(gè)字節(jié)地讓“比特”飛翔了起來(lái)??
按照我們現(xiàn)在的理解試試能不能把數(shù)據(jù)發(fā)送出去:
??uint8 test_str[6]="feibit";
??halRfWriteTxBuf(test_str, 6);
難道就這么簡(jiǎn)單?小心翼翼地編譯、下載,在IAR下單步進(jìn)行跟蹤,程序順利地執(zhí)行了halRfWriteTxBuf(test_str, 6);這一句。但不要高興地太早,程序在執(zhí)行到下面,halRfTransmit()這個(gè)函數(shù)的時(shí)候,進(jìn)了死循環(huán),一直出不來(lái)了。這是怎么回事?
我們看一下到底這個(gè)函數(shù)在做什么?
?? /************************************************************************
?? * @fn halRfTransmit
?? *
?? * @brief Transmit frame with Clear Channel Assessment.
?? *
?? * @param none
?? *
?? * @return uint8 - SUCCESS or FAILED
?? */
?? uint8 halRfTransmit(void)
?? {
?? uint8 status;
??
?? ISTXON(); // Sending
??
?? // Waiting for transmission to finish
?? while(!(RFIRQF1 & IRQ_TXDONE) );
??
?? RFIRQF1 = ~IRQ_TXDONE;
?? status= SUCCESS;
??
?? return status;
?? }
程序明顯死在了while(!(RFIRQF1 & IRQ_TXDONE) ),這句話(huà)是在等什么呢?看datasheet!
mac日記篇二:奧特曼Zigbee讀書(shū)日記(五)
[注:本文源自“飛比”Zigbee論壇,如需轉(zhuǎn)載請(qǐng)保留此行]
[原創(chuàng)]奧特曼Zigbee讀書(shū)日記(五)-- “葵花
寶典”第三章第一層(物理層)
我們?cè)凇霸O(shè)備對(duì)話(huà)”專(zhuān)題中,了解了如何用Zstack協(xié)議完成一個(gè)基本的“老王,吃了沒(méi)?”的通信,但就這樣一句話(huà),是如何變成一連串的“0”和“1”,并變成電波在空氣中傳播,最終到達(dá)目的地呢?――插句廣老規(guī)矩,還是先上圖:
這個(gè)圖含的信息量可能需要貫穿在我們的整個(gè)學(xué)習(xí)過(guò)程中了,此處先不詳解,只是先作為“上方寶劍”掛出來(lái),這個(gè)是整個(gè)這一章的脈絡(luò)。不過(guò),還是要來(lái)認(rèn)識(shí) 下這里面的幾位關(guān)鍵“人物”的:第一位叫“PHY”――物理層,他是最底層的員工,最終把這些“0”和“1”送到空氣中的活就是他干的;第二位叫 “MAC”――介質(zhì)讀取控制層(這個(gè)家伙肯定是老外,連個(gè)像樣的中文名都沒(méi)有);第三位叫“NWK”――網(wǎng)絡(luò)層,這是個(gè)中層干部,屬于實(shí)干家型(就是公司里電話(huà)最多的那種領(lǐng)導(dǎo));第四位叫“APL”――應(yīng)用層,有同學(xué)問(wèn)了,這層里面怎么這么復(fù)雜?說(shuō)實(shí)話(huà),我也還沒(méi)弄明白呢,不過(guò)按常理來(lái)說(shuō),高層復(fù)雜是應(yīng)該的,到我們的政府機(jī)關(guān)看看就知道啦~~~
另外,下面兩層是由IEEE 802.15.4來(lái)定義的,而中層領(lǐng)導(dǎo)上的就是由Zigbee組織來(lái)定義的,那什么是我們定義的呢?就是這個(gè)“協(xié)議!鄙厦娴模蔷褪亲罡咦罡叩念I(lǐng)導(dǎo)啦~~~
第三章,第一層――“PHY”――物理層
3.1 頻率安排
首先,我們從干活的這個(gè)小兄弟開(kāi)始認(rèn)識(shí)。他要把一個(gè)比特送到空中,是有幾條航線(xiàn)可以選的,就這是所謂的“頻道”,每一個(gè)頻道對(duì)應(yīng)一個(gè)頻率,而每一個(gè)頻道又有幾種調(diào)制方式,我們可以理解為坐不同的“飛機(jī)”。下圖是IEEE 802.15.4中對(duì)頻道的安排:
對(duì)于這里面的“頻道頁(yè)”的定義,不是太清楚為什么要這樣定義,不過(guò)我覺(jué)得用前面說(shuō)的“飛機(jī)”的概念,更容易理解些。有三種不同的飛機(jī),每種飛機(jī)都可以 走0-26,共27條航線(xiàn),這就是“物理層”在送數(shù)據(jù)的時(shí)候要做出的選擇。其中,0號(hào)航線(xiàn)的頻率是868MHZ,915M上有10條航線(xiàn),其頻率可以通過(guò) 下面公式計(jì)算:
中心頻率(MHz) = 906 + 2 × ( 頻道號(hào) – 1)
同樣,2.4G波段上的頻率值為:
中心頻率(MHz) = 2405 + 5 × ( 頻道號(hào) – 1)
3.2 能量檢測(cè)――ED
就像航空公司一樣,“比特”想要“飛”起來(lái),也是有“航空管制”的,在起飛前要確認(rèn)下航道有沒(méi)有被占用,這可不能像開(kāi)車(chē),塞車(chē)了就等會(huì),飛機(jī)要在空中 停了,那不得掉下來(lái)(我小時(shí)候總這么想~)。能量檢測(cè)就是用來(lái)實(shí)現(xiàn)這個(gè)目的的,當(dāng)然,這只是個(gè)“能量”檢測(cè),它不會(huì)去區(qū)分到底是誰(shuí)在占用“航道”,它只檢 測(cè)有或者沒(méi)有。
當(dāng)然,這也是物理層的上級(jí)――MAC層給他的任務(wù)之一,不過(guò)允許他不用百分百準(zhǔn)確,允許10db的誤差,結(jié)果會(huì)以一個(gè)8比特的字節(jié)向上報(bào)告。
3.3 載波檢測(cè)――CS
載波檢測(cè)也是檢測(cè)當(dāng)前頻道能不能用的,但與ED不同,上面說(shuō)了ED不會(huì)去區(qū)分到底是誰(shuí)在占用“航道”,但是CS會(huì)的,它會(huì)根據(jù)載波的特征去判斷當(dāng)前占 用“航道”的是不是與自己一樣的IEEE 802.15.4物理層信號(hào),如果是,那不管ED值是多少,都會(huì)返回一個(gè)“頻道忙”的信息。
3.4 連接質(zhì)量指示――LQI
還記得電腦的WIFI指示吧,我也不了解WIFI協(xié)議,但我想這應(yīng)該是相同的東西吧。在802.15.4中,有兩種檢測(cè)連接質(zhì)量的方法,一個(gè)是檢測(cè) “接收信號(hào)強(qiáng)度”――RSS,另外一個(gè)是檢測(cè)“信噪比”――SNR。RSS值是通過(guò)檢測(cè)接收到的信號(hào)的全部能量情況來(lái)判斷的。
又有人舉手了?這位同學(xué)有什么問(wèn)題?――什么,這是怎么做到的?
呃、、、這個(gè)我真不懂,不過(guò)我知道肯定有個(gè)寄存器來(lái)讀的。至于這個(gè)值是怎么來(lái)的,你還是問(wèn)下做IC的人,或者你找個(gè)不是那么忙的教授,說(shuō)不定他知 道~~~不過(guò)這位小同學(xué)啊,看你問(wèn)這個(gè)問(wèn)題,我得多說(shuō)你幾句了。你這么“叫真”不好,倒不是打擊你,我知道你說(shuō)不定能成個(gè)人物,不過(guò),學(xué)習(xí)是要講“深度” 和“廣度”并舉的,如果什么事情都一頭鉆進(jìn)去,你會(huì)迷路的。。。
我們繼續(xù),那“信噪比”SNR,顧名思義,就是信號(hào)除以噪聲的比率了。當(dāng)然,值越大表示信號(hào)質(zhì)量越好。
每一個(gè)接收到的數(shù)據(jù)包都會(huì)做一個(gè)LQI的測(cè)量,它至少有八個(gè)等級(jí)。這個(gè)測(cè)量是物理層很重要的一個(gè)任務(wù),因?yàn)檫@個(gè)值不但他的直屬領(lǐng)導(dǎo)-MAC層要用到, 他的上幾層領(lǐng)導(dǎo)-網(wǎng)絡(luò)層和應(yīng)用層都用得到。比如說(shuō)網(wǎng)絡(luò)層(NWK)在選擇路由的時(shí)候,LQI就是一個(gè)很重要的指標(biāo),LQI值高的路徑當(dāng)然要優(yōu)先考慮,當(dāng) 然,這也只是一個(gè)因素,比如說(shuō)這個(gè)LQI高的路徑里的設(shè)備都是電池供電的,那么在頻繁選擇這個(gè)路徑的同時(shí),必然會(huì)導(dǎo)致這些設(shè)備電池壽命縮短。所以,一定要 多方面權(quán)衡――這就體現(xiàn)了“領(lǐng)導(dǎo)”的作用。。。
3.5 空閑頻道評(píng)估――CCA
(注:本教程里的中文名稱(chēng)可能不符合標(biāo)準(zhǔn),只是方便筆者說(shuō)明問(wèn)題,如對(duì)名稱(chēng)有異議,歡迎在本教程論壇-中討論)
這里有一個(gè)很重要的名詞叫“CSMA-CA”,聽(tīng)起來(lái)就像高科技,不知道和CDMA有沒(méi)什么關(guān)系(做通訊的朋友開(kāi)始扔磚頭了~~~)
它有一個(gè)不太帥的中文名字叫“載波偵聽(tīng)多點(diǎn)接入/沖突檢測(cè)”,筆者現(xiàn)在還無(wú)法對(duì)這個(gè)概念做個(gè)定義,不過(guò)倒是可以用“白話(huà)”翻譯一下。在上文中我們看 到,當(dāng)我們的“PHY層”小弟要發(fā)送一個(gè)比特的時(shí)候,
要面臨那么多選擇,走哪個(gè)航線(xiàn),選什么樣的飛機(jī)等等,那這么復(fù)雜的決策,“小弟”能搞得定嗎?要兩個(gè) “小弟”都在爭(zhēng)一個(gè)位置,打架了怎么辦?按社會(huì)常理來(lái)看,這應(yīng)該不是哪個(gè)人決定的,而是有個(gè)“制度”,這樣說(shuō),能理解不?
當(dāng)然,制度也是要人來(lái)執(zhí)行的,一個(gè)最底層的工作叫“空閑頻道評(píng)估”――CCA,這個(gè)也是由我們的小弟“物理層”來(lái)做的。他要告訴MAC層,當(dāng)前頻率有沒(méi)有被其它設(shè)備占用。而且這個(gè)工作不能只做一次就匯報(bào),要檢測(cè)8個(gè)符號(hào)周期。
在IEEE 802.15.4物理層協(xié)議中,有三種CCA模式:
1. 只檢測(cè)ED值。只要ED值高于一個(gè)門(mén)限就認(rèn)為當(dāng)前頻道被占用。這個(gè)門(mén)限值可以由設(shè)計(jì)者來(lái)定義。
2. 只由CS結(jié)果來(lái)決定。只要CS的檢測(cè)結(jié)果為,當(dāng)前頻道被IEEE 802.15.4定義的設(shè)備占用,則返回頻道忙。
3. 由上述兩個(gè)值的“與”或者“或”邏輯來(lái)決定。也說(shuō)是說(shuō)
●ED值高于門(mén)限“并且”有802.15.4設(shè)備占用,則認(rèn)為頻道忙
●ED值高于門(mén)限“或者”有802.15.4設(shè)備占用,則認(rèn)為頻道忙
那究竟采用哪種CCA模式呢?這個(gè)可以通過(guò)PHY屬性值phyCCAMode來(lái)設(shè)置。這個(gè)值也是PHY-PIB值的一部分,下面的章節(jié)會(huì)對(duì)這個(gè)概念進(jìn)行介紹。
3.6 物理層常量和屬性
首先說(shuō)明一下“常量”和“屬性”這兩個(gè)詞,所謂的常量就是說(shuō)在“編譯”好之后不能變的量;而屬性則是可以改變的。在Zigbee協(xié)議棧中,每一層都有自己的常量和屬性。
如表3.2所示,物理層中只有兩個(gè)常量,aMaxPHYPacketSize指示“物理層服務(wù)數(shù)據(jù)單元”――PSDU不能超過(guò)127字節(jié);而 aTurnaroundTime說(shuō)明一個(gè)設(shè)備由接收狀態(tài)轉(zhuǎn)為發(fā)送狀態(tài)的最大時(shí)間,也就是說(shuō)一個(gè)接收器必須在12個(gè)符號(hào)周期內(nèi)完成接收任務(wù)。
同時(shí)要說(shuō)明的一點(diǎn)是,PHY和MAC層的所有常量都有一個(gè)前綴“a”,這是Zigbee協(xié)議的規(guī)定,NWK和APL層分別以前綴“nwkc”和“apsc”開(kāi)始。
物理層的“屬性”包含在“物理層PAN信息基準(zhǔn)表”――PHY-PIB中,這個(gè)表是專(zhuān)門(mén)用來(lái)管理物理層服務(wù)的,詳細(xì)信息在表3.3中,其中有(+)標(biāo) 志的為只讀屬性,上層只可以對(duì)此類(lèi)屬性進(jìn)行“讀”操作,只有物理層自己才能“寫(xiě)”;而有(*)標(biāo)志的屬性,其個(gè)別指定位為“只讀”;其余的屬性則可讀可 寫(xiě)。后面章節(jié)會(huì)對(duì)每個(gè)屬性詳細(xì)闡述。
3.7 物理層服務(wù)
我們研究了半天物理層是怎么工作的,下面看下我們到底怎么“吩咐”他,他到底提供了哪些“服務(wù)”。
物理層提供了兩種類(lèi)型的服務(wù),一種是數(shù)據(jù)服務(wù),一種叫物理層管理服務(wù)。顧名思義,數(shù)據(jù)服務(wù)通過(guò)無(wú)線(xiàn)電波對(duì)“物理協(xié)議層數(shù)據(jù)單元”――PPDU進(jìn)行發(fā)送 和接收,說(shuō)簡(jiǎn)單點(diǎn)就是收發(fā)數(shù)據(jù);另外,物理層中包含了一個(gè)叫“物理層管理實(shí)體”――PLME的一個(gè)管理單元,如下圖所示,數(shù)據(jù)服務(wù)是通過(guò)PD-SAP實(shí)現(xiàn) 的,而物理層管理服務(wù)是通過(guò)PLME-SAP來(lái)實(shí)現(xiàn)的,其中PLME也包含上文所述的PHY-PIB。
3.7.1 物理層數(shù)據(jù)服務(wù)
mac日記篇三:復(fù)習(xí)重點(diǎn)(底分)
論述題:
請(qǐng)簡(jiǎn)述電子商務(wù)安全的六個(gè)安全要素,舉例說(shuō)明其保護(hù)的內(nèi)容、面對(duì)的威脅和防范措施 答案:電子商務(wù)的六個(gè)安全要素是可用性、機(jī)密性、完整性、不可否認(rèn)性、真實(shí)性、訪問(wèn)控制(0.5*6=3分)
可用性(Avaliablity)是指確保及時(shí)可靠地訪問(wèn)和使用信息(0.5)。例如用戶(hù)可以訪問(wèn)自己的郵箱、網(wǎng)站主頁(yè)等(0.5)。主要的威脅是阻斷,例如物理線(xiàn)路破壞、惡意軟件或者DOS攻擊等(0.5)。防范措施包括物理防護(hù)、安裝防毒軟件、IDS和使用DDOS防火墻(0.5)。(共2分,下同)
機(jī)密性(Confidenticality)是指確保隱私或機(jī)密信息不被非授權(quán)的個(gè)人利用,或被泄露給非授權(quán)的個(gè)人。例如用戶(hù)登錄郵箱時(shí)使用的密碼,或者存放在電腦上的個(gè)人日記等。主要的威脅是竊聽(tīng)、破解以及系統(tǒng)入侵等。防范的措施主要是加密,包括對(duì)稱(chēng)加密和非對(duì)稱(chēng)加密;以及使用具有加密功能的安全協(xié)議,例如IPSec、SSL、kerberos和SSH等。
完整性(Integrity)是指防范不正當(dāng)?shù)男畔⑿薷幕蚱茐。例如用?hù)的訂單、發(fā)送的明文信息、數(shù)據(jù)庫(kù)存放的敏感信息等。主要的威脅是篡改,例如在數(shù)據(jù)傳輸過(guò)程中被修改后再發(fā)往服務(wù)器,或者入侵系統(tǒng)后修改敏感信息。防范的措施包括單向哈希函數(shù)、消息驗(yàn)證碼(MAC)、以及使用具有消息認(rèn)證功能的安全協(xié)議,例如IPSec、SSL等。
不可否認(rèn)性(Undeniablity)是指用戶(hù)無(wú)法否認(rèn)自己的行為(發(fā)送或接收)和信息的內(nèi)容。例如用戶(hù)的合同、交易信息等。主要的威脅是抵賴(lài),合法用戶(hù)否認(rèn)已經(jīng)發(fā)生的行為。防范的措施主要是數(shù)字簽名(RSA或DSA),以及使用具有防抵賴(lài)功能的公平協(xié)議。
真實(shí)性(Authenticity)是指能夠被驗(yàn)證和信任的表示真實(shí)情況或者正確程度的屬性,使得創(chuàng)新、信息和信息源的有效性能夠被充分相信。例如用戶(hù)的身份、信息的來(lái)源等。主要的威脅是假冒和偽造,例如偽裝成合法用戶(hù),或者以他人名義發(fā)送信息。防范的措施,用戶(hù)身份認(rèn)證包括生物特征認(rèn)證(例如指紋)、知道什么(例如口令、密碼)以及相關(guān)協(xié)議(例如CHAP、Kerberos)、擁有什么(例如令牌、數(shù)字證書(shū))以及相關(guān)協(xié)議(例如SSL),信息源認(rèn)證主要通過(guò)數(shù)字簽名。
訪問(wèn)控制(authorization)是指資源的所有者或者控制者準(zhǔn)許其他人訪問(wèn)這種資源,防止未授權(quán)的訪問(wèn)。例如不同級(jí)別的用戶(hù)可以訪問(wèn)不同密級(jí)的信息,或者不同價(jià)值的內(nèi)容。主要的威脅是入侵和特洛伊木馬,入侵者通過(guò)緩沖區(qū)溢出等手段獲得超級(jí)用戶(hù)權(quán)限,或者誘導(dǎo)所有者執(zhí)行木馬程序把訪問(wèn)權(quán)限授予給攻擊者。防范的措施是依據(jù)最小授權(quán)原則制定合理的授權(quán)策略,包括減少使用超級(jí)用戶(hù)權(quán)限。常見(jiàn)的授權(quán)策略包括DAC(自主訪問(wèn)控制),MAC(強(qiáng)制訪問(wèn)控制),RBAC(基于屬性的訪問(wèn)控制)和ABAC(基于屬性的訪問(wèn)控制)。
計(jì)算題
應(yīng)用RSA算法實(shí)現(xiàn)加密和解密,并運(yùn)用中國(guó)剩余定理計(jì)算加密結(jié)果。其中
1、分布用歐拉法和輾轉(zhuǎn)相除法求出逆元(4分)。//各2分
2、應(yīng)用RSA實(shí)現(xiàn)過(guò)程(4分)。// n,fi(n),加密公式,解密公式各1分
3、中國(guó)剩余定理(7分)。//求m1,m2各得1分,求y1,y2各得2分,結(jié)果1分
示例:
已知,p=13,q=11,e=11;m=25
答案:
n=143,fi(n)=12*10=120=5*3*8
歐拉法:
fi(fi(n))=120*1/2*2/3*4/5=40*4/5=32(1分)
11^(32-1) mod 120=11^31 mod 120=11(1分)
輾轉(zhuǎn)相除法(最好是參照ppt畫(huà)圖):
120=11*10+10(1分)
11=10*1+1
10=1*10+0
a0~an=10,1,n=1為奇數(shù)
b-1=1,b0=an=1,b1=10*1+1=11,所以bn即為逆元=11(1分)
C=m^e mod n=25^11 mod 143 =25(25可以不寫(xiě)出來(lái),1分),m=C^d mod n=25^11 mod 143=25(1分)
CRT:
C1=(m mod p)e mod (p-1)=C mod p
C2=(m mod q)emod (q-1)=C mod q
由(25 mod 13)^(11 mod 12) mod 13 = 12^11 mod 13=(12^2) ^5*12 mod 13 =12=c mod 13 得 c=12 mod 13
由(25 mod 11)^(11 mod 10) mod 11=3^1 mod 11=3=c mod 11得 c= 3 mod 11
m1=11,m2=13,且由11*y1=1 mod 13及 13*y2=1 mod 11,可得 y1=6,y2=6(輾轉(zhuǎn)相除法很容易求,過(guò)程最好寫(xiě)出來(lái))
由此可得m=(12*11*6+3*13*6) mod 143=(4*3*66+234) mod 143=(4*55 +91) mod 143=(77+91) mod 143=168 mod 143=25
相關(guān)熱詞搜索:日記 mac mac修改器 mac軟件
熱點(diǎn)文章閱讀