前言:安装Igh公司的etherlab主站软件的环境工作,没想到困扰了好久,碰到了各种问题,在此做一记录。
环境:
- 操作系统 安装于VMware下的Ubuntu14.04 内核版本3.14.17 安装的新内核版本 3.14.44
- xenomai版本 2.6.5
首先是下载xenomai源码,为了和其他的程序兼容我们选择 xenomai2.6
下载网址在这里 http://git.xenomai.org/xenomai-2.6.git/ 这里选择了2.6.5。(官方最新已到3.x)
可以自主下载通过共享方式导入虚拟机也可以通过命令行指令直接下载。(当然取决于网络状态)
wget http://download.gna.org/xenomai/stable/xenomai-2.6.5.tar.bz2
下载完毕后就可以进行解压了
tar -xf xenomai-2.6.5.tar.bz2
完成后进入xenomai源码
cd xenomai-2.6.5
然后对安装xenomai所需的软件依赖环境进行搭建,这一步不成功多进行apt-get update指令。
sudo apt-get install devscripts devscripts debhelper dh-kpatches findutils autotools-dev autoconf automake libtool
安装完毕之后,就可以进行配置,主要配置选项如下:
--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。
配置完毕之后,就可以进行编译了,在这里我使用了默认的配置,配置如下:
./configure --enable-x86-sep
配置完毕之后,接下来是编译和安装
make
make install
xenomai配置告一段落接下来进行内核的修改与编译,首要仍然是环境的搭建
sudo apt-get install kernel-package libncurses-dev fakeroot zlib1g-dev
然后下载源码包然后解压,同样可自己获取可直接命令行
https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.14.44.tar.xz
wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.14.44.tar.xz && tar -xf linux-3.14.44.tar.xz
解压完成后进入内核目录
cd linux-3.14.44/
然后打实时补丁
../xenomai-2.6.5/scripts/prepare-kernel.sh --arch=amd64 --linux=. --adeos=../xenomai-2.6.5/ksrc/arch/x86/patches/ipipe-core-3.14.44-x86-12.patch
然后进行配置,直接把之前的配置拷贝到当前的目录下,这样做是简单,但是可能会出错,不过就算出错也是有些不该配置的地方配置了,此时只要根据提示修改即可,拷贝命令如下:
cp /boot/config-$(uname -r) ./
接下来进行内核的配置
make menuconfig
推荐配置如下
* General setup
--> Local version - append to kernel release: -xenomai-2.6.5
--> 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
然后安装内核,将编译好的内核的2个deb文件安装。
cd ..
sudo dpkg -i linux-*.deb
然后进行启动grub配置
sudo gedit /etc/default/grub
修改和添加
GRUB_DEFAULT=saved //添加项
GRUB_SAVEDEFAULT=true //添加项
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
在启动界面按Ese进入内核选择界面,选择生成的内核进入Ubuntu系统。
参考文章:
http://blog.csdn.net/woshidahuaidan2011/article/details/53510510
https://github.com/ART-robot/ethercat_install