使用的 RK3588的分支版本是linux-6.1-stan-rkr6 内核版本是6.1.99 ,文件系统是 Debian GNU/Linux 12 ,把瑞芯微的SDK更新到linux-6.1-stan-rkr6这个版本即可,适配preemrt的 ethercat的源码是RK已经适配过的,直接拿来使用即可。 RK的SDK的doc也有ethercat相关的文档。
# ethcat_igh我放到了SDK的根目录方便编译
SDK_DIR=/home/yangx/linux2/yangx/RK3588/IAC-RK3588-MB-kernel-6.1/
TOOLS_PATH=
$SDK_DIR/prebuilts/gcc/linux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/
CROSS_PATH=
$TOOLS_PATH/bin
export PATH=
$TOOLS_PATH:
$CROSS_PATH:
$PATH
export CROSS_COMPILE=aarch64-none-linux-gnu-
export ARCH=arm64
KERNEL_SRC=/home/yangx/linux2/yangx/RK3588/IAC-RK3588-MB-kernel-6.1/kernel/
./bootstrap
./configure --prefix=/home/yangx/linux2/yangx/RK3588/IAC-RK3588-MB-kernel-6.1/ethercat_igh/build/ --host=aarch64-none-linux-gnu --with-linux-dir=
${KERNEL_SRC} --
enable-8139too=no --
enable-stmmac=yes --
enable-generic=no --
enable-wildcards=yes
# 编译驱动
make ARCH=arm64 modules
#编译应用工具和ethercat库
make ARCH=arm64
用U盘把ethercat_igh文件夹,直接拷贝到板子的根目录编译,命令如下:
./bootstrap
./configure --with-linux-dir=/usr/src/linux-headers-6.1-rockchip --
disable-8139too --
enable-generic=no --
enable-stmmac=yes --
disable-e1000e --
enable-kernel --
disable-hrtimer --
disable-eoe --prefix=/opt/etherlab
make modules
make
make install
两种方式都能编译成功。 编译通用驱动是这个两个参数--enable-generic=yes --enable-stmmac=no , 实际调试的时候是先加载通用的驱动,使用ethercat的命令都是正常的,然后再重新编译stmmac的驱动,进行调试。
板子加载ethercat驱动和使用的步骤
# 把内核源码编译的 pcs_xpcs.ko phylink.ko 放到/lib/modules/6.1.99-rt36/文件夹
insmod phylink.ko
insmod pcs_xpcs.ko
# 设置为eth0的MAC地址
insmod ec_master.ko main_devices=32:d4:b5:f9:e3:d5
insmod ec_stmmac.ko
Ethercat模块是 EL1008,EL2008,网线直连RK3588和ethercat模块,1ms周期,10us的抖动延时。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70018165/viewspace-3115286/ ,如需转载,请注明出处,否则将追究法律责任。