IGH EtherCAT Master Linux on PC移植

前言

IGH EtherCAT Master  1.5.2 Documentation:

The list below gives a short summary of the master features.

• Designed as a kernel module for Linux 2.6 / 3.x.

由于以上原因,故采用Ubuntu14.04.6(64位),下载地址。

采用VirtualBox虚拟机安装方式,安装完成后,用 uname -r  发现内核版本是4.4.0-31。故要内核降级

注:(1)系统版本可通过  cat /etc/issue 查看。

       (2)按照igh的官网说明,如果没有使用官方实现的驱动的网卡,可以不使用实时内核。

内核降级 

1.不采用实时内核    参照 Ubuntu 16.04 内核降级

可先通过  apt-cache  search linux-image 查看可用的内核

(1)执行以下命令安装

$ sudo apt-get install linux-image-extra-3.16.0-43-generic  linux-headers-3.16.0-43-generic

(2)执行以下命令查看是否安装成功

$ dpkg -l | grep 3.16.0-43-generic

(3)用编辑器打开 grub 配置文件

$ sudo gedit /etc/default/grub

找到   GRUB_DEFAULT=0

修改为 GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 3.16.0-43-generic"

(4) 保存退出,然后执行以下命令更新 Grub 引导

$ sudo update-grub

(5)更新完成后重启系统

$ sudo reboot

(6)不出意外的话重启系统后启用的就是新的内核了,执行以下命令查看一下

$ uname -r

2.实时内核 xenomai   大部分转自 Ethercat解析(三)之Ubuntu添加Xenomai实时内核补丁

考虑到使用 xenomai 作为实时内核,故采用内核3.14.44,下载地址。

xenomai v3.0.9 下载地址,下载处  见下IGH EtherCAT Master Linux on PC移植_第1张图片

(1)配置并安装Xenomai实时补丁源码 

① 解压xenomai-3.0.9.tar.bz2

tar -vxf xenomai-3.0.9.tar.bz2
② 进入xenomai源码

cd xenomai-3.0.9

③ 安装xenomai所需的软件依赖环境

sudo apt-get install devscripts debhelper dh-kpatches findutils autotools-dev autoconf automake libtool
④ 配置xenomai

./configure --prefix  /opt/

以下为可选配置:

--prefix xenomai的安装目录默认的是/usr/xenomai 
--enable-debug 使能调试符号-g默认的是不使能 
--enable-smp 使能xenomai库对SMP的支持 ,假如客户端的应用运行在支持SMP的内核上一定要使能。 
--with-atomic-ops= 这个是个选择使用何种方式进行原子访问操作:假如–with-atomic-ops=builtins 则选择使用GCC的嵌入的部件,比如 _sync*()等函数;假如–with-atomic-ops=ad-hoc则选择使用xenomai方式实现。假如用户没有指定的话,编译的时候除非GCC是过时的,否则默认选择–with-atomic-ops=builtins -------没有该选项
--enable-x86-sep 使能x86sep指令 -------没有该选项
--enable-x86-tsc 使能x86的tsc -------没有该选项
--enable-arm-tsc 使能arm 的tsc,为了提高时钟精确度,一般选择使能 -------没有该选项
--enable-arm-quirks 使能一些arm片上系统特殊特性,目前支持sa1100和xscale3。-------没有该选项


⑤ 编译和安装

make

sudo make install

(2) 修改3.14.44内核及打实时补丁 

① 安装编译内核所需要的依赖文件

sudo apt-get install kernel-package libncurses-dev fakeroot zlib1g-dev

② 解压3.14.44内核源码包  注:内核和xenomai最好解压在同一个文件夹中

tar -Jvxf linux-3.14.44.tar.xz

③ 进入内核目录

cd linux-3.14.44/

④ 给3.14.44内核打实时补丁

在执行下面命令之前,在解压的xenomai-3.0.9目录下创建ksrc/arch/x86/patches目录,将下载的 ipipe-core-3.14.44-x86-12.patch 复制到ksrc/arch/x86/patches目录下。

../xenomai-3.0.9/scripts/prepare-kernel.sh  --arch=amd64 --linux=. --adeos=../xenomai-3.0.9/ksrc/arch/x86/patches/ipipe-core-3.14.44-x86-12.patch
⑤ 将原先内核的配置拷贝到当前目录下并适当的修改

cp /boot/config-$(uname -r)  .config
sudo gedit config-$(uname -r) 后将 CONFIG_CC_STACKPROTECTOR=y、CONFIG_CC_STACKPROTECTOR_REGULAR=y注释掉

⑥ 配置内核选项

make menuconfig

以下为我用的配置选项:

* General setup
  --> Local version - append to kernel release: -xenomai-3.0.9
  --> Timers subsystem
      --> High Resolution Timer Support (Verify you have HRT ON)
