From 8710b1fd06898920c3a61baaa69efd0737afd5d8 Mon Sep 17 00:00:00 2001 From: SummerGift Date: Mon, 10 Jun 2019 10:05:11 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E3=80=90=E4=BF=AE=E5=A4=8D=E3=80=91PHY=20?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E6=9F=A5=E8=AF=A2=E8=BF=87=E7=A8=8B=E4=B8=AD?= =?UTF-8?q?=E7=9A=84=20bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bsp/stm32/libraries/HAL_Drivers/drv_eth.c | 50 +++++++++++++---------- 1 file changed, 29 insertions(+), 21 deletions(-) diff --git a/bsp/stm32/libraries/HAL_Drivers/drv_eth.c b/bsp/stm32/libraries/HAL_Drivers/drv_eth.c index 148a03f45b..b9b584ade9 100644 --- a/bsp/stm32/libraries/HAL_Drivers/drv_eth.c +++ b/bsp/stm32/libraries/HAL_Drivers/drv_eth.c @@ -468,32 +468,40 @@ static void phy_monitor_thread_entry(void *parameter) while (1) { - HAL_ETH_ReadPHYRegister(&EthHandle, PHY_BASIC_STATUS_REG, (uint32_t *)&status); - LOG_D("PHY BASIC STATUS REG:0x%04X", status); - phy_speed_new = 0; - if (status & (PHY_AUTONEGO_COMPLETE_MASK | PHY_LINKED_STATUS_MASK)) + if(HAL_ETH_ReadPHYRegister(&EthHandle, PHY_BASIC_STATUS_REG, (uint32_t *)&status) == HAL_OK) { - rt_uint32_t SR; - - phy_speed_new = PHY_LINK_MASK; - - SR = HAL_ETH_ReadPHYRegister(&EthHandle, PHY_Status_REG, (uint32_t *)&SR); - LOG_D("PHY Control/Status REG:0x%04X ", SR); - - if (SR & PHY_100M_MASK) + LOG_D("PHY BASIC STATUS REG:0x%04X", status); + + if (status & (PHY_AUTONEGO_COMPLETE_MASK | PHY_LINKED_STATUS_MASK)) { - phy_speed_new |= PHY_100M_MASK; - } - else if (SR & PHY_10M_MASK) - { - phy_speed_new |= PHY_10M_MASK; - } + rt_uint32_t SR; - if (SR & PHY_FULL_DUPLEX_MASK) - { - phy_speed_new |= PHY_FULL_DUPLEX_MASK; + phy_speed_new = PHY_LINK_MASK; + + if(HAL_ETH_ReadPHYRegister(&EthHandle, PHY_Status_REG, (uint32_t *)&SR) == HAL_OK) + { + LOG_D("PHY Control/Status REG:0x%04X ", SR); + + if (SR & PHY_100M_MASK) + { + phy_speed_new |= PHY_100M_MASK; + } + else if (SR & PHY_10M_MASK) + { + phy_speed_new |= PHY_10M_MASK; + } + + if (SR & PHY_FULL_DUPLEX_MASK) + { + phy_speed_new |= PHY_FULL_DUPLEX_MASK; + } + } + else + { + LOG_D("PHY Control/Status REG read error."); + } } } From 44e70b3c0d511871d6d8c0eff83ee08291de04e6 Mon Sep 17 00:00:00 2001 From: SummerGift Date: Mon, 10 Jun 2019 17:23:35 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E3=80=90=E5=AE=8C=E5=96=84=E3=80=91PHY=20?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E6=A3=80=E6=B5=8B=E9=A9=B1=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bsp/stm32/libraries/HAL_Drivers/drv_eth.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/bsp/stm32/libraries/HAL_Drivers/drv_eth.c b/bsp/stm32/libraries/HAL_Drivers/drv_eth.c index b9b584ade9..25ee3b0e84 100644 --- a/bsp/stm32/libraries/HAL_Drivers/drv_eth.c +++ b/bsp/stm32/libraries/HAL_Drivers/drv_eth.c @@ -501,9 +501,14 @@ static void phy_monitor_thread_entry(void *parameter) else { LOG_D("PHY Control/Status REG read error."); + continue; } } } + else + { + continue; + } /* linkchange */ if (phy_speed_new != phy_speed) From 7f710f9eabb435d0d7951b24cb7e6dd04011ff5d Mon Sep 17 00:00:00 2001 From: SummerGift Date: Mon, 10 Jun 2019 17:29:24 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E3=80=90=E4=BF=AE=E6=94=B9=E3=80=91changel?= =?UTF-8?q?og=20for=20PHY=20state=20detection=20process?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bsp/stm32/libraries/HAL_Drivers/drv_eth.c | 1 + 1 file changed, 1 insertion(+) diff --git a/bsp/stm32/libraries/HAL_Drivers/drv_eth.c b/bsp/stm32/libraries/HAL_Drivers/drv_eth.c index 25ee3b0e84..7b1896bcf6 100644 --- a/bsp/stm32/libraries/HAL_Drivers/drv_eth.c +++ b/bsp/stm32/libraries/HAL_Drivers/drv_eth.c @@ -7,6 +7,7 @@ * Date Author Notes * 2018-11-19 SummerGift first version * 2018-12-25 zylx fix some bugs + * 2019-06-10 SummerGift optimize PHY state detection process */ #include "board.h" From 680e3ff70d37a1b89f82507b9f1ce1cd57845f90 Mon Sep 17 00:00:00 2001 From: SummerGift Date: Mon, 10 Jun 2019 17:49:29 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E3=80=90=E4=BC=98=E5=8C=96=E3=80=91PHY=20?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E6=A3=80=E6=B5=8B=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bsp/stm32/libraries/HAL_Drivers/drv_eth.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/bsp/stm32/libraries/HAL_Drivers/drv_eth.c b/bsp/stm32/libraries/HAL_Drivers/drv_eth.c index 7b1896bcf6..a0420d9ce8 100644 --- a/bsp/stm32/libraries/HAL_Drivers/drv_eth.c +++ b/bsp/stm32/libraries/HAL_Drivers/drv_eth.c @@ -501,13 +501,16 @@ static void phy_monitor_thread_entry(void *parameter) } else { - LOG_D("PHY Control/Status REG read error."); + LOG_D("PHY PHY_Status_REG read error."); + rt_thread_mdelay(100); continue; } } } else { + LOG_D("PHY_BASIC_STATUS_REG read error."); + rt_thread_mdelay(100); continue; } From 6a9fb353f7ad1234d3032d4c8e933da83bc0b88c Mon Sep 17 00:00:00 2001 From: SummerGift Date: Mon, 10 Jun 2019 17:52:17 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E3=80=90=E4=BF=AE=E6=94=B9=E3=80=91HAL=5FE?= =?UTF-8?q?TH=5FRxCpltCallback=20=E6=8F=90=E7=A4=BA=E7=AD=89=E7=BA=A7?= =?UTF-8?q?=E7=94=B1=20error=20=E4=BF=AE=E6=94=B9=E4=B8=BA=20info=EF=BC=8C?= =?UTF-8?q?=E5=9B=A0=E4=B8=BA=E8=BF=99=E6=98=AF=E4=B8=80=E4=B8=AA=E9=9D=9E?= =?UTF-8?q?=E8=87=B4=E5=91=BD=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bsp/stm32/libraries/HAL_Drivers/drv_eth.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bsp/stm32/libraries/HAL_Drivers/drv_eth.c b/bsp/stm32/libraries/HAL_Drivers/drv_eth.c index a0420d9ce8..ecac596d38 100644 --- a/bsp/stm32/libraries/HAL_Drivers/drv_eth.c +++ b/bsp/stm32/libraries/HAL_Drivers/drv_eth.c @@ -383,7 +383,7 @@ void HAL_ETH_RxCpltCallback(ETH_HandleTypeDef *heth) rt_err_t result; result = eth_device_ready(&(stm32_eth_device.parent)); if (result != RT_EOK) - LOG_E("RX err = %d", result); + LOG_I("RxCpltCallback err = %d", result); } void HAL_ETH_ErrorCallback(ETH_HandleTypeDef *heth)