ubuntu14.04、xenomai3.1、ethercat igh构建主站(1)

我是在i9 9900k的主机上编译的linux内核、xenomai以及ethercat igh。生成的文件如下:
在这里插入图片描述
接着我是在i5 6600主机上安装编译后的内核,搭建ethercat主站进行测试。
这是我编译好的上述4个文件。

参考文章

https://rtt-lwr.readthedocs.io/en/latest/rtpc/xenomai3.html
https://rtt-lwr.readthedocs.io/en/latest/rtpc/xenomai.html
https://www.bilibili.com/video/BV1wg4y1z7C2?t=1399

材料

linux内核: 4.9.38 https://mirrors.edge.kernel.org/pub/linux/kernel/
xenomai3.1 https://xenomai.org/downloads/xenomai/stable/
ipipe-core-4.9.38-x86-4.patch https://xenomai.org/downloads/ipipe/v3.x/x86/
ubuntu http://old-releases.ubuntu.com/releases/
ethercat igh https://github.com/ribalda/ethercat

一些安装包
sudo apt-get install build-essential libncurses5-dev bison flex libssl-dev
sudo apt-get install kernel-package
//下面的可以不用安装
$ sudo apt-get install build-essential git-core libncurses5-dev libssl-dev
$ sudo apt-get install flex bison texinfo zip unzip zlib1g-dev gettext 
$ sudo apt-get install gperf libsdl-dev libesd0-dev libwxgtk2.6-dev 
$ sudo apt-get install uboot-mkimage 
$ sudo apt-get install g++ xz-utils
//ubuntu右键打开终端
sudo apt-get install  nautilus-open-terminal
更换源
sudo gedit /etc/apt/sources.list

//删除原有内容替换为
deb http://mirrors.aliyun.com/ubuntu/ precise main restricted universe multiverse 
deb http://mirrors.aliyun.com/ubuntu/ precise-security main restricted universe multiverse 
deb http://mirrors.aliyun.com/ubuntu/ precise-updates main restricted universe multiverse 
deb http://mirrors.aliyun.com/ubuntu/ precise-proposed main restricted universe multiverse 
deb http://mirrors.aliyun.com/ubuntu/ precise-backports main restricted universe multiverse 
deb-src http://mirrors.aliyun.com/ubuntu/ precise main restricted universe multiverse 
deb-src http://mirrors.aliyun.com/ubuntu/ precise-security main restricted universe multiverse 
deb-src http://mirrors.aliyun.com/ubuntu/ precise-updates main restricted universe multiverse 
deb-src http://mirrors.aliyun.com/ubuntu/ precise-proposed main restricted universe multiverse 
deb-src http://mirrors.aliyun.com/ubuntu/ precise-backports main restricted universe multiverse

sudo apt-get update

第一步 打补丁

./scripts/prepare-kernel.sh --linux=/home/vmuser/workspace/linux-4.9.38 \
--ipipe=/home/vmuser/workspace/xenomai-v3.1/ipipe-core-4.9.38-x86-4.patch --arch=x86_64

第二步 配置menuconfig

make menuconfig
在这里插入图片描述

> Processor type and features
[ ] Linux guest support  ---- 
[ ] Multi-core scheduler support
> Power management and ACPI options
[ ] Suspend to RAM and standby 
[ ] Hibernation (aka 'suspend to disk') 
> Power management and ACPI options > CPU Frequency scaling
[ ] CPU Frequency scaling
> Power management and ACPI options > ACPI (Advanced Configuration and Power Interface) Support
< >   Processor 
> Power management and ACPI options > CPU Idle  
[ ] CPU idle PM support   
> Processor type and features
[ ] Transparent Hugepage Support
[ ] Contiguous Memory Allocator
[ ] Allow for memory compaction
[ ]   Page migration
> Xenomai/cobalt > Sizes and static limits
 (4096) Number of registry slots
 (4096) Size of system heap (Kb)
 (256) Size of private heap (Kb)
 (256) Size of shared heap (Kb) 
 (512) Maximum number of POSIX timers per process  
> General setup 
(-xenomai-3.0.5) Local version - append to kernel release
> General setup > Timers subsystem
[*] High Resolution Timer Support
> Xenomai/cobalt > Drivers > RTnet
<M> RTnet, TCP/IP socket interface
> Xenomai/cobalt > Drivers > RTnet > Drivers

第三步 编译、安装内核

在i9 9900k上编译内核,生成linux-headers-xxx.deb和linux-image-xxx.deb安装包。

sudo apt install kernel-package
//CONCURRENCY_LEVEL=$(nproc) make-kpkg --rootcmd fakeroot --initrd kernel_image kernel_headers
sudo CONCURRENCY_LEVEL=$(nproc) make-kpkg --initrd kernel_image kernel_headers

在i5 6600上安装内核、并进行测试。

//安装内核
sudo dpkg -i linux-headers-4.1.18-xenomai-3.0.5_4.1.18-xenomai-3.0.5-10.00.Custom_amd64.deb 
sudo dpkg -i linux-image-4.1.18-xenomai-3.0.5_4.1.18-xenomai-3.0.5-10.00.Custom_amd64.deb

