diff --git a/LWIP/Target/ethernetif.c b/LWIP/Target/ethernetif.c
index 0a98f60..77e8176 100644
--- a/LWIP/Target/ethernetif.c
+++ b/LWIP/Target/ethernetif.c
@@ -1,21 +1,21 @@
/* USER CODE BEGIN Header */
/**
- ******************************************************************************
- * File Name : ethernetif.c
- * Description : This file provides code for the configuration
- * of the ethernetif.c MiddleWare.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2024 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
+ ******************************************************************************
+ * File Name : ethernetif.c
+ * @file ethernetif.c
+ * of the ethernetif.c MiddleWare.
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2024 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software is licensed under terms that can be found in the LICENSE file
+ * in the root directory of this software component.
+ * If no LICENSE file comes with this software, it is provided AS-IS.
+ *
+ ******************************************************************************
+ */
/* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/
@@ -38,18 +38,18 @@
/* Private define ------------------------------------------------------------*/
/* The time to block waiting for input. */
-#define TIME_WAITING_FOR_INPUT ( portMAX_DELAY )
+#define TIME_WAITING_FOR_INPUT (portMAX_DELAY)
/* USER CODE BEGIN OS_THREAD_STACK_SIZE_WITH_RTOS */
/* Stack size of the interface thread */
-#define INTERFACE_THREAD_STACK_SIZE ( 350 )
+#define INTERFACE_THREAD_STACK_SIZE (350)
/* USER CODE END OS_THREAD_STACK_SIZE_WITH_RTOS */
/* Network interface name */
#define IFNAME0 's'
#define IFNAME1 't'
/* ETH Setting */
-#define ETH_DMA_TRANSMIT_TIMEOUT ( 20U )
-#define ETH_TX_BUFFER_MAX ((ETH_TX_DESC_CNT) * 2U)
+#define ETH_DMA_TRANSMIT_TIMEOUT (20U)
+#define ETH_TX_BUFFER_MAX ((ETH_TX_DESC_CNT) * 2U)
/* USER CODE BEGIN 1 */
@@ -81,8 +81,8 @@
/* Data Type Definitions */
typedef enum
{
- RX_ALLOC_OK = 0x00,
- RX_ALLOC_ERROR = 0x01
+ RX_ALLOC_OK = 0x00,
+ RX_ALLOC_ERROR = 0x01
} RxAllocStatusTypeDef;
typedef struct
@@ -92,40 +92,40 @@ typedef struct
} RxBuff_t;
/* Memory Pool Declaration */
-#define ETH_RX_BUFFER_CNT 12U
+#define ETH_RX_BUFFER_CNT 12U
LWIP_MEMPOOL_DECLARE(RX_POOL, ETH_RX_BUFFER_CNT, sizeof(RxBuff_t), "Zero-copy RX PBUF pool");
/* Variable Definitions */
static uint8_t RxAllocStatus;
-ETH_DMADescTypeDef DMARxDscrTab[ETH_RX_DESC_CNT]; /* Ethernet Rx DMA Descriptors */
-ETH_DMADescTypeDef DMATxDscrTab[ETH_TX_DESC_CNT]; /* Ethernet Tx DMA Descriptors */
+ETH_DMADescTypeDef DMARxDscrTab[ETH_RX_DESC_CNT]; /* Ethernet Rx DMA Descriptors */
+ETH_DMADescTypeDef DMATxDscrTab[ETH_TX_DESC_CNT]; /* Ethernet Tx DMA Descriptors */
/* USER CODE BEGIN 2 */
/* USER CODE END 2 */
-osSemaphoreId RxPktSemaphore = NULL; /* Semaphore to signal incoming packets */
-osSemaphoreId TxPktSemaphore = NULL; /* Semaphore to signal transmit packet complete */
+osSemaphoreId RxPktSemaphore = NULL; /* Semaphore to signal incoming packets */
+osSemaphoreId TxPktSemaphore = NULL; /* Semaphore to signal transmit packet complete */
/* Global Ethernet handle */
ETH_HandleTypeDef heth;
ETH_TxPacketConfig TxConfig;
/* Private function prototypes -----------------------------------------------*/
-static void ethernetif_input(void const * argument);
+static void ethernetif_input(void const *argument);
int32_t ETH_PHY_IO_Init(void);
-int32_t ETH_PHY_IO_DeInit (void);
+int32_t ETH_PHY_IO_DeInit(void);
int32_t ETH_PHY_IO_ReadReg(uint32_t DevAddr, uint32_t RegAddr, uint32_t *pRegVal);
int32_t ETH_PHY_IO_WriteReg(uint32_t DevAddr, uint32_t RegAddr, uint32_t RegVal);
int32_t ETH_PHY_IO_GetTick(void);
lan8742_Object_t LAN8742;
-lan8742_IOCtx_t LAN8742_IOCtx = {ETH_PHY_IO_Init,
- ETH_PHY_IO_DeInit,
- ETH_PHY_IO_WriteReg,
- ETH_PHY_IO_ReadReg,
- ETH_PHY_IO_GetTick};
+lan8742_IOCtx_t LAN8742_IOCtx = {ETH_PHY_IO_Init,
+ ETH_PHY_IO_DeInit,
+ ETH_PHY_IO_WriteReg,
+ ETH_PHY_IO_ReadReg,
+ ETH_PHY_IO_GetTick};
/* USER CODE BEGIN 3 */
@@ -135,33 +135,33 @@ lan8742_IOCtx_t LAN8742_IOCtx = {ETH_PHY_IO_Init,
void pbuf_free_custom(struct pbuf *p);
/**
- * @brief Ethernet Rx Transfer completed callback
- * @param handlerEth: ETH handler
- * @retval None
- */
+ * @brief Ethernet Rx Transfer completed callback
+ * @param handlerEth: ETH handler
+ * @retval None
+ */
void HAL_ETH_RxCpltCallback(ETH_HandleTypeDef *handlerEth)
{
osSemaphoreRelease(RxPktSemaphore);
}
/**
- * @brief Ethernet Tx Transfer completed callback
- * @param handlerEth: ETH handler
- * @retval None
- */
+ * @brief Ethernet Tx Transfer completed callback
+ * @param handlerEth: ETH handler
+ * @retval None
+ */
void HAL_ETH_TxCpltCallback(ETH_HandleTypeDef *handlerEth)
{
osSemaphoreRelease(TxPktSemaphore);
}
/**
- * @brief Ethernet DMA transfer error callback
- * @param handlerEth: ETH handler
- * @retval None
- */
+ * @brief Ethernet DMA transfer error callback
+ * @param handlerEth: ETH handler
+ * @retval None
+ */
void HAL_ETH_ErrorCallback(ETH_HandleTypeDef *handlerEth)
{
- if((HAL_ETH_GetDMAError(handlerEth) & ETH_DMASR_RBUS) == ETH_DMASR_RBUS)
+ if ((HAL_ETH_GetDMAError(handlerEth) & ETH_DMASR_RBUS) == ETH_DMASR_RBUS)
{
- osSemaphoreRelease(RxPktSemaphore);
+ osSemaphoreRelease(RxPktSemaphore);
}
}
@@ -187,7 +187,7 @@ static void low_level_init(struct netif *netif)
ETH_MACConfigTypeDef MACConf = {0};
/* Start ETH HAL Init */
- uint8_t MACAddr[6] ;
+ uint8_t MACAddr[6];
heth.Instance = ETH;
MACAddr[0] = 0x00;
MACAddr[1] = 0x80;
@@ -202,12 +202,15 @@ static void low_level_init(struct netif *netif)
heth.Init.RxBuffLen = 1536;
/* USER CODE BEGIN MACADDRESS */
-
+ MACAddr[3] = (uint8_t)HAL_GetUIDw0();
+ MACAddr[4] = (uint8_t)HAL_GetUIDw1();
+ MACAddr[5] = (uint8_t)HAL_GetUIDw2();
+ heth.Init.MACAddr = &MACAddr[0];
/* USER CODE END MACADDRESS */
hal_eth_init_status = HAL_ETH_Init(&heth);
- memset(&TxConfig, 0 , sizeof(ETH_TxPacketConfig));
+ memset(&TxConfig, 0, sizeof(ETH_TxPacketConfig));
TxConfig.Attributes = ETH_TX_PACKETS_FEATURES_CSUM | ETH_TX_PACKETS_FEATURES_CRCPAD;
TxConfig.ChecksumCtrl = ETH_CHECKSUM_IPHDR_PAYLOAD_INSERT_PHDR_CALC;
TxConfig.CRCPadCtrl = ETH_CRC_PAD_INSERT;
@@ -223,23 +226,23 @@ static void low_level_init(struct netif *netif)
netif->hwaddr_len = ETH_HWADDR_LEN;
/* set MAC hardware address */
- netif->hwaddr[0] = heth.Init.MACAddr[0];
- netif->hwaddr[1] = heth.Init.MACAddr[1];
- netif->hwaddr[2] = heth.Init.MACAddr[2];
- netif->hwaddr[3] = heth.Init.MACAddr[3];
- netif->hwaddr[4] = heth.Init.MACAddr[4];
- netif->hwaddr[5] = heth.Init.MACAddr[5];
+ netif->hwaddr[0] = heth.Init.MACAddr[0];
+ netif->hwaddr[1] = heth.Init.MACAddr[1];
+ netif->hwaddr[2] = heth.Init.MACAddr[2];
+ netif->hwaddr[3] = heth.Init.MACAddr[3];
+ netif->hwaddr[4] = heth.Init.MACAddr[4];
+ netif->hwaddr[5] = heth.Init.MACAddr[5];
/* maximum transfer unit */
netif->mtu = ETH_MAX_PAYLOAD;
- /* Accept broadcast address and ARP traffic */
- /* don't set NETIF_FLAG_ETHARP if this device is not an ethernet one */
- #if LWIP_ARP
- netif->flags |= NETIF_FLAG_BROADCAST | NETIF_FLAG_ETHARP;
- #else
- netif->flags |= NETIF_FLAG_BROADCAST;
- #endif /* LWIP_ARP */
+/* Accept broadcast address and ARP traffic */
+/* don't set NETIF_FLAG_ETHARP if this device is not an ethernet one */
+#if LWIP_ARP
+ netif->flags |= NETIF_FLAG_BROADCAST | NETIF_FLAG_ETHARP;
+#else
+ netif->flags |= NETIF_FLAG_BROADCAST;
+#endif /* LWIP_ARP */
/* create a binary semaphore used for informing ethernetif of frame reception */
RxPktSemaphore = xSemaphoreCreateBinary();
@@ -248,14 +251,14 @@ static void low_level_init(struct netif *netif)
TxPktSemaphore = xSemaphoreCreateBinary();
/* create the task that handles the ETH_MAC */
-/* USER CODE BEGIN OS_THREAD_DEF_CREATE_CMSIS_RTOS_V1 */
+ /* USER CODE BEGIN OS_THREAD_DEF_CREATE_CMSIS_RTOS_V1 */
osThreadDef(EthIf, ethernetif_input, osPriorityRealtime, 0, INTERFACE_THREAD_STACK_SIZE);
- osThreadCreate (osThread(EthIf), netif);
-/* USER CODE END OS_THREAD_DEF_CREATE_CMSIS_RTOS_V1 */
+ osThreadCreate(osThread(EthIf), netif);
+ /* USER CODE END OS_THREAD_DEF_CREATE_CMSIS_RTOS_V1 */
-/* USER CODE BEGIN PHY_PRE_CONFIG */
+ /* USER CODE BEGIN PHY_PRE_CONFIG */
-/* USER CODE END PHY_PRE_CONFIG */
+ /* USER CODE END PHY_PRE_CONFIG */
/* Set PHY IO functions */
LAN8742_RegisterBusIO(&LAN8742, &LAN8742_IOCtx);
@@ -267,7 +270,7 @@ static void low_level_init(struct netif *netif)
PHYLinkState = LAN8742_GetLinkState(&LAN8742);
/* Get link state */
- if(PHYLinkState <= LAN8742_STATUS_LINK_DOWN)
+ if (PHYLinkState <= LAN8742_STATUS_LINK_DOWN)
{
netif_set_link_down(netif);
netif_set_down(netif);
@@ -298,21 +301,20 @@ static void low_level_init(struct netif *netif)
break;
}
- /* Get MAC Config MAC */
- HAL_ETH_GetMACConfig(&heth, &MACConf);
- MACConf.DuplexMode = duplex;
- MACConf.Speed = speed;
- HAL_ETH_SetMACConfig(&heth, &MACConf);
+ /* Get MAC Config MAC */
+ HAL_ETH_GetMACConfig(&heth, &MACConf);
+ MACConf.DuplexMode = duplex;
+ MACConf.Speed = speed;
+ HAL_ETH_SetMACConfig(&heth, &MACConf);
- HAL_ETH_Start_IT(&heth);
- netif_set_up(netif);
- netif_set_link_up(netif);
+ HAL_ETH_Start_IT(&heth);
+ netif_set_up(netif);
+ netif_set_link_up(netif);
-/* USER CODE BEGIN PHY_POST_CONFIG */
+ /* USER CODE BEGIN PHY_POST_CONFIG */
-/* USER CODE END PHY_POST_CONFIG */
+ /* USER CODE END PHY_POST_CONFIG */
}
-
}
else
{
@@ -320,9 +322,9 @@ static void low_level_init(struct netif *netif)
}
#endif /* LWIP_ARP || LWIP_ETHERNET */
-/* USER CODE BEGIN LOW_LEVEL_INIT */
+ /* USER CODE BEGIN LOW_LEVEL_INIT */
-/* USER CODE END LOW_LEVEL_INIT */
+ /* USER CODE END LOW_LEVEL_INIT */
}
/**
@@ -348,22 +350,22 @@ static err_t low_level_output(struct netif *netif, struct pbuf *p)
err_t errval = ERR_OK;
ETH_BufferTypeDef Txbuffer[ETH_TX_DESC_CNT] = {0};
- memset(Txbuffer, 0 , ETH_TX_DESC_CNT*sizeof(ETH_BufferTypeDef));
+ memset(Txbuffer, 0, ETH_TX_DESC_CNT * sizeof(ETH_BufferTypeDef));
- for(q = p; q != NULL; q = q->next)
+ for (q = p; q != NULL; q = q->next)
{
- if(i >= ETH_TX_DESC_CNT)
+ if (i >= ETH_TX_DESC_CNT)
return ERR_IF;
Txbuffer[i].buffer = q->payload;
Txbuffer[i].len = q->len;
- if(i>0)
+ if (i > 0)
{
- Txbuffer[i-1].next = &Txbuffer[i];
+ Txbuffer[i - 1].next = &Txbuffer[i];
}
- if(q->next == NULL)
+ if (q->next == NULL)
{
Txbuffer[i].next = NULL;
}
@@ -378,7 +380,7 @@ static err_t low_level_output(struct netif *netif, struct pbuf *p)
pbuf_ref(p);
HAL_ETH_Transmit_IT(&heth, &TxConfig);
- while(osSemaphoreWait(TxPktSemaphore, TIME_WAITING_FOR_INPUT)!=osOK)
+ while (osSemaphoreWait(TxPktSemaphore, TIME_WAITING_FOR_INPUT) != osOK)
{
}
@@ -395,12 +397,12 @@ static err_t low_level_output(struct netif *netif, struct pbuf *p)
* @param netif the lwip network interface structure for this ethernetif
* @return a pbuf filled with the received packet (including MAC header)
* NULL on memory error
- */
-static struct pbuf * low_level_input(struct netif *netif)
+ */
+static struct pbuf *low_level_input(struct netif *netif)
{
struct pbuf *p = NULL;
- if(RxAllocStatus == RX_ALLOC_OK)
+ if (RxAllocStatus == RX_ALLOC_OK)
{
HAL_ETH_ReadData(&heth, (void **)&p);
}
@@ -417,26 +419,26 @@ static struct pbuf * low_level_input(struct netif *netif)
*
* @param netif the lwip network interface structure for this ethernetif
*/
-static void ethernetif_input(void const * argument)
+static void ethernetif_input(void const *argument)
{
struct pbuf *p = NULL;
- struct netif *netif = (struct netif *) argument;
+ struct netif *netif = (struct netif *)argument;
- for( ;; )
+ for (;;)
{
if (osSemaphoreWait(RxPktSemaphore, TIME_WAITING_FOR_INPUT) == osOK)
{
do
{
- p = low_level_input( netif );
+ p = low_level_input(netif);
if (p != NULL)
{
- if (netif->input( p, netif) != ERR_OK )
+ if (netif->input(p, netif) != ERR_OK)
{
pbuf_free(p);
}
}
- } while(p!=NULL);
+ } while (p != NULL);
}
}
}
@@ -453,12 +455,11 @@ static err_t low_level_output_arp_off(struct netif *netif, struct pbuf *q, const
err_t errval;
errval = ERR_OK;
-/* USER CODE BEGIN 5 */
+ /* USER CODE BEGIN 5 */
-/* USER CODE END 5 */
+ /* USER CODE END 5 */
return errval;
-
}
#endif /* LWIP_ARP */
@@ -521,13 +522,13 @@ err_t ethernetif_init(struct netif *netif)
}
/**
- * @brief Custom Rx pbuf free callback
- * @param pbuf: pbuf to be freed
- * @retval None
- */
+ * @brief Custom Rx pbuf free callback
+ * @param pbuf: pbuf to be freed
+ * @retval None
+ */
void pbuf_free_custom(struct pbuf *p)
{
- struct pbuf_custom* custom_pbuf = (struct pbuf_custom*)p;
+ struct pbuf_custom *custom_pbuf = (struct pbuf_custom *)p;
LWIP_MEMPOOL_FREE(RX_POOL, custom_pbuf);
/* If the Rx Buffer Pool was exhausted, signal the ethernetif_input task to
@@ -543,11 +544,11 @@ void pbuf_free_custom(struct pbuf *p)
/* USER CODE BEGIN 6 */
/**
-* @brief Returns the current time in milliseconds
-* when LWIP_TIMERS == 1 and NO_SYS == 1
-* @param None
-* @retval Current Time value
-*/
+ * @brief Returns the current time in milliseconds
+ * when LWIP_TIMERS == 1 and NO_SYS == 1
+ * @param None
+ * @retval Current Time value
+ */
u32_t sys_now(void)
{
return HAL_GetTick();
@@ -556,19 +557,19 @@ u32_t sys_now(void)
/* USER CODE END 6 */
/**
- * @brief Initializes the ETH MSP.
- * @param ethHandle: ETH handle
- * @retval None
- */
+ * @brief Initializes the ETH MSP.
+ * @param ethHandle: ETH handle
+ * @retval None
+ */
-void HAL_ETH_MspInit(ETH_HandleTypeDef* ethHandle)
+void HAL_ETH_MspInit(ETH_HandleTypeDef *ethHandle)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
- if(ethHandle->Instance==ETH)
+ if (ethHandle->Instance == ETH)
{
- /* USER CODE BEGIN ETH_MspInit 0 */
+ /* USER CODE BEGIN ETH_MspInit 0 */
- /* USER CODE END ETH_MspInit 0 */
+ /* USER CODE END ETH_MspInit 0 */
/* Enable Peripheral clock */
__HAL_RCC_ETH_CLK_ENABLE();
@@ -586,21 +587,21 @@ void HAL_ETH_MspInit(ETH_HandleTypeDef* ethHandle)
PB12 ------> ETH_TXD0
PB13 ------> ETH_TXD1
*/
- GPIO_InitStruct.Pin = GPIO_PIN_1|GPIO_PIN_4|GPIO_PIN_5;
+ GPIO_InitStruct.Pin = GPIO_PIN_1 | GPIO_PIN_4 | GPIO_PIN_5;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
GPIO_InitStruct.Alternate = GPIO_AF11_ETH;
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
- GPIO_InitStruct.Pin = GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_7;
+ GPIO_InitStruct.Pin = GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_7;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
GPIO_InitStruct.Alternate = GPIO_AF11_ETH;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
- GPIO_InitStruct.Pin = GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_13;
+ GPIO_InitStruct.Pin = GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
@@ -610,19 +611,19 @@ void HAL_ETH_MspInit(ETH_HandleTypeDef* ethHandle)
/* Peripheral interrupt init */
HAL_NVIC_SetPriority(ETH_IRQn, 5, 0);
HAL_NVIC_EnableIRQ(ETH_IRQn);
- /* USER CODE BEGIN ETH_MspInit 1 */
+ /* USER CODE BEGIN ETH_MspInit 1 */
- /* USER CODE END ETH_MspInit 1 */
+ /* USER CODE END ETH_MspInit 1 */
}
}
-void HAL_ETH_MspDeInit(ETH_HandleTypeDef* ethHandle)
+void HAL_ETH_MspDeInit(ETH_HandleTypeDef *ethHandle)
{
- if(ethHandle->Instance==ETH)
+ if (ethHandle->Instance == ETH)
{
- /* USER CODE BEGIN ETH_MspDeInit 0 */
+ /* USER CODE BEGIN ETH_MspDeInit 0 */
- /* USER CODE END ETH_MspDeInit 0 */
+ /* USER CODE END ETH_MspDeInit 0 */
/* Peripheral clock disable */
__HAL_RCC_ETH_CLK_DISABLE();
@@ -637,18 +638,18 @@ void HAL_ETH_MspDeInit(ETH_HandleTypeDef* ethHandle)
PB12 ------> ETH_TXD0
PB13 ------> ETH_TXD1
*/
- HAL_GPIO_DeInit(GPIOC, GPIO_PIN_1|GPIO_PIN_4|GPIO_PIN_5);
+ HAL_GPIO_DeInit(GPIOC, GPIO_PIN_1 | GPIO_PIN_4 | GPIO_PIN_5);
- HAL_GPIO_DeInit(GPIOA, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_7);
+ HAL_GPIO_DeInit(GPIOA, GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_7);
- HAL_GPIO_DeInit(GPIOB, GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_13);
+ HAL_GPIO_DeInit(GPIOB, GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13);
/* Peripheral interrupt Deinit*/
HAL_NVIC_DisableIRQ(ETH_IRQn);
- /* USER CODE BEGIN ETH_MspDeInit 1 */
+ /* USER CODE BEGIN ETH_MspDeInit 1 */
- /* USER CODE END ETH_MspDeInit 1 */
+ /* USER CODE END ETH_MspDeInit 1 */
}
}
@@ -656,10 +657,10 @@ void HAL_ETH_MspDeInit(ETH_HandleTypeDef* ethHandle)
PHI IO Functions
*******************************************************************************/
/**
- * @brief Initializes the MDIO interface GPIO and clocks.
- * @param None
- * @retval 0 if OK, -1 if ERROR
- */
+ * @brief Initializes the MDIO interface GPIO and clocks.
+ * @param None
+ * @retval 0 if OK, -1 if ERROR
+ */
int32_t ETH_PHY_IO_Init(void)
{
/* We assume that MDIO GPIO configuration is already done
@@ -673,25 +674,25 @@ int32_t ETH_PHY_IO_Init(void)
}
/**
- * @brief De-Initializes the MDIO interface .
- * @param None
- * @retval 0 if OK, -1 if ERROR
- */
-int32_t ETH_PHY_IO_DeInit (void)
+ * @brief De-Initializes the MDIO interface .
+ * @param None
+ * @retval 0 if OK, -1 if ERROR
+ */
+int32_t ETH_PHY_IO_DeInit(void)
{
return 0;
}
/**
- * @brief Read a PHY register through the MDIO interface.
- * @param DevAddr: PHY port address
- * @param RegAddr: PHY register address
- * @param pRegVal: pointer to hold the register value
- * @retval 0 if OK -1 if Error
- */
+ * @brief Read a PHY register through the MDIO interface.
+ * @param DevAddr: PHY port address
+ * @param RegAddr: PHY register address
+ * @param pRegVal: pointer to hold the register value
+ * @retval 0 if OK -1 if Error
+ */
int32_t ETH_PHY_IO_ReadReg(uint32_t DevAddr, uint32_t RegAddr, uint32_t *pRegVal)
{
- if(HAL_ETH_ReadPHYRegister(&heth, DevAddr, RegAddr, pRegVal) != HAL_OK)
+ if (HAL_ETH_ReadPHYRegister(&heth, DevAddr, RegAddr, pRegVal) != HAL_OK)
{
return -1;
}
@@ -700,15 +701,15 @@ int32_t ETH_PHY_IO_ReadReg(uint32_t DevAddr, uint32_t RegAddr, uint32_t *pRegVal
}
/**
- * @brief Write a value to a PHY register through the MDIO interface.
- * @param DevAddr: PHY port address
- * @param RegAddr: PHY register address
- * @param RegVal: Value to be written
- * @retval 0 if OK -1 if Error
- */
+ * @brief Write a value to a PHY register through the MDIO interface.
+ * @param DevAddr: PHY port address
+ * @param RegAddr: PHY register address
+ * @param RegVal: Value to be written
+ * @retval 0 if OK -1 if Error
+ */
int32_t ETH_PHY_IO_WriteReg(uint32_t DevAddr, uint32_t RegAddr, uint32_t RegVal)
{
- if(HAL_ETH_WritePHYRegister(&heth, DevAddr, RegAddr, RegVal) != HAL_OK)
+ if (HAL_ETH_WritePHYRegister(&heth, DevAddr, RegAddr, RegVal) != HAL_OK)
{
return -1;
}
@@ -717,84 +718,84 @@ int32_t ETH_PHY_IO_WriteReg(uint32_t DevAddr, uint32_t RegAddr, uint32_t RegVal)
}
/**
- * @brief Get the time in millisecons used for internal PHY driver process.
- * @retval Time value
- */
+ * @brief Get the time in millisecons used for internal PHY driver process.
+ * @retval Time value
+ */
int32_t ETH_PHY_IO_GetTick(void)
{
return HAL_GetTick();
}
/**
- * @brief Check the ETH link state then update ETH driver and netif link accordingly.
- * @retval None
- */
+ * @brief Check the ETH link state then update ETH driver and netif link accordingly.
+ * @retval None
+ */
-void ethernet_link_thread(void const * argument)
+void ethernet_link_thread(void const *argument)
{
ETH_MACConfigTypeDef MACConf = {0};
int32_t PHYLinkState = 0;
uint32_t linkchanged = 0U, speed = 0U, duplex = 0U;
- struct netif *netif = (struct netif *) argument;
-/* USER CODE BEGIN ETH link init */
+ struct netif *netif = (struct netif *)argument;
+ /* USER CODE BEGIN ETH link init */
-/* USER CODE END ETH link init */
+ /* USER CODE END ETH link init */
- for(;;)
+ for (;;)
{
- PHYLinkState = LAN8742_GetLinkState(&LAN8742);
+ PHYLinkState = LAN8742_GetLinkState(&LAN8742);
- if(netif_is_link_up(netif) && (PHYLinkState <= LAN8742_STATUS_LINK_DOWN))
- {
- HAL_ETH_Stop_IT(&heth);
- netif_set_down(netif);
- netif_set_link_down(netif);
- }
- else if(!netif_is_link_up(netif) && (PHYLinkState > LAN8742_STATUS_LINK_DOWN))
- {
- switch (PHYLinkState)
+ if (netif_is_link_up(netif) && (PHYLinkState <= LAN8742_STATUS_LINK_DOWN))
{
- case LAN8742_STATUS_100MBITS_FULLDUPLEX:
- duplex = ETH_FULLDUPLEX_MODE;
- speed = ETH_SPEED_100M;
- linkchanged = 1;
- break;
- case LAN8742_STATUS_100MBITS_HALFDUPLEX:
- duplex = ETH_HALFDUPLEX_MODE;
- speed = ETH_SPEED_100M;
- linkchanged = 1;
- break;
- case LAN8742_STATUS_10MBITS_FULLDUPLEX:
- duplex = ETH_FULLDUPLEX_MODE;
- speed = ETH_SPEED_10M;
- linkchanged = 1;
- break;
- case LAN8742_STATUS_10MBITS_HALFDUPLEX:
- duplex = ETH_HALFDUPLEX_MODE;
- speed = ETH_SPEED_10M;
- linkchanged = 1;
- break;
- default:
- break;
+ HAL_ETH_Stop_IT(&heth);
+ netif_set_down(netif);
+ netif_set_link_down(netif);
+ }
+ else if (!netif_is_link_up(netif) && (PHYLinkState > LAN8742_STATUS_LINK_DOWN))
+ {
+ switch (PHYLinkState)
+ {
+ case LAN8742_STATUS_100MBITS_FULLDUPLEX:
+ duplex = ETH_FULLDUPLEX_MODE;
+ speed = ETH_SPEED_100M;
+ linkchanged = 1;
+ break;
+ case LAN8742_STATUS_100MBITS_HALFDUPLEX:
+ duplex = ETH_HALFDUPLEX_MODE;
+ speed = ETH_SPEED_100M;
+ linkchanged = 1;
+ break;
+ case LAN8742_STATUS_10MBITS_FULLDUPLEX:
+ duplex = ETH_FULLDUPLEX_MODE;
+ speed = ETH_SPEED_10M;
+ linkchanged = 1;
+ break;
+ case LAN8742_STATUS_10MBITS_HALFDUPLEX:
+ duplex = ETH_HALFDUPLEX_MODE;
+ speed = ETH_SPEED_10M;
+ linkchanged = 1;
+ break;
+ default:
+ break;
+ }
+
+ if (linkchanged)
+ {
+ /* Get MAC Config MAC */
+ HAL_ETH_GetMACConfig(&heth, &MACConf);
+ MACConf.DuplexMode = duplex;
+ MACConf.Speed = speed;
+ HAL_ETH_SetMACConfig(&heth, &MACConf);
+ HAL_ETH_Start_IT(&heth);
+ netif_set_up(netif);
+ netif_set_link_up(netif);
+ }
}
- if(linkchanged)
- {
- /* Get MAC Config MAC */
- HAL_ETH_GetMACConfig(&heth, &MACConf);
- MACConf.DuplexMode = duplex;
- MACConf.Speed = speed;
- HAL_ETH_SetMACConfig(&heth, &MACConf);
- HAL_ETH_Start_IT(&heth);
- netif_set_up(netif);
- netif_set_link_up(netif);
- }
- }
+ /* USER CODE BEGIN ETH link Thread core code for User BSP */
-/* USER CODE BEGIN ETH link Thread core code for User BSP */
-
-/* USER CODE END ETH link Thread core code for User BSP */
+ /* USER CODE END ETH link Thread core code for User BSP */
osDelay(100);
}
@@ -802,7 +803,7 @@ void ethernet_link_thread(void const * argument)
void HAL_ETH_RxAllocateCallback(uint8_t **buff)
{
-/* USER CODE BEGIN HAL ETH RxAllocateCallback */
+ /* USER CODE BEGIN HAL ETH RxAllocateCallback */
struct pbuf_custom *p = LWIP_MEMPOOL_ALLOC(RX_POOL);
if (p)
{
@@ -810,8 +811,8 @@ void HAL_ETH_RxAllocateCallback(uint8_t **buff)
*buff = (uint8_t *)p + offsetof(RxBuff_t, buff);
p->custom_free_function = pbuf_free_custom;
/* Initialize the struct pbuf.
- * This must be performed whenever a buffer's allocated because it may be
- * changed by lwIP or the app, e.g., pbuf_free decrements ref. */
+ * This must be performed whenever a buffer's allocated because it may be
+ * changed by lwIP or the app, e.g., pbuf_free decrements ref. */
pbuf_alloced_custom(PBUF_RAW, 0, PBUF_REF, p, *buff, ETH_RX_BUF_SIZE);
}
else
@@ -819,12 +820,12 @@ void HAL_ETH_RxAllocateCallback(uint8_t **buff)
RxAllocStatus = RX_ALLOC_ERROR;
*buff = NULL;
}
-/* USER CODE END HAL ETH RxAllocateCallback */
+ /* USER CODE END HAL ETH RxAllocateCallback */
}
void HAL_ETH_RxLinkCallback(void **pStart, void **pEnd, uint8_t *buff, uint16_t Length)
{
-/* USER CODE BEGIN HAL ETH RxLinkCallback */
+ /* USER CODE BEGIN HAL ETH RxLinkCallback */
struct pbuf **ppStart = (struct pbuf **)pStart;
struct pbuf **ppEnd = (struct pbuf **)pEnd;
@@ -847,7 +848,7 @@ void HAL_ETH_RxLinkCallback(void **pStart, void **pEnd, uint8_t *buff, uint16_t
/* Chain the buffer to the end of the packet. */
(*ppEnd)->next = p;
}
- *ppEnd = p;
+ *ppEnd = p;
/* Update the total length of all the buffers of the chain. Each pbuf in the chain should have its tot_len
* set to its own length, plus the length of all the following pbufs in the chain. */
@@ -856,19 +857,18 @@ void HAL_ETH_RxLinkCallback(void **pStart, void **pEnd, uint8_t *buff, uint16_t
p->tot_len += Length;
}
-/* USER CODE END HAL ETH RxLinkCallback */
+ /* USER CODE END HAL ETH RxLinkCallback */
}
-void HAL_ETH_TxFreeCallback(uint32_t * buff)
+void HAL_ETH_TxFreeCallback(uint32_t *buff)
{
-/* USER CODE BEGIN HAL ETH TxFreeCallback */
+ /* USER CODE BEGIN HAL ETH TxFreeCallback */
pbuf_free((struct pbuf *)buff);
-/* USER CODE END HAL ETH TxFreeCallback */
+ /* USER CODE END HAL ETH TxFreeCallback */
}
/* USER CODE BEGIN 8 */
/* USER CODE END 8 */
-
diff --git a/MDK-ARM/semi-finished_product_testing.uvoptx b/MDK-ARM/semi-finished_product_testing.uvoptx
index 3590bfd..b0b8d82 100644
--- a/MDK-ARM/semi-finished_product_testing.uvoptx
+++ b/MDK-ARM/semi-finished_product_testing.uvoptx
@@ -148,7 +148,24 @@
-US -O2254 -SF1800 -C0 -A0 -I0 -HNlocalhost -HP7184 -P1 -N00("ARM CoreSight SW-DP (ARM Core") -D00(2BA01477) -L00(0) -TO131090 -TC10000000 -TT10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F4xx_1024.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32F407VGTx$CMSIS\Flash\STM32F4xx_1024.FLM)
-
+
+
+ 0
+ 0
+ 208
+ 1
+ 134254976
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ ../LWIP/Target/ethernetif.c
+
+ \\semi_finished_product_testing\../LWIP/Target/ethernetif.c\208
+
+
0
@@ -270,12 +287,17 @@
1
tcp_rx_data
+
+ 24
+ 1
+ MACAddr
+
1
0
- \\semi_finished_product_testing\../LWIP/Target/ethernetif.c\heth.Init.MACAddr
+ 0x1fff7a10
0