glibc交叉编译_TSN之linuxptp交叉编译

2387bd0598ecc2e42f63fa03f270524d.png
  • 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
2c0329218fc726d46cf723d81ca415d6.png

030848ce68529363bc6be436380c2fbb.png

从时钟得到4个精确的两个报文的收发时间,就可以计算出相应的offset与delay来了

7ae265156b0cd36c36c7e1069369a314.png

注: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下来的最新代码,当然这个代码需要进行适当修改才可以编译到我们的板子上去。

a33a178279417a344b119d6622db451d.png

3 修改makefile

需要修改的地方主要有以下几项

  • KBUILD_OUTPUT:指向Linux内核源代码地址
  • DEBUG:加入-g,即加入调试信息
  • CC:注释掉
  • CFLAGS:加入O(O1)优化等级,便与调试
  • prefix:添加安装目录,便于管理

7ee9e85fcb363b0235a670626abb4dd1.png

4 修改源码

即使修改上述的makefile,使用如下命令构建交叉编译环境,编译会因为重复定义仍会不通过

6391f44a7dbd2ef8abf9402839428426.png

这时候需要根据源码交叉编译的报错,修改注释掉missing.h文件的如下位置即可

1c3601a80c3d0579a1a7ac11c1195f7f.png

5 交叉编译

source /opt/fsl-imx-xwayland/5.4-zeus/environment-setup-aarch64-poky-linux
make -j 8

然后就成功通过交叉编译了,编译结果如下(虽然有少数的警告,但至少交叉编译成功了)

de6afaf9d4dc71d62eea2e62c3fc467a.png

生成的代码如下,利用file ptp4l可以发现文件属性正常。

423f3ef4a3cb67fdf9d37ec04a9360e8.png

使用make install即可把需要的可执行文件进行进行打包归类,然后就可以愉快的调试了。

b165b0122eb85a6cdee620f67744825b.png

利用nfs拷贝到开发板之后发现软件版本是最新编译的3.0版本

7ea3982e83cd0c0ff716091949cb3641.png

注:个人能力有限,欢迎批评指正。

原创不易,严禁剽窃!

017afdefce5511be391ff2e564885b3a.png

欢迎大家关注我的微信公众号——小白仓库 原创经验资料分享:包含但不仅限于FPGA、ARM、RISC-V、Linux、LabVIEW等软硬件开发,另外分享生活中的趣事以及感悟。目的是建立一个平台记录学习过的知识,并分享出来自认为有用的与感兴趣的道友相互交流进步。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/455063.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

声音编码

1.脉冲编码调制PCM文件格式简介 将音频数字化,其实就是将声音数字化。最常见的方式是透过脉冲编码调制PCM(Pulse Code Modulation) 。运作原理如下。首先我们考虑声音经过麦克风,转换成一连串电压变化的信号,如图一所示。这张图的横座标为秒&…

Elastic Stack简介

Elastic Stack简介 如果你没有听说过Elastic Stack,那你一定听说过ELK,实际上ELK是三款软件的简称,分别是Elasticsearch、 Logstash、Kibana组成,在发展的过程中,又有新成员Beats的加入,所以就形成了Elast…

webpack v3 结合 react-router v4 做 dynamic import — 按需加载(懒加载)

为什么要做dynamic import? dynamic import不知道为什么有很多叫法,什么按需加载,懒加载,Code Splitting,代码分页等。总之,就是在SPA,把JS代码分成N个页面份数的文件,不在用户刚进来…

go kegg_工具篇丨GO和KEGG富集不到通路?快试试这个超赞的功能分析工具吧

