精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于NXP iMX8系列處理器的TSN網絡時鐘同步測試

要長高 ? 來源:eetop ? 作者:Toradex秦海 ? 2023-12-01 16:02 ? 次閱讀

簡介

IEEE 802.1 TSN(Time-Sensitive Networking)工作組定義了一個基于802.x網絡架構上提供同步時間低延遲服務能力的協議,其前身為IEEE AVB(Audio Video Bridgin)工作組,后于2012年重命名為TSN工作組以便于將相關協議標準更廣泛推廣;AVB/TSN包含多種具體協議標準(見如下表格),其中最重要的協議標準之一就是IEEE 802.1AS時鐘同步協議標準,它基于IEEE 1588協議進行精簡和修改,也稱為gPTP協議。

1678956789487540.png

PTP協議是一種精確的時間同步協議,IEEE 1588標準為時鐘分配定義了一個主從式架構,由一個或多個網段及一個或多個時鐘組成。在局域網中能將時間同步精度控制在亞微秒級。PTP協議對時間戳在MAC層進行加蓋, 消除了數據包在網絡協議棧中的處理時間延遲; 對時間戳的記錄和發送進行確認, 得到數據包準確的發送和接收時間。 相比于其它時間同步協議(如NTP),PTP協議的同步精度是最高的。

本文就基于NXP最新的i.MX8系列ARM處理器平臺進行TSN時鐘同步的簡單測試。

本文所演示的平臺來自于ToradexVerdin iMX8M Plus和ApalisiMX8嵌入式平臺,這兩個平臺是基于近年發布的NXP iMX8系列ARM處理器,核心為Cortex-A53/A72。

2).硬件準備

a).Verdin iMX8MP ARM核心版配合Dahlia Carrier Board載板,并連接調試串口,后續測試中作為TSN網絡中的Master Clock節點平臺。Verdin iMX8MP核心板板載PHY芯片的一路千兆網絡是完整支持包括TSN/AVB/IEEE1588等相關協議標準的網口,另外一路RGMII接口的MAC則支持AVB/IEEE1588。

b).Apalis iMX8 ARM核心版配合Apalis Eva Board載板,并連接調試串口,后續測試中作為TSN網絡中的Slave Clock節點平臺。Apalis iMX8核心板提供的兩路千兆網絡都是只支持AVB/IEEE1588,而不支持完整的TSN,不過由于本文僅測試時鐘同步因此也可以正常和Verdin iMX8MP搭配使用。

c).兩個平臺的千兆網口通過一根網線直通連接。

3).軟件準備

a).如下圖,Toradex Verdin iMXMP模塊標準Ycoto Linux BSP中已經包含了測試IEEE 802.1AS時鐘同步的Linuxptp工具,可以參考這里說明分別在Verdin iMX8MP模塊以及Apalis iMX8模塊上面安裝目前最新的LTS 5.7.2版本。

1678956790476559.png

b).如果需要在本文基礎上進一步測試IEEE 802.1Qav/Qbu/Qbv等隊列轉發協議,則需要如下方式在Ycoto編譯環境或者Linux BSP Runtime環境手動安裝ipoute2-tc工具軟件,并且可能需要對Linux Kernel/Device Tree做適當的修改,可以參考這里一個NXP Application Note文章說明。

---------------------------------------

### Ycoto Environment ###

# Add below to /build/conf/local.conf #

IMAGE_INSTALL_append = " iproute2-tc"

### Linux BSP Runtime ###

$ opkg install iproute2-tc_5.5.0-r0_aarch64.ipk

---------------------------------------

3).具體測試流程

a).Toradex Ycoto Linux默認使能了NTP時間同步協議,這是目前應用最為廣泛的網絡時間同步協議,精度可以達到毫秒級別,在大多數對于時間同步精度要求沒有那么高的場景都可以應用,本文為了測試gPTP高精度時間同步,具體測試過程中需要關閉NTP服務,詳細步驟后續說明會提供。

