logo资料库

xenomai安装+IGH主站配置.docx

第1页 / 共14页
第2页 / 共14页
第3页 / 共14页
第4页 / 共14页
第5页 / 共14页
第6页 / 共14页
第7页 / 共14页
第8页 / 共14页
资料共14页,剩余部分请下载后查看
前言
0 版本确认
前言 本次目的是运行 etherlab 的 IGHmaster,所涉及内容包括 Ubuntu 的安装、linux 内核 的编译、Xenomai 的安装和测试、IGH 主站安装和调试。最后通过主站成功识别从站并通 过 user 和 xenomai 两个例子与特定从站通信。 首先需要确定一下合适的版本。IGH 主站和 xenomai 对内核版本都有要求,或者说相 关版本是在特定内核版本上调试成功的,为了减少不必要的麻烦所以才需要版本对应。 0 版本确认 在 etherlab 网站上下载代码和文档,网址如下,最新版本为 1.5.2(话说这个已经很 久没更新了) http://www.etherlab.org/en/ethercat/index.php 文档在 1.1 节便提到支持 linux 内核为 2.6/3.x 版本,但其中的实时网卡驱动只更新 到 3.4,之后的版本会在安装时提示不支持当前内核版本。 xenomai 版本已经更新到 3.1,wangzhan r 但使用较多的还是 2.6.x,且目前网上 教程较多方便操作,本次采用 2.6.5 http://xenomai.org 1. 安装 ubutnu 假设你本来就是 ubuntu 那忽略这一步 1.1 在 Windows 下使用 UltraISO 制作 ubuntu 启动盘 在 UltraISO 界面下打开所需 ISO 文件,然后再菜单栏中启动写入硬盘映像,在弹框中 选择自己的 U 盘,然后点击写入即可 注:如果有同学装系统失败,可以尝试一下这个操作;点击在弹框内的便携驱动写入新的 驱动器引导扇区syslinux。本次安装使用 Ubuntu14.04 时没有使用这个,依然能安装 成功。 1.2 使用 Windows 自带的硬盘管理工具分配一个不少于 20G 的分区,方便安装 ubuntu; 其实单纯安装 ubuntu 只需要 5-10G 的空间,为何要分至少 20G 呢,因为在编译内核时 会急剧占据硬盘空间,印象中多占用了 7G 之多,如果空间不够,内核编译便会失败; 1.3 修改 BIOS 为 U 盘启动模式,插上 U 盘重新启动电脑,开机后便会进入 ubuntu 界面, 选择 install ubuntu,在安装位置中选择之前准备的分区 2. 安装 xenomai 本次使用的内核是 linux3.18.20, xenomai2.6.5 分别从一下网址下载(为何使用 3.18.20,因为下载下来的 xenomai2.6.5 自带这个内核版本的 IPIPE 实时补丁,不需要 再额外上网找)
Linux 内核--- https://mirrors.edge.kernel.org/pub/linux/kernel/v3.x/ (注:下 载开头是 linux 的文件而不是 changelog) Xenomai 软件--- https://gitlab.denx.de/Xenomai/xenomai/-/tree/v2.6.5 2.1 安装依赖库 $ sudo apt-get update $ sudo apt-get install kernel-package build-essential libncurses5-dev libelf-dev autotools-dev fakerroot autoconf automake libtool 也可以先安装软件,发现缺什么后再安装 2.2 打补丁 把解压后的内核文件和 xenomai 拷贝到/usr/src/ 目录下(尝试了在其他目录也可以 完成编译内核),复制 ipipe 文件到 linux-3.18.20 目录下。 $ cd linux-3.18.20 $ sudo cp ../xenomai-2.6.5/ksrc/arch/x86/patches/ ipipe-core-3.18.20- x86-7.patch . $sudo ../xenomai-2.6.5/scripts/prepare-kernel.sh 命令会提示当前的架构和所使用的 ipipe 文件,确认即可。 2.3 配置内核 $ cd linux-3.18.20 $ sudo make menuconfig 编译完成后便会出现内核配置界面,此时根据以下说明配置 Recommended options for linux kernel config: * General setup --> Local version - append to kernel release: -xenomai-2.6.5 --> Timers subsystem --> High Resolution Timer Support (Enable) * Real-time sub-system --> Xenomai (Enable) --> Nucleus (Enable) --> Pervasive real-time support in user-space (Enable) * Power management and ACPI options --> Memory power savings --> Intel chipset idle memory power saving driver (Disable) --> 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 (根据自己实际情况选,如果不知道可以选 486(就是第 一个),如果是 64 位可选 generic-XXX;这个选项只是优化代码执行效率,并不会导致程 序不可用) --> Transparent Hugepage Support (Disable) --> Allow for memory compaction (Disable) --> Contiguous Memory Allocation (Disable) --> Allow for memory compaction --> Page Migration (Disable) (实际这项不能设置,不知问题何在) 设置完毕后保存,退回命令行界面。 使用以下命令编译内核 $ CONCURRENCY_LEVEL=$(nproc) make-kpkg --rootcmd fakeroot --initrd kernel_image kernel_headers 这个时候就是等待了,快则半小时满则一两个小时,因机器人配置而异。如果中间遇到错误, 可以看一下是什么类型错误,如果权限问题,就增加 sudo ,如果缺少库则安装相应的库在 进行编译,编译完成后会在上一级目录里生成两个 linux_*.deb 文件。 2.4 安装 kernel $ cd .. $ sudo dpkg -i linux-*.deb 2.5 添加用户组,允许非 root 用户使用超级权限 sudo addgroup xenomai --gid 1234 sudo addgroup root xenomai sudo usermod -a -G xenomai $USER
如果出现 gid 冲突,可以更改为其他值,但要记住这个值,下面要用到。 2.6 配置启动文件 GRUB 使用如下命令编辑 GRUB 文件, $ sudo gedit /etc/default/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 xeno_nucleus.xenomai_gid=1234 xenomai.allowed_group=1234" GRUB_CMDLINE_LINUX="" 注意 1:如果使用 intel 的集显需要增加一下命令: GRUB_CMDLINE_LINUX_DEFAULT="quiet splash i915.i915_enable_rc6=0 i915.powersave=0 noapic xeno_nucleus.xenomai_gid=1234 xenomai.allowed_group=1234" 注意 2: 如果 CPU 是 Intel 第六代 cpu 或者说 Skylake 架构的 CPU 那么需要在上面命 令后增加 “nosmap”。 更新 GRUB 然后重启 $ sudo update-grub $ sudo reboot 3.安装 xenomai 3.1 进入 xenomai 目录然后编译最后安装,如果权限不够可以加上 sudo $ cd xenomai-2.6.5/ $./configure $make -j$(nproc) $sudo make install
3.2 更新 bashrc,可以自动寻库 打开 bashrc 文件 $ sudo gedit ~/.bashrc 然后在最后增加如下代码 #### Xenomai export XENOMAI_ROOT_DIR=/usr/xenomai export XENOMAI_PATH=/usr/xenomai export PATH=$PATH:$XENOMAI_PATH/bin export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:$XENOMAI_PATH/lib/pkgconfig export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$XENOMAI_PATH/lib 4 测试安装效果 使用 xeno latency 命令来测试当前延迟特性,或者在/usr/xenomai/bin 中 ./latency 也可。
注意:如果数值存在负值,可以通过以下命令来补正,其中 X 为输入的值 $ sudo su $ echo X >/proc/xenomai/latency 5. 安装 etherlab 的 IGH 主站 5.1 下载和配置 首先从其官网下载软件包,网址: http://www.etherlab.org/en/ethercat/index.php 另外在网上搜索“etherlab igh master ”的时候能找到另一个网址 https://sourceforge.net/projects/etherlabmaster/。这个网站的 master 代码 一直 有人维护,在 code 界面可以下载代码。 本次使用官网代码。 安装一些依赖 $ sudo apt-get install libtool autoconf autogen 配置软件编译内容,可以选择配置自己想要的功能,比如 r8169 网卡驱动,IGH 主站 最好使用专用网卡驱动,这样对实时性有所帮助,如果没有专用驱动则可使用 generic,实 时性略差凑活用。目前 IGH 主站代码中支持网卡包括 Realtek 8139 和 8169,intel e100,支持到 linux-3.4 的内核。所以如果安装内核版本大于 3.4,在配置时会产生驱动 不支持的告警,导致配置不通过。
使用以下命令配置,其中--enable-8139too=no 便是去掉对这个驱动的编译,可供 使用的命令如下图所示。 ./configure --with-linux-dir=/usr/src/linux-headers-3.18.20-xenomai-2.6.5 --with-module-dir=/lib/modules/3.18.20-xenomai-2.6.5 --enable-generic - -enable-rtdm --with-xenomai-dir=/usr/xenomai --enable-cycles --enable- hrtimer --enable-8139too=no
分享到:
收藏