初探ethercat IGH协议栈(交叉编译)

news2024/9/22 17:29:59

说明,

1)不要着急编译,建议读完全文,再参照编译;

2)IGH编译是需要Linux内核源码的,还有打rt补丁;

3)依赖的内核版本最好是目标设备的一样;

4)内核版本不要太低,也不要太高,否则可能出现网卡不支持的情况;

5)本文使用的IGH源码版本是1.6.0。

一、以下操作在宿主机执行

1,下载、切换分支、生成configure

git clone https://gitlab.com/etherlab.org/ethercat.git
cd ethercat
git checkout stable-1.6
autoreconf -i

2,编译、安装

mkdir etherlab
说明:--with-linux-dir= 内核源码路径
sudo ./configure  --prefix=/home/igh/ethercat/etherlab \
--with-linux-dir=/home/debian12/x86/kernel/6.4.0/linux-6.4/ \
--enable-8139too=no --enable-wildcards=yes 
sudo make 
sudo make all modules
sudo make install

3,拷贝两个模块到etherlab文件,然后打包

ec_master.ko 在ethercat/mater下面,
ec_generic.ko 在ethercat/devices下面

二、以下操作在目标机执行

4,部署环境,将上一步生成的ethercat解压到目标设备

cd etherlab
cp ec_master.ko /lib/modules/6.4.0-rt8+/
cp ec_generic.ko /lib/modules/6.4.0-rt8+/
depmod -a

cp etc/init.d/ethercat /etc/init.d/
cp bin/ethercat /bin/

mkdir /etc/sysconfig -p
cp etc/sysconfig/ethercat /etc/sysconfig/
echo KERNEL==\"EtherCAT[0-9]*\", MODE=\"0664\" > /etc/udev/rules.d/99-EtherCAT.rules

insmod /lib/modules/6.4.0-rt8+/ec_master.ko
insmod /lib/modules/6.4.0-rt8+/ec_generic.ko

5,根据自己的实际情况做修改

1)配置路径
# grep ethercat.conf  sbin/ethercatctl
ETHERCAT_CONFIG=/home/igh/ethercat/etherlab/etc/ethercat.conf
2)网卡名称,模块名称
# grep MASTER0_DEVICE etc/ethercat.conf
MASTER0_DEVICE="eth0"
# grep DEVICE_MODULES etc/ethercat.conf
DEVICE_MODULES="igb"

6,启动ethercat,搜索设备

# /etc/init.d/ethercat start
Starting EtherCAT master 1.6.0  done
# ethercat master
Failed to obtain number of masters: Failed to open master device /dev/EtherCAT0: No such file or directory

问题1:Failed to obtain number of masters: Failed to open master device /dev/EtherCAT0: No such file or directory

这个问题的根本其实是没有成功加载驱动,为什么没有呢?对于我的环境,网卡驱动应该是用igb的,如我上面配置的DEVICE_MODULES="igb",但是我目前选用的内核版本太高了,当前我使用的IGH可支持的igb驱动是6.1,

所以就在./configure时报错,

checking for kernel for igb driver... configure: error: kernel 6.4 not available for igb driver!

当然,如果你的是通用网卡,这个问题就不存在,并且DEVICE_MODULES="generic",具体是不是通用网卡,在etc/ethercat.conf里面有说明,如果不是通用的,就要在configure时支持它,比如我的就是要加--enable-igb。

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

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

相关文章

“爆炸性更新!JDK 17携全新语法特性强势来袭,开发者必看的升级亮点“(1)

找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程(ಥ_ಥ)-CSDN博客 所属专栏:Java进化论 目录 背景 yield关键字 var关键字 空指针异常 密封类 接口中的私有方法 instanceof关键字 背景 Java 8 虽然曾经是使用…

基于Java技术的网吧管理系统

你好呀,我是计算机学姐码农小野!如果有相关需求,可以私信联系我。 开发语言:Java 数据库:MySQL 技术:Java技术,B/S结构 工具:MyEclipse,MySQL 系统展示 首页 个人中…

中西部公关新篇章:赛氪网赋能新质生产力赛事,引领行业潮流

2024年7月7日,武汉光谷盛况空前,中西部公共关系协会共同体多边合作平台(以下简称“共同体”)举办了2024年度中西部公关协会会长、秘书长专题交流会,本次会议主题为“加快新质生产力,推进公关行业新格局&…

Google账号输入用户名和密码后提醒要到手机通知点是,还要点击数字,但是我手机收不到

有一些朋友换了一个新的电脑后手机登录谷歌账号时,用户名和密码都正确输入以后,第三步弹出一个提示,要在手机上的通知栏点击是,并且点击手机上相应的数字才能继续登录。 但是自己的手机上下拉通知栏却没有来自谷歌的通知&#xf…

用例子和代码了解词嵌入和位置编码

1.嵌入(Input Embedding) 让我用一个更具体的例子来解释输入嵌入(Input Embedding)。 背景 假设我们有一个非常小的词汇表,其中包含以下 5 个词: "I""love""machine"&qu…

Greenplum(三)【分布式事务和两阶段提交协议】

