Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

STM32, FreeRTOS and LwIP - Ping Issues

Status
Not open for further replies.

bianchi77

Advanced Member level 4
Joined
Jun 11, 2009
Messages
1,313
Helped
21
Reputation
44
Reaction score
20
Trophy points
1,318
Location
California
Activity points
9,442
Reference Previous Thread:

https://www.edaboard.com/threads/276401/

I have now done some logging and package sniffing and it seems like the webserver in the other end doesn't respond to the requests, rather than a problem with the RTOS and the lwIP stack.

This is the log:
Code:
root@DD-WRT:/tmp/smbshare/tmp/ipkg# tcpdump host 192.168.0.136
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on br0, link-type EN10MB (Ethernet), capture size 96 bytes
21:06:16.755439 arp who-has 192.168.0.136 tell DD-WRT
21:06:17.749425 arp who-has 192.168.0.136 tell DD-WRT
21:06:18.749419 arp who-has 192.168.0.136 tell DD-WRT
21:06:19.009820 IP DD-WRT > 192.168.0.136: ICMP echo request, id 24829, seq 0, length 28
21:06:19.010268 IP DD-WRT.bootps > 192.168.0.136.bootpc: BOOTP/DHCP, Reply, length: 300
21:06:19.013484 IP DD-WRT.bootps > 192.168.0.136.bootpc: BOOTP/DHCP, Reply, length: 300
21:06:19.013816 arp who-has 192.168.0.136 tell 0.0.0.0
21:06:19.253541 arp who-has 192.168.0.136 tell 0.0.0.0
21:06:20.755843 arp who-has DD-WRT tell 192.168.0.136
21:06:20.756171 arp reply DD-WRT is-at 00:1c:10:36:55:d5 (oui Unknown)
21:06:20.756363 IP 192.168.0.136.49153 > api.theblast.dk.www: S 6509:6509(0) win 5840 <mss 1460>
21:06:23.505626 IP 192.168.0.136.49153 > api.theblast.dk.www: S 6509:6509(0) win 5840 <mss 1460>
21:06:26.505681 IP 192.168.0.136.49153 > api.theblast.dk.www: S 6509:6509(0) win 5840 <mss 1460>
21:06:29.505745 IP 192.168.0.136.49153 > api.theblast.dk.www: S 6509:6509(0) win 5840 <mss 1460>
21:06:32.505805 IP 192.168.0.136.49153 > api.theblast.dk.www: S 6509:6509(0) win 5840 <mss 1460>
21:06:35.505865 IP 192.168.0.136.49153 > api.theblast.dk.www: S 6509:6509(0) win 5840 <mss 1460>
21:06:38.505924 IP 192.168.0.136.49153 > api.theblast.dk.www: S 6509:6509(0) win 5840 <mss 1460>
STM32 Debug: TIMEOUT 
21:06:40.058179 IP 192.168.0.136.49154 > api.theblast.dk.www: S 6583:6583(0) win 5840 <mss 1460>
21:06:43.058028 IP 192.168.0.136.49154 > api.theblast.dk.www: S 6583:6583(0) win 5840 <mss 1460>
21:06:46.058071 IP 192.168.0.136.49154 > api.theblast.dk.www: S 6583:6583(0) win 5840 <mss 1460>
21:06:49.058133 IP 192.168.0.136.49154 > api.theblast.dk.www: S 6583:6583(0) win 5840 <mss 1460>
21:06:52.058188 IP 192.168.0.136.49154 > api.theblast.dk.www: S 6583:6583(0) win 5840 <mss 1460>
21:06:55.058256 IP 192.168.0.136.49154 > api.theblast.dk.www: S 6583:6583(0) win 5840 <mss 1460>
21:06:58.058307 IP 192.168.0.136.49154 > api.theblast.dk.www: S 6583:6583(0) win 5840 <mss 1460>
STM32 Debug: TIMEOUT 
21:06:59.565567 IP 192.168.0.136.49155 > api.theblast.dk.www: S 6731:6731(0) win 5840 <mss 1460>
21:06:59.587891 IP api.theblast.dk.www > 192.168.0.136.49155: S 2608560878:26085 60878(0) ack 6732 win 14600 <mss 1460>
21:06:59.588153 IP 192.168.0.136.49155 > api.theblast.dk.www: . ack 1 win 5840
21:06:59.589999 IP 192.168.0.136.49155 > api.theblast.dk.www: P 1:164(163) ack 1 win 5840
21:06:59.611974 IP api.theblast.dk.www > 192.168.0.136.49155: . ack 164 win 15544
21:06:59.677696 IP api.theblast.dk.www > 192.168.0.136.49155: P 1:221(220) ack 164 win 15544
21:06:59.678214 IP api.theblast.dk.www > 192.168.0.136.49155: F 221:221(0) ack 164 win 15544
21:06:59.678451 IP 192.168.0.136.49155 > api.theblast.dk.www: . ack 222 win 5619
21:06:59.729786 IP 192.168.0.136.49155 > api.theblast.dk.www: F 164:164(0) ack 222 win 5619
21:06:59.750428 IP api.theblast.dk.www > 192.168.0.136.49155: . ack 165 win 15544

