IgH(IgH EtherCAT Master for Linux)編譯之linux Debian篇
阿新 • • 發佈:2019-01-06
簡介
在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 ’
這是因為核心版本和編譯時候的核心原始碼版本不一致導致的