
- 0 開發環境
- 1 linuxptp是什么
- 2 為什么要交叉編譯linuxptp
- 3 修改makefile
- 4 修改源碼
- 5 交叉編譯
0 開發環境
- 筆記本:ubuntu18.04.5,內核版本為5.3
- 開發板:imx8mp-evk
- 內核版本:Linux5.4.24
- 交叉編譯工具鏈:fsl-imx-xwayland-glibc-x86_64-imx-image-core-aarch64-imx8mpevk-toolchain-5.4-zeus.sh
注:下面的可能會遺漏部分細節,但主要的部分基本都寫出來了,應該無大礙。
注:以下步驟雖然針對的imx8mp-evk,但只要是aarch64架構的芯片,大部分操作都通用的。
注:這是個人的踩坑記錄,雖然可以解決問題,但估計不是最好的解決方案,歡迎評論區一起探討。
1 linuxptp是什么
This software is an implementation of the Precision Time Protocol (PTP) according to IEEE standard 1588 for Linux. The dual design goals are to provide a robust implementation of the standard and to use the most relevant and modern Application Programming Interfaces (API) offered by the Linux kernel. Supporting legacy APIs and other platforms is not a goal.
我利用它主要是為了測試TSN的802.1AS特性,使用的軟件為
- ptp4l
- Implementation of PTP (Ordinary Clock, Boundary Clock)
- phc2sys
- Synchronize two clocks (typically PHC and system clock)
- pmc (PTPManagement Client)
- Send PTP management messages to PTP nodes
如果對內部的實現協議感興趣,可以見下面鏈接,以及未來的總結。
IEEE1588 ( PTP ) 協議簡介?www.cnblogs.com

從時鐘得到4個精確的兩個報文的收發時間,就可以計算出相應的offset與delay來了

注:PTP并沒有介紹的那么簡單,還有FSM、PID、Filter等一系列組件,構建一個完整的時間同步系統。
2 為什么要交叉編譯linuxptp
linuxptp這個組件在大部分嵌入式linux系統中是標配的,至于為什么要交叉編譯的原因是想要利用gbd調試,而想要調試就需要在交叉編譯加入調試信息才可以進行調試。
The Linux PTP Project?linuxptp.sourceforge.net可以通過git下載最新的版本進行編譯
git clone git://git.code.sf.net/p/linuxptp/code linuxptp
下面是git下來的最新代碼,當然這個代碼需要進行適當修改才可以編譯到我們的板子上去。

3 修改makefile
需要修改的地方主要有以下幾項
- KBUILD_OUTPUT:指向Linux內核源代碼地址
- DEBUG:加入-g,即加入調試信息
- CC:注釋掉
- CFLAGS:加入O(O1)優化等級,便與調試
- prefix:添加安裝目錄,便于管理

4 修改源碼
即使修改上述的makefile,使用如下命令構建交叉編譯環境,編譯會因為重復定義仍會不通過

這時候需要根據源碼交叉編譯的報錯,修改注釋掉missing.h
文件的如下位置即可

5 交叉編譯
source /opt/fsl-imx-xwayland/5.4-zeus/environment-setup-aarch64-poky-linux
make -j 8
然后就成功通過交叉編譯了,編譯結果如下(雖然有少數的警告,但至少交叉編譯成功了)

生成的代碼如下,利用file ptp4l
可以發現文件屬性正常。

使用make install
即可把需要的可執行文件進行進行打包歸類,然后就可以愉快的調試了。

利用nfs拷貝到開發板之后發現軟件版本是最新編譯的3.0版本

注:個人能力有限,歡迎批評指正。
原創不易,嚴禁剽竊!

歡迎大家關注我的微信公眾號——小白倉庫 原創經驗資料分享:包含但不僅限于FPGA、ARM、RISC-V、Linux、LabVIEW等軟硬件開發,另外分享生活中的趣事以及感悟。目的是建立一個平臺記錄學習過的知識,并分享出來自認為有用的與感興趣的道友相互交流進步。