In that case, as the server isn't responding properly, could it be something with the HTTP header?
The header I'm sending/using is:
GET / HTTP/1.1\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 1.0.3705)\r\nHost: api.theblast.dk\r\n\r\n

Looking forward to your feedback.

Regards Thomas

How can you set the IP address on LwIP ? I'm using STM32CubeMx and can not manage to ping my board yet ??
 
Last edited by a moderator:

How can you set the IP address on LwIP ? I'm using STM32CubeMx and can not manage to ping my board yet ??

First, if you are using the DHCP, you don't set the IP address, the DHCP server on your network issues an IP address and should add your device's hostname and newly issued IP address to your networks DNS server database

Second, to be able to return a ping, your device must implement the Internet Control Message Protocol (ICMP) and its associated Echo Reply Message feature, contained in the icmp.c source file.


BigDog
 

I used this code and trying to connect into my computer and expectiing the IP will be 10.0.0.5....but I can't get this from my computer....??

How can I set ICMP inside LwIP ?
Thanks


Code:
/* init function */
void MX_LWIP_Init(void)
{
  IP_ADDRESS[0] = 10;
  IP_ADDRESS[1] = 000;
  IP_ADDRESS[2] = 000;
  IP_ADDRESS[3] = 5;
  NETMASK_ADDRESS[0] = 255;
  NETMASK_ADDRESS[1] = 255;
  NETMASK_ADDRESS[2] = 255;
  NETMASK_ADDRESS[3] = 000;
  GATEWAY_ADDRESS[0] = 10;
  GATEWAY_ADDRESS[1] = 000;
  GATEWAY_ADDRESS[2] = 000;
  GATEWAY_ADDRESS[3] = 1;
    /* Initilialize the LwIP stack */
  lwip_init();
 
 
  IP4_ADDR(&ipaddr, IP_ADDRESS[0], IP_ADDRESS[1], IP_ADDRESS[2], IP_ADDRESS[3]);
  IP4_ADDR(&netmask, NETMASK_ADDRESS[0], NETMASK_ADDRESS[1] , NETMASK_ADDRESS[2], NETMASK_ADDRESS[3]);
  IP4_ADDR(&gw, GATEWAY_ADDRESS[0], GATEWAY_ADDRESS[1], GATEWAY_ADDRESS[2], GATEWAY_ADDRESS[3]);  
  

  /* add the network interface */
  netif_add(&gnetif, &ipaddr, &netmask, &gw, NULL, &ethernetif_init, &ethernet_input);
 
 
  /*  Registers the default network interface */
  netif_set_default(&gnetif);

  if (netif_is_link_up(&gnetif))
  {
    /* When the netif is fully configured this function must be called */
    netif_set_up(&gnetif);
  }
  else
  {
    /* When the netif link is down this function must be called */
       netif_set_down(&gnetif);
  }
 

I'm using STM32CubeMx and can not manage to ping my board yet ??

The STM32CubeMx is a tool, primarily for the development of graphical user interfaces (GUIs), I suspect you are more specifically referring to the STMCubeFx library packages.

As you have not specified the device you've employed in your design, my advice is thus somewhat limited.

If you are using the STM32CubeFx library package in your application:

Typically, the STM32CubeFx example codes, specific to the actual device series utilized in your design, offers one or more LwIP example applications which can be utilized as a template for your specific project.

If you are NOT using the STM32CubeFx library package in your application, then reviewing the following example code of a LwIP implementation may yield the answers you seek:

LwIP TCP/IP stack demonstration for STM32F107xx (AN3102)

Either way, there are typically header files which contain the macros which enable/disable various features or options within the LwIP library, you need to ensure the proper settings are enabled within these option header files, to enable the ICMP and its associated Echo Reply Message.

BigDog
 

Oh well, apparently I was misinformed, the STM32CubeMx is a graphical wizard for configuring the STM32CubeFx libraries, which explains why I've never use it.

I'm using STM32F107VCT6

What is the PHY target device you are using to complete the implementation of the Ethernet connection?

Is this a commercial development board or home brew?

Assuming the PHY section has been implemented correctly and is functional, I would recommend using one of the example codes for the STM32CubeF1 as a template, rather than rely on the graphical wizard to generate the necessary header files.

The example code for the STM32CubeF1 libraries contain two LwIP server examples, LwIP_TCP_Echo_Server and LwIP_UDP_Echo_Server which appear to enable and implement the ICMP IP protocol by default in accordance with RFC1122.

STM32CubeF1

Server Examples are located in the STM32Cube_FW_F1_V1.1.0\Projects\STM3210C_EVAL\Applications\LwIP directory.

Most of the options to configure the LwIP stack are contained in either the opt.h or lwipopts.h, I suspect they implement the ICMP and Echo Reply Message by default and should be able to return a Ping. Although, the STM3210C_EVAL employs the STM32F107VCT as well, you should double check the schematics and pinouts of your design to that of that of the STM3210C_EVAL, there maybe one or two differences, which if present you will need to modify the code for it to function correctly.


BigDog
 

What is the PHY target device you are using to complete the implementation of the Ethernet connection?

Is this a commercial development board or home brew?
I'm using DP83848 PHY chip...and it's my own board...I try using RMII....but I have a question about clock, is it using crystal from DP83848 or it's sourced from STM32 ? because I saw a pin for "OSCIN" but there's crystal on the module...

Here's my setting on my computer :


I tried to ping, but still can not get a response ??

- - - Updated - - -

I can see the example on STM32Cube_FW_F1_V1.1.0\Projects\STM3210C_EVAL\Appl ications\LwIP, is it using RMII or MII ? thanks

- - - Updated - - -

Is it possible, because of MCO ??

 

I'm using DP83848 PHY chip...and it's my own board...I try using RMII....but I have a question about clock, is it using crystal from DP83848 or it's sourced from STM32 ? because I saw a pin for "OSCIN" but there's crystal on the module...

The MII mode requires a 25MHz clock, while the RMII mode requires a 50MHz clock.

The MII interface requires 16 signal lines, while the RMII requires only about half the number of MII, hence the term "Reduced" in Reduced Media-Independent Interface (RMII).

While the RMII interface was intentionally designed to allow the sharing of the clock signal across multiple devices, if the PHY module you are using has a 50MHz oscillator onboard, then it should be used as the clock source for the PHY device.

I tried to ping, but still can not get a response ??

I can see the example on STM32Cube_FW_F1_V1.1.0\Projects\STM3210C_EVAL\Appl ications\LwIP, is it using RMII or MII ?

It's not surprising that you are unable to ping your design, as a review of the STM3210C_EVAL schematics indicate that the STM3210C_EVAL design is utilizing 16 signal lines and a 25MHz clock source for the DP83848 PHY device, hence a MII interface implementation, not RMII interface.

You will need to make several modifications to the example code for it to function properly, converting it from an MII to RMII interface to the DP83848 PHY device, ensuring the microcontroller clock source is properly configured, etc.


BigDog
 

I tried with STM32CubeMX to generate the code for STM32F107VCT6....and when I connect LED only on every port related with ethernet, without PHY chip attached....I don't see any blink or response when the software running,

I' m not sure if it's properly sending the signal ??
Please have a look to the code I have generated...

- - - Updated - - -

The source code files attached below.

- - - Updated - - -

Here's my clock, what should I modify ? thanks
 

Attachments

  • STM32F107VCT7.7z
    5.3 MB · Views: 128
Last edited by a moderator:

Here's the init code and I tried to debug it via UART, it works...
Code:
/* Private functions ---------------------------------------------------------*/

void HAL_ETH_MspInit(ETH_HandleTypeDef* heth)
{
  GPIO_InitTypeDef GPIO_InitStruct;
  if(heth->Instance==ETH)
  {
  /* USER CODE BEGIN ETH_MspInit 0 */

  /* USER CODE END ETH_MspInit 0 */
    /* Enable Peripheral clock */
    __HAL_RCC_ETH_CLK_ENABLE();
  
    /**ETH GPIO Configuration    
    PC1     ------> ETH_MDC
    PA1     ------> ETH_REF_CLK
    PA2     ------> ETH_MDIO
    PA7     ------> ETH_CRS_DV
    PC4     ------> ETH_RXD0
    PC5     ------> ETH_RXD1
    PB11     ------> ETH_TX_EN
    PB12     ------> ETH_TXD0
    PB13     ------> ETH_TXD1 
    */
    GPIO_InitStruct.Pin = GPIO_PIN_1;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
    HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);

    GPIO_InitStruct.Pin = GPIO_PIN_1|GPIO_PIN_7;
    GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

    GPIO_InitStruct.Pin = GPIO_PIN_2;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

    GPIO_InitStruct.Pin = GPIO_PIN_4|GPIO_PIN_5;
    GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);

    GPIO_InitStruct.Pin = GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_13;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

  /* USER CODE BEGIN ETH_MspInit 1 */
    HAL_UART_Transmit(&huart1, "Finished ETH INIT /n", 36, 1000);
  /* USER CODE END ETH_MspInit 1 */
  }
