IgH Master环境搭建

目标:实时linux内核中运行IgH主站,ethercat的用户态工具能看到主站信息。

一、需要的软件

1,vbox虚拟机

https://www.virtualbox.org/,下载VirtualBox 7.0,
备注:windows中不要用wsl开发,wsl运行unbuntu后,没有grub相关的目录,update-grub无法正确更新引导分区。

2,Ubuntu 20.04

http://releases.ubuntu.com/20.04/ ,下载ubuntu-20.04.6-desktop-amd64.iso

3,rt linux

方法一,打补丁方式(本文采用的方法):
原生kernel:https://mirrors.edge.kernel.org/pub/linux/kernel/
实时补丁:https://git.kernel.org/pub/scm/linux/kernel/git/rt/linux-rt-devel.git

方法二,下载已经打好补丁的kernel:
https://git.kernel.org/pub/scm/linux/kernel/git/rt/linux-stable-rt.git/refs/tags

4,IgH主站

https://gitlab.com/etherlab.org/ethercat/-/branches,下载stable-1.5源码

二、运行rt linux

1,ubuntu20.04环境

vbox安装ubuntu-20.04.6-desktop-amd64.iso

2,配置ubuntu系统

参考博文,https://blog.csdn.net/geshifei/article/details/111937461

  • 若无法打开terminal,参考下面解决:

CTRL + ALT + F3 # 进入命令行模式(需要返回桌面时CTRL + ALT + F1)

root@ubuntu-20:/home/gsf# vim /etc/default/locale

把文件中的 “en_US” 改成 “en_US.UTF-8”

保存退出

root@ubuntu-20:/home/gsf# locale-gen --purge

root@ubuntu-20:/home/gsf# reboot

  • 安装编译IgH用到的工具:root@ubuntu-20:/home/gsf# apt-get install autoconf autogen libtool

3,编译rt linux

