From 3df3e2bbe9c522a57d80b47f26da82773b1eead5 Mon Sep 17 00:00:00 2001 From: Tony Josi Date: Sun, 9 Jul 2023 12:16:43 +0530 Subject: [PATCH 1/9] wip basic compilation fix --- .../NetworkInterface/RX/NetworkInterface.c | 79 ++++++++++++++++--- 1 file changed, 69 insertions(+), 10 deletions(-) diff --git a/source/portable/NetworkInterface/RX/NetworkInterface.c b/source/portable/NetworkInterface/RX/NetworkInterface.c index 6b131930e5..16a2cbb187 100644 --- a/source/portable/NetworkInterface/RX/NetworkInterface.c +++ b/source/portable/NetworkInterface/RX/NetworkInterface.c @@ -100,6 +100,9 @@ static BaseType_t xPHYLinkStatus; static BaseType_t xReportedStatus; static eMAC_INIT_STATUS_TYPE xMacInitStatus = eMACInit; +/* Pointer to the interface object of this NIC */ +static NetworkInterface_t * pxMyInterface = NULL; + static int16_t SendData( uint8_t * pucBuffer, size_t length ); static int InitializeNetwork( void ); @@ -113,18 +116,56 @@ void get_random_number( uint8_t * data, void prvLinkStatusChange( BaseType_t xStatus ); +/*-----------------------------------------------------------*/ + +NetworkInterface_t * pxRX_FillInterfaceDescriptor( BaseType_t xEMACIndex, + NetworkInterface_t * pxInterface ); + +/* Function to initialise the network interface */ +BaseType_t xRX_NetworkInterfaceInitialise( NetworkInterface_t * pxInterface ); + +BaseType_t xRX_NetworkInterfaceOutput( NetworkInterface_t * pxInterface, + NetworkBufferDescriptor_t * const pxDescriptor, + BaseType_t bReleaseAfterSend ); + +static inline BaseType_t xRX_PHYGetLinkStatus( NetworkInterface_t * pxInterface ); + +NetworkInterface_t * pxRX_FillInterfaceDescriptor( BaseType_t xEMACIndex, + NetworkInterface_t * pxInterface ) +{ + static char pcName[ 17 ]; + + /* This function pxRX_FillInterfaceDescriptor() adds a network-interface. + * Make sure that the object pointed to by 'pxInterface' + * is declared static or global, and that it will remain to exist. */ + + snprintf( pcName, sizeof( pcName ), "eth%u", ( unsigned ) xEMACIndex ); + + memset( pxInterface, '\0', sizeof( *pxInterface ) ); + pxInterface->pcName = pcName; /* Just for logging, debugging. */ + pxInterface->pvArgument = ( void * ) xEMACIndex; /* Has only meaning for the driver functions. */ + pxInterface->pfInitialise = xRX_NetworkInterfaceInitialise; + pxInterface->pfOutput = xRX_NetworkInterfaceOutput; + pxInterface->pfGetPhyLinkStatus = xRX_PHYGetLinkStatus; + + FreeRTOS_AddNetworkInterface( pxInterface ); + + return pxInterface; +} + /*********************************************************************************************************************** - * Function Name: xNetworkInterfaceInitialise () + * Function Name: xRX_NetworkInterfaceInitialise () * Description : Initialization of Ethernet driver. - * Arguments : none + * Arguments : Pointer to the interface desc * Return Value : pdPASS, pdFAIL **********************************************************************************************************************/ -BaseType_t xNetworkInterfaceInitialise( void ) +BaseType_t xRX_NetworkInterfaceInitialise( NetworkInterface_t * pxInterface ) { BaseType_t xReturn; if( xMacInitStatus == eMACInit ) { + pxMyInterface = pxInterface; /* * Perform the hardware specific network initialization here using the Ethernet driver library to initialize the * Ethernet hardware, initialize DMA descriptors, and perform a PHY auto-negotiation to obtain a network link. @@ -160,16 +201,20 @@ BaseType_t xNetworkInterfaceInitialise( void ) /*********************************************************************************************************************** - * Function Name: xNetworkInterfaceOutput () + * Function Name: xRX_NetworkInterfaceOutput () * Description : Simple network output interface. - * Arguments : pxDescriptor, xReleaseAfterSend + * Arguments : pxInterface, pxDescriptor, xReleaseAfterSend * Return Value : pdTRUE, pdFALSE **********************************************************************************************************************/ -BaseType_t xNetworkInterfaceOutput( NetworkBufferDescriptor_t * const pxDescriptor, +BaseType_t xRX_NetworkInterfaceOutput( NetworkInterface_t * pxInterface, + NetworkBufferDescriptor_t * const pxDescriptor, BaseType_t xReleaseAfterSend ) { BaseType_t xReturn = pdFALSE; + /* As there is only a single instance of the EMAC, there is only one pxInterface object. */ + ( void ) pxInterface; + /* Simple network interfaces (as opposed to more efficient zero copy network * interfaces) just use Ethernet peripheral driver library functions to copy * data from the FreeRTOS+TCP buffer into the peripheral driver's own buffer. @@ -284,6 +329,8 @@ static void prvEMACDeferredInterruptHandlerTask( void * pvParameters ) /* Set the actual packet length, in case a larger buffer was returned. */ pxBufferDescriptor->xDataLength = ( size_t ) xBytesReceived; + pxBufferDescriptor->pxInterface = pxMyInterface; + pxBufferDescriptor->pxEndPoint = FreeRTOS_MatchingEndpoint( pxMyInterface, pxBufferDescriptor->pucEthernetBuffer ); R_ETHER_Read_ZC2_BufRelease( ETHER_CHANNEL_0 ); @@ -291,7 +338,7 @@ static void prvEMACDeferredInterruptHandlerTask( void * pvParameters ) * to be processed. NOTE! It is preferable to do this in * the interrupt service routine itself, which would remove the need * to unblock this task for packets that don't need processing. */ - if( eConsiderFrameForProcessing( pxBufferDescriptor->pucEthernetBuffer ) == eProcessBuffer ) + if( ( eConsiderFrameForProcessing( pxBufferDescriptor->pucEthernetBuffer ) == eProcessBuffer ) && ( pxBufferDescriptor->pxEndPoint != NULL ) ) { /* The event about to be sent to the TCP/IP is an Rx event. */ xRxEvent.eEventType = eNetworkRxEvent; @@ -385,9 +432,13 @@ void vNetworkInterfaceAllocateRAMToBuffers( NetworkBufferDescriptor_t pxNetworkB uint32_t ul; uint8_t * buffer_address; - R_BSP_SECTION_OPERATORS_INIT( B_ETHERNET_BUFFERS_1 ) + // R_BSP_SECTION_OPERATORS_INIT( B_ETHERNET_BUFFERS_1 ) + + // buffer_address = R_BSP_SECTOP( B_ETHERNET_BUFFERS_1 ); - buffer_address = R_BSP_SECTOP( B_ETHERNET_BUFFERS_1 ); + static uint8_t ETH_BUFFERS[ipconfigNUM_NETWORK_BUFFER_DESCRIPTORS * ETHER_CFG_BUFSIZE]; + + buffer_address = Ð_BUFFERS[0]; for( ul = 0; ul < ipconfigNUM_NETWORK_BUFFER_DESCRIPTORS; ul++ ) { @@ -427,7 +478,8 @@ static int InitializeNetwork( void ) * as the mac address is usually read from the EEPROM, and it might be different to the mac address in * the defines, especially in production environments */ - const uint8_t * myethaddr = FreeRTOS_GetMACAddress(); + configASSERT(pxMyInterface); + const uint8_t * myethaddr = &pxMyInterface->pxEndPoint->xMACAddress.ucBytes[0]; R_ETHER_PinSet_CHANNEL_0(); R_ETHER_Initial(); @@ -568,6 +620,13 @@ static void clear_all_ether_rx_discriptors( uint32_t event ) } } +static inline BaseType_t xRX_PHYGetLinkStatus( NetworkInterface_t * pxInterface ) +{ + ( void ) pxInterface; + return( xPHYLinkStatus != 0 ); +} + + /*********************************************************************************************************************** * End of file "NetworkInterface.c" **********************************************************************************************************************/ From 9081129fe77e9e792bee55e314dc6bb3d82eb241 Mon Sep 17 00:00:00 2001 From: Tony Josi Date: Sun, 23 Jul 2023 12:55:45 +0530 Subject: [PATCH 2/9] add BSP_MCU_RX72N to checks --- source/portable/NetworkInterface/RX/NetworkInterface.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/portable/NetworkInterface/RX/NetworkInterface.c b/source/portable/NetworkInterface/RX/NetworkInterface.c index 16a2cbb187..e656672479 100644 --- a/source/portable/NetworkInterface/RX/NetworkInterface.c +++ b/source/portable/NetworkInterface/RX/NetworkInterface.c @@ -53,7 +53,7 @@ **********************************************************************************************************************/ #define ETHER_BUFSIZE_MIN 60 -#if defined( BSP_MCU_RX65N ) || defined( BSP_MCU_RX64M ) || defined( BSP_MCU_RX71M ) || defined( BSP_MCU_RX72M ) +#if defined( BSP_MCU_RX65N ) || defined( BSP_MCU_RX64M ) || defined( BSP_MCU_RX71M ) || defined( BSP_MCU_RX72M ) || defined( BSP_MCU_RX72N ) #if ETHER_CFG_MODE_SEL == 0 #define R_ETHER_PinSet_CHANNEL_0() R_ETHER_PinSet_ETHERC0_MII() #elif ETHER_CFG_MODE_SEL == 1 From d90207adc412f531d3e6e2b7a8fe23c351c8e41d Mon Sep 17 00:00:00 2001 From: Tony Josi Date: Tue, 25 Jul 2023 11:56:16 +0530 Subject: [PATCH 3/9] wip --- .../NetworkInterface/RX/NetworkInterface.c | 54 ++++++++++++++----- 1 file changed, 42 insertions(+), 12 deletions(-) diff --git a/source/portable/NetworkInterface/RX/NetworkInterface.c b/source/portable/NetworkInterface/RX/NetworkInterface.c index e656672479..3e0bf9bcdf 100644 --- a/source/portable/NetworkInterface/RX/NetworkInterface.c +++ b/source/portable/NetworkInterface/RX/NetworkInterface.c @@ -293,10 +293,10 @@ static void prvEMACDeferredInterruptHandlerTask( void * pvParameters ) /* Wait for the Ethernet MAC interrupt to indicate that another packet * has been received. */ - if( xBytesReceived <= 0 ) - { + //if( xBytesReceived <= 0 ) + //{ ulTaskNotifyTake( pdFALSE, ulMaxBlockTime ); - } + //} /* See how much data was received. */ xBytesReceived = R_ETHER_Read_ZC2( ETHER_CHANNEL_0, ( void ** ) &buffer_pointer ); @@ -427,6 +427,7 @@ static void prvEMACDeferredInterruptHandlerTask( void * pvParameters ) * Arguments : pxNetworkBuffers * Return Value : none **********************************************************************************************************************/ +#if 0 void vNetworkInterfaceAllocateRAMToBuffers( NetworkBufferDescriptor_t pxNetworkBuffers[ ipconfigNUM_NETWORK_BUFFER_DESCRIPTORS ] ) { uint32_t ul; @@ -445,7 +446,26 @@ void vNetworkInterfaceAllocateRAMToBuffers( NetworkBufferDescriptor_t pxNetworkB pxNetworkBuffers[ ul ].pucEthernetBuffer = ( buffer_address + ( ETHER_CFG_BUFSIZE * ul ) ); } } /* End of function vNetworkInterfaceAllocateRAMToBuffers() */ +#endif + +void vNetworkInterfaceAllocateRAMToBuffers( NetworkBufferDescriptor_t pxNetworkBuffers[ ipconfigNUM_NETWORK_BUFFER_DESCRIPTORS ] ) +{ + uint32_t ul; + uint8_t * buffer_address; + + R_BSP_SECTION_OPERATORS_INIT( B_ETHERNET_BUFFERS_1 ) + + buffer_address = R_BSP_SECTOP( B_ETHERNET_BUFFERS_1 ); + + for( ul = 0; ul < ipconfigNUM_NETWORK_BUFFER_DESCRIPTORS; ul++ ) + { + //pxNetworkBuffers[ ul ].pucEthernetBuffer = ( buffer_address + ( ETHER_CFG_BUFSIZE * ul ) ); + pxNetworkBuffers[ ul ].pucEthernetBuffer = buffer_address + ipBUFFER_PADDING; + *( ( unsigned * ) buffer_address ) = ( unsigned ) ( &( pxNetworkBuffers[ ul ] ) ); + buffer_address += ETHER_CFG_BUFSIZE; + } +} /* End of function vNetworkInterfaceAllocateRAMToBuffers() */ /*********************************************************************************************************************** * Function Name: prvLinkStatusChange () @@ -470,7 +490,7 @@ void prvLinkStatusChange( BaseType_t xStatus ) **********************************************************************************************************************/ static int InitializeNetwork( void ) { - ether_return_t eth_ret; + ether_return_t ret; BaseType_t return_code = pdFALSE; ether_param_t param; @@ -481,24 +501,32 @@ static int InitializeNetwork( void ) configASSERT(pxMyInterface); const uint8_t * myethaddr = &pxMyInterface->pxEndPoint->xMACAddress.ucBytes[0]; + R_Pins_Create(); + R_ETHER_PinSet_CHANNEL_0(); R_ETHER_Initial(); callback_ether_regist(); param.channel = ETHER_CHANNEL_0; - eth_ret = R_ETHER_Control( CONTROL_POWER_ON, param ); /* PHY mode settings, module stop cancellation */ + R_ETHER_Control(CONTROL_POWER_ON, param); +#if (ETHER_CHANNEL_MAX >= 2) + param.channel = ETHER_CHANNEL_1; + R_ETHER_Control(CONTROL_POWER_ON, param); +#endif - if( ETHER_SUCCESS != eth_ret ) + //memset(&t4_stat[0], 0, sizeof(T4_STATISTICS)); + ret = R_ETHER_Open_ZC2(0, (const uint8_t *) myethaddr, false); + if (ETHER_SUCCESS != ret) { - return pdFALSE; + return -1; } - - eth_ret = R_ETHER_Open_ZC2( ETHER_CHANNEL_0, myethaddr, ETHER_FLAG_OFF ); - - if( ETHER_SUCCESS != eth_ret ) +#if (ETHER_CHANNEL_MAX >= 2) + ret = R_ETHER_Open_ZC2(1, (const uint8_t *) myethaddr, false); + if (ETHER_SUCCESS != ret) { - return pdFALSE; + return -1; } +#endif return_code = xTaskCreate( prvEMACDeferredInterruptHandlerTask, "ETHER_RECEIVE_CHECK_TASK", @@ -572,6 +600,8 @@ void EINT_Trig_isr( void * ectrl ) ether_cb_arg_t * pdecode; BaseType_t xHigherPriorityTaskWoken = pdFALSE; + R_BSP_InterruptsEnable(); + pdecode = ( ether_cb_arg_t * ) ectrl; if( pdecode->status_eesr & 0x00040000 ) /* EDMAC FR (Frame Receive Event) interrupt */ From 2f469d215a80a54df887f8928cf75576130bdefa Mon Sep 17 00:00:00 2001 From: Tony Josi Date: Tue, 25 Jul 2023 17:49:11 +0530 Subject: [PATCH 4/9] build fix --- source/include/FreeRTOS_IP_Private.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/include/FreeRTOS_IP_Private.h b/source/include/FreeRTOS_IP_Private.h index 51463f1ce9..7c0bf7890c 100644 --- a/source/include/FreeRTOS_IP_Private.h +++ b/source/include/FreeRTOS_IP_Private.h @@ -409,7 +409,7 @@ extern struct xNetworkInterface * pxNetworkInterfaces; /** @brief Macro calculates the number of elements in an array as a size_t. */ #ifndef ARRAY_SIZE_X - #ifndef _WINDOWS_ + #if !defined(_WINDOWS_) && !defined(__CCRX__) #define ARRAY_SIZE_X( x ) \ ( { size_t uxCount = ( sizeof( x ) / sizeof( x[ 0 ] ) ); \ BaseType_t xCount = ( BaseType_t ) uxCount; \ From e3d26fd669ec4508f4f573713dffab6b637736dd Mon Sep 17 00:00:00 2001 From: Tony Josi Date: Wed, 26 Jul 2023 16:26:15 +0530 Subject: [PATCH 5/9] testing with buffer allocation 1 of +TCP --- source/FreeRTOS_DHCPv6.c | 1 - .../NetworkInterface/RX/NetworkInterface.c | 40 ++++++------------- 2 files changed, 12 insertions(+), 29 deletions(-) diff --git a/source/FreeRTOS_DHCPv6.c b/source/FreeRTOS_DHCPv6.c index 5edf7aa735..c9a72a86cb 100644 --- a/source/FreeRTOS_DHCPv6.c +++ b/source/FreeRTOS_DHCPv6.c @@ -30,7 +30,6 @@ /* Standard includes. */ #include -#include #include /* FreeRTOS includes. */ diff --git a/source/portable/NetworkInterface/RX/NetworkInterface.c b/source/portable/NetworkInterface/RX/NetworkInterface.c index f26e39300e..a3501ab71f 100644 --- a/source/portable/NetworkInterface/RX/NetworkInterface.c +++ b/source/portable/NetworkInterface/RX/NetworkInterface.c @@ -293,10 +293,10 @@ static void prvEMACDeferredInterruptHandlerTask( void * pvParameters ) /* Wait for the Ethernet MAC interrupt to indicate that another packet * has been received. */ - //if( xBytesReceived <= 0 ) - //{ + if( xBytesReceived <= 0 ) + { ulTaskNotifyTake( pdFALSE, ulMaxBlockTime ); - //} + } /* See how much data was received. */ xBytesReceived = R_ETHER_Read_ZC2( ETHER_CHANNEL_0, ( void ** ) &buffer_pointer ); @@ -304,7 +304,7 @@ static void prvEMACDeferredInterruptHandlerTask( void * pvParameters ) if( xBytesReceived < 0 ) { /* This is an error. Logged. */ - FreeRTOS_printf( ( "R_ETHER_Read_ZC2: rc = %d\n", xBytesReceived ) ); + FreeRTOS_debug_printf( ( "R_ETHER_Read_ZC2: rc = %d\n", xBytesReceived ) ); } else if( xBytesReceived > 0 ) { @@ -427,40 +427,24 @@ static void prvEMACDeferredInterruptHandlerTask( void * pvParameters ) * Arguments : pxNetworkBuffers * Return Value : none **********************************************************************************************************************/ -#if 0 -void vNetworkInterfaceAllocateRAMToBuffers( NetworkBufferDescriptor_t pxNetworkBuffers[ ipconfigNUM_NETWORK_BUFFER_DESCRIPTORS ] ) -{ - uint32_t ul; - uint8_t * buffer_address; - - // R_BSP_SECTION_OPERATORS_INIT( B_ETHERNET_BUFFERS_1 ) - - // buffer_address = R_BSP_SECTOP( B_ETHERNET_BUFFERS_1 ); - - static uint8_t ETH_BUFFERS[ipconfigNUM_NETWORK_BUFFER_DESCRIPTORS * ETHER_CFG_BUFSIZE]; - - buffer_address = Ð_BUFFERS[0]; - - for( ul = 0; ul < ipconfigNUM_NETWORK_BUFFER_DESCRIPTORS; ul++ ) - { - pxNetworkBuffers[ ul ].pucEthernetBuffer = ( buffer_address + ( ETHER_CFG_BUFSIZE * ul ) ); - } -} /* End of function vNetworkInterfaceAllocateRAMToBuffers() */ -#endif void vNetworkInterfaceAllocateRAMToBuffers( NetworkBufferDescriptor_t pxNetworkBuffers[ ipconfigNUM_NETWORK_BUFFER_DESCRIPTORS ] ) { uint32_t ul; uint8_t * buffer_address; + portPOINTER_SIZE_TYPE uxStartAddress; - R_BSP_SECTION_OPERATORS_INIT( B_ETHERNET_BUFFERS_1 ) + static uint8_t ETH_BUFFERS[(ipconfigNUM_NETWORK_BUFFER_DESCRIPTORS * ETHER_CFG_BUFSIZE) + portBYTE_ALIGNMENT]; - buffer_address = R_BSP_SECTOP( B_ETHERNET_BUFFERS_1 ); + /* Align the buffer start address to portBYTE_ALIGNMENT bytes */ + uxStartAddress = (portPOINTER_SIZE_TYPE) Ð_BUFFERS[0]; + uxStartAddress += portBYTE_ALIGNMENT; + uxStartAddress &= ~((portPOINTER_SIZE_TYPE) portBYTE_ALIGNMENT_MASK); + + buffer_address = (uint8_t *) uxStartAddress; for( ul = 0; ul < ipconfigNUM_NETWORK_BUFFER_DESCRIPTORS; ul++ ) { - //pxNetworkBuffers[ ul ].pucEthernetBuffer = ( buffer_address + ( ETHER_CFG_BUFSIZE * ul ) ); - pxNetworkBuffers[ ul ].pucEthernetBuffer = buffer_address + ipBUFFER_PADDING; *( ( unsigned * ) buffer_address ) = ( unsigned ) ( &( pxNetworkBuffers[ ul ] ) ); buffer_address += ETHER_CFG_BUFSIZE; From 6fcb130d26c14381553eb549dc91aa70440a0692 Mon Sep 17 00:00:00 2001 From: Tony Josi Date: Wed, 26 Jul 2023 17:04:24 +0530 Subject: [PATCH 6/9] clean up code --- .../NetworkInterface/RX/NetworkInterface.c | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/source/portable/NetworkInterface/RX/NetworkInterface.c b/source/portable/NetworkInterface/RX/NetworkInterface.c index a3501ab71f..040f57a438 100644 --- a/source/portable/NetworkInterface/RX/NetworkInterface.c +++ b/source/portable/NetworkInterface/RX/NetworkInterface.c @@ -474,7 +474,7 @@ void prvLinkStatusChange( BaseType_t xStatus ) **********************************************************************************************************************/ static int InitializeNetwork( void ) { - ether_return_t ret; + ether_return_t eth_ret; BaseType_t return_code = pdFALSE; ether_param_t param; @@ -485,8 +485,6 @@ static int InitializeNetwork( void ) configASSERT(pxMyInterface); const uint8_t * myethaddr = &pxMyInterface->pxEndPoint->xMACAddress.ucBytes[0]; - R_Pins_Create(); - R_ETHER_PinSet_CHANNEL_0(); R_ETHER_Initial(); callback_ether_regist(); @@ -498,17 +496,16 @@ static int InitializeNetwork( void ) R_ETHER_Control(CONTROL_POWER_ON, param); #endif - //memset(&t4_stat[0], 0, sizeof(T4_STATISTICS)); - ret = R_ETHER_Open_ZC2(0, (const uint8_t *) myethaddr, false); - if (ETHER_SUCCESS != ret) + eth_ret = R_ETHER_Open_ZC2(0, (const uint8_t *) myethaddr, false); + if (ETHER_SUCCESS != eth_ret) { - return -1; + return pdFALSE; } #if (ETHER_CHANNEL_MAX >= 2) - ret = R_ETHER_Open_ZC2(1, (const uint8_t *) myethaddr, false); - if (ETHER_SUCCESS != ret) + eth_ret = R_ETHER_Open_ZC2(1, (const uint8_t *) myethaddr, false); + if (ETHER_SUCCESS != eth_ret) { - return -1; + return pdFALSE; } #endif @@ -591,8 +588,6 @@ void EINT_Trig_isr( void * ectrl ) ether_cb_arg_t * pdecode; BaseType_t xHigherPriorityTaskWoken = pdFALSE; - R_BSP_InterruptsEnable(); - pdecode = ( ether_cb_arg_t * ) ectrl; if( pdecode->status_eesr & 0x00040000 ) /* EDMAC FR (Frame Receive Event) interrupt */ From e37e3180df98ee22224770073b69e50c68fb57a1 Mon Sep 17 00:00:00 2001 From: Tony Josi Date: Wed, 26 Jul 2023 17:09:25 +0530 Subject: [PATCH 7/9] use macro instead of magic numbers --- source/portable/NetworkInterface/RX/NetworkInterface.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/portable/NetworkInterface/RX/NetworkInterface.c b/source/portable/NetworkInterface/RX/NetworkInterface.c index 040f57a438..2f5ee215cd 100644 --- a/source/portable/NetworkInterface/RX/NetworkInterface.c +++ b/source/portable/NetworkInterface/RX/NetworkInterface.c @@ -496,13 +496,13 @@ static int InitializeNetwork( void ) R_ETHER_Control(CONTROL_POWER_ON, param); #endif - eth_ret = R_ETHER_Open_ZC2(0, (const uint8_t *) myethaddr, false); + eth_ret = R_ETHER_Open_ZC2(ETHER_CHANNEL_0, (const uint8_t *) myethaddr, false); if (ETHER_SUCCESS != eth_ret) { return pdFALSE; } #if (ETHER_CHANNEL_MAX >= 2) - eth_ret = R_ETHER_Open_ZC2(1, (const uint8_t *) myethaddr, false); + eth_ret = R_ETHER_Open_ZC2(ETHER_CHANNEL_1, (const uint8_t *) myethaddr, false); if (ETHER_SUCCESS != eth_ret) { return pdFALSE; From d0d45a975d1d042abca7920fad0f325f0cfc0272 Mon Sep 17 00:00:00 2001 From: tony-josi-aws Date: Thu, 27 Jul 2023 12:29:18 +0530 Subject: [PATCH 8/9] fix formatting --- source/include/FreeRTOS_IP_Private.h | 2 +- .../NetworkInterface/RX/NetworkInterface.c | 62 ++++++++++--------- 2 files changed, 34 insertions(+), 30 deletions(-) diff --git a/source/include/FreeRTOS_IP_Private.h b/source/include/FreeRTOS_IP_Private.h index 7c0bf7890c..1d8aa3f7bd 100644 --- a/source/include/FreeRTOS_IP_Private.h +++ b/source/include/FreeRTOS_IP_Private.h @@ -409,7 +409,7 @@ extern struct xNetworkInterface * pxNetworkInterfaces; /** @brief Macro calculates the number of elements in an array as a size_t. */ #ifndef ARRAY_SIZE_X - #if !defined(_WINDOWS_) && !defined(__CCRX__) + #if !defined( _WINDOWS_ ) && !defined( __CCRX__ ) #define ARRAY_SIZE_X( x ) \ ( { size_t uxCount = ( sizeof( x ) / sizeof( x[ 0 ] ) ); \ BaseType_t xCount = ( BaseType_t ) uxCount; \ diff --git a/source/portable/NetworkInterface/RX/NetworkInterface.c b/source/portable/NetworkInterface/RX/NetworkInterface.c index 2f5ee215cd..f882c00f0d 100644 --- a/source/portable/NetworkInterface/RX/NetworkInterface.c +++ b/source/portable/NetworkInterface/RX/NetworkInterface.c @@ -119,25 +119,25 @@ void prvLinkStatusChange( BaseType_t xStatus ); /*-----------------------------------------------------------*/ NetworkInterface_t * pxRX_FillInterfaceDescriptor( BaseType_t xEMACIndex, - NetworkInterface_t * pxInterface ); + NetworkInterface_t * pxInterface ); /* Function to initialise the network interface */ BaseType_t xRX_NetworkInterfaceInitialise( NetworkInterface_t * pxInterface ); BaseType_t xRX_NetworkInterfaceOutput( NetworkInterface_t * pxInterface, - NetworkBufferDescriptor_t * const pxDescriptor, - BaseType_t bReleaseAfterSend ); + NetworkBufferDescriptor_t * const pxDescriptor, + BaseType_t bReleaseAfterSend ); static inline BaseType_t xRX_PHYGetLinkStatus( NetworkInterface_t * pxInterface ); NetworkInterface_t * pxRX_FillInterfaceDescriptor( BaseType_t xEMACIndex, - NetworkInterface_t * pxInterface ) + NetworkInterface_t * pxInterface ) { static char pcName[ 17 ]; /* This function pxRX_FillInterfaceDescriptor() adds a network-interface. - * Make sure that the object pointed to by 'pxInterface' - * is declared static or global, and that it will remain to exist. */ + * Make sure that the object pointed to by 'pxInterface' + * is declared static or global, and that it will remain to exist. */ snprintf( pcName, sizeof( pcName ), "eth%u", ( unsigned ) xEMACIndex ); @@ -166,6 +166,7 @@ BaseType_t xRX_NetworkInterfaceInitialise( NetworkInterface_t * pxInterface ) if( xMacInitStatus == eMACInit ) { pxMyInterface = pxInterface; + /* * Perform the hardware specific network initialization here using the Ethernet driver library to initialize the * Ethernet hardware, initialize DMA descriptors, and perform a PHY auto-negotiation to obtain a network link. @@ -207,8 +208,8 @@ BaseType_t xRX_NetworkInterfaceInitialise( NetworkInterface_t * pxInterface ) * Return Value : pdTRUE, pdFALSE **********************************************************************************************************************/ BaseType_t xRX_NetworkInterfaceOutput( NetworkInterface_t * pxInterface, - NetworkBufferDescriptor_t * const pxDescriptor, - BaseType_t xReleaseAfterSend ) + NetworkBufferDescriptor_t * const pxDescriptor, + BaseType_t xReleaseAfterSend ) { BaseType_t xReturn = pdFALSE; @@ -434,14 +435,14 @@ void vNetworkInterfaceAllocateRAMToBuffers( NetworkBufferDescriptor_t pxNetworkB uint8_t * buffer_address; portPOINTER_SIZE_TYPE uxStartAddress; - static uint8_t ETH_BUFFERS[(ipconfigNUM_NETWORK_BUFFER_DESCRIPTORS * ETHER_CFG_BUFSIZE) + portBYTE_ALIGNMENT]; + static uint8_t ETH_BUFFERS[ ( ipconfigNUM_NETWORK_BUFFER_DESCRIPTORS * ETHER_CFG_BUFSIZE ) + portBYTE_ALIGNMENT ]; /* Align the buffer start address to portBYTE_ALIGNMENT bytes */ - uxStartAddress = (portPOINTER_SIZE_TYPE) Ð_BUFFERS[0]; + uxStartAddress = ( portPOINTER_SIZE_TYPE ) & ETH_BUFFERS[ 0 ]; uxStartAddress += portBYTE_ALIGNMENT; - uxStartAddress &= ~((portPOINTER_SIZE_TYPE) portBYTE_ALIGNMENT_MASK); + uxStartAddress &= ~( ( portPOINTER_SIZE_TYPE ) portBYTE_ALIGNMENT_MASK ); - buffer_address = (uint8_t *) uxStartAddress; + buffer_address = ( uint8_t * ) uxStartAddress; for( ul = 0; ul < ipconfigNUM_NETWORK_BUFFER_DESCRIPTORS; ul++ ) { @@ -454,7 +455,7 @@ void vNetworkInterfaceAllocateRAMToBuffers( NetworkBufferDescriptor_t pxNetworkB /*********************************************************************************************************************** * Function Name: prvLinkStatusChange () * Description : Function will be called when the Link Status of the phy has changed ( see ether_callback.c ) - * Arguments : xStatus : true when statyus has become high + * Arguments : xStatus : true when status has become high * Return Value : void **********************************************************************************************************************/ void prvLinkStatusChange( BaseType_t xStatus ) @@ -482,32 +483,35 @@ static int InitializeNetwork( void ) * as the mac address is usually read from the EEPROM, and it might be different to the mac address in * the defines, especially in production environments */ - configASSERT(pxMyInterface); - const uint8_t * myethaddr = &pxMyInterface->pxEndPoint->xMACAddress.ucBytes[0]; + configASSERT( pxMyInterface ); + const uint8_t * myethaddr = &pxMyInterface->pxEndPoint->xMACAddress.ucBytes[ 0 ]; R_ETHER_PinSet_CHANNEL_0(); R_ETHER_Initial(); callback_ether_regist(); param.channel = ETHER_CHANNEL_0; - R_ETHER_Control(CONTROL_POWER_ON, param); -#if (ETHER_CHANNEL_MAX >= 2) - param.channel = ETHER_CHANNEL_1; - R_ETHER_Control(CONTROL_POWER_ON, param); -#endif + R_ETHER_Control( CONTROL_POWER_ON, param ); + #if ( ETHER_CHANNEL_MAX >= 2 ) + param.channel = ETHER_CHANNEL_1; + R_ETHER_Control( CONTROL_POWER_ON, param ); + #endif - eth_ret = R_ETHER_Open_ZC2(ETHER_CHANNEL_0, (const uint8_t *) myethaddr, false); - if (ETHER_SUCCESS != eth_ret) - { - return pdFALSE; - } -#if (ETHER_CHANNEL_MAX >= 2) - eth_ret = R_ETHER_Open_ZC2(ETHER_CHANNEL_1, (const uint8_t *) myethaddr, false); - if (ETHER_SUCCESS != eth_ret) + eth_ret = R_ETHER_Open_ZC2( ETHER_CHANNEL_0, ( const uint8_t * ) myethaddr, false ); + + if( ETHER_SUCCESS != eth_ret ) { return pdFALSE; } -#endif + + #if ( ETHER_CHANNEL_MAX >= 2 ) + eth_ret = R_ETHER_Open_ZC2( ETHER_CHANNEL_1, ( const uint8_t * ) myethaddr, false ); + + if( ETHER_SUCCESS != eth_ret ) + { + return pdFALSE; + } + #endif if( ether_receive_check_task_handle == NULL ) { From dd104bbca7095dfa47a2840bd01d8f0dff4dd74a Mon Sep 17 00:00:00 2001 From: Tony Josi Date: Thu, 27 Jul 2023 21:24:57 +0530 Subject: [PATCH 9/9] update review comments --- .../NetworkInterface/RX/NetworkInterface.c | 20 ++++++------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/source/portable/NetworkInterface/RX/NetworkInterface.c b/source/portable/NetworkInterface/RX/NetworkInterface.c index f882c00f0d..74c08f7de0 100644 --- a/source/portable/NetworkInterface/RX/NetworkInterface.c +++ b/source/portable/NetworkInterface/RX/NetworkInterface.c @@ -491,27 +491,19 @@ static int InitializeNetwork( void ) callback_ether_regist(); param.channel = ETHER_CHANNEL_0; - R_ETHER_Control( CONTROL_POWER_ON, param ); - #if ( ETHER_CHANNEL_MAX >= 2 ) - param.channel = ETHER_CHANNEL_1; - R_ETHER_Control( CONTROL_POWER_ON, param ); - #endif - - eth_ret = R_ETHER_Open_ZC2( ETHER_CHANNEL_0, ( const uint8_t * ) myethaddr, false ); + eth_ret = R_ETHER_Control( CONTROL_POWER_ON, param ); /* PHY mode settings, module stop cancellation */ if( ETHER_SUCCESS != eth_ret ) { return pdFALSE; } - #if ( ETHER_CHANNEL_MAX >= 2 ) - eth_ret = R_ETHER_Open_ZC2( ETHER_CHANNEL_1, ( const uint8_t * ) myethaddr, false ); + eth_ret = R_ETHER_Open_ZC2( ETHER_CHANNEL_0, myethaddr, ETHER_FLAG_OFF ); - if( ETHER_SUCCESS != eth_ret ) - { - return pdFALSE; - } - #endif + if( ETHER_SUCCESS != eth_ret ) + { + return pdFALSE; + } if( ether_receive_check_task_handle == NULL ) {