IgH初始化--未接从站
ec_master_idle_thread流程
第一次循环
ec_fsm_master_state_start封装报文,待发送
设置下一状态机ec_fsm_master_state_broadcast
ecrt_master_send发送ec_fsm_master_state_start封装的报文
ecrt_master_send时,检测到master绑定的网卡处于link down状态,则给报文设置datagram->state = EC_DATAGRAM_ERROR;
根据master是否idle,选定一个延时时间,延时时间到后,执行第二次循环。
第二次循环
执行ec_fsm_master_state_broadcast函数
fsm->rescan_required,不需要
master->slave_count,没扫描到从站,所以是0
所以ec_fsm_master_state_broadcast中的if条件不好被执行,最终执行最后的ec_fsm_master_restart的函数,在ec_fsm_master_restart函数中将状态机设置为ec_fsm_master_state_start并立即执行。
root@ubuntu:/home/gsf# while true;do dmesg -c;sleep 1;done
[ 396.698450] ec_master: loading out-of-tree module taints kernel.
[ 396.700257] EtherCAT: Master driver 1.5.2 unknown
[ 396.700271] geshifei ec_fsm_master_reset 128: set fsm->state to ec_fsm_master_state_start
[ 396.700272] geshifei ec_fsm_coe_init 175: set fsm->state to null
[ 396.700272] geshifei ec_fsm_soe_init 109: set fsm->state to NULL
[ 396.700273] geshifei ec_fsm_change_init 70: set fsm->state to NULL
[ 396.700274] geshifei ec_fsm_sii_init 78: set fsm->state to NULL
[ 396.700274] geshifei ec_fsm_sii_init 78: set fsm->state to NULL
[ 396.700336] EtherCAT: 1 master waiting for devices.
[ 396.707191] ec_generic: EtherCAT master generic Ethernet device module 1.5.2 unknown
[ 396.707198] EtherCAT: Accepting 6C:24:08:29:52:19 as main device for master 0.
[ 396.707209] ec_generic: Binding socket to interface 2 (enp4s0).
[ 396.754697] EtherCAT 0: Starting EtherCAT-IDLE thread.
[ 396.754877] geshifei Idle thread running with send interval = 5000000 us, max data size=7931618
[ 396.754881] geshifei Idle thread running with send interval = 5000000 us, max data size=7931618
[ 396.754895] geshifei ec_master_idle_thread 1603: exec ec_fsm_master_exec
[ 396.754897] geshifei ec_fsm_master_exec 163: exec fsm->state
[ 396.754898] geshifei ec_fsm_master_state_start 210: begin...
[ 396.754900] geshifei ec_fsm_master_state_start 257: set fsm->state to ec_fsm_master_state_broadcast
[ 396.754901] geshifei ec_master_idle_thread 1606: exec ec_master_exec_slave_fsms
[ 396.754902] geshifei ec_master_exec_slave_fsms 1477: begin...
[ 396.754903] geshifei ec_master_exec_slave_fsms 1531: master->fsm_exec_count=0 count=0
[ 396.754904] geshifei ec_master_idle_thread 1614: exec ec_master_queue_datagram
[ 396.754905] geshifei ec_master_idle_thread 1617: exec ecrt_master_send
[ 396.754906] geshifei ecrt_master_send 2518: set datagram->state = EC_DATAGRAM_ERROR