.
.
.
....
....
....
int main(void)
{

  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration----------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* Configure the system clock */
  SystemClock_Config();

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_USART1_UART_Init();
  MX_LWIP_Init();

  /* USER CODE BEGIN 2 */
 HAL_UART_Transmit(&huart1, "HI There...LwIP STM32F107! /n", 36, 1000);
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
		
		/*
		
		HAL_GPIO_WritePin(GPIOB, GPIO_PIN_11 , 1 );
		HAL_Delay(500);
		HAL_GPIO_WritePin(GPIOB, GPIO_PIN_11 , 0 );
		
		HAL_Delay(2000);
		
		HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12 , 1 );
		HAL_Delay(500);
		HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12 , 0 );
		
		HAL_Delay(2000);
		
		HAL_GPIO_WritePin(GPIOB, GPIO_PIN_13 , 1 );
		HAL_Delay(500);
		HAL_GPIO_WritePin(GPIOB, GPIO_PIN_13 , 0 );
		
		HAL_Delay(2000);
		*/
		
  /* USER CODE END WHILE */

  /* USER CODE BEGIN 3 */
     /* Read a received packet from the Ethernet buffers and send it
		to the lwIP for handling */
		//ethernetif_input(&gnetif);
		
		/* Handle LwIP timeouts */
		//sys_check_timeouts();
		
		
  }

}