b).實際的TSN網絡中,Master Clock節點通常會產生一個高精度時鐘,來源一般是GNSS(Global Navigation Satellite System) 結合PPS(Pulse?Per?Second)信號來進行衛星授時,本文重點不在于此,因此對于作為Master Clock節點的Verdin iMX8MP設備在安裝好Linux系統后,先僅只通過默認開啟的NTP服務來進行System Clock的同步校準,來簡單替代衛星授時的功能。

./ NTP服務詳細配置方法可以參考這里,首先在Verdin iMX8MP Linux下完成NTP時間同步。

---------------------------------------

### NTP同步完成前的狀態信息###

root@verdin-imx8mp-07250979:~#timedatectl

Local time: Thu 2023-03-16 04:20:08 UTC

Universal time: Thu 2023-03-16 04:20:08 UTC

RTC time: Thu 2023-03-16 04:20:07

Time zone: Universal (UTC, +0000)

System clock synchronized: no

NTP service: active

RTC in local TZ: no

### NTP同步完成后的狀態信息###

root@verdin-imx8mp-07250979:~#timedatectl

Local time: Thu 2023-03-16 06:12:27 UTC

Universal time: Thu 2023-03-16 06:12:27 UTC

RTC time: Thu 2023-03-16 06:12:28

Time zone: Universal (UTC, +0000)

System clock synchronized: yes

NTP service: active

RTC in local TZ: no

---------------------------------------

./同步完成后關閉NTP服務

---------------------------------------

root@verdin-imx8mp-07250979:~# timedatectl set-ntp false

root@verdin-imx8mp-07250979:~# timedatectl

Local time: Thu 2023-03-16 06:17:49 UTC

Universal time: Thu 2023-03-16 06:17:49 UTC

RTC time: Thu 2023-03-16 06:17:50

Time zone: Universal (UTC, +0000)

System clock synchronized: yes

NTP service: inactive

RTC in local TZ: no

---------------------------------------

b). Verdin iMX8MP Master Clock節點上面通過linuxptp工具來配置gPTP服務

./主要使用的工具如下

ptp4l: daemon that synchronizes the PTP Hardware Clock (PHC) from the NIC

phc2sys: daemon that synchronizes the PHC and the System clock

pmc: utility tool to configure ptp4l in run-time

./首先后臺加載ptp4l daemon進程,用于同步PHC

---------------------------------------

root@verdin-imx8mp-07250979:~# ptp4l -i eth0 -f ./gPTP.cfg --step_threshold=1 -m &

[1] 1092

ptp4l[1140.933]: selected /dev/ptp0 as PTP clock

root@verdin-imx8mp-07250979:~# ptp4l[1140.972]: port 1: INITIALIZING to LISTENING on INIT_COMPLE

TE

ptp4l[1140.972]: port 0: INITIALIZING to LISTENING on INIT_COMPLETE

ptp4l[1144.641]: port 1: LISTENING to MASTER on ANNOUNCE_RECEIPT_TIMEOUT_EXPIRES

ptp4l[1144.641]: selected local clock 00142d.fffe.6ea423 as best master

ptp4l[1144.641]: assuming the grand master role

---------------------------------------

//參數說明如下,更多參數選項以及詳細說明可以查看ptp4l manpage

-f選項指定gPTP.cfg配置文件,這個文件用于配置ptp4l工作于gPTP模式的設置參數

-i選項指定ptp4l所要控制的NIC網口界面

--step_threshold選項用于配置步進時鐘的閾值,超過閾值,直接調整時鐘時間,單位秒

-m參數使能log信息打印輸出,這個可以視測試需要打開或者關閉

// Master所需的gPTP.cfg文件如下,更詳細的配置文件參考說明和模板可以參考這里。需要主要目前Linux系統里面的linuxptp軟件版本是2.0.1,請查看對應branch的信息。

---------------------------------------

#

# 802.1AS example configuration containing those attributes which

# differ from the defaults. See the file, default.cfg, for the

# complete list of available options.

#

[global]

gmCapable 1

priority1 248

priority2 248

logAnnounceInterval 0