* Real-time sub-system
  --> Xenomai (Enable)
  --> Nucleus (Enable)
* Power management and ACPI options
  --> Run-time PM core functionality (Disable)
  --> ACPI (Advanced Configuration and Power Interface) Support
      --> Processor (Disable)
  --> CPU Frequency scaling
      --> CPU Frequency scaling (Disable)
  --> CPU idle
      --> CPU idle PM support (Disable)
* Pocessor type and features
  --> Processor family
      --> Core 2/newer Xeon (if \"cat /proc/cpuinfo | grep family\" 返回值 6, 选择 Generic otherwise)
  --> SMT (Hyperthreading) scheduler support (Disable)
  --> Preemption Model
      --> Voluntary Kernel Preemption (Desktop)
 * Device Driver
  -->GPIO Support
      --> Intel EG20T PCH/LAPIS Semiconductor***(Disable)
  -->USB Support
      --> USB Gadget Support (Disable)
  -->stagging drivers
      --> Data Aquisation Support(comedi) (Disable)
⑦ 编译内核,编译时间取决于CPU,时间很长

CONCURRENCY_LEVEL=$(nproc) make-kpkg --rootcmd fakeroot --initrd kernel_image kernel_headers
⑧ 安装内核

cd ..

sudo dpkg -i linux-*.deb

(3) 配置GRUB内核引导 

① 修改和添加grub配置

sudo gedit /etc/default/grub 后 更改grub配置如下:
GRUB_DEFAULT=saved 
GRUB_SAVEDEFAULT=true 
#GRUB_HIDDEN_TIMEOUT=0

#GRUB_HIDDEN_TIMEOUT_QUIET=true

GRUB_TIMEOUT=5

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash i915.i915_enable_rc6=0 i915.powersave=0 noapic xeno_nucleus.xenomai_gid=1234 xenomai.allowed_group=1234"

② 更新grub配置

sudo update-grub

 ③ 重启

sudo reboot

备注:重启时选择带有实时内核补丁的内核进行启动Ubuntu系统,启动后可使用命令uname -r,即可看到Ubuntu已经加载了带有实时内核补丁的内核。

IGH EtherCAT Master源码编译  大部分转自IGH EtherCAT Master Linux on PC编译教程

源码下载地址。

(1) 解压源码包

tar -xjf ethercat-1.5.2.tar.bz2
cd ethercat-1.5.2/

(2) 配置编译

./configure  --enable-8139too=no --enable-wildcards=yes

make

这个地方可能会遇到g++未安装的问题,如果遇到,按照下面的方式安装:

sudo apt-get update
sudo apt-get install g++

继续

make modules

官方文档中所有配置如下:

IGH EtherCAT Master Linux on PC移植_第2张图片

(3) 安装

sudo make install
sudo make modules_install

这时候可能又会遇到问题,描述为3个“Can't read private key”,跳过不管它,gethub上有人说这个不会对程序有影响。

(4) 配置主站

 安装完成后,会在/opt/目录下生成一个etherlab/文件夹,其中包括库文件什么的。进入这个文件夹

cd /opt/etherlab  
sudo gedit etc/sysconfig/ethercat

继续

在MASTER0_DEVICE=""填写你的以太网卡的MAC地址(ip addr 获取),

DEVICE_MODULES="generic",保存退出

在/etc目录下新建一个sysconfig/的文件夹,将修改后的ethercat文件复制到刚刚新建的文件中:

sudo mkdir /etc/sysconfig/
sudo cp etc/sysconfig/ethercat  /etc/sysconfig/
sudo ln -s /opt/etherlab/etc/init.d/ethercat  /etc/init.d/

为了让EtherCAT 主站能开机自启动,将ethercat设置为开机自启动服务。这里我采用的是sysv-rc-conf 工具,先安装sysv-rc-conf:

sudo apt-get install sysv-rc-conf

安装完成后,运行sysv-rc-conf:

sudo sysv-rc-conf

这时会打开一个图形界面,找到ethercat用“space”键设置为S运行级,按Q退出。

先不要着急启动ethercat,还有关键的一步,运行如下的命令 将模块插入内核:

sudo depmod  

(5) 启动主站

sudo /etc/init.d/ethercat start

如果安装没有问题,会出现下面的提示:

Starting EtherCAT master 1.5.2  done

大功告成!

(6) 添加命令行工具

sudo gedit ~/.bashrc

在其中添加如下代码:

PATH=$PATH:/opt/etherlab/bin

再执行:source ~/.bashrc

这时候就可以使用ethercat命令行工具了。

IGH EtherCAT Master Linux on PC移植_第3张图片

(7) 测试

sudo /opt/etherlab/bin/ethercat slaves

 

参考资料:

https://github.com/ART-robot/ethercat_install

Ethercat解析(一)之获取、编译、安装(Ubuntu14.04)

 

你可能感兴趣的:(EtherCAT)