您的位置:首页 > 运维架构 > Linux

IgH EtherCAT Master 源码编译安装

2016-06-14 15:28 856 查看
我采用IgH提供的源码来开发自己的EtherCAT主站,那就要先编码安装源码。下面将介绍编译安装的步骤:

1.下载IgH EtherCAT Msater 源码:

http://http://www.etherlab.org/download/ethercat/ethercat-1.5.2.tar.bz2  版本为1.5.2

2.编译源码:

(1)解压源码包

tar -xjf ethercat-1.5.2.tar.bz2
cd ethercat-1.5.2/


(2)配置编译:
在运行./configure时要配置选项,我的配置是:

./configure --with-linux-dir=/usr/src/linux-header-3.14.29-29 --enable-8139too=no --enable-wildcards=yes
make
make modules

3. 安装:

make install
make modules_install

make DESTDIR=/vol/nfs/root modules_install</span>




4.配置主站:

安装完成后,会在/opt/目录下生成一个etherlab/文件夹,其中包括库文件什么的。进入这个文件夹:

cd /opt/etherlab


修改配置文件:

vim etc/sysconfig/ethercat


在MASTER0_DEVICE=""填写你的以太网卡的MAC地址,DEVICE_MODULES="generic",保存退出。

在/etc目录下新建一个sysconfig/的文件夹,将修改后的ethercat文件复制到刚刚新建的文件中:

mkdir /etc/sysconfig/
cp etc/sysconfig/ethercat  /etc/sysconfig/
ln -s /opt/etherlab/etc/init.d/ethercat  /etc/init.d/


为了让EtherCAT 主站能开机自启动,将ethercat设置为开机自启动服务。这里我采用的是sysv-rc-conf 工具,先安装sysv-rc-conf:

apt-get install sysv-rc-conf


安装完成后,运行sysv-rc-conf:

sysv-rc-conf


这时会打开一个图形界面,找到ethercat设置为S运行级,按Q退出。
先不要着急启动ethercat,还有关键的一步,运行如下的命令:

depmod

5.启动主站:

/etc/init.d/ethercat start


如果安装没有问题,会出现下面的提示:

Starting EtherCAT master 1.5.2  done


安装完毕。

设置Ether Master开机自启动:

1.通过sysv-rc-conf 来管理

如果没有安装,则通过下面的命令来安装:

apt-get install sysv-rc-conf

直接运行命令:

sysv-rc-conf

 启动,然后配置ethercat的运行级。这种方式在x86平台能成功,但是在arm平台没有用。采用第二种方法。

2.用自启动脚本控制命令:update-rc.d

添加ethercat开机自启动:update-rc.d ethercat start 2 3 5 .

此命令是最后空格加一点(.),会在rc3.d,rc5.d生成S02ethercat的链接。

3.invoke-rc.d

invoke-rc.d ethercat stop

invoke-rc.d ethercat start

修改ethercat设备权限:

运行程序时,要打开/dev/EtherCAT0文件需要root权限,为了不每次都手动修改权限,所以要设置。

运行:vim /etc/udev/rules.d/99-ethercat.rules

添加如下的内容:

KERNEL=="EtherCAT[0-9]",MODE="0777"

保存后退出,然后执行udevadm control --reload-rules,重启。

配置库:

vim /etc/ld.so.conf 

添加下面的内容,及库文件的绝对路径:

/opt/etherlab/lib

/usr/local/lib

安装过程中可能会出现的问题及解决办法:


1.在Linux环境中安装EtherCAT Master源码时,输入命令:

# make modules_install 

出现下面的错误:

/home/ethercat/ethercat-1.5.2/master/ethernet.c: In function ‘ec_eoe_init’:

/home/ethercat/ethercat-1.5.2/master/ethernet.c:151:72: error: macro "alloc_netdev" requires 4 arguments, but only 3 given

if (!(eoe->dev = alloc_netdev(sizeof(ec_eoe_t *), name, ether_setup))) {

^

/home/ethercat/ethercat-1.5.2/master/ethernet.c:151:22: error: ‘alloc_netdev’ undeclared (first use in this function)

if (!(eoe->dev = alloc_netdev(sizeof(ec_eoe_t *), name, ether_setup))) {

该错误提示函数alloc_netdev少一个参数,这可能是因为Linux内核版本问题,也可能是虚拟机的问题,因为我的Linux是安装在虚拟机里的。

解决办法就是打开错误提示的源文件:ethernet.c,给函数alloc_netdev增加一个参数:

eoe->dev = alloc_netdev(sizeof(ec_eoe_t *), name, NET_NAME_UNKNOWN,ether_setup)


2.在ARM平台运行./configure时出现下面的错误:

checking build system type... configure: error: cannot guess build type; you must specify one

这是因为没有指定编译平台,如下这样添加一个配置选项就可以了:

./configure --build=arm-linux


3.ARM平台有时会出现类似:

W: Failed to fetch http://za.archive.ubuntu.com/ubuntu/pool/main/e/eglibc/libc-bin_2.11.1-0ubuntu7.10_i386.deb Something wicked happened resolving 'za.archive.ubuntu.com:http' (-5 - No address associated with hostname)

的错误,这是因为DNS有问题,运行vim /etc/resolv.conf  修改如下:
nameserver 8.8.8.8
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux EtherCAT