Page 1 of 1

Compile problem with core 2.3.0 and STM32Ethernet

Posted: Fri Sep 09, 2022 8:56 am
by mattia424
Hi all, I am trying to compile the example (https://github.com/stm32duino/STM32Ethe ... Client.ino) with core 2.3.0 but it returns the following compilation errors. if I try to compile with core 2.2.0 everything works fine.

Code: Select all

Arduino:1.8.19 (Windows 10), Scheda:"Generic STM32F4 series, Generic F429ZITx, STM32CubeProgrammer (SWD), Enabled (generic 'Serial'), None, Low/Full Speed, Smallest (-Os default), None, Newlib Nano (default)"

C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp: In function 'void low_level_init(netif*)':
C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:170:18: error: 'struct ETH_InitTypeDef' has no member named 'AutoNegotiation'
  170 |   EthHandle.Init.AutoNegotiation = ETH_AUTONEGOTIATION_ENABLE;
      |                  ^~~~~~~~~~~~~~~
C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:171:18: error: 'struct ETH_InitTypeDef' has no member named 'Speed'
  171 |   EthHandle.Init.Speed = ETH_SPEED_100M;
      |                  ^~~~~
C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:172:18: error: 'struct ETH_InitTypeDef' has no member named 'DuplexMode'
  172 |   EthHandle.Init.DuplexMode = ETH_MODE_FULLDUPLEX;
      |                  ^~~~~~~~~~
C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:172:31: error: 'ETH_MODE_FULLDUPLEX' was not declared in this scope
  172 |   EthHandle.Init.DuplexMode = ETH_MODE_FULLDUPLEX;
      |                               ^~~~~~~~~~~~~~~~~~~
In file included from C:\Users\*********\AppData\Local\Arduino15\packages\STMicroelectronics\hardware\stm32\2.3.0\system/STM32F4xx/stm32f4xx_hal_conf_default.h:346,
                 from C:\Users\*********\AppData\Local\Arduino15\packages\STMicroelectronics\hardware\stm32\2.3.0\system/STM32F4xx/stm32f4xx_hal_conf.h:13,
                 from C:\Users\*********\AppData\Local\Arduino15\packages\STMicroelectronics\hardware\stm32\2.3.0\system/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal.h:29,
                 from C:\Users\*********\AppData\Local\Arduino15\packages\STMicroelectronics\hardware\stm32\2.3.0\system/Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h:287,
                 from C:\Users\*********\AppData\Local\Arduino15\packages\STMicroelectronics\hardware\stm32\2.3.0\cores\arduino/stm32/stm32_def.h:34,
                 from C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:48:
C:\Users\*********\AppData\Local\Arduino15\packages\STMicroelectronics\hardware\stm32\2.3.0\system/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_eth.h:1347:40: error: invalid conversion from 'uint32_t' {aka 'long unsigned int'} to 'ETH_MediaInterfaceTypeDef' [-fpermissive]
 1347 | #define ETH_MEDIA_INTERFACE_RMII      ((uint32_t)SYSCFG_PMC_MII_RMII_SEL)
      |                                       ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                        |
      |                                        uint32_t {aka long unsigned int}
C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:174:35: note: in expansion of macro 'ETH_MEDIA_INTERFACE_RMII'
  174 |   EthHandle.Init.MediaInterface = ETH_MEDIA_INTERFACE_RMII;
      |                                   ^~~~~~~~~~~~~~~~~~~~~~~~
C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:181:18: error: 'struct ETH_InitTypeDef' has no member named 'RxMode'
  181 |   EthHandle.Init.RxMode = ETH_RXPOLLING_MODE;
      |                  ^~~~~~
C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:183:18: error: 'struct ETH_InitTypeDef' has no member named 'ChecksumMode'
  183 |   EthHandle.Init.ChecksumMode = ETH_CHECKSUM_BY_HARDWARE;
      |                  ^~~~~~~~~~~~
C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:184:18: error: 'struct ETH_InitTypeDef' has no member named 'PhyAddress'
  184 |   EthHandle.Init.PhyAddress = LAN8742A_PHY_ADDRESS;
      |                  ^~~~~~~~~~
C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:193:3: error: 'HAL_ETH_DMATxDescListInit' was not declared in this scope
  193 |   HAL_ETH_DMATxDescListInit(&EthHandle, DMATxDscrTab, &Tx_Buff[0][0], ETH_TXBUFNB);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~
C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:196:3: error: 'HAL_ETH_DMARxDescListInit' was not declared in this scope
  196 |   HAL_ETH_DMARxDescListInit(&EthHandle, DMARxDscrTab, &Rx_Buff[0][0], ETH_RXBUFNB);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~
C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:223:48: error: invalid conversion from 'uint32_t*' {aka 'long unsigned int*'} to 'uint32_t' {aka 'long unsigned int'} [-fpermissive]
  223 |   HAL_ETH_ReadPHYRegister(&EthHandle, PHY_IMR, &regvalue);
      |                                                ^~~~~~~~~
      |                                                |
      |                                                uint32_t* {aka long unsigned int*}
C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:223:57: error: too few arguments to function 'HAL_StatusTypeDef HAL_ETH_ReadPHYRegister(ETH_HandleTypeDef*, uint32_t, uint32_t, uint32_t*)'
  223 |   HAL_ETH_ReadPHYRegister(&EthHandle, PHY_IMR, &regvalue);
      |                                                         ^
In file included from C:\Users\*********\AppData\Local\Arduino15\packages\STMicroelectronics\hardware\stm32\2.3.0\system/STM32F4xx/stm32f4xx_hal_conf_default.h:346,
                 from C:\Users\*********\AppData\Local\Arduino15\packages\STMicroelectronics\hardware\stm32\2.3.0\system/STM32F4xx/stm32f4xx_hal_conf.h:13,
                 from C:\Users\*********\AppData\Local\Arduino15\packages\STMicroelectronics\hardware\stm32\2.3.0\system/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal.h:29,
                 from C:\Users\*********\AppData\Local\Arduino15\packages\STMicroelectronics\hardware\stm32\2.3.0\system/Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h:287,
                 from C:\Users\*********\AppData\Local\Arduino15\packages\STMicroelectronics\hardware\stm32\2.3.0\cores\arduino/stm32/stm32_def.h:34,
                 from C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:48:
C:\Users\*********\AppData\Local\Arduino15\packages\STMicroelectronics\hardware\stm32\2.3.0\system/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_eth.h:2067:19: note: declared here
 2067 | HAL_StatusTypeDef HAL_ETH_ReadPHYRegister(ETH_HandleTypeDef *heth, uint32_t PHYAddr, uint32_t PHYReg,
      |                   ^~~~~~~~~~~~~~~~~~~~~~~
C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:228:57: error: too few arguments to function 'HAL_StatusTypeDef HAL_ETH_WritePHYRegister(ETH_HandleTypeDef*, uint32_t, uint32_t, uint32_t)'
  228 |   HAL_ETH_WritePHYRegister(&EthHandle, PHY_IMR, regvalue);
      |                                                         ^
In file included from C:\Users\*********\AppData\Local\Arduino15\packages\STMicroelectronics\hardware\stm32\2.3.0\system/STM32F4xx/stm32f4xx_hal_conf_default.h:346,
                 from C:\Users\*********\AppData\Local\Arduino15\packages\STMicroelectronics\hardware\stm32\2.3.0\system/STM32F4xx/stm32f4xx_hal_conf.h:13,
                 from C:\Users\*********\AppData\Local\Arduino15\packages\STMicroelectronics\hardware\stm32\2.3.0\system/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal.h:29,
                 from C:\Users\*********\AppData\Local\Arduino15\packages\STMicroelectronics\hardware\stm32\2.3.0\system/Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h:287,
                 from C:\Users\*********\AppData\Local\Arduino15\packages\STMicroelectronics\hardware\stm32\2.3.0\cores\arduino/stm32/stm32_def.h:34,
                 from C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:48:
C:\Users\*********\AppData\Local\Arduino15\packages\STMicroelectronics\hardware\stm32\2.3.0\system/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_eth.h:2065:19: note: declared here
 2065 | HAL_StatusTypeDef HAL_ETH_WritePHYRegister(ETH_HandleTypeDef *heth, uint32_t PHYAddr, uint32_t PHYReg,
      |                   ^~~~~~~~~~~~~~~~~~~~~~~~
C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp: In function 'err_t low_level_output(netif*, pbuf*)':
C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:254:43: error: 'struct ETH_HandleTypeDef' has no member named 'TxDesc'; did you mean 'TxDescList'?
  254 |   uint8_t *buffer = (uint8_t *)(EthHandle.TxDesc->Buffer1Addr);
      |                                           ^~~~~~
      |                                           TxDescList
C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:263:25: error: 'struct ETH_HandleTypeDef' has no member named 'TxDesc'; did you mean 'TxDescList'?
  263 |   DmaTxDesc = EthHandle.TxDesc;
      |                         ^~~~~~
      |                         TxDescList
C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:269:21: error: 'volatile struct ETH_DMADescTypeDef' has no member named 'Status'
  269 |     if ((DmaTxDesc->Status & ETH_DMATXDESC_OWN) != (uint32_t)RESET) {
      |                     ^~~~~~
C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:284:53: error: 'volatile struct ETH_DMADescTypeDef' has no member named 'Buffer2NextDescAddr'
  284 |       DmaTxDesc = (ETH_DMADescTypeDef *)(DmaTxDesc->Buffer2NextDescAddr);
      |                                                     ^~~~~~~~~~~~~~~~~~~
C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:287:23: error: 'volatile struct ETH_DMADescTypeDef' has no member named 'Status'
  287 |       if ((DmaTxDesc->Status & ETH_DMATXDESC_OWN) != (uint32_t)RESET) {
      |                       ^~~~~~
C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:292:39: error: 'volatile struct ETH_DMADescTypeDef' has no member named 'Buffer1Addr'
  292 |       buffer = (uint8_t *)(DmaTxDesc->Buffer1Addr);
      |                                       ^~~~~~~~~~~
C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:307:3: error: 'HAL_ETH_TransmitFrame' was not declared in this scope; did you mean 'HAL_ETH_Transmit_IT'?
  307 |   HAL_ETH_TransmitFrame(&EthHandle, framelength);
      |   ^~~~~~~~~~~~~~~~~~~~~
      |   HAL_ETH_Transmit_IT
C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp: In function 'pbuf* low_level_input(netif*)':
C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:346:7: error: 'HAL_ETH_GetReceivedFrame_IT' was not declared in this scope
  346 |   if (HAL_ETH_GetReceivedFrame_IT(&EthHandle) != HAL_OK) {
      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~
C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:351:19: error: 'struct ETH_HandleTypeDef' has no member named 'RxFrameInfos'
  351 |   len = EthHandle.RxFrameInfos.length;
      |                   ^~~~~~~~~~~~
C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:352:33: error: 'struct ETH_HandleTypeDef' has no member named 'RxFrameInfos'
  352 |   buffer = (uint8_t *)EthHandle.RxFrameInfos.buffer;
      |                                 ^~~~~~~~~~~~
C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:360:27: error: 'struct ETH_HandleTypeDef' has no member named 'RxFrameInfos'
  360 |     dmarxdesc = EthHandle.RxFrameInfos.FSRxDesc;
      |                           ^~~~~~~~~~~~
C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:373:55: error: 'volatile struct ETH_DMADescTypeDef' has no member named 'Buffer2NextDescAddr'
  373 |         dmarxdesc = (ETH_DMADescTypeDef *)(dmarxdesc->Buffer2NextDescAddr);
      |                                                       ^~~~~~~~~~~~~~~~~~~
C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:374:41: error: 'volatile struct ETH_DMADescTypeDef' has no member named 'Buffer1Addr'
  374 |         buffer = (uint8_t *)(dmarxdesc->Buffer1Addr);
      |                                         ^~~~~~~~~~~
C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:389:25: error: 'struct ETH_HandleTypeDef' has no member named 'RxFrameInfos'
  389 |   dmarxdesc = EthHandle.RxFrameInfos.FSRxDesc;
      |                         ^~~~~~~~~~~~
C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:391:29: error: 'struct ETH_HandleTypeDef' has no member named 'RxFrameInfos'
  391 |   for (i = 0; i < EthHandle.RxFrameInfos.SegCount; i++) {
      |                             ^~~~~~~~~~~~
C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:392:16: error: 'volatile struct ETH_DMADescTypeDef' has no member named 'Status'
  392 |     dmarxdesc->Status |= ETH_DMARXDESC_OWN;
      |                ^~~~~~
C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:393:51: error: 'volatile struct ETH_DMADescTypeDef' has no member named 'Buffer2NextDescAddr'
  393 |     dmarxdesc = (ETH_DMADescTypeDef *)(dmarxdesc->Buffer2NextDescAddr);
      |                                                   ^~~~~~~~~~~~~~~~~~~
C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:397:13: error: 'struct ETH_HandleTypeDef' has no member named 'RxFrameInfos'
  397 |   EthHandle.RxFrameInfos.SegCount = 0;
      |             ^~~~~~~~~~~~
C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp: In function 'uint8_t ethernetif_is_init()':
C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:449:21: error: 'struct ETH_HandleTypeDef' has no member named 'State'; did you mean 'gState'?
  449 |   return (EthHandle.State != HAL_ETH_STATE_RESET);
      |                     ^~~~~
      |                     gState
C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp: In function 'void ethernetif_set_link(netif*)':
C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:509:49: error: invalid conversion from 'uint32_t*' {aka 'long unsigned int*'} to 'uint32_t' {aka 'long unsigned int'} [-fpermissive]
  509 |   HAL_ETH_ReadPHYRegister(&EthHandle, PHY_ISFR, &regvalue);
      |                                                 ^~~~~~~~~
      |                                                 |
      |                                                 uint32_t* {aka long unsigned int*}
C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:509:58: error: too few arguments to function 'HAL_StatusTypeDef HAL_ETH_ReadPHYRegister(ETH_HandleTypeDef*, uint32_t, uint32_t, uint32_t*)'
  509 |   HAL_ETH_ReadPHYRegister(&EthHandle, PHY_ISFR, &regvalue);
      |                                                          ^
In file included from C:\Users\*********\AppData\Local\Arduino15\packages\STMicroelectronics\hardware\stm32\2.3.0\system/STM32F4xx/stm32f4xx_hal_conf_default.h:346,
                 from C:\Users\*********\AppData\Local\Arduino15\packages\STMicroelectronics\hardware\stm32\2.3.0\system/STM32F4xx/stm32f4xx_hal_conf.h:13,
                 from C:\Users\*********\AppData\Local\Arduino15\packages\STMicroelectronics\hardware\stm32\2.3.0\system/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal.h:29,
                 from C:\Users\*********\AppData\Local\Arduino15\packages\STMicroelectronics\hardware\stm32\2.3.0\system/Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h:287,
                 from C:\Users\*********\AppData\Local\Arduino15\packages\STMicroelectronics\hardware\stm32\2.3.0\cores\arduino/stm32/stm32_def.h:34,
                 from C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:48:
C:\Users\*********\AppData\Local\Arduino15\packages\STMicroelectronics\hardware\stm32\2.3.0\system/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_eth.h:2067:19: note: declared here
 2067 | HAL_StatusTypeDef HAL_ETH_ReadPHYRegister(ETH_HandleTypeDef *heth, uint32_t PHYAddr, uint32_t PHYReg,
      |                   ^~~~~~~~~~~~~~~~~~~~~~~
C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:516:48: error: invalid conversion from 'uint32_t*' {aka 'long unsigned int*'} to 'uint32_t' {aka 'long unsigned int'} [-fpermissive]
  516 |   HAL_ETH_ReadPHYRegister(&EthHandle, PHY_BSR, &regvalue);
      |                                                ^~~~~~~~~
      |                                                |
      |                                                uint32_t* {aka long unsigned int*}
C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:516:57: error: too few arguments to function 'HAL_StatusTypeDef HAL_ETH_ReadPHYRegister(ETH_HandleTypeDef*, uint32_t, uint32_t, uint32_t*)'
  516 |   HAL_ETH_ReadPHYRegister(&EthHandle, PHY_BSR, &regvalue);
      |                                                         ^
In file included from C:\Users\*********\AppData\Local\Arduino15\packages\STMicroelectronics\hardware\stm32\2.3.0\system/STM32F4xx/stm32f4xx_hal_conf_default.h:346,
                 from C:\Users\*********\AppData\Local\Arduino15\packages\STMicroelectronics\hardware\stm32\2.3.0\system/STM32F4xx/stm32f4xx_hal_conf.h:13,
                 from C:\Users\*********\AppData\Local\Arduino15\packages\STMicroelectronics\hardware\stm32\2.3.0\system/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal.h:29,
                 from C:\Users\*********\AppData\Local\Arduino15\packages\STMicroelectronics\hardware\stm32\2.3.0\system/Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h:287,
                 from C:\Users\*********\AppData\Local\Arduino15\packages\STMicroelectronics\hardware\stm32\2.3.0\cores\arduino/stm32/stm32_def.h:34,
                 from C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:48:
C:\Users\*********\AppData\Local\Arduino15\packages\STMicroelectronics\hardware\stm32\2.3.0\system/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_eth.h:2067:19: note: declared here
 2067 | HAL_StatusTypeDef HAL_ETH_ReadPHYRegister(ETH_HandleTypeDef *heth, uint32_t PHYAddr, uint32_t PHYReg,
      |                   ^~~~~~~~~~~~~~~~~~~~~~~
C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp: In function 'void ethernetif_update_config(netif*)':
C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:542:24: error: 'struct ETH_InitTypeDef' has no member named 'AutoNegotiation'
  542 |     if (EthHandle.Init.AutoNegotiation != ETH_AUTONEGOTIATION_DISABLE) {
      |                        ^~~~~~~~~~~~~~~
C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:545:51: error: invalid conversion from 'uint32_t*' {aka 'long unsigned int*'} to 'uint32_t' {aka 'long unsigned int'} [-fpermissive]
  545 |       HAL_ETH_ReadPHYRegister(&EthHandle, PHY_SR, &regvalue);
      |                                                   ^~~~~~~~~
      |                                                   |
      |                                                   uint32_t* {aka long unsigned int*}
C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:545:60: error: too few arguments to function 'HAL_StatusTypeDef HAL_ETH_ReadPHYRegister(ETH_HandleTypeDef*, uint32_t, uint32_t, uint32_t*)'
  545 |       HAL_ETH_ReadPHYRegister(&EthHandle, PHY_SR, &regvalue);
      |                                                            ^
In file included from C:\Users\*********\AppData\Local\Arduino15\packages\STMicroelectronics\hardware\stm32\2.3.0\system/STM32F4xx/stm32f4xx_hal_conf_default.h:346,
                 from C:\Users\*********\AppData\Local\Arduino15\packages\STMicroelectronics\hardware\stm32\2.3.0\system/STM32F4xx/stm32f4xx_hal_conf.h:13,
                 from C:\Users\*********\AppData\Local\Arduino15\packages\STMicroelectronics\hardware\stm32\2.3.0\system/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal.h:29,
                 from C:\Users\*********\AppData\Local\Arduino15\packages\STMicroelectronics\hardware\stm32\2.3.0\system/Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h:287,
                 from C:\Users\*********\AppData\Local\Arduino15\packages\STMicroelectronics\hardware\stm32\2.3.0\cores\arduino/stm32/stm32_def.h:34,
                 from C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:48:
C:\Users\*********\AppData\Local\Arduino15\packages\STMicroelectronics\hardware\stm32\2.3.0\system/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_eth.h:2067:19: note: declared here
 2067 | HAL_StatusTypeDef HAL_ETH_ReadPHYRegister(ETH_HandleTypeDef *heth, uint32_t PHYAddr, uint32_t PHYReg,
      |                   ^~~~~~~~~~~~~~~~~~~~~~~
C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:553:24: error: 'struct ETH_InitTypeDef' has no member named 'DuplexMode'
  553 |         EthHandle.Init.DuplexMode = ETH_MODE_FULLDUPLEX;
      |                        ^~~~~~~~~~
C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:553:37: error: 'ETH_MODE_FULLDUPLEX' was not declared in this scope
  553 |         EthHandle.Init.DuplexMode = ETH_MODE_FULLDUPLEX;
      |                                     ^~~~~~~~~~~~~~~~~~~
C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:556:24: error: 'struct ETH_InitTypeDef' has no member named 'DuplexMode'
  556 |         EthHandle.Init.DuplexMode = ETH_MODE_HALFDUPLEX;
      |                        ^~~~~~~~~~
C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:556:37: error: 'ETH_MODE_HALFDUPLEX' was not declared in this scope
  556 |         EthHandle.Init.DuplexMode = ETH_MODE_HALFDUPLEX;
      |                                     ^~~~~~~~~~~~~~~~~~~
C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:561:24: error: 'struct ETH_InitTypeDef' has no member named 'Speed'
  561 |         EthHandle.Init.Speed = ETH_SPEED_10M;
      |                        ^~~~~
C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:564:24: error: 'struct ETH_InitTypeDef' has no member named 'Speed'
  564 |         EthHandle.Init.Speed = ETH_SPEED_100M;
      |                        ^~~~~
C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:573:80: error: 'struct ETH_InitTypeDef' has no member named 'DuplexMode'
  573 |       HAL_ETH_WritePHYRegister(&EthHandle, PHY_BCR, ((uint16_t)(EthHandle.Init.DuplexMode >> 3) |
      |                                                                                ^~~~~~~~~~
C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:574:80: error: 'struct ETH_InitTypeDef' has no member named 'Speed'
  574 |                                                      (uint16_t)(EthHandle.Init.Speed >> 1)));
      |                                                                                ^~~~~
C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:578:36: error: 'ETH_MACInitTypeDef' was not declared in this scope; did you mean 'ETH_InitTypeDef'?
  578 |     HAL_ETH_ConfigMAC(&EthHandle, (ETH_MACInitTypeDef *) NULL);
      |                                    ^~~~~~~~~~~~~~~~~~
      |                                    ETH_InitTypeDef
C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:578:56: error: expected primary-expression before ')' token
  578 |     HAL_ETH_ConfigMAC(&EthHandle, (ETH_MACInitTypeDef *) NULL);
      |                                                        ^
C:\Users\*********\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:578:5: error: 'HAL_ETH_ConfigMAC' was not declared in this scope
  578 |     HAL_ETH_ConfigMAC(&EthHandle, (ETH_MACInitTypeDef *) NULL);
      |     ^~~~~~~~~~~~~~~~~
exit status 1
Errore durante la compilazione per la scheda Generic STM32F4 series.

Re: Compile problem with core 2.3.0 and STM32Ethernet

Posted: Fri Sep 09, 2022 10:33 am
by fpiSTM
Which board?

Re: Compile problem with core 2.3.0 and STM32Ethernet

Posted: Fri Sep 09, 2022 11:04 am
by mattia424
On a proprietary board based on STM32F429ZI

Re: Compile problem with core 2.3.0 and STM32Ethernet

Posted: Fri Sep 09, 2022 12:48 pm
by fpiSTM
OK. I found the issue. Since 2.3.0, the STM32CubeF4 has been updated. Since this update the old HAL ETH driver has been reworked by ST.
In that case you have to enable the

Code: Select all

HAL_ETH_LEGACY_MODULE_ENABLED
In the variant_generic.h apply this patch: https://github.com/stm32duino/Arduino_C ... #L250-L252

Code: Select all

-  #define HAL_ETH_MODULE_ENABLED
+  /* #define HAL_ETH_MODULE_ENABLED */
+  /* For compatibility until STM32Ethernet library is updated */
+  #define HAL_ETH_LEGACY_MODULE_ENABLED
I will fix that in the core.

Re: Compile problem with core 2.3.0 and STM32Ethernet

Posted: Fri Sep 09, 2022 11:29 pm
by mattia424
Thanks! now it works correctly