下载代码
git clone https://github.com/OpenEtherCATsociety/SOEM
PC端
编译
cd SOEM/
export CC=gcc
mkdir build_pc
cd build_pc/
cmake ..
lhj@lhj:~/SOEM/build_pc$ cmake ..
-- The C compiler identification is GNU 9.4.0
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- OS is linux
-- LIB_DIR: lib
-- Configuring done
-- Generating done
-- Build files have been written to: /home/lhj/SOEM/build_pc
lhj@lhj:~/SOEM/build_pc$
make
lhj@lhj:~/SOEM/build_pc$ make
Scanning dependencies of target soem
[ 4%] Building C object CMakeFiles/soem.dir/soem/ethercatbase.c.o
[ 9%] Building C object CMakeFiles/soem.dir/soem/ethercatcoe.c.o
[ 14%] Building C object CMakeFiles/soem.dir/soem/ethercatconfig.c.o
[ 19%] Building C object CMakeFiles/soem.dir/soem/ethercatdc.c.o
[ 23%] Building C object CMakeFiles/soem.dir/soem/ethercateoe.c.o
[ 28%] Building C object CMakeFiles/soem.dir/soem/ethercatfoe.c.o
[ 33%] Building C object CMakeFiles/soem.dir/soem/ethercatmain.c.o
[ 38%] Building C object CMakeFiles/soem.dir/soem/ethercatprint.c.o
[ 42%] Building C object CMakeFiles/soem.dir/soem/ethercatsoe.c.o
[ 47%] Building C object CMakeFiles/soem.dir/osal/linux/osal.c.o
[ 52%] Building C object CMakeFiles/soem.dir/oshw/linux/nicdrv.c.o
[ 57%] Building C object CMakeFiles/soem.dir/oshw/linux/oshw.c.o
[ 61%] Linking C static library libsoem.a
[ 61%] Built target soem
Scanning dependencies of target simple_ng
[ 66%] Building C object test/simple_ng/CMakeFiles/simple_ng.dir/simple_ng.c.o
[ 71%] Linking C executable simple_ng
[ 71%] Built target simple_ng
Scanning dependencies of target slaveinfo
[ 76%] Building C object test/linux/slaveinfo/CMakeFiles/slaveinfo.dir/slaveinfo.c.o
[ 80%] Linking C executable slaveinfo
[ 80%] Built target slaveinfo
Scanning dependencies of target eepromtool
[ 85%] Building C object test/linux/eepromtool/CMakeFiles/eepromtool.dir/eepromtool.c.o
[ 90%] Linking C executable eepromtool
[ 90%] Built target eepromtool
Scanning dependencies of target simple_test
[ 95%] Building C object test/linux/simple_test/CMakeFiles/simple_test.dir/simple_test.c.o
[100%] Linking C executable simple_test
[100%] Built target simple_test
lhj@lhj:~/SOEM/build_pc$
部署
生成的文件如下
其中libsoem.a为库文件
test/linux/下的
simple_test,slaveinfo,eepromtool为测试Demo。
lhj@lhj:~/SOEM/build_pc$ tree .
.
-- CMakeCache.txt
-- CMakeFiles
-- 3.16.3
-- CMakeCCompiler.cmake
-- CMakeDetermineCompilerABI_C.bin
-- CMakeSystem.cmake
`-- CompilerIdC
-- CMakeCCompilerId.c
-- a.out
`-- tmp
-- CMakeDirectoryInformation.cmake
-- CMakeOutput.log
-- CMakeTmp
-- Export
`-- share
`-- soem
`-- cmake
-- soemConfig-noconfig.cmake
`-- soemConfig.cmake
-- Makefile.cmake
-- Makefile2
-- TargetDirectories.txt
-- cmake.check_cache
-- progress.marks
`-- soem.dir
-- C.includecache
-- DependInfo.cmake
-- build.make
-- cmake_clean.cmake
-- cmake_clean_target.cmake
-- depend.internal
-- depend.make
-- flags.make
-- link.txt
-- osal
`-- linux
`-- osal.c.o
-- oshw
`-- linux
-- nicdrv.c.o
`-- oshw.c.o
-- progress.make
`-- soem
-- ethercatbase.c.o
-- ethercatcoe.c.o
-- ethercatconfig.c.o
-- ethercatdc.c.o
-- ethercateoe.c.o
-- ethercatfoe.c.o
-- ethercatmain.c.o
-- ethercatprint.c.o
`-- ethercatsoe.c.o
-- Makefile
-- cmake_install.cmake
-- libsoem.a
`-- test
-- linux
-- eepromtool
-- CMakeFiles
-- CMakeDirectoryInformation.cmake
-- eepromtool.dir
-- C.includecache
-- DependInfo.cmake
-- build.make
-- cmake_clean.cmake
-- depend.internal
-- depend.make
-- eepromtool.c.o
-- flags.make
-- link.txt
`-- progress.make
`-- progress.marks
-- Makefile
-- cmake_install.cmake
`-- eepromtool
-- simple_test
-- CMakeFiles
-- CMakeDirectoryInformation.cmake
-- progress.marks
`-- simple_test.dir
-- C.includecache
-- DependInfo.cmake
-- build.make
-- cmake_clean.cmake
-- depend.internal
-- depend.make
-- flags.make
-- link.txt
-- progress.make
`-- simple_test.c.o
-- Makefile
-- cmake_install.cmake
`-- simple_test
`-- slaveinfo
-- CMakeFiles
-- CMakeDirectoryInformation.cmake
-- progress.marks
`-- slaveinfo.dir
-- C.includecache
-- DependInfo.cmake
-- build.make
-- cmake_clean.cmake
-- depend.internal
-- depend.make
-- flags.make
-- link.txt
-- progress.make
`-- slaveinfo.c.o
-- Makefile
-- cmake_install.cmake
`-- slaveinfo
`-- simple_ng
-- CMakeFiles
-- CMakeDirectoryInformation.cmake
-- progress.marks
`-- simple_ng.dir
-- C.includecache
-- DependInfo.cmake
-- build.make
-- cmake_clean.cmake
-- depend.internal
-- depend.make
-- flags.make
-- link.txt
-- progress.make
`-- simple_ng.c.o
-- Makefile
-- cmake_install.cmake
`-- simple_ng
29 directories, 100 files
lhj@lhj:~/SOEM/build_pc$
开发板端
编译
cd SOEM/
export CC=aarch64-linux-gnu-gcc
mkdir build
cd build/
cmake ..
lhj@lhj:~/SOEM/build$ cmake ..
-- The C compiler identification is GNU 9.4.0
-- Check for working C compiler: /usr/bin/aarch64-linux-gnu-gcc
-- Check for working C compiler: /usr/bin/aarch64-linux-gnu-gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- OS is linux
-- LIB_DIR: lib
-- Configuring done
-- Generating done
-- Build files have been written to: /home/lhj/SOEM/build
lhj@lhj:~/SOEM/build$
make
lhj@lhj:~/SOEM/build$ make
Scanning dependencies of target soem
[ 4%] Building C object CMakeFiles/soem.dir/soem/ethercatbase.c.o
[ 9%] Building C object CMakeFiles/soem.dir/soem/ethercatcoe.c.o
[ 14%] Building C object CMakeFiles/soem.dir/soem/ethercatconfig.c.o
[ 19%] Building C object CMakeFiles/soem.dir/soem/ethercatdc.c.o
[ 23%] Building C object CMakeFiles/soem.dir/soem/ethercateoe.c.o
[ 28%] Building C object CMakeFiles/soem.dir/soem/ethercatfoe.c.o
[ 33%] Building C object CMakeFiles/soem.dir/soem/ethercatmain.c.o
[ 38%] Building C object CMakeFiles/soem.dir/soem/ethercatprint.c.o
[ 42%] Building C object CMakeFiles/soem.dir/soem/ethercatsoe.c.o
[ 47%] Building C object CMakeFiles/soem.dir/osal/linux/osal.c.o
[ 52%] Building C object CMakeFiles/soem.dir/oshw/linux/nicdrv.c.o
[ 57%] Building C object CMakeFiles/soem.dir/oshw/linux/oshw.c.o
[ 61%] Linking C static library libsoem.a
[ 61%] Built target soem
Scanning dependencies of target simple_ng
[ 66%] Building C object test/simple_ng/CMakeFiles/simple_ng.dir/simple_ng.c.o
[ 71%] Linking C executable simple_ng
[ 71%] Built target simple_ng
Scanning dependencies of target slaveinfo
[ 76%] Building C object test/linux/slaveinfo/CMakeFiles/slaveinfo.dir/slaveinfo.c.o
[ 80%] Linking C executable slaveinfo
[ 80%] Built target slaveinfo
Scanning dependencies of target eepromtool
[ 85%] Building C object test/linux/eepromtool/CMakeFiles/eepromtool.dir/eepromtool.c.o
[ 90%] Linking C executable eepromtool
[ 90%] Built target eepromtool
Scanning dependencies of target simple_test
[ 95%] Building C object test/linux/simple_test/CMakeFiles/simple_test.dir/simple_test.c.o
[100%] Linking C executable simple_test
[100%] Built target simple_test
lhj@lhj:~/SOEM/build$
部署
cp libsoem.a /mnt/d
cp test/linux/simple_test/simple_test /mnt/d
cp test/linux/slaveinfo/slaveinfo /mnt/d
将上述文件rz导入开发板
chmod +x simple_test slaveinfo
运行
root@myir-yg2lx:~# ./slaveinfo eth0
SOEM (Simple Open EtherCAT Master)
Slaveinfo
Starting slaveinfo
ec_init on eth0 succeeded.
No slaves found!
End slaveinfo, close socket
End program
root@myir-yg2lx:~# ./simple_test eth0
SOEM (Simple Open EtherCAT Master)
Simple test
Starting simple test
ec_init on eth0 succeeded.
No slaves found!
End simple test, close socket
End program
root@myir-yg2lx:~#
总结
本开发板接口资源丰富,性能强,特别适合工控领域的应用,比如作为EtherCAT主站。由于没有从站,所以暂时未能演示和从站通讯的功能。