Any ideas why ??
 

Before talking about software, the RMII hardware setup should be verified.

According to the schematic snippet in post #7, DP83848 clock input is driven from a 50 MHz crystal oscillator. The same clock must me connected to the ST32 RMII REF_CLK input. Did you?
 

Yes I connect OSC IN at DP83848 To ETH_REF_CLK (PA1) on STM32F107VCT6, it's 50Mhz, I check with osciloscope....it's 50Mhz...

- - - Updated - - -

I can see the green LED keeps blinking on RJ45 Port, and the orange LED is on....computer can decect but saying unidentifyied network....

- - - Updated - - -

I try with logic analyzer from STM32F107VCT6 board, but see nothing, I've tried pushing the reset button....but nothing....
it's very strange for me....any clues ??

thanks
stm32 logic analyzer.jpg

- - - Updated - - -

Some captures from osciloscope on Rx1, Rx0 and Osc IN ( output from crystal ) to PA1 STM32F107...it's showing 50 MHz...
Rx0 DP83848.jpg
Rx1 DP83848.jpg
osc in_clock reference.jpg
 

Is it possible that it's because I'm not using crossover ethernet cable ??
 

Is it possible that it's because I'm not using crossover ethernet cable ??

With my computers I have usually found it impossible to network with a straight-through (normal) cable. I got success when I tried a crossover cable.