logSyncInterval -3

syncReceiptTimeout 3

neighborPropDelayThresh 800

min_neighbor_prop_delay -20000000

assume_two_step 1

path_trace_enabled 1

follow_up_info 1

transportSpecific 0x1

ptp_dst_mac 01:80:C2:00:00:0E

network_transport L2

delay_mechanism P2P

masterOnly 1

---------------------------------------

//默認情況下,ptp4l通過BMCA(Best Master Clock Algorithm) 來判定當前PHC是否可以被作為Grand Master職責,也可以通過masterOnly或者slaveOnly參數來強制指定,本文使用后者。

---------------------------------------

ptp4l[1144.641]: selected local clock 00142d.fffe.6ea423 as best master

ptp4l[1144.641]: assuming the grand master role

---------------------------------------

./ PHC同步完成后,接下來進行System Clock同步,這個步驟主要針對那些依賴于System clock工作的應用,比如ALSA/GStreamer frameworks AVTP插件。

//由于PHC時間采用TAI(International Atomic Time) 標準,而System Clock采用(Coordinated Universal Time) 標準,需要通過pmc runtime工具配置相應的轉換參數

---------------------------------------

root@verdin-imx8mp-07250979:~# pmc -u -b 0 -t 1 "SET GRANDMASTER_SETTINGS_NP clockClass 248 \

clockAccuracy 0xfe offsetScaledLogVariance 0xffff \

currentUtcOffset 37 leap61 0 leap59 0 currentUtcOffsetValid 1 \

ptpTimescale 1 timeTraceable 1 frequencyTraceable 0 \

timeSource 0xa0"

sending: SET GRANDMASTER_SETTINGS_NP

ptp4l[3021.662]: selected local clock 00142d.fffe.6ea423 as best master

00142d.fffe.6ea423-0 seq 0 RESPONSE MANAGEMENT GRANDMASTER_SETTINGS_NP

clockClass 248

clockAccuracy 0xfe

offsetScaledLogVariance 0xffff

currentUtcOffset 37

leap61 0

ptp4l[3021.662]: assuming the grand master role

leap59 0

currentUtcOffsetValid 1

ptpTimescale 1

timeTraceable 1

frequencyTraceable 0

timeSource 0xa0

---------------------------------------

//然后通過phc2sys工具來同步PHC和System Clock

---------------------------------------

root@verdin-imx8mp-07250979:~# phc2sys -s eth0 -c CLOCK_REALTIME --step_threshold=1 --transportSpecific=1 -w -m &

[2] 1058

phc2sys[600.436]: CLOCK_REALTIME phc offset 37000001087 s0 freq +0 delay 875

phc2sys[601.437]: CLOCK_REALTIME phc offset 37000001117 s1 freq +30 delay 875

phc2sys[602.437]: CLOCK_REALTIME phc offset -75 s2 freq -45 delay 875

phc2sys[603.437]: CLOCK_REALTIME phc offset 30 s2 freq +37 delay 875

phc2sys[604.437]: CLOCK_REALTIME phc offset -58 s2 freq -42 delay 875

---------------------------------------

//參數說明如下,更多參數選項以及詳細說明可以查看ptp4l manpage

-s選項指定來自于對應NIC(eth0) 設備的PHC作為master clock

-c選項指定System Clock作為slave clock

--step_threshold選項用于配置步進時鐘的閾值,超過閾值,直接調整時鐘時間,單位秒

--transportSpecific選項在基于gPTP domain運行是必要選項

-w參數使得phc2sys處于等待狀態直到ptp4l完成同步

-m參數使能log信息打印輸出,這個可以視測試需要打開或者關閉

//打印的log信息中,當phc offset小于100ns即表示時鐘同步成功

c). Apalis iMX8 Slave Clock節點上面通過linuxptp工具來配置gPTP服務,具體的流程和命令和Master一致,只是在gPTP.cfg配置文件中將masterOnly修改未slaveOnly。

./首先由于是Slave節點設備,保持Linux System Clock為系統安裝后的默認時間設置,直接關閉NTP服務不進行任何時間同步操作

