中國自動化學會專家谘詢工作委員會指定宣傳媒體
新聞詳情

如何移植EtherCAT Igh--基於米爾RK3576開發板

http://www.kadhoai.com.cn 2026-04-07 07:30:52 來源:米爾電子

本文將介紹基於米爾電子MYD-LR3576開發板(米爾基於瑞芯微 RK3576開發板)的板端移植EtherCAT Igh方案的開發測試。

米爾基於瑞芯微RK3576開發板

EtherCAT IgH需要保證高實時性,Preempt-RT是一種針對實時性能進行了優化的Linux內核。與普通的Linux內核相比,Preempt-RT具有以下優勢:

  1. 實時性能: Preempt-RT提(ti)供(gong)了(le)更(geng)可(ke)靠(kao)和(he)更(geng)精(jing)確(que)的(de)實(shi)時(shi)性(xing)能(neng)。它(ta)采(cai)用(yong)了(le)一(yi)些(xie)實(shi)時(shi)調(tiao)度(du)策(ce)略(lve)和(he)機(ji)製(zhi),使(shi)得(de)任(ren)務(wu)能(neng)夠(gou)按(an)照(zhao)嚴(yan)格(ge)的(de)時(shi)間(jian)要(yao)求(qiu)執(zhi)行(xing),從(cong)而(er)適(shi)用(yong)於(yu)需(xu)要(yao)高(gao)度(du)可(ke)預(yu)測(ce)性(xing)和(he)低(di)延(yan)遲(chi)的(de)應(ying)用(yong)場(chang)景(jing),如(ru)工(gong)業(ye)自(zi)動(dong)化(hua)、機器人控製等。
  2. 硬實時能力: Preempt-RTjuyouyingshishinengli,jinenggouquebaorenwuzaiguidingdeshijianneiwancheng,erbuhuishoudaoqitarenwuhuozhongduandeganrao。zheduiyuxuyaoyangedeshijianxianzhideyingyongfeichangzhongyao,ruhangkonghangtian、醫療設備等領域。
  3. 任務調度: Preempt-RTshiyonglegengjiagaoxiaoheyouhuaderenwutiaodusuanfa,rujiyuyouxianjideshishitiaodusuanfa,yiquebaogaoyouxianjirenwunenggoujishixiangyingbingwancheng,erdiyouxianjirenwubuhuiyingxiangdaoshishirenwudezhixing。
  4. 中斷處理: Preempt-RT針對中斷處理進行了優化,使得中斷的響應時間更短,能夠更快地響應外部事件。
  5. 內核定時器: Preempt-RT提供了更精確和可配置的內核定時器,使得可以實現微秒級的定時精度,適用於對時間要求極高的應用場景。
  6. 實時擴展: Preempt-RT提供了一些實時擴展機製,使得用戶能夠方便地對內核進行定製和擴展,以滿足特定應用的需求。總的來說,Preempt-RT在實時性能、可靠性和精度方麵比普通的Linux內核更加優秀,因此在對實時性能要求較高的應用場景中被廣泛使用。瑞芯微提供配套SDK的Preempt-RT補丁。

1、Linux PREEMPT_RT補丁

Linux Kernel應用補丁的指令格式如下

patch -p1 < path/to/patch-x.y.z

Rockchip SDK中的doc/Real-Time-Performance目錄下有相關的實時內核補丁。

MYD3576使用的內核版本為6.1.75,將文件夾中的Kernel-6.1下的補丁應用到內核配置中。

cd /path/to/kernel-6.1/

patch中存在重定義問題

  • serial8250_set_IER(struct uart_8250_port *up,int ier) 函數重定義
  • serial8250_console_write_atomic()函數重定義
  • serial8250_console_putchar_locked(struct uart_port *port,unsigned char ch) 函數重定義
  • serial8250_console_write_atomic*() 函數重定義
  • serial8250_console_setup 中 變量up重定義

修改以上幾處的代碼,注釋掉其中和補丁patch添加的代碼中不同的部分,避免編譯過程中報錯。

make -C /path/to/SDK/kernel/ -j9 CROSS_COMPILE=/path/to/SDK/prebuilts/gcc/linux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu- ARCH=arm64 rockchip_linux_defconfig rk3576.config rockchip_linux_docker.config rockchip_rt.config

指令中/path/to/SDKSDK的安裝路徑。

2、EtherCAT IGH編譯和安裝

下載EtherCAT IGH的代碼

下載的代碼壓縮包為ethercat-stable-1.6.xxxx,根據壓縮包文件類型,將其解壓得到ethercat igh的源代碼。

參考官方使用手冊《ethercat-doc.pdf》對源代碼進行配置

./configure --prefix=$PWD/output --with-linux-dir=$MYD3576_ENV/kernel-6.1 --enable-generic=yes --host=aarch64-buildroot-linux

命令行中$PWD為當前文件夾,$MYD3576_ENV為米爾SDK的安裝位置,--host參數根據使用的工具鏈的編譯器前綴進行調整。

導入Buildroot工具鏈的環境配置腳本

source $MYD3576_ENV/buildroot/output/rockchip_rk3576/host/environment-setup

將該腳本以係統變量的形式存儲起來,便於導入

export MYD3576_BUILDROOT=$MYD3576_ENV/buildroot/output/rockchip_rk3576/host/environment-setupsource $MYD3576_BUILDROOT

執行以下指令完成代碼、模塊的編譯和輸出

make

make modulessudo

make install

首先安裝編譯結果的ec_generic.ko(位於devices文件夾中)和ec_master.ko(位於master文件夾中)模塊,執行下列指令查看內核的版本信息。

uname -s -r -vLinux 6.1.75-rt16 #1 SMP PREEMPT Mon May 26 20:57:18 CST 2025

在開發板的/lib/modules目錄中創建內核版本文件,用於存放ec_generic.ko和ec_master.ko模塊。

mkdir -p /lib/modules/6.1.75-rt16

output目錄中包含運行可執行的二進製文件、庫文件等,將其發送到開發板上即可。需要傳輸的文件包括以下幾項

/sbin/ethercatctl

/lib/*

/etc/*

/bin/*

修改/sbin/ethercatctl中的指向/bin/ethercat的文件路徑變量。修改/etc/init.d/ethercat中指向/sbin/ethercatctl/etc/sysconfig/ethercat的文件路徑變量。

修改/etc/ethercat.confEtherCAT Master的MAC地址

完成上述配置,執行/etc/init.d/ethercat start

購買鏈接:

米爾基於RK3576開發板:

https://detail.tmall.com/item.htm?id=846172160887

版權所有 工控網 Copyright©2026 Gkong.com, All Rights Reserved