Failed to discover IP over DHCP when application run over External RAM

Hi ,

We have a requirement in our Gateway product which uses the NUC472.

The flash is loaded with two binaries i.e. bootloader at 0 location and application at 0x10000 location.
The bootloader boots up and initializes the hardware peripherals such as Clock, External SRAM via EBI etc.
Following the initialization, the Bootloader jumps to the application binary location in the flash.
The application code boots up completely on the external 512K SRAM (0x60000000).

Now, the application uses BSP along with FreeRTOS 8.2.1 and LWIP 1.4.1 implementations present as third party code with
the OpenNuvoton NUC472_442 BSP v03.00.00 GIT Repository.

We are using Ethernet for external connectivity for which we require to run DHClient. However, upon running
the DHClient, we are not able to obtain IP address from our gateway. Upon further investigation in LWIP/EMAC Driver
implementations, we found that the First DHCP Discover request returns success from the LWIP stack but has not
yet been transmitted by the EMAC.

This results into Tx Buffer not being available for consequent Tx triggers. Digging for information on similar cases on
various forums gave us a scenario in which DHCP was not working with External RAM as DMA engine is unable to
access non-contiguous RAM locations. We tried looking for such information in the Technical Reference Manual v1.05
but were not able to get some conclusive insight.

One noteworthy observation we made was that the Ethernet communication is working fine with static IP. Also DHCP
works when we loaded a demo application onto the internal 64k RAM. However, same application fails to get IP when
booted on external RAM.

Could you please consider this scenario with some urgency and provide help or insight into it? This is becoming critical for our road map.