---------------------------------------

root@apalis-imx8-07308034:~# timedatectl

Local time: Wed 2023-03-01 07:21:21 UTC

Universal time: Wed 2023-03-01 07:21:21 UTC

RTC time: Wed 2023-03-01 07:21:21

Time zone: Universal (UTC, +0000)

System clock synchronized: no

NTP service: inactive

RTC in local TZ: no

---------------------------------------

./通過和Verdin iMX8MP設備的直連網絡和Master Clock同步PHC時間,由于gPTP協議都是基于MAC層的,因此網口無需設置IP地址也沒有問題。

---------------------------------------

root@apalis-imx8-07308034:~# ptp4l -i eth0 -f ./gPTP.cfg --step_threshold=1 -m &

[1] 28567

ptp4l[2838.949]: selected /dev/ptp0 as PTP clock

root@apalis-imx8-07308034:~# ptp4l[2838.996]: port 1: INITIALIZING to LISTENING on INIT_COMPLETE

ptp4l[2838.996]: port 0: INITIALIZING to LISTENING on INIT_COMPLETE

ptp4l[2842.064]: selected local clock 00142d.fffe.6f8302 as best master

ptp4l[2842.197]: port 1: new foreign master 00142d.fffe.6ea423-1

ptp4l[2844.197]: selected best master clock 00142d.fffe.6ea423

ptp4l[2844.197]: updating UTC offset to 37

ptp4l[2844.197]: port 1: LISTENING to UNCALIBRATED on RS_SLAVE

ptp4l[2845.348]: port 1: UNCALIBRATED to SLAVE on MASTER_CLOCK_SELECTED

ptp4l[2845.973]: rms 646417001599952 max 1292834003200590 freq +9621 +/- 3636 delay 668 +/- 0

ptp4l[2846.973]: rms 8 max 10 freq +10997 +/- 6 delay 668 +/- 0

ptp4l[2847.974]: rms 9 max 10 freq +11008 +/- 1 delay 668 +/- 0

ptp4l[2848.974]: rms 4 max 6 freq +11006 +/- 3 delay 668 +/- 0

......

---------------------------------------

//打印log信息中,rms為PHC和Grand Master clock之間offset的平方值,當rms輸出持續小于100ns時候,表示同步成功。

//同時在Verdin iMX8MP的Master端,ptp4l也會打印如下信息,證明Slave以及連接Master 進行精準時間同步。

---------------------------------------

ptp4l[4137.874]: port 1: link up

ptp4l[4137.924]: port 1: FAULTY to LISTENING on INIT_COMPLETE

ptp4l[4141.728]: port 1: LISTENING to MASTER on ANNOUNCE_RECEIPT_TIMEOUT_EXPIRES

ptp4l[4141.728]: selected local clock 00142d.fffe.6ea423 as best master

ptp4l[4141.728]: assuming the grand master role

---------------------------------------

//此時查看System Clock還是未同步的時間

---------------------------------------

### synchronous System clock on Verdin iMX8MP ###

root@verdin-imx8mp-07250979:~# date +%Y-%m-%d' '%H:%M:%S.%N | cut -b 1-25

2023-03-16 08:01:22.94530

### non- synchronous System clock on Apalis iMX8 ###

root@apalis-imx8-07308034:~# date +%Y-%m-%d' '%H:%M:%S.%N | cut -b 1-25

2023-03-01 08:02:46.75497

---------------------------------------

./通過phc2sys工具來同步PHC和System Clock

---------------------------------------

root@apalis-imx8-07308034:~# phc2sys -s eth0 -c CLOCK_REALTIME --step_threshold=1 --transportSpecific=1 -w -m &

[2] 15230

phc2sys[1487.465]: CLOCK_REALTIME phc offset -1295917493725168 s0 freq +0 delay 2625

phc2sys[1488.466]: CLOCK_REALTIME phc offset -1295917493714065 s1 freq +11096 delay 2625

