NuttX + LiteEth: Potential regression when using Hybrid Etherbone/Ethernet.
enjoy-digital opened this issue · comments
Reported by @AndrewD, to look at this:
- Run NuttX with LiteEth on a board with
add_ethernet
. - Run NuttX with LiteEth on a board with
add_etherbone + hybrid mode
. - If issue with the latter, fix.
Note that it's possible the issue with NuttX can also be reproduced with Linux if easier to test.
This is the way we integrated Hybrid Etherbone/Ethernet for testing on Arty:
# Ethernet and/or Etherbone ---------------------------------------------------------------------
if ethernet or etherbone:
self.ethphy = LiteEthPHYMII(
clock_pads = self.platform.request("eth_clocks"),
pads = self.platform.request("eth"))
# Etherbone with optional Ethernet
if etherbone:
self.add_etherbone(
phy=self.ethphy,
ip_address=etherbone_ip,
with_ethmac=ethernet,
)
# Ethernet only
elif ethernet:
self.add_ethernet(phy=self.ethphy)
Thanks @AndrewD, @trabucayre has been able to reproduce the issue (even with LiteX netboot). This is related to the integration improvements. We just need to do a few iterations to find the root cause and we'll fix it.
Excellent, I'll integrate this tomorrow.
I'd experimented with a separate mac address without success, however the clocking fix looks like the missing piece.
Hi @AndrewD,
we are going to add parameters to specify the different IP/MAC addresses and also add some check to ensure there are no collisions between Etherbone and Ethernet. @trabucayre will do the changes this morning and provide an update.
Hi,
See this PR.
With these modifications is possible to pass all configurations (etherbone IP/MAC + ethernet local/remote IP and MAC).
Thanks @trabucayre and @enjoy-digital, I've confirmed this is now working nicely with bios and nuttx.
Good, thanks @AndrewD for the feedback.