1、事务实现原理和 WAL(单机) 属性含义数据库系统实现Atomic(原子性)事务中的操作要么全部正确执行,要么完全不执行(要么成功、要么失败)Write Ahead Logging 预写日志,分布式事务&…

牛客周赛 Round 50 解题报告 | 珂学家

前言 题解 数学场,对数学头痛, T_T. A. 小红的最小最大 题型: 签到 a, b, x list(map(int, input().split()))if min(a, b) x > max(a, b):print ("YES") else:print ("NO")B. 小红的四则运算(easy) 思路: 贪心…

职场中的3个误区,你踩坑了吗?

1、个人发展比工资待遇更重要 这句话也不能说是完全错的,但是你要明白能给你提供发展空间的公司,待遇也不会差到哪里去,而且随着你个人能力的提升,发展也会越来越好,你的待遇也自然水涨船高,这个道理其实大…

乐鑫ESP-NOW与Wi-Fi SoC方案家居设备无缝连接,启明云端乐鑫代理商

随着科技的不断进步,智能家居逐渐成为现代生活的一部分。ESP-NOW技术以其独特的无线通信能力,为智能家居领域带来了一场革命。 ESP-NOW是一种由乐鑫定义的无线通信协议,它能够在无需路由器的情况下,实现设备间的直接、快速、低功…

如何高效学习(一)

什么是学习?学习的本质是什么?如何学习?如何更加高效的学习 以下内容均为观看B站UP主(硬核学长2077)所做总结和自我分析 一、自我介绍 ​ 我,一个二三线城市小小程序员,在高中学习就很一般,但当时并没有特…

解锁敦煌网成功秘籍:批量注册买家号测评的高效策略

敦煌网(DHgate)作为一个跨境电商平台,搭建境外本土网络环境并实现批量注册买家号下单,需要遵循一系列严谨的步骤和考虑多个关键因素。以下是一个概括性的指南: 一、环境要求 国外服务器:首先,…

WPF 初识依赖属性

依赖属性的意义和作用 核心模块内存共享,节省空间数据绑定、样式、模板、动画。。。。如果没有依赖属性,这个框架就是一个控件框架 相当于Winform 依赖属性的基本定义 基本过程:声明、注册、包装 在需要写依赖属性的类中,继承…

Axure第12享:Google加载Axure扩展程序

1、需求描述 在双击打开RP文件进行预览时,提示要为Google浏览器加载Extension(扩展程序),如下图所示。 2、解决思路 按照系统指导的操作步骤,但要注意1点,加载“扩展程序”时是选择整个文件夹&#xff0c…

3款ui设计师必备的高效软件,一定要收藏!

UI设计小伙伴们,你们是否在寻找那些能够让设计工作事半功倍的插件呢?今天,我要为大家带来3款UI设计软件中的高效软件,它们不仅能够极大提升我们的工作效率,还能让我们的设计更加专业和精致。让我们一起来看看这些不容错…

动手学深度学习54 循环神经网络

动手学深度学习54 循环神经网络 1. 循环神经网络RNN2. QA 1. 循环神经网络RNN h t h_t ht​ 与 h t − 1 h_{t-1} ht−1​ x t − 1 x_{t-1} xt−1​有关 x t x_t xt​ 与 h t h_t ht​ x t − 1 x_{t-1} xt−1​ 有关 怎么把潜变量变成RNN–假设更简单 潜变量和隐变量的区…

透明加密软件核心技术分享|十款好用的透明加密软件分享

透明加密软件的核心技术在于其能够自动、实时地对文件进行加密和解密,而这个过程对最终用户来说是无感的。这种技术在不改变用户操作习惯的前提下,增强了数据的安全性。下面是透明加密软件的一些核心技术要点。 实时加密与解密:软件在文件被打…

虚拟内存【Linux】

虚拟内存 为什么需要虚拟内存Linux虚拟内存的结构32位系统下的虚拟地址空间64位系统下的虚拟地址空间页表多级页表TLB 流程虚拟内存的作用 为什么需要虚拟内存 为了在进行多进程编码进行内存访问的时候保持内存的隔离性,数据安全性,所以出现了虚拟内存。…

C++--智能指针

普通指针创建动态内存的问题: 1.new和new[]的内存需要使用delete和delete []释放。 2.有时忘记释放内存。 3.不知该在何时释放内存。 智能指针的优点: 在不需要对象时自动释放对象,从而避免内存泄漏和其他与内存管理相关的问题。 智能指针有:unique_ptr,share…

可转债之强赎条款

摘要:每天学习一点金融小知识 做可转债投资,强赎风险是特别需要注意的,若投资者没有及时采取措施,就有可能造成很大的损失。本文从可转债的定义、强赎条款的原因及强赎的情况几个方面来介绍下可转债的强赎条款。 什么是可转换债券…

算法——同步算法

在力扣有这样一道题求交集,与此类似的还有求差集,相关的解法有很多。我这里提供一种思路:利用C的容器set对这两个数组去重,遍历数组插入set即可去重。再同时遍历比较set的每个元素。 代码实现很简单,如下所示&#xff…