1. 程式人生 > >IgH(IgH EtherCAT Master for Linux)編譯之linux Debian篇

IgH(IgH EtherCAT Master for Linux)編譯之linux Debian篇

簡介

在linux中編譯 IgH,命令前面的#代表需要root賬戶執行,linux的核心需要3.+ , 4.+編譯會有問題

準備

編譯

解壓後進入原始碼資料夾ethercat-1.5.2,執行

@./configure --with-linux-dir=核心原始碼路徑 --enable-generic=yes kernelrelease=$(uname -r) --enable-8139too=no
@make
@make modules
#make install
#make modules_install

配置

ethercat被安裝在了/opt/ethercat ,核心模組安裝到了/lib/modules/$(uname -r)/下面

配置動態庫路徑

vim /etc/ld.so.conf 

另起一行新增 /opt/ethercat/lib ,儲存後退出 執行

@sudo ldconfig

配置服務

@sudo su root
#cd /opt/ethercat
#mkdir /etc/sysconfig/
#cp etc/sysconfig/ethercat  /etc/sysconfig/
#ln -s /opt/etherlab/etc/init.d/ethercat  /etc/init.d/
#depmod  (將核心模組包含到modules.dep檔案中)      

配置網絡卡設定

#vim /etc/sysconfig/ethercat

修改下面兩項

MASTER0_DEVICE=”網絡卡MAC”
DEVICE_MODULES=”generic”

裝置許可權

# echo KERNEL==\"EtherCAT[0-9]*\", MODE=\"0664\" > /etc/udev/rules.d/99-EtherCAT.rules  

啟動服務

#/etc/init.d/ethercat start  

使用

@vim ~/.bashrc
其中新增path路徑  PATH=$PATH:/opt/etherlab/bin
@source ~/.bashrc

這樣就可以使用命令ethercat控制從站了
這裡寫圖片描述

常見問題

下面需要修改原始碼的問題是4.+版本核心才會遇到的問題 ,試了下沒有跑起來,待進一步驗證,3.+核心完全沒有問題

  • 問題一

這裡寫圖片描述

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

這裡寫圖片描述
- 問題二

這裡寫圖片描述

   ret = sock_create_kern(PF_PACKET, SOCK_RAW, htons(ETH_P_ETHERCAT),
   改成
   ret = sock_create_kern(&init_net,PF_PACKET, SOCK_RAW, htons(ETH_P_ETHERCAT),
  • 問題三 如果在編譯模組時候找不到核心標頭檔案(已經安裝),指定路徑
./configure --with-linux-dir=/usr/src/linux-header-*
  • 問題四 version magic ‘* SMP mod_unload ’ should be ‘* SMP mod_unload ’
    這裡寫圖片描述

這是因為核心版本和編譯時候的核心原始碼版本不一致導致的

引用