sudo gedit /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="text"
#GRUB_HIDDEN_TIMEOUT=0
#GRUB_HIDDEN_TIMEOUT_QUIET=true
sudo update-grub
卸载安装好的内核
dpkg --get-selections|grep linux 
apt-get remove linux-image-xxx
apt-get remove linux-headers-xxx

第四步 编译xenomai

可以在ubuntu系统查看xenomai信息
uname -a
# Should return Linux waro-rt 4.9.38-xenomai-3.0.5 #2 SMP Wed Sep 20 16:00:12 CEST 2017 x86_64 x86_64 x86_64 GNU/Linux
dmesg | grep Xenomai
# [    1.417024] [Xenomai] scheduling class idle registered.
# [    1.417025] [Xenomai] scheduling class rt registered.
# [    1.417045] [Xenomai] disabling automatic C1E state promotion on Intel processor
# [    1.417055] [Xenomai] SMI-enabled chipset found, but SMI workaround disabled
# [    1.417088] I-pipe: head domain Xenomai registered.
# [    1.417704] [Xenomai] allowing access to group 1234
# [    1.417726] [Xenomai] Cobalt v3.0.5 (Sisyphus's Boulder) [DEBUG]
**********************************************
cd xenomai-3.1
./script/bootstrap //如果没有configure文件则执行此语句
./configure --with-core=cobalt --enable-smp --enable-pshared    我执行了这一条
./configure --with-pic --with-core=cobalt --enable-smp --disable-tls --enable-dlopen-libs
./configure --with-pic --with-core=cobalt --enable-smp --disable-tls --enable-dlopen-libs --disable-clock-monotonic-raw
make 
sudo make install  //默认安装在/usr/xenomai

xenomai目录包含如下文件
在这里插入图片描述

第五步 编译igh

./bootstrap //如果没有configure文件则执行此语句
./configure --with-linux-dir=/home/vmuser/workspace/linux-4.9.38 \  
--enable-generic=yes --enable-8139too=yes --enable-e1000=yes --enable-e1000e=yes --enable-r8169=yes \
--enable-rtdm=yes --enable-cycles=yes --enable-hrtimer=yes --with-xenomai-dir=/usr/xenomai
**********************************************
igh把编译生成的文件默认安装在了/opt/etherlab目录。
通过设置--prefix=/home/vmuser/ethercat-master/output可以把编译生成的文件安装在/home/vmuser/ethercat-master/output目录中。
**********************************************
make
make modules
make install
sudo make modules_install

我在编译igh的8169网卡驱动(4.9版本)时有报错。
打开ethercat/devices/r8169-4.9-ethercat.c,把339行删掉。
如果用其它版本的驱动,没有报错,就不用删了。

在这里插入图片描述
编译完成后,生成如下文件
在这里插入图片描述
在这里插入图片描述
我将这两部分文件copy到了自建的igh文件夹中。

第六步 将xenomai.tar.gz和igh.tar.gz复制到其他主机

我将编译生成的文件打包成xenomai.tar.gz和igh.tar.gz,然后copy到i5 6600主机进行测试。
我将生成的xenomai.tar.gz文件进行解压,并copy到usr目录。
在这里插入图片描述
利用bin目录下的latency 工具进行测试
在这里插入图片描述
实时效果并不理想,后续再改吧
将igh.tar.gz文件进行解压,并copy到/opt/etherlab目录。
在这里插入图片描述
将igh编译生成的驱动文件放到如下位置
在这里插入图片描述
接着输入depmod命令。

第七步 ethercat主站配置

这一步参考了igh官方文档的P82页(Installing the Software),文章截图如下:
在这里插入图片描述
将/opt/etherlab/etc目录下的sysconfig文件夹copy到/etc目录中,然后修改ethercat文件。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里主要是对MASTER0_DEVICE="“和DEVICE_MODULES=”"进行了修改。
ln -s /opt/etherlab/etc/init.d/ethercat /etc/init.d 建立软连接
注意ethercat文件中的这部分是否正确
在这里插入图片描述

第八步 测试主站

开启主站

# /etc/init.d/ethercat start

重启主站
在这里插入图片描述
在这里插入图片描述
可以看到主站正常运行,能够扫描到从站的信息。

----------------------------------------------------------------------------------------------

ubuntu14.04解决菜单栏和工具栏消失的方案:

进入图形界面
sudo startx
重设compiz设置(这一步可以不要)
dconf reset -f /org/compiz/
重置compiz后,重启Unity:
setsid unity(这一步必须要)

添加环境变量

sudo gedit /etc/profile 
export PATH=$PATH:/usr/xenomai/include
source /etc/profile

cannot open shared object file 问题的解决

# gedit /etc/ld.so.conf
添加lib目录
include /etc/ld.so.conf.d/*.conf
/usr/xenomai/lib
/usr/etherlab/lib

修改完ld.so.conf之后必须执行/sbin/ldconfig -v同步动态库
  • 6
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 26
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值