phc2sys[1489.466]: CLOCK_REALTIME phc offset -64 s2 freq +11032 delay 2625

phc2sys[1490.467]: CLOCK_REALTIME phc offset -71 s2 freq +11006 delay 2624

phc2sys[1491.467]: CLOCK_REALTIME phc offset 34 s2 freq +11090 delay 2625

---------------------------------------

//打印log信息中phc offset小于100ns即表示時鐘同步成功

//此時查看System Clock則已經和Grand Master同步

---------------------------------------

### synchronous System clock on Verdin iMX8MP ###

root@verdin-imx8mp-07250979:~# date +%Y-%m-%d' '%H:%M:%S.%N | cut -b 1-25

2023-03-16 08:07:39.33336

### synchronous System clock on Apalis iMX8 ###

root@apalis-imx8-07308034:~# date +%Y-%m-%d' '%H:%M:%S.%N | cut -b 1-25

2023-03-16 08:07:40.54055

---------------------------------------

d).另外為了更方便的測試PHC和System Clock是否同步成功,可以使用check_clocks工具,下載源碼后參考這里說明用如下命令進行交叉編譯,生成可執行文件在設備Linux下運行驗證時鐘同步情況

---------------------------------------

### compile binary on developing host ###

$ ${CROSS_COMPILE}gcc -o check_clocks check_clocks.c

### check on Verdin iMX8MP Master ###

root@verdin-imx8mp-07250979:~# ./check_clocks -v -d eth0

Dumping timestamps and deltas

rt tstamp: 1678954738288637418

tai tstamp: 1678954775288637543

phc tstamp: 1678954775288641175

rt latency: 125

tai latency: 125

phc latency: 1860

phc-rt delta: 37000003757

phc-tai delta: 3632

Clocks on this system are synchronized :)

### check on Apalis iMX8 Slave ###

root@apalis-imx8-07308034:~# ./check_clocks -v -d eth0

Dumping timestamps and deltas

rt tstamp: 1678954739151415597

tai tstamp: 1678954776151415847

phc tstamp: 1678954776151421106

rt latency: 125

tai latency: 250

phc latency: 3468

phc-rt delta: 37000005509

phc-tai delta: 5259

Clocks on this system are synchronized :)

---------------------------------------

5).總結

本文基于NXP iMX8系列處理器簡單演示了TSN通過gPTP協議進行網絡時間同步的機制。

審核編輯:黃飛

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 處理器
    +關注

    關注

    68

    文章

    19167

    瀏覽量

    229153
  • NXP
    NXP
    +關注

    關注

    60

    文章

    1267

    瀏覽量

    183309
  • Linux
    +關注

    關注

    87

    文章

    11230

    瀏覽量

    208932
  • 網絡時鐘
    +關注

    關注

    0

    文章

    9

    瀏覽量

    6805
  • TSN
    TSN
    +關注

    關注

    3

    文章

    238

    瀏覽量

    16816
