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的官网说明,如果没有使用官方实现的驱动的网卡,可以不使用实时内核。
可先通过 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
考虑到使用 xenomai 作为实时内核,故采用内核3.14.44,下载地址。
(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已经加载了带有实时内核补丁的内核。
源码下载地址。
(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
官方文档中所有配置如下:
(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命令行工具了。
(7) 测试
sudo /opt/etherlab/bin/ethercat slaves
参考资料:
https://github.com/ART-robot/ethercat_install
Ethercat解析(一)之获取、编译、安装(Ubuntu14.04)