• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      嵌入式Linux 下IEEE 1588 時(shí)間同步的實(shí)現(xiàn)

      2012-03-18 08:09:54易勝藍(lán)
      電訊技術(shù) 2012年5期
      關(guān)鍵詞:以太網(wǎng)報(bào)文時(shí)鐘

      易勝藍(lán)

      (中國(guó)西南電子技術(shù)研究所, 成都610036)

      1 引 言

      目前,用于時(shí)間同步的協(xié)議中使用得較多的是網(wǎng)絡(luò)時(shí)間協(xié)議(Network Time Protocol,NTP),這是一種低成本的網(wǎng)絡(luò)對(duì)時(shí)協(xié)議。但是,由于網(wǎng)絡(luò)時(shí)間協(xié)議的時(shí)間標(biāo)記(Time Stamp)是在協(xié)議的應(yīng)用層中獲得的,無法滿足太高的時(shí)間精度要求,只能提供毫秒級(jí)別的對(duì)時(shí)精度[1]。與NTP 協(xié)議不同的是,IEEE 1588精確時(shí)鐘同步協(xié)議(Precision Time Synchronization Protocol,PTP)可以在不增加硬件成本的條件下,達(dá)到幾微秒到幾十微秒級(jí)別的時(shí)間同步精度[2],通過網(wǎng)絡(luò)接口在協(xié)議的底層獲取時(shí)間標(biāo)記,達(dá)到時(shí)鐘同步的效果。如果需要更高的精度要求,可以使用專門的硬件模塊獲取時(shí)間標(biāo)記,將時(shí)間戳的獲取點(diǎn)移至物理層,由硬件完成時(shí)間戳的獲取,則可以將時(shí)鐘同步精度提高到亞微秒級(jí)[3]。本文在對(duì)IEEE 1588 的同步原理詳細(xì)分析的基礎(chǔ)上,提出一種在嵌入式Linux 系統(tǒng)中以軟件方式實(shí)現(xiàn)精準(zhǔn)時(shí)間協(xié)議(PTP)的方法,并給出了相應(yīng)的應(yīng)用平臺(tái)實(shí)現(xiàn)。

      2 時(shí)鐘同步原理

      IEEE 1588 通過時(shí)間報(bào)文交換的方法實(shí)現(xiàn)分布式系統(tǒng)中各節(jié)點(diǎn)的時(shí)間同步。在系統(tǒng)中往往會(huì)有一個(gè)主時(shí)鐘(master),它提供整個(gè)系統(tǒng)的時(shí)間基準(zhǔn),而系統(tǒng)中的其他時(shí)鐘則為從時(shí)鐘(或叫做子時(shí)鐘,slave)。在系統(tǒng)中,每個(gè)時(shí)鐘狀態(tài)的確定是通過最佳時(shí)鐘算法確定的。主時(shí)鐘和從時(shí)鐘通過交換報(bào)文的方式來確定主從時(shí)鐘之間的時(shí)間偏移以及報(bào)文傳輸?shù)木W(wǎng)絡(luò)延遲,PTP 協(xié)議通過兩次包含有時(shí)間戳的報(bào)文的發(fā)送,真正精確的發(fā)送時(shí)間被正確記錄了下來,用來最終計(jì)算出主時(shí)鐘和從時(shí)鐘之間的時(shí)間差。主時(shí)鐘每隔一段時(shí)間將本地時(shí)間發(fā)布到網(wǎng)絡(luò)上,從時(shí)鐘進(jìn)行時(shí)間戳的接收并更新本地時(shí)鐘,同時(shí)從時(shí)鐘不斷地進(jìn)行線路延時(shí)的計(jì)算,以保證時(shí)鐘的精確[4]。

      如圖1 所示,主時(shí)鐘節(jié)點(diǎn)按照定義好的時(shí)間間隔,將時(shí)間同步報(bào)文(Sync)發(fā)送給網(wǎng)絡(luò)上所有的從時(shí)鐘節(jié)點(diǎn),該時(shí)間同步報(bào)文發(fā)送的精確時(shí)間戳TM1被同時(shí)記錄了下來,該同步時(shí)間戳在隨后發(fā)送的跟進(jìn)報(bào)文(Follow -up)中被發(fā)送給從時(shí)鐘節(jié)點(diǎn)。從時(shí)鐘節(jié)點(diǎn)在收到該時(shí)間同步報(bào)文后,接收時(shí)間戳TS1被記錄了下來, TM 1、TS1這兩者的時(shí)間偏差包括傳輸線路中的報(bào)文傳輸延遲和主從時(shí)鐘的偏差。由于分布式系統(tǒng)中各個(gè)節(jié)點(diǎn)的布線長(zhǎng)度、布線方式和該節(jié)點(diǎn)在網(wǎng)絡(luò)中位置的不同,時(shí)鐘報(bào)文的傳輸延遲也將會(huì)變得不同。為了提高時(shí)鐘同步的精度,必須通過測(cè)量的方式消除該時(shí)鐘傳輸延遲。從時(shí)鐘節(jié)點(diǎn)以固定的時(shí)間間隔將延遲請(qǐng)求(Delay Request)報(bào)文發(fā)送給主時(shí)鐘節(jié)點(diǎn),同時(shí)將該報(bào)文的發(fā)送時(shí)間戳TS2記錄下來,主時(shí)鐘節(jié)點(diǎn)在收到該延遲請(qǐng)求報(bào)文的同時(shí),將接收時(shí)間戳TM2記錄下來,然后主時(shí)鐘節(jié)點(diǎn)在隨后的延遲響應(yīng)(Delay Response)報(bào)文中將該時(shí)間戳發(fā)送給相應(yīng)的從時(shí)鐘節(jié)點(diǎn)。

      圖1 主從時(shí)鐘同步原理Fig.1 Time synchronization principle of master and slave

      在計(jì)算延遲的過程中,假設(shè)網(wǎng)絡(luò)傳輸介質(zhì)是對(duì)稱均勻的,因此可以認(rèn)為主時(shí)鐘到從時(shí)鐘的時(shí)間延遲跟從時(shí)鐘到主時(shí)鐘的時(shí)間延遲是對(duì)稱相等的。因此,可以得出以下兩個(gè)式子:

      式中,T Δ為從時(shí)鐘相對(duì)主時(shí)鐘的偏差, Td為報(bào)文的網(wǎng)絡(luò)傳輸延遲。

      由式(1)和式(2)可以求得:

      根據(jù)計(jì)算出來的偏差TΔ,調(diào)節(jié)從時(shí)鐘,即可實(shí)現(xiàn)時(shí)間同步的功能。

      3 最佳時(shí)鐘選擇算法設(shè)計(jì)

      在IEEE 1588 精確時(shí)鐘同步協(xié)議中,首先要從眾多時(shí)鐘當(dāng)中找出一個(gè)時(shí)鐘,作為系統(tǒng)的主時(shí)鐘,其余時(shí)鐘為從時(shí)鐘。這個(gè)功能需要使用最佳主時(shí)鐘算法來實(shí)現(xiàn),最佳主時(shí)鐘算法模塊主要用于選擇本地網(wǎng)絡(luò)中的最佳時(shí)鐘作為主時(shí)鐘,同時(shí)決定本地時(shí)鐘所應(yīng)處的狀態(tài)。最佳主時(shí)鐘算法(Best Master Clock A lgorithm)由狀態(tài)定斷算法和數(shù)據(jù)集比較算法[1]這兩部分算法組成。

      數(shù)據(jù)集比較算法首先在所有同步報(bào)文的不同數(shù)據(jù)集中挑選出合格的同步報(bào)文,然后對(duì)這些同步報(bào)文進(jìn)行篩選,以選出可用的最佳報(bào)文。其實(shí)現(xiàn)的流程如圖2 所示:它的作用是根據(jù)同步報(bào)文的不同數(shù)據(jù)集,通過從合格的同步報(bào)文里篩選,獲得最佳的報(bào)文。在收到報(bào)文的時(shí)候,首先判斷該報(bào)文是否是同步報(bào)文,是的話則繼續(xù)運(yùn)行;接著使用Identifier-Compare()函數(shù)對(duì)時(shí)鐘層和時(shí)鐘標(biāo)志位進(jìn)行比較,如果這兩種屬性不同,則可以由此得出較好的時(shí)鐘,如果這兩者屬性相同,則需要繼續(xù)往下運(yùn)行;進(jìn)行時(shí)鐘屬性比較,如果時(shí)鐘屬性不同,可以得到較好的時(shí)鐘,如果時(shí)鐘屬性也相同,則繼續(xù)往下運(yùn)行,使用UUID-comparision()函數(shù)對(duì)不同的UUID 進(jìn)行比較,這樣經(jīng)過層層比較,所有端口都運(yùn)行該算法,最終可以選出最佳的時(shí)鐘。

      圖2 數(shù)據(jù)集比較算法流程Fig.2 Data set comparation algorithm flow

      狀態(tài)定斷算法主要進(jìn)行狀態(tài)的判斷和數(shù)據(jù)集的更新,在確定最佳主時(shí)鐘后,狀態(tài)定斷算法根據(jù)不同數(shù)據(jù)集的信息計(jì)算出系統(tǒng)中每個(gè)時(shí)鐘的各個(gè)PTP 端口的推薦狀態(tài),具體共有8 種推薦狀態(tài):未校正、從時(shí)鐘、待機(jī)、主時(shí)鐘、監(jiān)聽、禁止、故障和初始化等狀態(tài),本地時(shí)鐘將根據(jù)結(jié)果相應(yīng)地調(diào)整狀態(tài)。狀態(tài)定斷算法根據(jù)運(yùn)算分析的結(jié)果,動(dòng)態(tài)調(diào)整各個(gè)時(shí)鐘和端口的狀態(tài),所以當(dāng)主時(shí)鐘出現(xiàn)性能下降或產(chǎn)生故障的時(shí)候,系統(tǒng)能夠自動(dòng)選擇其他更合適的時(shí)鐘作為主時(shí)鐘。

      4 嵌入式Linux 操作系統(tǒng)移植

      系統(tǒng)的應(yīng)用平臺(tái)選用基于ARM9 的嵌入式系統(tǒng),處理器芯片為三星的ARM9 芯片S3C2440,應(yīng)用平臺(tái)帶有一塊256MB 的Nand Flash 芯片用于存儲(chǔ)Bootloader、Linux 內(nèi)核和根文件系統(tǒng)。嵌入式Linux操作系統(tǒng)是文中IEEE 1588 協(xié)議實(shí)現(xiàn)的基礎(chǔ),為協(xié)議的運(yùn)行提供運(yùn)行的基礎(chǔ)。

      首先,根據(jù)應(yīng)用平臺(tái)的特性移植Bootloader,本系統(tǒng)使用的Bootloader 為u-boot 1.1.6,其完成的主要任務(wù)有:為Flash 分區(qū),分配好系統(tǒng)的存儲(chǔ)空間,分別為u-boot 區(qū)、Linux 內(nèi)核分區(qū)和根文件系統(tǒng)分區(qū);初始化處理器和外設(shè)的硬件資源配置;傳遞啟動(dòng)參數(shù)給Linux 內(nèi)核,調(diào)用Linux 操作系統(tǒng)。U-boot 的實(shí)現(xiàn)非常依賴于具體硬件,需要根據(jù)硬件配置將U-boot 移植到嵌入式系統(tǒng)中。然后,根據(jù)應(yīng)用平臺(tái)的硬件特性配置Linux 內(nèi)核,并將Linux 內(nèi)核編譯為zImage 格式,應(yīng)用系統(tǒng)選用的內(nèi)核版本為2.6.30.4,可以提供最新的應(yīng)用特性。最后,使用BusyBox 工具制作所需要的根文件系統(tǒng)。BusyBox 將系統(tǒng)中的許多功能模塊集成到一個(gè)名叫BusyBox 的可執(zhí)行文件中,并通過使用不同的命令名稱來調(diào)用相應(yīng)的功能模塊,十分容易定制自己的根文件系統(tǒng)。

      將Bootloader、Linux 內(nèi)核和根文件系統(tǒng)編譯完成后,即可通過JTAG 工具燒寫到Nand Flash 的對(duì)應(yīng)分區(qū)中。

      5 PTP 協(xié)議軟件實(shí)現(xiàn)

      如圖3 所示為所設(shè)計(jì)網(wǎng)絡(luò)時(shí)間同步系統(tǒng)的結(jié)構(gòu)圖,主要包含PTP 協(xié)議處理模塊、PTP 發(fā)送模塊、PTP接收模塊和時(shí)間戳添加模塊。其中PTP 協(xié)議處理模塊位于應(yīng)用層中,使用Linux 操作系統(tǒng)的網(wǎng)絡(luò)API 實(shí)現(xiàn)。PTP 發(fā)送模塊和PTP 接收模塊使用UDP 傳輸協(xié)議進(jìn)行時(shí)間同步報(bào)文的發(fā)送和接收工作,時(shí)間戳的添加和讀取工作在驅(qū)動(dòng)層完成。

      圖3 網(wǎng)絡(luò)時(shí)間同步結(jié)構(gòu)圖Fig.3 Network time synchronization structure

      5.1 PTP 協(xié)議處理模塊實(shí)現(xiàn)

      PTP 協(xié)議處理模塊是實(shí)際的運(yùn)行模塊,是整個(gè)精確時(shí)間同步協(xié)議實(shí)現(xiàn)部分的核心,它針對(duì)主從時(shí)鐘節(jié)點(diǎn)的運(yùn)行狀態(tài)不同執(zhí)行不同的任務(wù)。PTP 協(xié)議的接收、發(fā)送控制部分運(yùn)行于UDP 傳輸協(xié)議之上以實(shí)現(xiàn)PTP 報(bào)文的接收和發(fā)送,主程序模塊在應(yīng)用層需要完成協(xié)議狀態(tài)機(jī)的轉(zhuǎn)化、報(bào)文計(jì)算、時(shí)鐘同步計(jì)算、幾個(gè)數(shù)據(jù)集和接收發(fā)送模塊的控制。

      為了在不使用專門硬件的情況下,能夠達(dá)到最高的時(shí)間記錄精度,記錄時(shí)間戳的功能被添加在網(wǎng)絡(luò)接口的驅(qū)動(dòng)程序中,在網(wǎng)絡(luò)接口的驅(qū)動(dòng)程序中實(shí)現(xiàn)時(shí)間戳的精確添加。其中,主時(shí)鐘節(jié)點(diǎn)按照定義好的時(shí)間間隔將同步時(shí)間報(bào)文(Sync)和Follow-Up報(bào)文發(fā)送給網(wǎng)絡(luò)上所有的從時(shí)鐘節(jié)點(diǎn),并且對(duì)從時(shí)鐘節(jié)點(diǎn)的延遲請(qǐng)求做出響應(yīng)。同樣,從時(shí)鐘節(jié)點(diǎn)需要按照固定時(shí)間間隔將延遲請(qǐng)求報(bào)文發(fā)送給主時(shí)鐘節(jié)點(diǎn)并接收來自主時(shí)鐘節(jié)點(diǎn)的響應(yīng)報(bào)文,根據(jù)該響應(yīng)報(bào)文中的時(shí)間戳計(jì)算主從時(shí)鐘的時(shí)間偏移和主從時(shí)鐘節(jié)點(diǎn)間網(wǎng)絡(luò)傳輸延遲,并根據(jù)時(shí)間偏移和傳輸延遲更新本地時(shí)鐘。其中時(shí)間同步報(bào)文(Sync)和延遲請(qǐng)求報(bào)文(Delay-Request)采用組播方式發(fā)送,跟進(jìn)報(bào)文(Follow -Up)和延遲相應(yīng)報(bào)文(Delay -Response)采用廣播方式發(fā)送。

      5.2 時(shí)間戳獲取

      PTP 協(xié)議處理模塊實(shí)現(xiàn)的精度主要受到時(shí)間戳精度的影響,而報(bào)文時(shí)間戳的精確程度又主要是受同步算法、系統(tǒng)硬件等因素的影響。在與硬件特性相關(guān)的方面,網(wǎng)卡芯片的效率、晶振穩(wěn)定程度、內(nèi)存訪問速度和CPU 主頻等都會(huì)對(duì)時(shí)間戳精度造成影響。在特定的硬件平臺(tái)基礎(chǔ)上,時(shí)間戳獲取的位置又很大程度上影響了時(shí)間戳的準(zhǔn)確性,時(shí)間戳可以在應(yīng)用層、驅(qū)動(dòng)層或者M(jìn)ac 與PHY 之間獲取。通過前面的報(bào)文傳輸過程分析可以看出,時(shí)間戳的獲取越接近硬件底層, 時(shí)間戳獲取的時(shí)間誤差就越小。因此,在精確時(shí)間協(xié)議實(shí)現(xiàn)的時(shí)候,時(shí)間戳的標(biāo)記應(yīng)該做到盡量接近硬件底層。

      本文通過添加Linux 操作系統(tǒng)的網(wǎng)絡(luò)驅(qū)動(dòng)層函數(shù)的方法來獲取和添加時(shí)間戳。在同步報(bào)文發(fā)送的出口幀交給MAC 控制器的時(shí)刻加上出口時(shí)間戳并保存起來,在同步報(bào)文接收的入口幀到達(dá)網(wǎng)絡(luò)接口中斷服務(wù)子程序的入口處加上時(shí)間戳并保存起來。

      圖4 以太網(wǎng)幀結(jié)構(gòu)Fig.4 Ethernet frame structure

      以太網(wǎng)幀的典型結(jié)構(gòu)如圖4 所示,包括源地址、目的地址、類型、數(shù)據(jù)、校驗(yàn)碼和前導(dǎo)碼。以太網(wǎng)幀是OSI 參考模型數(shù)據(jù)鏈路層的封裝,網(wǎng)絡(luò)層的數(shù)據(jù)包加上以太網(wǎng)幀頭和幀尾,構(gòu)成可由數(shù)據(jù)鏈路層識(shí)別的數(shù)據(jù)幀。因此可以在收到本機(jī)網(wǎng)絡(luò)層傳遞過來的數(shù)據(jù)后,在網(wǎng)絡(luò)數(shù)據(jù)報(bào)頭部加上時(shí)間戳的標(biāo)記,在收到對(duì)方的以太網(wǎng)幀的時(shí)候,獲取對(duì)方發(fā)送的時(shí)間戳參數(shù)。接收和發(fā)送時(shí)間戳任務(wù)的實(shí)現(xiàn)主要通過add-stamp 和get-stamp 這兩個(gè)函數(shù)完成。add-stamp為添加時(shí)間戳的函數(shù),用于在發(fā)送同步報(bào)文的時(shí)候添加時(shí)間戳;add-stamp 的關(guān)鍵實(shí)現(xiàn)部分如下所示:

      a=get-utime();

      add-to-frame(time-t a,frame);

      其中,get-utime 函數(shù)用于從系統(tǒng)中獲得以μs 為單位的時(shí)間,add-to-frame 函數(shù)將獲得的時(shí)間參數(shù)以時(shí)間戳的方式添加到以太網(wǎng)幀中。

      get-stamp 為獲取時(shí)間戳的函數(shù),在網(wǎng)絡(luò)驅(qū)動(dòng)層接收到同步報(bào)文的時(shí)候,用于從同步報(bào)文中獲取對(duì)方發(fā)來的時(shí)間戳。其關(guān)鍵實(shí)現(xiàn)的函數(shù)為utimefrom-frame,該函數(shù)用于將從收到的以太網(wǎng)幀中獲得的時(shí)間參數(shù)提取出來。

      實(shí)際的測(cè)試表明,通過在網(wǎng)絡(luò)驅(qū)動(dòng)層添加時(shí)間戳的方法能夠達(dá)到10 μs量級(jí)的同步精度。

      6 結(jié)束語

      本文從IEEE 1588 協(xié)議出發(fā),在嵌入式Linux 操作系統(tǒng)中,對(duì)時(shí)鐘同步協(xié)議進(jìn)行詳細(xì)分析,設(shè)計(jì)實(shí)現(xiàn)了最佳時(shí)鐘選擇算法和PTP 協(xié)議處理模塊,并對(duì)如何在網(wǎng)絡(luò)驅(qū)動(dòng)層添加時(shí)間戳進(jìn)行了介紹。實(shí)驗(yàn)結(jié)果表明,通過該方法能夠達(dá)到10 μs量級(jí)的同步精度,較好地實(shí)現(xiàn)了時(shí)鐘同步的效果。

      [1] 王曉冬, 闞德濤, 張志武.以太網(wǎng)的時(shí)鐘同步技術(shù)[ J] .電子工程師,2008,34(9):47-50.

      WANG Xiao -dong, KAN De -tao, ZHANG Zhi-wu.Clock synchronization technology for ethernet[ J] .Electronics Engineer, 2008, 34(9):47-50.(in Chinese)

      [2] 魯駿, 張向利,范曉峰.嵌入式Linux 下時(shí)鐘同步系統(tǒng)的分析與實(shí)現(xiàn)[ J] .儀表技術(shù)與傳感器,2009(3):64-66.

      LU Jun, ZHANG Xiang-li, FAN Xiao-feng.Analysis and realize of clock synchronization under embedded Linux[J] .Instrument Technology and Sensor,2009(3):64-66.(in Chinese)

      [3] IEEE 1588-2002, IEEE standard for a precision clock synchronization protocol for networked measurement and control systems[S] .

      [4] 李聰,高麗.基于IEEE 1588 的時(shí)鐘同步技術(shù)在分布式系統(tǒng)中的應(yīng)用[J] .電子設(shè)計(jì)工程,2009,17(12):54-56.

      LI Cong, GAO Li.Application of time synchronization technology based on IEEE1588 in distributed system[J] .Electronic Design Engineering,2009,17(12)54-56.(in Chinese)

      [5] 戴寶峰, 崔少輝, 常健.IEEE 1588 最佳主時(shí)鐘算法的分析與實(shí)現(xiàn)[ J] .儀表技術(shù),2008(2):29-31.

      DAI Bao-feng, CUI Shao-hui, CHANG Jian.Analysis and realize of IEEE 1588 best main clock algorithm[ J] .Instrument Technology, 2008(2):29-31.(in Chinese)

      猜你喜歡
      以太網(wǎng)報(bào)文時(shí)鐘
      基于J1939 協(xié)議多包報(bào)文的時(shí)序研究及應(yīng)用
      汽車電器(2022年9期)2022-11-07 02:16:24
      別樣的“時(shí)鐘”
      基于1500以太網(wǎng)養(yǎng)豬場(chǎng)的智能飼喂控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
      古代的時(shí)鐘
      CTCS-2級(jí)報(bào)文數(shù)據(jù)管理需求分析和實(shí)現(xiàn)
      淺析反駁類報(bào)文要點(diǎn)
      有趣的時(shí)鐘
      談實(shí)時(shí)以太網(wǎng)EtherCAT技術(shù)在變電站自動(dòng)化中的應(yīng)用
      電子制作(2017年24期)2017-02-02 07:14:44
      ATS與列車通信報(bào)文分析
      時(shí)鐘會(huì)開“花”
      灵武市| 遵义市| 仪陇县| 赤壁市| 敦化市| 岱山县| 介休市| 永吉县| 鄂托克旗| 天津市| 南澳县| 成武县| 大理市| 湘潭县| 教育| 弥渡县| 米泉市| 怀安县| 华池县| 双峰县| 镇远县| 桂阳县| 兰州市| 荥阳市| 策勒县| 瑞金市| 阿克苏市| 武汉市| 渭南市| 江山市| 娄底市| 盐津县| 渑池县| 远安县| 宁津县| 苍南县| 黄平县| 柯坪县| 顺义区| 涿州市| 固镇县|