收藏 人收藏

    評論

    相關推薦

    TSN時鐘同步 | PTP對時案例演示——基于NXP i.MX 8M Plus

    TLIMX8MP-EVM評估板的TSN時鐘同步、PTP對時案例,創龍科技TLIMX8MP-EVM是基于N
    發表于 07-10 10:28

    iMX8方案服務

    辰漢電子(股票代碼900017)iMX8是飛思卡爾/NXP出品的新一代多媒體應用處理器,采用ARM Cortex-A53和Cortex-A72的內核,具備多屏同步4K視頻解碼能力,面
    發表于 05-22 11:03

    NXP IMX8資料合集(參考手冊、數據手冊、用戶指南等)

    IMX8M微型應用處理器的數據手冊i.mx 8M微型應用處理器代表了NXP最新的視頻和音頻體驗,結合了最先進的媒體特定功能和高性能
    發表于 08-12 14:50

    NXP iMX8iMX6 ARM處理器網絡性能對比分析

    NXP iMX8已經正式發布,相較于之前NXP i.MX系列的主力產品iMX6,其性能有了大幅提升,本文就針對
    發表于 12-28 07:04

    如何在iMX8X arm處理器上利用GPU加速運算快速傅里葉變換FFT

    傳輸,邊緣計算能夠帶來更低的延時、更可靠的數據安全。但這也對邊緣計算設備帶來更大的挑戰,特別是計算性能。下面我們將介紹如何在NXP 最新的 iMX8X arm處理器上面利用 GPU 加速運算快速
    發表于 12-28 07:15

    基于NXP iMX8平臺演示如何在嵌入式Linux BSP中集成網絡瀏覽器

    BSP中集成網絡瀏覽器,包括Chromium瀏覽和基于Qtwebenine的示例瀏覽quicknanobrowser。本文所演示的平臺來自于Toradex Apalis iMX8
    發表于 12-21 08:08

    【技術分享】NXP iMX8M Mini芯片應用處理器開發板專題

    IMX8 ARM+FPGA通信案例創龍科技TLIMX8-EVM是一款基于NXP i.MX 8M Mini的4核ARM Cortex-A53 + 單核ARM Cortex-M4多核
    發表于 12-28 11:27

    請問nxp imx8平臺如何測試camera csi到v4l2的時間?

    請問nxp imx8平臺如何測試camera csi到v4l2的時間?
    發表于 02-22 06:18

    imX8 Plus處理器連續工作時間?

    親愛的: 我對 imX8 Plus 處理器有疑問1、連續工作時間?2. 故障發生前的時間是多長時間?
    發表于 03-20 06:32

    IMX8系列PCIE掛起失敗怎么解決?

    你好恩智浦 參考社區,i.MX8M Quad EVK 板掛起/恢復功能在 PCIE 接口中失敗。關于imx8系列imx8mm imx8m
    發表于 03-28 07:37

    【技術分享】NXP iMX8系列芯片應用處理器開發板(一)

    OKMX8MM-C是飛凌基于NXP公司i.MX8M Mini 四核64位處理器所設計的一款開發板,主頻最高達1.8GHz,可提供多種音頻接口,包括I2S、AC97、TDM、PDM和SP
    的頭像 發表于 12-30 14:48 ?5354次閱讀

    iMX8測評| 存儲、千兆網、4K解碼 iMX8MQ 開發板 評測

    飛凌OKMX8MQ-C開發板基于NXP iMX8系列處理器iMX8MQ設計,ARM?Cortex
    的頭像 發表于 10-28 18:55 ?3234次閱讀
    <b class='flag-5'>iMX8</b>測評| 存儲、千兆網、4K解碼 <b class='flag-5'>iMX8</b>MQ 開發板 評測

    NXP iMX8M Mini芯片應用處理器技術專題

    NXP iMX8M Mini芯片應用處理器技術專題,本期主要包含6家廠商
    的頭像 發表于 12-31 16:01 ?1984次閱讀
    <b class='flag-5'>NXP</b> <b class='flag-5'>iMX8</b>M Mini芯片應用<b class='flag-5'>處理器</b>技術專題

    「含源碼」關于NXP IMX8 Mini的圖形開發指南(GPU)案例分享!

    NXP IMX8圖形開發指南(GPU) 基于Graphical Demo,支持OpenGL、OpenVG
    的頭像 發表于 09-10 10:19 ?1999次閱讀
    「含源碼」關于<b class='flag-5'>NXP</b> <b class='flag-5'>IMX8</b> Mini的圖形開發指南(GPU)案例分享!

    基于iMX8處理器的SGTL5000音頻接口設計

    iMX8 處理器具有多路 SAI 通道,SAI1 已經被模塊片上的 SGTL5000 使用,SAI0 通道引出到模塊金手指上,并且是兼容 Apalis 標準數字音頻接口,該通道在基于其他 CPU 的 Apalis 模塊也可以直接使用。因此,我們選擇 SAI0 擴展外部 S
    發表于 12-01 14:38 ?446次閱讀
    基于<b class='flag-5'>iMX8</b><b class='flag-5'>處理器</b>的SGTL5000音頻接口設計