下载原生5.4.28内核(https://mirrors.edge.kernel.org/pub/linux/kernel/)
下载对应的实时补丁v5.4.28-rt19(https://git.kernel.org/pub/scm/linux/kernel/git/rt/linux-stable-rt.git/refs/tags)

打补丁:

root@ubuntu-20:/home/gsf/IgH# ls

linux-5.4.28.tar.gz patch-5.4.28-rt19.patch

root@ubuntu-20:/home/gsf/IgH#

解压kernel

root@ubuntu-20:/home/gsf/IgH# tar zxvf linux-5.4.28.tar.gz

打实时补丁

root@ubuntu-20:/home/gsf/IgH# cp patch-5.4.28-rt19.patch ./linux-5.4.28

root@ubuntu-20:/home/gsf/IgH# cd linux-5.4.28

root@ubuntu-20:/home/gsf/IgH/linux-5.4.28# patch -p1 < patch-5.4.28-rt19.patch

编译内核:

root@ubuntu-20:/home/gsf/IgH/linux-5.4.28# make menuconfig

General setup -> Preemption Model,选中Real-Time内核:

root@ubuntu-20:/home/gsf/IgH/linux-5.4.28# make-kpkg --rootcmd fakeroot --initrd kernel_image kernel_headers

如编译问题,参考附2。

安装内核:

root@ubuntu-20:/home/gsf/IgH/linux-5.4.28# cd ..

root@ubuntu-20:/home/gsf/IgH/linux-5.4.28# dpkg -i linux-headers-5.4.28-rt19_5.4.28-rt19-10.00.Custom_amd64.deb linux-image-5.4.28-rt19_5.4.28-rt19-10.00.Custom_amd64.deb

修改grub配置,重启ubuntu后可以选择内核::

root@ubuntu-20:/home/gsf# vim /etc/default/grub

If you change this file, run 'update-grub' afterwards to update

/boot/grub/grub.cfg.

For full documentation of the options in this file, see:

# info -f grub -n 'Simple configuration'

GRUB_DEFAULT=0

#注释掉下面一行 #GRUB_TIMEOUT_STYLE=hidden

#默认超时值0,改成20 GRUB_TIMEOUT=20

GRUB_DISTRIBUTOR=lsb_release -i -s 2> /dev/null || echo Debian

#字符串"quiet splash"改成"text" GRUB_CMDLINE_LINUX_DEFAULT="text"

GRUB_CMDLINE_LINUX=""

root@ubuntu-20:/home/gsf# update-grub

4,启动rt linux

reboot重启系统,进入grup界面,选择刚刚编译的rt内核启动。

启动后,检查一下rt内核是否加载:

gsf@ubuntu-20:~$ uname -a

Linux ubuntu-20 5.4.28-rt19 #2 SMP PREEMPT Mon Sep 18 19:19:46 CST 2023 x86_64 x86_64 x86_64 GNU/Linux

三、运行IgH Master

1,编译IgH

https://gitlab.com/etherlab.org/ethercat/-/branches,下载ethercat-stable-1.5.tar

root@ubuntu-20:/home/gsf/IgH/ethercat-stable-1.5# ./configure --enable-8139too=no (注:需要disable 8139too网卡,见附2)

root@ubuntu-20:/home/gsf/IgH/ethercat-stable-1.5# make all modules

root@ubuntu-20:/home/gsf/IgH/ethercat-stable-1.5# make modules_install install

root@ubuntu-20:/home/gsf/IgH/ethercat-stable-1.5# depmod

编译出来的inti脚本/usr/local/etc/init.d目录中的(不同linux发行版可能有区别,ubuntu20.04对应这个路径):

root@ubuntu-20:/home/gsf/IgH/ethercat-stable-1.5# ln -s /usr/local/etc/init.d/ethercat /etc/init.d/ethercat

root@ubuntu-20:/home/gsf/IgH/ethercat-stable-1.5#

root@ubuntu-20:/home/gsf/IgH/ethercat-stable-1.5# mkdir /etc/sysconfig

root@ubuntu-20:/home/gsf/IgH/ethercat-stable-1.5# cp /usr/local/etc/sysconfig/ethercat /etc/sysconfig/ethercat

root@ubuntu-20:/home/gsf/IgH/ethercat-stable-1.5#

2,配置ethercat device

root@ubuntu-20:/usr/local/etc/init.d# vim /etc/init.d/ethercat

#修改/etc/sysconfig/ethercat的两处位置

MASTER0_DEVICE="ifconfig命令看到的mac地址"

DEVICE_MODULES="generic"

3,启动IgH

root@ubuntu-20:/usr/local/etc/init.d# /etc/init.d/ethercat start

Starting EtherCAT master 1.5.2 done

如果启动出现错误,参考附3。

此时,IgH Master已经跑起来,可通过ethercat用户空间工具进行调试,比如:

附:

1,rt linux编译BTF报错

LD vmlinux.o MODPOST vmlinux.o MODINFO modules.builtin.modinfo BTF: .tmp_vmlinux.btf: pahole (pahole) is not available Failed to generate BTF for vmlinux Try to disable CONFIG_DEBUG_INFO_BTF make[1]: * [Makefile:1076: vmlinux] Error 1 make[1]: Leaving directory '/home/gsf/IgH/linux-5.4.28' make: * [debian/ruleset/targets/common.mk:301: debian/stamp/build/kernel] Error 2 root@ubuntu-20:/home/gsf/IgH/linux-5.4.28# vim .config root@ubuntu-20:/home/gsf/IgH/linux-5.4.28#

解决:config文件中关闭CONFIG_DEBUG_INFO_BTF选项。

2,IgH编译config出错

root@ubuntu-20:/home/gsf/IgH/ethercat-stable-1.5# ./configure

checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes

checking dynamic linker characteristics... (cached) GNU/Linux ld.so

checking how to hardcode library paths into programs... immediate

checking whether to build kernel modules... yes

checking for Linux kernel sources... /home/gsf/IgH/linux-5.4.28 (Kernel 5.4)

checking for Linux modules installation directory... ethercat

checking for kernel for 8139too driver... configure: error: kernel 5.4 not available for 8139too driver!

解决:当前内核不支持8139too网卡,disable掉8139too重新执行 ./configure --enable-8139too=no

3,IgH启动错误

root@ubuntu-20:/usr/local/etc/init.d# /etc/init.d/ethercat start

Starting EtherCAT master 1.5.2 modprobe: ERROR: could not insert 'ec_master': Invalid argument

failed

解决:参考“配置ethercat device”一节,修改 /etc/init.d/ethercat中的mac地址。

参考资料

  • rt linux 官网:https://wiki.linuxfoundation.org/realtime/start

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【VRTK】【VR开发】【Unity】6-设置interactor和虚拟手

【概述】 本篇先了解什么是interactor,什么是interactable。接着开始实操设置VRTK提供的默认控制器模型,其实就是两个长方体。接下来将长方体更换成更沉浸的带动画动作的虚拟手。最后则是介绍如何自由设置自定义手。 【Interactor和Interactable】 Interactor:互动动作的…

【机器学习】特征工程:特征预处理,归一化、标准化、处理缺失值

特征预处理采用的是特定的统计方法&#xff08;数学方法&#xff09;将数据转化为算法要求的数字 1. 数值型数据 归一化&#xff0c;将原始数据变换到[0,1]之间 标准化&#xff0c;数据转化到均值为0&#xff0c;方差为1的范围内 缺失值&#xff0c;缺失值处理成均值、中…

2023 年 数维杯(C题)国际大学生数学建模挑战赛 |数学建模完整代码+建模过程全解全析

问题重述 信息技术和人工智能的迅速发展&#xff0c;特别关注大型语言模型&#xff08;Large Language Models&#xff0c;LLMs&#xff09;在全球范围内的广泛应用&#xff0c;以ChatGPT为代表。这些模型在机器人导航、语音识别、图像识别、自然语言处理和智能推荐等领域表现…

yolo增加Inner-IoU,一文搞定(Inner-SIoU,Inner-WIoU,Inner-EIoU,Inner-MPDIoU)

论文&#xff1a;https://arxiv.org/pdf/2311.02877.pdf 简介 随着检测器的迅速发展, 边框回归取得了巨大的进步。然而&#xff0c;现有的基于 IoU 的边框回归仍聚焦在通过加入新的损失项来加速收敛&#xff0c;忽视 IoU 损失项其自身的限制。尽管理论上 IoU 损失能够有效描述…

基于IDEA 进行Maven依赖管理

1. 依赖管理概念 Maven 依赖管理是 Maven 软件中最重要的功能之一。Maven 的依赖管理能够帮助开发人员自动解决软件包依赖问题&#xff0c;使得开发人员能够轻松地将其他开发人员开发的模块或第三方框架集成到自己的应用程序或模块中&#xff0c;避免出现版本冲突和依赖缺失等…

Davinci Developer Classic SWC新建port并连接非complete port方式

环境 在automic SWC新建port 在父SWC的port view里面找到对应的信号&#xff0c;有件选择创建连接到SWC上 <完>

FLMix: 联邦学习新范式——局部和全局的结合

文章链接&#xff1a;Federated Learning of a Mixture of Global and Local Models 发表期刊&#xff08;会议&#xff09;: ICLR 2021 Conference&#xff08;机器学习顶会&#xff09; 目录 1. 背景介绍2. 传统联邦学习3. FL新范式理论逻辑重要假设解的特性 本博客从优化函…

简单介绍二分类问题评价指标

正确率(Accuracy) Accuracy ​(TP TN)/(TP TN FP FN)精准率(Precision) 记忆&#xff1a;在识别出某标签中正确的比例&#xff1b; 比如识别为某标签的一共有105个&#xff0c;其中有95个是识别对的&#xff0c;那Precision就是95/105&#xff1b; TP/(TPFP)召回率(Recall…

【汇编】内存中字的存储、用DS和[address]实现字的传送、DS与数据段

文章目录 前言一、内存中字的存储1.1 8086cpu字的概念1.2 16位的字存储在一个16位的寄存器中&#xff0c;如何存储&#xff1f;1.3 字单元 二、用DS和[address]实现字的传送2.1 字的传送是什么意思&#xff1f;2.2 要求原理解决方案&#xff1a;DS和[address]配合8086传送16字节…

OpenCV入门6——图像基本变换

文章目录 图像的放大与缩小缩放算法放大 图像的翻转图像的旋转仿射变换之图像平移仿射变换之获取变换矩阵仿射变换之变换矩阵之二OpenCV透视变换 图像的放大与缩小 缩放算法 # -*- coding: utf-8 -*- import cv2 import numpy as npimg cv2.imread(E://pic//4.jpg) # (600, 48…

前端学习笔记--TypeScript

1. typescript是什么 Typescript是由微软开发的一款开源的编程语言Typescript是Javascript的超集&#xff0c;遵循最新的ES5/ES6规范。TypeScript扩展了Javascript语法TypeScript更像后端Java、C#这样的面向对象语言可以让JS开发大型企业应用越来越多的项目是基于TS的&#xf…

深入理解TensorFlow:计算图的重要性与应用

TensorFlow是一个流行而强大的机器学习框架&#xff0c;其核心概念之一是计算图&#xff08;computation graph&#xff09;。计算图在TensorFlow中扮演着重要角色&#xff0c;作为一种数据流图表示形式&#xff0c;它能够将计算的过程可视化&#xff0c;同时方便优化、分布式计…

2023.11.16使用原生js和canvas实现图片矩形框标注功能

2023.11.16使用原生js和canvas实现图片矩形框标注功能 做训练的时候需要一些数据集&#xff0c;但是网上数据集有时不能满足自身的使用需求&#xff0c;自己编制一个标注软件实现数据采集功能。 记录的数据集可以传入后端&#xff0c;在后端再次进行处理。 <!DOCTYPE htm…

Linux - 用户级缓冲区和系统缓冲区 - 初步理解Linux当中文件系统

前言 文件系统 我们先来看两个例子&#xff1a; 这个程序输出&#xff1a; 此时的输出也满足的我们预期。 我们也可以把 程序执行结果&#xff0c;输出重定向到 一个文件当中: 当我们在代码的结尾处&#xff0c;创建了子进程&#xff0c;那么输出应该还是和上述是一样的&…

C# 实时监控双门双向门禁控制板源码

本示例使用设备&#xff1a;实时网络双门双向门禁控制板可二次编程控制网络继电器远程开关-淘宝网 (taobao.com) using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.…

数据库实验报告(六)

实验报告&#xff08;六&#xff09; 1、实验目的 &#xff08;1&#xff09; 掌握关联查询的用法 &#xff08;2&#xff09; 掌握集合查询的区别和用法 &#xff08;3&#xff09; 掌握EXISTS的用法 2、实验预习与准备 &#xff08;1&#xff09; 了解ANY&…

在docker中部署MySQL

目录 1、拉取最新的镜像 2、创建mysql容器实例 3、启动mysql实例 4、进入mysql 交互环境 5、登录MySQL数据库 6、尽情享用mysql 1、拉取最新的镜像 docker image pull mysql 2、创建mysql容器实例 第一次执行&#xff0c;需要先创建容器并启动&#xff08;容器名是mys…

分享一个自用的Win11护眼主题(无需下载)

先放上几张效果图 设置方法 首先&#xff0c;把主题设置为高对比度主题——沙漠。 然后点击编辑&#xff0c;依次设置为以下值 背景&#xff1a;#1C5E75文本&#xff1a;#FFF5E3超链接&#xff1a;#6EFFA4非活动文本&#xff1a;#FFF5E3选定文本&#xff1a;#903909、#8EE3F0…

巾帼调查队开展实务调查技能,促全职妈妈联增收

2024年11月14日上午&#xff0c;由罗湖区妇联主办、罗湖区懿米阳光公益发展中心承办的“巾帼调查队—社区女性增值计划”项目第三期活动在罗湖区妇儿大厦六楼成功举办&#xff0c;30名阳光妈妈及全职妈妈参与了此次调查实务技巧培训。 在培训开始之前&#xff0c;巾帼调查队的创…

深度探讨丨关于工作量证明的常见误解

有一种基本误解认为&#xff0c;工作量证明机制在本质上是不可扩展的&#xff0c;并且会产生过度的能源耗费。 按照工作量证明区块链的最初设计&#xff0c;以及BSV区块链协会的推广&#xff0c;这一技术旨在实现可扩容性&#xff0c;同时确保高效能系统内的安全性和互操作性。…