Many modern computers can detect automatically whether an ethernet cable is straight or crossover.

It is possible to alter a normal cable so it is a crossover type, if you are willing to try to detach and re-attach wires in an ethernet plug. You switch the positions of 2 or 3 wires.
 

If I plug the ethernet cable I got this on my USART :

Buffer value:
.-éð_'H
FÆj. ƒFFÖø*1à0hÿÿÿÿÿÿÈ
©qGà...È
©qGà..........©þ



If I unplug it.....

it's doing a loop inside this function
Code:
static struct pbuf * low_level_input(struct netif *netif)
{
  struct pbuf *p = NULL;
  struct pbuf *q;
  uint16_t len = 0;
  uint8_t *buffer;
  __IO ETH_DMADescTypeDef *dmarxdesc;
  uint32_t bufferoffset = 0;
  uint32_t payloadoffset = 0;
  uint32_t byteslefttocopy = 0;
  uint32_t i=0;
  
   HAL_UART_Transmit(&huart1, "Inside Low level input ethernetif.c! \n", 40, 1000);
  /* get received frame */
  if (HAL_ETH_GetReceivedFrame(&heth) != HAL_OK)
    return NULL;
  
  /* Obtain the size of the packet and put it into the "len" variable. */
  len = heth.RxFrameInfos.length;
  buffer = (uint8_t *)heth.RxFrameInfos.buffer;
	
	

  HAL_UART_Transmit(&huart1, "Buffer value: \n", 40, 1000);
	HAL_UART_Transmit(&huart1, buffer, 40, 1000);
  if (len > 0)
  {
    /* We allocate a pbuf chain of pbufs from the Lwip buffer pool */
    p = pbuf_alloc(PBUF_RAW, len, PBUF_POOL);
  }
  
  if (p != NULL)
  {
    dmarxdesc = heth.RxFrameInfos.FSRxDesc;
    bufferoffset = 0;
    for(q = p; q != NULL; q = q->next)
    {
      byteslefttocopy = q->len;
      payloadoffset = 0;
      
      /* Check if the length of bytes to copy in current pbuf is bigger than Rx buffer size*/
      while( (byteslefttocopy + bufferoffset) > ETH_RX_BUF_SIZE )
      {
        /* Copy data to pbuf */
        memcpy( (uint8_t*)((uint8_t*)q->payload + payloadoffset), (uint8_t*)((uint8_t*)buffer + bufferoffset), (ETH_RX_BUF_SIZE - bufferoffset));
        
        /* Point to next descriptor */
        dmarxdesc = (ETH_DMADescTypeDef *)(dmarxdesc->Buffer2NextDescAddr);
        buffer = (uint8_t *)(dmarxdesc->Buffer1Addr);
        
        byteslefttocopy = byteslefttocopy - (ETH_RX_BUF_SIZE - bufferoffset);
        payloadoffset = payloadoffset + (ETH_RX_BUF_SIZE - bufferoffset);
        bufferoffset = 0;
      }
      /* Copy remaining data in pbuf */
      memcpy( (uint8_t*)((uint8_t*)q->payload + payloadoffset), (uint8_t*)((uint8_t*)buffer + bufferoffset), byteslefttocopy);
      bufferoffset = bufferoffset + byteslefttocopy;
    }
    
    /* Release descriptors to DMA */
    /* Point to first descriptor */
    dmarxdesc = heth.RxFrameInfos.FSRxDesc;
    /* Set Own bit in Rx descriptors: gives the buffers back to DMA */
    for (i=0; i< heth.RxFrameInfos.SegCount; i++)
    {  
      dmarxdesc->Status |= ETH_DMARXDESC_OWN;
      dmarxdesc = (ETH_DMADescTypeDef *)(dmarxdesc->Buffer2NextDescAddr);
    }
    
    /* Clear Segment_Count */
    heth.RxFrameInfos.SegCount =0;
  }    
  
  /* When Rx Buffer unavailable flag is set: clear it and resume reception */
  if ((heth.Instance->DMASR & ETH_DMASR_RBUS) != (uint32_t)RESET)  
  {
    /* Clear RBUS ETHERNET DMA flag */
    heth.Instance->DMASR = ETH_DMASR_RBUS;
    /* Resume DMA reception */
    heth.Instance->DMARPDR = 0;
  }
  return p;
}

on UART :
.Inside Low level input ethernetif.c!
..Inside Low level input ethernetif.c!
..Inside Low level input ethernetif.c!
..Inside Low level input ethernetif.c!
..Inside Low level input ethernetif.c!


Any clues ? thanks
 

You started this thread concerning possible issues with the Transport or Network ISO levels and now you've descended all the way to the Physical ISOlevel, physical transport media.

Before proceeding any further, you must test and verify that your crossover cable is functioning properly, always ensure a firm foundation before troubleshooting or analyzing higher levels.

Therefore, you are strongly urged to test your crossover cable by connecting it between two known functional systems and attempt to ping one to the other.

Otherwise, we are all just continuing to shoot in the dark, without the slightest clue as to what has been tested and what has not.

Post your result of the cable test and then you can proceed with troubleshooting the next ISO level.

BigDog
 

Is it possible if I connect it via a hub ? or must be a cross over cable ?thanks
 

Is it possible if I connect it via a hub ? or must be a cross over cable ?

Yes, I would actually recommend the use of either a Hub or Switch, instead of a Crossover Cable.

If you are assigning static IP addresses to your devices under test, you can assign them IP addresses which are in the same private subnet as those of your desktop and laptop systems, preventing the need to change the IP addresses of your other devices and as Bradley pointed out allows the use of straight through cables. A managed switch would even be more advantageous, as they operate either on the ISO Data Link Layer (layer 2) or a few on the ISO Network Layer (layer 3), and maintain a MAC address list of connected devices which is accessible through the management interface , as well as, offer other troubleshooting features, versus a hub which operates solely on the ISO Physical Layer (layer 1).

Is your device a hub or switch?

BigDog
 

@BigDog,
It's a DLink 10/100 Fast Ethernet switch,
I have conected it with my computer and the board, but I still can not ping it...? I saw something in the ethernet buffer from UART but I'm not sure if the board has generated a valid IP....

- - - Updated - - -

I saw LED at the switch are on for both and blinking.....

- - - Updated - - -

But I still can not ping it....??

- - - Updated - - -

From UART :

Finished ETH INIT
.Finished LOW LEVEL INIT! /n.È.. -éøOLINK UP!
..LINK DOWN!
....È.. FinishedFinished LWIP INIT
..START LISTENING!
..µ
F.
Јh±FTCP_echoserver_init DONE!
.È.. }IHI There...LwIP STM32F107!
..Inside Low level input ethernetif.c!
..Buffer value:
.-éð_'H
FÆj. ƒFFÖø*1à0hÿÿÿÿÿÿÈ
©qGà.E..N.í..€µXÀ¨
À¨ÿ.‰.‰.:


- - - Updated - - -

IP_ADDRESS[0] = 192;
IP_ADDRESS[1] = 168;
IP_ADDRESS[2] = 1;
IP_ADDRESS[3] = 12;
NETMASK_ADDRESS[0] = 255;
NETMASK_ADDRESS[1] = 255;
NETMASK_ADDRESS[2] = 255;
NETMASK_ADDRESS[3] = 0;
GATEWAY_ADDRESS[0] = 192;
GATEWAY_ADDRESS[1] = 168;
GATEWAY_ADDRESS[2] = 1;
GATEWAY_ADDRESS[3] = 1;

and the computer setting :
ipsetting3.jpg

- - - Updated - - -

If I plug out the cable it's looping inside one function :

Finished LOW LEVEL INIT! /n.È.. -éøOLINK UP!
..LINK DOWN!
....È.. FinishedFinished LWIP INIT
..START LISTENING!
..µ
F.
Јh±FTCP_echoserver_init DONE!
.È.. }IHI There...LwIP STM32F107!
..Inside Low level input ethernetif.c!
..Inside Low level input ethernetif.c!
..Inside Low level input ethernetif.c!
..Inside Low level input ethernetif.c!
..Inside Low level input ethernetif.c!
 

Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top