赞
踩
目录
前言
目前网上的博客很多关于xenomai实时操作系统的安装,但是很少对不同硬件平台的测试。本篇内容介绍下Intel 赛扬J6412安装xenomai实测效果。为什么要选取J6412呢,因为Intel 在低端边缘控制领域对Elkhart Lake做了一定的优化。既然是工业级的实时应用,本次专门选取了一台J6412 CPU的工业电脑作为测试主机,机器包含两个Intel I211 千兆网口,方便后续做Ethercat 的安装。
X86平台安装实时操作系统时,首先要对BIOS 配置进行修改,关闭可能影响实时性的配置。
依照Intel的介绍,x86 平台的一些BIOS 配置尽可能多的修改如下配置,不同硬件平台配置选项位置可能不太一样,根据CPU 功能不一样有些选项不一定会有。
本次选用的工控机修改了以下选项,部分选项在此平台中没有(仅供参考,不同厂家BIOS 开放程度不一样部分选项可能被隐藏)
2、Xenomai 官方Linux内核源码:linux-dovetail-v5.10.76-dovetail3.tar.gz
3、Xenomai 内核源码:xenomai-v3.2.1.tar.gz
4、IGH 源码:xenomai-v3.2.1.tar.gz
以上所有源码也可在文章后面链接下载
1、开局先换源
sudo gedit /etc/apt/sources.list
将http://cn.archive.ubuntu.com 全部替换成http://mirrors.aliyun.com
sudo apt update
2、安装以下工具
sudo apt-get install gcc git libncurses5-dev make flex bison libssl-dev libelf-dev automake libtool m4 autoconf fuse debhelper findutils autotools-dev pkg-config libltdl-dev
1、 进入存放源码的路径下
sudo tar xf linux-dovetail-v5.10.76-dovetail3.tar.gz
sudo tar xf xenomai-v3.2.1.tar.gz
2、将解压后的文件拷贝到制定文件夹中
sudo mkdir /usr/src/xenomai
sudo cp -r linux-dovetail-v5.10.76-dovetail3 /usr/src/xenomai
sudo cp -r xenomai-v3.2.1 /usr/src/xenomai
将xenomai导入到待编译的内核中
cd /usr/src/xenomai/linux-dovetail-v5.10.76-dovetail3
sudo /usr/src/xenomai/xenomai-v3.2.1/scripts/prepare-kernel.sh --arch=x86_64
配置内核可以直接导入配置文件,或者逐项配置
cd /usr/src/xenomai/linux-dovetail-v5.10.76-dovetail3/
sudo make menuconfig
文章后面网盘下载xenomai.config,将xenomai.config拷贝到/usr/src/xenomai/linux-dovetail-v5.10.76-dovetail3/
选择Load输入 xenomai.config点OK ,跳到“编译内核及模组”步骤继续往下进行
* General setup
--> Local version - append to kernel release: -xenomai(后面所有配置用此名字)
--> Timers subsystem
---> High Resolution Timer Support [*](默认无需修改)
* Pocessor type and features
--> Processor family
---> Core 2/newer Xeon (if “cat /proc/cpuinfo | grep family”
returns 6, otherwise set as Generic otherwise)
--> Multi-core scheduler support [](关闭)
* Xenomai/cobalt
--> Sizes and static limits(以下默认无需修改)
---> Number of registry slots (512 --> 4096)
---> Size of system heap (Kb) (4096 --> 4096)
---> Size of private heap (Kb) (256 --> 256)
---> Size of shared heap (Kb) (256 --> 256)
---> Maximum number of POSIX timers per process (256 --> 512)
--> Drivers
---> RTnet
---> RTnet, TCP/IP socket interface (Enable)
----> Drivers
-----> New intel(R) PRO/1000 PCIe(Gigabit) [M](模块)
-----> Realtek 8169(Gigabit) [M](模块)
-----> Loopback [M](默认)
----> Add-Ons
-----> Real-Time Capturing Support [M](模块)
* Power management and ACPI options
--> CPU Frequency scaling
---> CPU Frequency scaling [](关闭)
--> ACPI (Advanced Configuration and Power Interface) Support
---> Processor [](关闭)
--> CPU Idle
---> CPU idle PM support [](关闭)
* Memory Management Options
---> Transparent Hugepage Support [](关闭)
---> Allow for memory compaction [](关闭)
---> Contiguous Memory Allocator [](关闭)
---> Page Migration [](关闭)
* Device Drivers
--> Unisys visorbus driver [](关闭)
* Pocessor type and features
--> Enable Maximum number of SMP Processors and NUMA Nodes [](可选)
* Xenomai/cobalt
--> Drivers
---> Real-time IPC drivers [*] (双击空格选定为*)(可选)
---> RTIPC protocol family <M>(默认)
---> XDDP cross-domain datagram protocol [*](默认)
---> IDDP intra-domain datagram protocol [*](默认)
---> Number of IDDP communication ports (32) (默认)
---> Buffer protocol [*](默认)
---> Number of BUFP communication ports (32) (默认)
J6412配置较低编译过程需要3个多小时
sudo make -j4 bzImage
sudo make -j4 modules
sudo make INSTALL_MOD_STRIP=1 modules_install
1、将内核编译源码路径下的.config文件拷贝到/boot路径下并重命名:
sudo cp /usr/src/xenomai/linux-dovetail-v5.10.76-dovetail3/.config /boot
sudo mv /boot/.config /boot/config-5.10.76-xenomai
2、将内核编译源码中的bzImage拷贝被到/boot下并重命名:
Sudo cp /usr/src/xenomai/linux-dovetail-v5.10.76-dovetail3/arch/x86_64/boot/bzImage /boot
sudo mv /boot/bzImage /boot/vmlinuz-5.10.76-xenomai
3、将内核编译源码中的System.map拷贝被到/boot下并重命名:
sudo cp /usr/src/xenomai/linux-dovetail-v5.10.76-dovetail3/System.map /boot
sudo mv /boot/System.map /boot/System.map-5.10.76-xenomai
4、将make modules_install生成的模组(/lib/modules/5.10.76-xenomai)拷贝到要替换内核系统的/lib/modules下。生成/boot/initrd.img-5.10.76-xenomai文件:
cd /lib/modules/5.10.76-xenomai
sudo update-initramfs -c -k 5.10.76-xenomai
文件结尾有编译好的内核安装文件下载链接,可下载后拷贝到/boot目录
sudo addgroup xenomai --gid 1234
sudo addgroup root xenomai
sudo usermod -a -G xenomai $USER
sudo gedit /etc/default/grub
具体配置如下
GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 5.10.76-xenomai"
GRUB_TIMEOUT=10
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash xenomai.allowed_group=1234"
更新grub
sudo update-grub
uname -a
dmesg | grep -i xenomai
cd /usr/src/xenomai/xenomai-v3.2.1
sudo ./scripts/bootstrap
sudo ./configure --with-pic --with-core=cobalt --enable-smp --disable-tls --enable-dlopen-libs --disable-clock-monotonic-raw
sudo make -j4
sudo make -j4 install
2.更新环境变量
echo '
### Xenomai
export XENOMAI_ROOT_DIR=/usr/xenomai
export XENOMAI_PATH=/usr/xenomai
export PATH=$PATH:$XENOMAI_PATH/bin:$XENOMAI_PATH/sbin
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:$XENOMAI_PATH/lib/pkgconfig
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$XENOMAI_PATH/lib
export OROCOS_TARGET=xenomai
' >> ~/.xenomai_rc
echo 'source ~/.xenomai_rc' >> ~/.bashrc
source ~/.bashrc
3.修改权限:
sudo chmod -R 777 /dev/rtdm/memdev-private
sudo chmod -R 777 /dev/rtdm/memdev-shared
4.测试实时效果
sudo /usr/xenomai/bin/latency
6小时测试结果如下图所示:
5.修复xenomai负延迟
sudo -s
echo 0 >/proc/xenomai/latency
运行一段时间后记录下“last_best”的值,令YOUR_VALUE=这个值x1000
echo YOUR_VALUE >/proc/xenomai/latency
1、解压ethercat-e1000e-5.10.tar.gz,复制到xenomai/目录
sudo tar xf ethercat-e1000e-5.10.tar.gz
sudo cp -r ethercat-e1000e-5.10 /usr/src/xenomai/
cd /usr/src/xenomai/ethercat-e1000e-5.10
2、编译源码
sudo ./bootstrap
sudo ./configure --with-module-dir=/lib/modules/5.10.76-xenomai --enable-generic --enable-8139too=no --enable-e1000e --enable-cycles --enable-hrtimer --with-xenomai-dir=/usr/xenomai --prefix=/opt/etherlab
sudo make -j4 #编译
sudo make -j4 modules #编译模块
sudo make -j4 install #安装
sudo make -j4 modules_install #安装模块
3、 配置
sudo mkdir /etc/sysconfig #创建文件夹
sudo cp /opt/etherlab/etc/sysconfig/ethercat /etc/sysconfig/ #复制配置文件
sudo cp /opt/etherlab/etc/init.d/ethercat /etc/init.d/ #复制启动脚本
sudo chmod a+x /etc/init.d/ethercat
sudo update-rc.d ethercat defaults
4、使能ethercat工具
sudo ln -s /opt/etherlab/bin/ethercat /usr/local/bin/ethercat
5、 配置用户权限
sudo gedit /etc/udev/rules.d/99-EtherCAT.rules
输入下列内容 KERNEL=="EtherCAT[0-9]*", MODE="0664", GROUP="users"
6、把相关模块放进系统目录,如果使用通用网卡是这样的
sudo cp devices/ec_generic.ko /lib/modules/$(uname -r)
sudo cp master/ec_master.ko /lib/modules/$(uname -r)
如果使用专用网卡需要多进一个目录,是这样的
sudo cp devices/e1000e/ec_e1000e.ko /lib/modules/$(uname -r)
sudo cp master/ec_master.ko /lib/modules/$(uname -r)
7、执行命令查看网卡MAC地址和类型
sudo depmod
ifconfig
8、配置网卡
sudo gedit /etc/sysconfig/ethercat
修改如下两处:
MASTER0_DEVICE=" 00:30:64:52:24:db" #主机配置Ethercat MAC address
DEVICE_MODULES="igb" #Intel i211 配置IGB
9、 启动Ethercat主站
sudo /etc/init.d/ethercat start
如果主站启动则表示安装成功。
ethercat tool命令查看
sudo ethercat --h
10、配置系统ethercat库
sudo gedit /etc/ld.so.conf
添加 /opt/etherlab/lib
sudo ldconfig
通过下面指令测试是否安装
sudo ldconfig -v | grep libether*
成功安装会显示 libethercat.so.1 -> libethercat.so.1.1.0
至此所有安装及配置步骤完成。
编译及配置文件下载:
链接:https://pan.baidu.com/s/1YeeymnTWnX8NjXIuQfiD3A
提取码:wmmn
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。