GO和KEGG富集分析是我们在筛选出差异表达基因之后,都会去做的套路性分析。然鹅……我相信,总有那么一些“倒霉孩子”会遇到跟我一样的窘境吧,好不容易筛选出来的差异基因,尝试了DAVID(https://david.ncifcrf.gov/)、Metascape(htt…

搭建Telnet服务器

搭建Telnet服务器 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任。 可能大家都知道现在已经很少有人用TELNET服务器, 因为它传输数据是以明文的方式,我们很容易通过抓包软件讲数据进行抓包&a…

table取tr对象 vue_Vue笔记

Vue集成了React和Angular的优点,摒弃了他们的缺点。Vue的官网:https://cn.vuejs.org/v2/api/Vue诞生于2016年,是现在非常流行的MVVM框架。Vue提供了“引包”的使用方法,初学者可以在这之下学习语法。不需要webpack,不需…

Beats入门简介

使用Beat收集nginx日志和指标数据 项目需求 Nginx是一款非常优秀的web服务器,往往nginx服务会作为项目的访问入口,那么,nginx的性能保障就变得非常重要了,如果nginx的运行出现了问题就会对项目有较大的影响,所以&…

可编程led灯带原理_SCPSD-250-04-27派克真空压力传感器故障和工作原理

SCPSD-250-04-27派克PARKER真空压力传感器故障和工作原理PARKER压力开关现货 PARKER压力传感器特价 派克真空压力传感器 PARKER数字压力开关2020年还剩最后2天了,这一年大家都过得不太容易,尤其是我自己这是30年以来过得最艰难的一年,经…

Kibana入门安装与介绍

Kibana入门 Kibana 是一款开源的数据分析和可视化平台,它是 Elastic Stack 成员之一,设计用于和 Elasticsearch 协作。您可以使用 Kibana 对 Elasticsearch 索引中的数据进行搜索、查看、交互操作。您可以很方便的利用图表、表格及地图对数据进行多元化…

友善串口工具接收数据随机换行_使用Python3+PyQT5+Pyserial 实现简单的串口工具方法...

练手项目,先上图先实现一个简单的串口工具,为之后的上位机做准备代码如下:pyserial_demo.pyimport sys import serial import serial.tools.list_ports from PyQt5 import QtWidgets from PyQt5.QtWidgets import QMessageBox from PyQt5.QtC…

Vue渲染函数

前面的话 Vue 推荐在绝大多数情况下使用 template 来创建HTML。然而在一些场景中,真的需要 JavaScript 的完全编程的能力,这就是 render 函数,它比 template 更接近编译器。本文将详细介绍Vue渲染函数 引入 下面是一个例子,如果要…

Logstash入门简介

Logstash入门简介 介绍 Logstash是一个开源的服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到最喜欢的存储库中(我们的存储库当然是ElasticSearch) 我们回到我们ElasticStack的架构图&a…

Django templates 和 urls 拆分

如果在Django项目 下面新建了blog和polls两个APP应用,在每个APP下面都各自新建自己的url和templates,那么我们需要如何进行项目配置呢? INSTALLED_APPS [ django.contrib.admin, django.contrib.auth, django.contrib.contenttypes, dja…

springboot怎么杀进程_线上服务平均响应时间太长,怎么排查?

线上服务平均响应时间太长,怎么排查?https://xie.infoq.cn/article/914b5c56000a3880016abd8d6前言:最近线上环境某个接口服务响应时间偏长,导致用户体验超差,那平时该怎么快速的排查这类问题呢?①、为代码…

MPEG音视频编解码之MP3编解码概述

2 MP3编解码原理 2.1 MP3音频压缩标准概述 MP3全称是动态影像专家压缩标准音频层面3(Moving Picture Experts Group Audio Layer III)。是当今较流行的一种数字音频编码和有损压缩格式,它设计用来大幅度地降低音频数据量,而对于…

Python实现GitBook工具

写在前面 本工具是通过Python脚本实现 GitBook 自动 生成 执行 编译 发布的功能 你可以在这里下载exe 使用 1. exe下载,并移动位置 将exe文件放在你的gitbook文件夹中,或者放在空文件夹中 2. file.md 创建 名为file.md的文件,在你要写book的目录下 注意: 这里file.md文件名…

shell脚本中用到的条件和循环语句

本博文介绍一下shell脚本中常用的条件和循环语句:条件语句:循环语句:示例:if语句:eg1.eg2.2.case语句:简单的case语句:配合循环的case语句:3.for语句:简单的for语句&…

processing动态代码大全_做一张动态海报需要多少步?

人们习惯性地把程序员跟设计师分成两种不同性质的人,好像程序员就不会有美感,设计师逻辑思维就一定会很弱,但最近几年我们发现越来越多的程序员学设计,设计师学编程的跨界故事。新媒体艺术家,邱伟豪也是其中一员&#…

手写springboot_Spring Boot 入门教程 | 图文讲解

目录一、Spring Boot 是什么二、为什么要使用 Spring Boot三、快速入门3.1 创建 Spring Boot 项目3.2 项目结构3.3 引入 Web 依赖3.4 编写第一个接口3.5 启动程序,验证效果四、总结五、GitHub 示例代码一、Spring Boot 是什么以下截图自 Spring Boot 官方文档&#…

lunix 安装python3

Linux下默认系统自带python2.6的版本,这个版本被系统很多程序所依赖,所以不建议删除,如果使用最新的Python3那么我们知道编译安装源码包和系统默认包之间是没有任何影响的,所以可以安装python3和python2共存 首先去python官网下载…