enjoy-digital / litex

Build your hardware, easily!

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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.

Hi @AndrewD . I have fixed a small issue in add_etherbone method (13c57e8).
But you have to provides a mac_address parameter different than default value to avoid conflict with ethernet part.

Tested on arty with nuttx (master branch).

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.