本帖最后由 米尔电子嵌入式 于 2023-8-24 18:23 编辑

本篇测评由优秀测评者“qinyunti”提供。

前言
本文介绍【米尔MYD-YG2LX开发板】在工控领域的应用,实现基于SOEM的EtherCAT主站。开发环境基于WSL2。

下载代码
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主站。由于没有从站,所以暂时未能演示和从站通讯的功能。