element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • About Us
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Avnet Boards Forums
  • Products
  • Dev Tools
  • Avnet Boards Community
  • Avnet Boards Forums
  • More
  • Cancel
Avnet Boards Forums
Software Application Development Bare-metal Ethernet driver
  • Forum
  • Documents
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Avnet Boards Forums to participate - click to join for free!
Actions
  • Share
  • More
  • Cancel
Forum Thread Details
  • State Not Answered
  • Replies 5 replies
  • Subscribers 328 subscribers
  • Views 1025 views
  • Users 0 members are here
Related

Bare-metal Ethernet driver

Former Member
Former Member over 12 years ago

Here's the deal.

I'm using Xilinx's beloved XEmacPs driver to configure the PHY and MAC on my board, then I try to transmit frames in a closed network. I'm using Wireshark to view network activity.

The problem I'm running into is that the internal Tx Buffer Descriptor queue does not seem to increment. I write the base address of the BDs to the gem.tx_qbar register, and I was under the impression that the DMA controller would automatically move to the next descriptor when it was done with the current one (until it reached the BD with the wrap bit set).

I prepare the packet and its associated BD(s), and then set the gem.net_ctrl[start_tx] bit to begin transmission. Wireshark shows several duplicate packets being sent out at once, within about 5 microseconds of each other. Then the Error ISR is called and reports that transmit buffers are not available because it has reached a BD with the used bit set.

The only thing I can think of is that it's not incrementing the TxBD queue pointer. So here's where I need help:

1. Is it software's responsibility to update the gem.tx_qbar register, and constantly write the base address of the TxBD(s) being used?

2. How do I prevent duplicate packets from being sent out in succession? I only need to send 1!

I've read the Technical Reference Manual backwards and forwards several times, and I can't see where I'm going wrong.

Thanks,
Zack

  • Sign in to reply
  • Cancel
Parents
  • Former Member
    0 Former Member over 10 years ago

    I am seeing the same problem.

    I have an almost-trivial bare metal program (no Xilinx code in it) that tries to issue a single packet. Wireshark on the receiver sees the packet appearing three times each and every run.

    After a year it seems that nobody has offered a response.
    Can someone from Xilinx comment about this?

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
Reply
  • Former Member
    0 Former Member over 10 years ago

    I am seeing the same problem.

    I have an almost-trivial bare metal program (no Xilinx code in it) that tries to issue a single packet. Wireshark on the receiver sees the packet appearing three times each and every run.

    After a year it seems that nobody has offered a response.
    Can someone from Xilinx comment about this?

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
Children
No Data
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube