<?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>topic Re: BUG in LPCOpen lpc18xx_43xx_emac.c in LPC Microcontrollers</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/BUG-in-LPCOpen-lpc18xx-43xx-emac-c/m-p/578114#M19761</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by NXP_Support on Mon Jul 13 09:49:00 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks for the post, Marshall!&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;We recorded the issue for fixing in the next LPCOpen release.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Best regards,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;-NXP Support&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 19:01:14 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T19:01:14Z</dc:date>
    <item>
      <title>BUG in LPCOpen lpc18xx_43xx_emac.c</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/BUG-in-LPCOpen-lpc18xx-43xx-emac-c/m-p/578113#M19760</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by brownm on Sat Jul 11 04:23:46 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;You may already know this - However I post it again for completeness. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I was trying to get my Phy running with the 4337 LPCOpen and LWIP (TCPEcho) &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;in the file lpc18xx_43xx_emac.c there is a function low_level_init()&amp;nbsp; this calls lpc_phy_init() &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If lpc_phy_init() returns with an error (because the phy address is wrong in my case) then low_level_init() returns this error code to the caller. This is incorrect. ERROR in lpc_phy_init() enums to 0,&amp;nbsp; ERR_OK also returns 0, to the caller. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The valid return values for this function are (perhaps some advice on the best ERR to return would be useful. &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;
/* Definitions for error constants. */

#define ERR_OK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp; /* No error, everything OK. */
#define ERR_MEM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -1&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Out of memory error.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */
#define ERR_BUF&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -2&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Buffer error.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */
#define ERR_TIMEOUT&amp;nbsp;&amp;nbsp;&amp;nbsp; -3&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Timeout.&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; */
#define ERR_RTE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -4&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Routing problem.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */
#define ERR_INPROGRESS -5&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Operation in progress&amp;nbsp;&amp;nbsp;&amp;nbsp; */
#define ERR_VAL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -6&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Illegal value.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */
#define ERR_WOULDBLOCK -7&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Operation would block.&amp;nbsp;&amp;nbsp; */
#define ERR_USE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -8&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Address in use.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */
#define ERR_ISCONN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -9&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Already connected.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */

#define ERR_IS_FATAL(e) ((e) &amp;lt; ERR_ISCONN)

#define ERR_ABRT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -10&amp;nbsp;&amp;nbsp; /* Connection aborted.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */
#define ERR_RST&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -11&amp;nbsp;&amp;nbsp; /* Connection reset.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */
#define ERR_CLSD&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -12&amp;nbsp;&amp;nbsp; /* Connection closed.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */
#define ERR_CONN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -13&amp;nbsp;&amp;nbsp; /* Not connected.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */

#define ERR_ARG&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -14&amp;nbsp;&amp;nbsp; /* Illegal argument.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */

#define ERR_IF&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -15&amp;nbsp;&amp;nbsp; /* Low-level netif error&amp;nbsp;&amp;nbsp;&amp;nbsp; */

&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&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;

/* Low level init of the MAC and PHY */
static err_t low_level_init(struct netif *netif)
{
struct lpc_enetdata *lpc_netifdata = netif-&amp;gt;state;

/* Initialize via Chip ENET function */
Chip_ENET_Init(LPC_ETHERNET, BOARD_ENET_PHY_ADDR);

/* Save MAC address */
Chip_ENET_SetADDR(LPC_ETHERNET, netif-&amp;gt;hwaddr);

/* Initial MAC configuration for checksum offload, full duplex,
&amp;nbsp;&amp;nbsp; 100Mbps, disable receive own in half duplex, inter-frame gap
&amp;nbsp;&amp;nbsp; of 64-bits */
LPC_ETHERNET-&amp;gt;MAC_CONFIG = MAC_CFG_BL(0) | MAC_CFG_IPC | MAC_CFG_DM |
&amp;nbsp;&amp;nbsp; MAC_CFG_DO | MAC_CFG_FES | MAC_CFG_PS | MAC_CFG_IFG(3);

/* Setup filter */
#if IP_SOF_BROADCAST_RECV
LPC_ETHERNET-&amp;gt;MAC_FRAME_FILTER = MAC_FF_PR | MAC_FF_RA;
#else
LPC_ETHERNET-&amp;gt;MAC_FRAME_FILTER = 0;/* Only matching MAC address */
#endif

/* Initialize the PHY */
#if defined(USE_RMII)
if (lpc_phy_init(true, msDelay) != SUCCESS) {
return ERROR;&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;lt;-----------------------------------!!!!!!!!!!!!!!!! - Incorrect - !!!!!!!!!!!!!!!!!!!!!!!!
}

intMask = RDES_CE | RDES_DE | RDES_RE | RDES_RWT | RDES_LC | RDES_OE |
&amp;nbsp; RDES_SAF | RDES_AFM;
#else
if (lpc_phy_init(false, msDelay) != SUCCESS) {
return ERROR;&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;lt;-----------------------------------!!!!!!!!!!!!!!!! - Incorrect - !!!!!!!!!!!!!!!!!!!!!!!!
}

intMask = RDES_CE | RDES_RE | RDES_RWT | RDES_LC | RDES_OE | RDES_SAF |
&amp;nbsp; RDES_AFM;
#endif

/* Setup transmit and receive descriptors */
if (lpc_tx_setup(lpc_netifdata) != ERR_OK) {
return ERR_BUF;
}
if (lpc_rx_setup(lpc_netifdata) != ERR_OK) {
return ERR_BUF;
}



&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Let me know if you need more information, I haven't changed my code, I fixed the error that caused this, It took ages as the error was not caught!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Regards&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Marshall&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 19:01:13 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/BUG-in-LPCOpen-lpc18xx-43xx-emac-c/m-p/578113#M19760</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T19:01:13Z</dc:date>
    </item>
    <item>
      <title>Re: BUG in LPCOpen lpc18xx_43xx_emac.c</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/BUG-in-LPCOpen-lpc18xx-43xx-emac-c/m-p/578114#M19761</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by NXP_Support on Mon Jul 13 09:49:00 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks for the post, Marshall!&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;We recorded the issue for fixing in the next LPCOpen release.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Best regards,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;-NXP Support&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 19:01:14 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/BUG-in-LPCOpen-lpc18xx-43xx-emac-c/m-p/578114#M19761</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T19:01:14Z</dc:date>
    </item>
  </channel>
</rss>

