<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>LPC Microcontrollersのトピックuip dhcp probelm</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/uip-dhcp-probelm/m-p/521242#M4086</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by cseb on Tue Jul 14 15:18:11 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi all,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I have strange problem about uip tcp ip stack, dhcp module. At initialization the code can not return from function of "uip_setethaddr (mymac)". I can not understand the problem. My whole main file is like below and i have specified the problem with comment:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;/*

#include "lpc17xx.h"
#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;string.h&amp;gt;
#include "lpc17xx_emac.h"
#include "timer.h"

#include "uip.h"
#include "uip_arp.h"
#include "tapdev.h"


struct uip_eth_addr mymac = { {MYMAC_1, MYMAC_2, MYMAC_3, MYMAC_4, MYMAC_5, MYMAC_6} } ;
char ipstring [20];

#define BUF ((struct uip_eth_hdr *)&amp;amp;uip_buf[0])

unsigned char *Key;
char buf[512];
/*--------------------------- uip_log ---------------------------------*/

void uip_log(char *m)
{
&amp;nbsp; //printf("uIP log message: %s\n", m);
}


/*--------------------------- main ---------------------------------*/

int main(void)
{
unsigned int i;
uip_ipaddr_t ipaddr;/* local IP address */
struct timer periodic_timer, arp_timer;
GPIO4-&amp;gt;FIODIR&amp;nbsp;&amp;nbsp; |= 1 &amp;lt;&amp;lt; 29;
GPIO1-&amp;gt;FIODIR = (1 &amp;lt;&amp;lt; 25);
// system init
SystemInit();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* setup core clocks */

// clock init
clock_init();
// two timers for tcp/ip
timer_set(&amp;amp;periodic_timer, CLOCK_SECOND / 2); /* 0.5s */
timer_set(&amp;amp;arp_timer, CLOCK_SECOND * 10);/* 10s */

// ethernet init
tapdev_init();

// Initialize the uIP TCP/IP stack.
uip_init();

 

uip_setethaddr (mymac);//---&amp;gt;&amp;gt; here the code does not return and the led does not toggle below
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GPIO1-&amp;gt;FIOPIN ^=(1&amp;lt;&amp;lt; 25);// led does not toggle

// Start DHCP to get IP address
dhcpc_init(&amp;amp;mymac,6 );

 dhcpc_request();

// Initialize the HTTP server, listen to port 80.
httpd_init();
GPIO1-&amp;gt;FIOPIN ^=(1&amp;lt;&amp;lt; 25);
while(1)
{
 /* receive packet and put in uip_buf */
uip_len = tapdev_read(uip_buf);
&amp;nbsp;&amp;nbsp;&amp;nbsp; if(uip_len &amp;gt; 0)/* received packet */
&amp;nbsp;&amp;nbsp;&amp;nbsp; { 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(BUF-&amp;gt;type == htons(UIP_ETHTYPE_IP))/* IP packet */
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uip_arp_ipin();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uip_input();


if(uip_len &amp;gt; 0)
{
uip_arp_out();
tapdev_send(uip_buf,uip_len);
//GPIO1-&amp;gt;FIOPIN ^=(1&amp;lt;&amp;lt; 25);
}
}

/* If the above function invocation resulted in data that
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; should be sent out on the network, the global variable
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uip_len is set to a value &amp;gt; 0. */
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if(BUF-&amp;gt;type == htons(UIP_ETHTYPE_ARP))/*ARP packet */
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uip_arp_arpin();

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* If the above function invocation resulted in data that
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; should be sent out on the network, the global variable
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uip_len is set to a value &amp;gt; 0. */
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(uip_len &amp;gt; 0)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tapdev_send(uip_buf,uip_len);/* ARP ack*/

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; else if(timer_expired(&amp;amp;periodic_timer))/* no packet but periodic_timer time out (0.5s)*/
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; timer_reset(&amp;amp;periodic_timer);
&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(i = 0; i &amp;lt; UIP_CONNS; i++)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uip_periodic(i);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* If the above function invocation resulted in data that
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; should be sent out on the network, the global variable
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uip_len is set to a value &amp;gt; 0. */
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(uip_len &amp;gt; 0)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uip_arp_out();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tapdev_send(uip_buf,uip_len);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
#if UIP_UDP
for(i = 0; i &amp;lt; UIP_UDP_CONNS; i++) {
uip_udp_periodic(i);
/* If the above function invocation resulted in data that
&amp;nbsp;&amp;nbsp; should be sent out on the network, the global variable
&amp;nbsp;&amp;nbsp; uip_len is set to a value &amp;gt; 0. */
if(uip_len &amp;gt; 0) {
&amp;nbsp; uip_arp_out();
&amp;nbsp; tapdev_send(uip_buf,uip_len);
}
}
#endif /* UIP_UDP */
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Call the ARP timer function every 10 seconds. */
if(timer_expired(&amp;amp;arp_timer))
{
timer_reset(&amp;amp;arp_timer);
uip_arp_timer();
}
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
}
}







&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 17:48:34 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T17:48:34Z</dc:date>
    <item>
      <title>uip dhcp probelm</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/uip-dhcp-probelm/m-p/521242#M4086</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by cseb on Tue Jul 14 15:18:11 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi all,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I have strange problem about uip tcp ip stack, dhcp module. At initialization the code can not return from function of "uip_setethaddr (mymac)". I can not understand the problem. My whole main file is like below and i have specified the problem with comment:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;/*

#include "lpc17xx.h"
#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;string.h&amp;gt;
#include "lpc17xx_emac.h"
#include "timer.h"

#include "uip.h"
#include "uip_arp.h"
#include "tapdev.h"


struct uip_eth_addr mymac = { {MYMAC_1, MYMAC_2, MYMAC_3, MYMAC_4, MYMAC_5, MYMAC_6} } ;
char ipstring [20];

#define BUF ((struct uip_eth_hdr *)&amp;amp;uip_buf[0])

unsigned char *Key;
char buf[512];
/*--------------------------- uip_log ---------------------------------*/

void uip_log(char *m)
{
&amp;nbsp; //printf("uIP log message: %s\n", m);
}


/*--------------------------- main ---------------------------------*/

int main(void)
{
unsigned int i;
uip_ipaddr_t ipaddr;/* local IP address */
struct timer periodic_timer, arp_timer;
GPIO4-&amp;gt;FIODIR&amp;nbsp;&amp;nbsp; |= 1 &amp;lt;&amp;lt; 29;
GPIO1-&amp;gt;FIODIR = (1 &amp;lt;&amp;lt; 25);
// system init
SystemInit();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* setup core clocks */

// clock init
clock_init();
// two timers for tcp/ip
timer_set(&amp;amp;periodic_timer, CLOCK_SECOND / 2); /* 0.5s */
timer_set(&amp;amp;arp_timer, CLOCK_SECOND * 10);/* 10s */

// ethernet init
tapdev_init();

// Initialize the uIP TCP/IP stack.
uip_init();

 

uip_setethaddr (mymac);//---&amp;gt;&amp;gt; here the code does not return and the led does not toggle below
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GPIO1-&amp;gt;FIOPIN ^=(1&amp;lt;&amp;lt; 25);// led does not toggle

// Start DHCP to get IP address
dhcpc_init(&amp;amp;mymac,6 );

 dhcpc_request();

// Initialize the HTTP server, listen to port 80.
httpd_init();
GPIO1-&amp;gt;FIOPIN ^=(1&amp;lt;&amp;lt; 25);
while(1)
{
 /* receive packet and put in uip_buf */
uip_len = tapdev_read(uip_buf);
&amp;nbsp;&amp;nbsp;&amp;nbsp; if(uip_len &amp;gt; 0)/* received packet */
&amp;nbsp;&amp;nbsp;&amp;nbsp; { 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(BUF-&amp;gt;type == htons(UIP_ETHTYPE_IP))/* IP packet */
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uip_arp_ipin();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uip_input();


if(uip_len &amp;gt; 0)
{
uip_arp_out();
tapdev_send(uip_buf,uip_len);
//GPIO1-&amp;gt;FIOPIN ^=(1&amp;lt;&amp;lt; 25);
}
}

/* If the above function invocation resulted in data that
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; should be sent out on the network, the global variable
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uip_len is set to a value &amp;gt; 0. */
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if(BUF-&amp;gt;type == htons(UIP_ETHTYPE_ARP))/*ARP packet */
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uip_arp_arpin();

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* If the above function invocation resulted in data that
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; should be sent out on the network, the global variable
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uip_len is set to a value &amp;gt; 0. */
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(uip_len &amp;gt; 0)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tapdev_send(uip_buf,uip_len);/* ARP ack*/

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; else if(timer_expired(&amp;amp;periodic_timer))/* no packet but periodic_timer time out (0.5s)*/
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; timer_reset(&amp;amp;periodic_timer);
&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(i = 0; i &amp;lt; UIP_CONNS; i++)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uip_periodic(i);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* If the above function invocation resulted in data that
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; should be sent out on the network, the global variable
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uip_len is set to a value &amp;gt; 0. */
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(uip_len &amp;gt; 0)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uip_arp_out();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tapdev_send(uip_buf,uip_len);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
#if UIP_UDP
for(i = 0; i &amp;lt; UIP_UDP_CONNS; i++) {
uip_udp_periodic(i);
/* If the above function invocation resulted in data that
&amp;nbsp;&amp;nbsp; should be sent out on the network, the global variable
&amp;nbsp;&amp;nbsp; uip_len is set to a value &amp;gt; 0. */
if(uip_len &amp;gt; 0) {
&amp;nbsp; uip_arp_out();
&amp;nbsp; tapdev_send(uip_buf,uip_len);
}
}
#endif /* UIP_UDP */
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Call the ARP timer function every 10 seconds. */
if(timer_expired(&amp;amp;arp_timer))
{
timer_reset(&amp;amp;arp_timer);
uip_arp_timer();
}
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
}
}







&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 17:48:34 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/uip-dhcp-probelm/m-p/521242#M4086</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T17:48:34Z</dc:date>
    </item>
  </channel>
</rss>

