element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • 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 & Tria Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • About Us
    About the element14 Community
  • 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
      •  Japan
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      •  Vietnam
      • 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
Raspberry Pi
  • Products
  • More
Raspberry Pi
Raspberry Pi Forum avoiding usb
  • Blog
  • Forum
  • Documents
  • Quiz
  • Events
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Raspberry Pi to participate - click to join for free!
Featured Articles
Announcing Pi
Technical Specifications
Raspberry Pi FAQs
Win a Pi
Raspberry Pi Wishlist
Actions
  • Share
  • More
  • Cancel
Forum Thread Details
  • Replies 21 replies
  • Subscribers 708 subscribers
  • Views 4099 views
  • Users 0 members are here
  • raspberry_pi
Related

avoiding usb

e14 Contributor
e14 Contributor over 14 years ago

The usb has been measured by Dom as taking about 20% of the cpu

to service interrupts, which come at 8000 per second, even when the usb

is idle.    USB can be suspended by doing:

 

   echo 1 > /sys/devices/platform/bcm2708_usb/bussuspend

 

http://www.raspberrypi.org/phpBB3/viewtopic.php?f=28&t=7866

 

However, that prevents use of the USB keyboard.  So there is some

interest in perhaps connecting a keyboard using GPIO instead.

 

Section 2.2 of the Broadcom datasheet says:

http://www.element14.com/community/docs/DOC-43016/l/broadcom-datasheet-for-bcm2835-soc-used-in-raspberry-pi

 

"The mini UART is a secondary low throughput UART intended to be used as a console."

Anyone know how difficult it would be to rig this up?

  • Sign in to reply
  • Cancel
Parents
  • morgaine
    morgaine over 14 years ago

    This might well be the worst problem with the Pi.  This Broadcom SoC just wasn't made for networking.

     

    It contrasts rather badly with the TI SoC on the BeagleBone which provides both Ethernet MAC and two USB ports on the chip directly.

     

    I wonder if Broadcom has a better device in this range that might be used for a future version of Pi.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • YT2095
    YT2095 over 14 years ago in reply to morgaine

    well yes, it is somwhat less than ideal, but that`s what there is to work with.

    know any work-arounds?

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • morgaine
    morgaine over 14 years ago in reply to YT2095

    YT2095 . wrote:

     

    know any work-arounds?

     

    Use a Model A (once available) in combination with the Ethernet-over-USB gadget driver.  The on-chip USB controller will then handle the network traffic in the usual interrupt-driven way (an assumption, but reasonable I think), and a downstream class-compliant USB hub will also be handled by the normal interrupt-driven USB driver.

     

    It's only a partial solution since it requires something else to provide the actual Ethernet hardware, but at least it avoids the polling.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • YT2095
    YT2095 over 14 years ago in reply to morgaine

    Interesting that you should mention polling, Esp since the Pi is open source (for the S/ware at least), it should be perfectly possible to Lower this 8KHz polling rate to something more reasonable surely?

    or perhaps make it at least Semi-inteligent whereby it`s scanned at a rate suitable for that which is in use.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • morgaine
    morgaine over 14 years ago in reply to YT2095

    I guess you could poll less frequently for keyboard and mouse traffic since their data rate is somewhat low, but remember that the average response latency is half the polling interval, so it would become progressively worse as you decreased the polling rate.  And for Ethernet, that sounds extremely unlikely as a viable solution at all, since you could end up losing data in buffer overruns between polls.

     

    Basically, "polling == bad", period. image

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • e14 Contributor
    e14 Contributor over 14 years ago in reply to YT2095

    My understanding, which might be wrong, is that the 20% CPU overhead from the 8k interrupts/sec is from the USB driver on the on-chip SoC USB port. So it would be just the same in the Model A.  It has been suggested that it might be possible to make a much more efficient USB driver, reducing the interrupt service routine overhead by up to 90%, but even though the code is open-source, not clear if there's enough good documentation to really do this (?)

     

    The 8 kHz interrupt rate is actually mandated by the specific USB hardware they used in the SoC. 8 kHz is apparently the high-speed USB2 "micro-frame" rate, and any lower rate would not work correctly (at least with high-speed USB devices). You can think of it in analogy to a "winmodem" which offloads some of the processing to the CPU, to save complexity/cost in hardware.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • morgaine
    morgaine over 14 years ago in reply to e14 Contributor

    jbeale wrote:

     

    My understanding, which might be wrong, is that the 20% CPU overhead from the 8k interrupts/sec is from the USB driver on the on-chip SoC USB port.

    It's a timer-driven poll of the external device, apparently.  On a Model A, it wouldn't need to poll anything, since the USB driver would just sit there quiescent and only become active when USB data arrives and the SoC's USB controller then generates an interrupt to process it.  Ie. event-driven, just like everything else in the standard *nix model.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
Reply
  • morgaine
    morgaine over 14 years ago in reply to e14 Contributor

    jbeale wrote:

     

    My understanding, which might be wrong, is that the 20% CPU overhead from the 8k interrupts/sec is from the USB driver on the on-chip SoC USB port.

    It's a timer-driven poll of the external device, apparently.  On a Model A, it wouldn't need to poll anything, since the USB driver would just sit there quiescent and only become active when USB data arrives and the SoC's USB controller then generates an interrupt to process it.  Ie. event-driven, just like everything else in the standard *nix model.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • 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 © 2026 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.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube