IP Library Granted Patent US 8,745,304
Granted Patent B2
US 8,745,304 · App. 12/787,730 · Granted Jun 3, 2014

USB to SD bridge

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,745,304
App. No.
12/787,730
Granted
Jun 3, 2014
Kind
B2
Abstract

A USB-to-SDIO bridge (UTSB) to efficiently transmit SD/SDIO commands in USB packets. The UTSB may allow the majority of the device drivers for a given SD/SDIO device to remain intact, requiring changes only in the lowest hardware adaptation layer to put a USB wrapper around native SD commands. These commands may be sent over USB-to-SD card reader devices that may include various embodiments of a UTSB, where they may be unwrapped and transmitted to the SD port as if the port were native to the host controller. Additionally, the SD/SDIO commands may be packaged into groups of commands, or transactions, to optimize performance. The host driver may instruct the UTSB bridge device to repeatedly read data from the SDIO device until a communications FIFO on the device is empty (corresponding to a termination condition), and return the collected data to the host.

Claims (94)

1. A non-transitory computer accessible memory medium storing program instructions, wherein the program instructions are executable to:

perform enumeration with a Secure Digital (SD) system, wherein the SD system is configured as to receive SD commands over USB (universal serial bus);

generate one or more SD commands;

analyze the one or more SD commands to improve performance, wherein said analyzing comprises determining whether to fragment a first SD command of the one or more commands into a first plurality of SD commands;

modify the one or more SD commands based on said analyzing, thereby generating a plurality of modified SD commands, wherein said modifying the one or more SD commands comprises generating the first plurality of SD commands from the first SD command, wherein the plurality of modified SD commands comprises the first plurality of SD commands;

wrap the plurality of modified SD commands into a corresponding plurality of USB packets; and

transmit the plurality of USB packets to the SD system, wherein the SD system is configured to extract the plurality of modified SD commands from the plurality of USB packets.

2. The memory medium of claim 1 , wherein said modifying further comprises one or more of:

reordering the SD commands;

aggregating at least two of the SD commands to a single SD command; or

eliminating at least one SD command.

3. The memory medium of claim 1 , wherein the one or more SD commands comprises a supervisory command, wherein the SD system comprises a communication Secure Digital Input Output (SDIO) device, wherein the supervisory command instructs the communication SDIO device to read data until a termination condition is reached.

4. The memory medium of claim 1 , wherein the one or more SD commands comprises a supervisory command, wherein the supervisory command specifies a task which requires a plurality of SD commands.

5. The memory medium of claim 1 , wherein the memory medium stores an operating system that includes a custom host controller driver, wherein the custom host controller driver is configured to perform said wrapping.

6. The memory medium of claim 1 , wherein the memory medium stores a USB driver stack, wherein the USB driver stack comprises an SD over USB class driver, wherein the one or more USB packets conform to the SD over USB class driver.

7. A method, comprising:

a host device performing enumeration with a device, wherein the device is configured to receive Secure Digital (SD) commands over USB (universal serial bus);

the host device generating one or more SD commands;

the host device analyzing the one or more SD commands to improve performance, wherein said analyzing comprises determining whether to fragment a first SD command of the one or more commands into a first plurality of SD commands;

the host device modifying the one or more SD commands based on said analyzing, thereby generating a plurality of modified SD commands, wherein said modifying the one or more SD commands comprises generating the first plurality of SD commands from the first SD command, wherein the plurality of modified SD commands comprises the first plurality of SD commands;

the host device wrapping the plurality of modified SD commands into a corresponding plurality of USB packets;

the host device transmitting the plurality of USB packets to the device, wherein the device is configured to extract the one or more SD commands from the one or more USB packets.

8. The method of claim 7 , wherein said modifying comprises one or more of:

reordering the SD commands;

aggregating at least two of the SD commands to a single SD command; or

eliminating at least one SD command.

9. The method of claim 7 , wherein the one or more SD commands comprises a supervisory command, wherein the SD system comprises a communication Secure Digital Input Output (SDIO) device, wherein the supervisory command instructs the communication SDIO device to read data until a termination condition is reached.

10. The method of claim 7 , wherein the one or more SD commands comprises a supervisory command, wherein the supervisory command specifies a task which requires a plurality of SD commands.

11. A system comprising:

a USB (universal serial bus) port;

a processor configured to run an operating system comprising a USB driver stack loaded with an SD over USB (Secure Digital over USB) device class; and

a memory medium coupled to the processor and configured to store programming instructions executable by the processor to:

generate SD (Secure Digital) commands;

analyze the one or more SD commands to improve performance, wherein said analyzing comprises determining whether to fragment a first SD command of the one or more commands into a first plurality of SD commands;

modify the one or more SD commands based on said analyzing to improve performance, thereby generating a plurality of modified SD commands, wherein said modifying the one or more SD commands comprises generating the first plurality of SD commands from the first SD command, wherein the plurality of modified SD commands comprises the first plurality of SD commands; and

wrap the plurality of modified SD commands into USB packets that can be transmitted over USB, wherein the USB packets conform to the SD over USB device class;

wherein the USB driver stack is configured to communicate with a device connected to the USB port, wherein the device is configured to extract and process the plurality of modified SD commands from the USB packets.

12. A method, comprising:

a device performing enumeration with a Secure Digital (SD) system, wherein the SD system is configured as to receive SD commands over USB (universal serial bus);

the device receiving one or more USB packets which comprise one or more SD commands;

the device extracting the one or more SD commands from the one or more USB packets, wherein the SD commands are configured for performing an SD action;

the device analyzing the one or more SD commands to improve performance, wherein said analyzing comprises determining whether to fragment a first SD command of the one or more commands into a first plurality of SD commands;

the device modifying the one or more SD commands based on said analyzing, thereby generating a plurality of modified SD commands, wherein said modifying the one or more SD commands comprises generating the first plurality of SD commands from the first SD command, wherein the plurality of modified SD commands comprises the first plurality of SD commands;

the device wrapping the plurality of modified SD commands into a corresponding plurality of USB packets; and

the device transmitting the plurality of USB packets to the SD system, wherein the SD system is configured to extract the plurality of modified SD commands from the plurality of USB packets.

13. The method of claim 12 , wherein said modifying comprises:

reordering the SD commands;

aggregating at least two of the SD commands to a single SD command; or

eliminating at least one SD command.

14. A non-transitory computer accessible memory medium storing program instructions, wherein the program instructions are executable to:

perform enumeration with a Secure Digital (SD) system, wherein the SD system is configured as to receive SD commands over USB (universal serial bus);

generate a plurality of SD commands;

analyze the plurality of SD commands to improve performance, wherein said analyzing comprises determining whether to reorder the plurality of SD commands;

modify the plurality of SD commands based on said analyzing, thereby generating a plurality of modified SD commands, wherein said modifying the plurality of SD commands comprises reordering the plurality of SD commands;

wrap the plurality of modified SD commands into a corresponding plurality of USB packets; and

transmit the plurality of USB packets to the SD system, wherein the SD system is configured to extract the plurality of modified SD commands from the plurality of USB packets.

15. A method, comprising:

a device performing enumeration with a Secure Digital (SD) system, wherein the SD system is configured as to receive SD commands over USB (universal serial bus);

the device receiving one or more USB packets which comprise a plurality of SD commands;

the device extracting the plurality of SD commands from the one or more USB packets, wherein the SD commands are configured for performing an SD action;

the device analyzing the one or more SD commands to improve performance, wherein said analyzing comprises determining whether to reorder the plurality of SD commands;

the device modifying the one or more SD commands based on said analyzing, thereby generating a plurality of modified SD commands, wherein said modifying the plurality of SD commands comprises reordering the plurality of SD commands;

the device wrapping the plurality of modified SD commands into a corresponding plurality of USB packets; and

the device transmitting the plurality of USB packets to the SD system, wherein the SD system is configured to extract the plurality of modified SD commands from the plurality of USB packets.

16. A non-transitory computer accessible memory medium storing program instructions, wherein the program instructions are executable to:

perform enumeration with a Secure Digital (SD) system, wherein the SD system is configured as to receive SD commands over USB (universal serial bus);

generate a plurality of SD commands;

analyze the plurality of SD commands to improve performance, wherein said analyzing comprises determining whether to aggregate at least two of the plurality of SD commands;

modify the plurality of SD commands based on said analyzing, thereby generating one or more modified SD commands, wherein said modifying the plurality of SD commands comprises aggregating the at least two of the plurality of SD commands;

wrap the one or more modified SD commands into a corresponding one or more USB packets; and

transmit the one or more of USB packets to the SD system, wherein the SD system is configured to extract the one or more modified SD commands from the one or more USB packets.

17. A method, comprising:

a device performing enumeration with a Secure Digital (SD) system, wherein the SD system is configured as to receive SD commands over USB (universal serial bus);

the device receiving one or more USB packets which comprise a plurality of SD commands;

the device extracting the plurality of SD commands from the one or more USB packets, wherein the SD commands are configured for performing an SD action;

the device analyzing the one or more SD commands to improve performance, wherein said analyzing comprises determining whether to aggregate at least two of the plurality of SD commands;

the device modifying the one or more SD commands based on said analyzing, thereby generating one or more modified SD commands, wherein said modifying the one or more SD commands comprises aggregating the at least two of the plurality of SD commands

the device wrapping the plurality of modified SD commands into a corresponding plurality of USB packets; and

the device transmitting the plurality of USB packets to the SD system, wherein the SD system is configured to extract the plurality of modified SD commands from the plurality of USB packets.

18. A non-transitory computer accessible memory medium storing program instructions, wherein the program instructions are executable to:

perform enumeration with a Secure Digital (SD) system, wherein the SD system is configured as to receive SD commands over USB (universal serial bus);

generate a plurality of SD commands;

analyze the plurality of SD commands to improve performance, wherein said analyzing comprises determining whether to eliminate a first SD command of the plurality of SD commands;

eliminate the first SD command from the plurality of SD commands to generate a first one or more commands, wherein said eliminating is based on said analyzing;

wrap the first one or more SD commands into a corresponding one or more USB packets; and

transmit the one or more of USB packets to the SD system, wherein the SD system is configured to extract the first one or more SD commands from the one or more USB packets.

19. A method, comprising:

a device performing enumeration with a Secure Digital (SD) system, wherein the SD system is configured as to receive SD commands over USB (universal serial bus);

the device receiving one or more USB packets which comprise a plurality of SD commands;

the device extracting the plurality of SD commands from the one or more USB packets, wherein the SD commands are configured for performing an SD action;

the device analyzing the one or more SD commands to improve performance, wherein said analyzing comprises determining whether to eliminate a first SD command from the plurality of SD commands;

the device eliminating the first SD command based on said analyzing;

the device wrapping the remaining of the plurality of modified SD commands into a corresponding plurality of USB packets; and

the device transmitting the remaining of the plurality of USB packets to the SD system, wherein the SD system is configured to extract the plurality of modified SD commands from the plurality of USB packets.

Assignments (10)
RELEASE OF SECURITY INTEREST Recorded Mar 14, 2022
From: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
To: MICROCHIP TECHNOLOGY INCORPORATED; SILICON STORAGE TECHNOLOGY, INC.; ATMEL CORPORATION; MICROSEMI CORPORATION; MICROSEMI STORAGE SOLUTIONS, INC.
Reel/Frame 060894/0437 →
RELEASE OF SECURITY INTEREST Recorded Mar 11, 2022
From: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
To: MICROCHIP TECHNOLOGY INCORPORATED; SILICON STORAGE TECHNOLOGY, INC.; ATMEL CORPORATION; MICROSEMI CORPORATION; MICROSEMI STORAGE SOLUTIONS, INC.
Reel/Frame 059363/0001 →
RELEASE OF SECURITY INTEREST Recorded Mar 10, 2022
From: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
To: MICROCHIP TECHNOLOGY INCORPORATED; SILICON STORAGE TECHNOLOGY, INC.; ATMEL CORPORATION; MICROSEMI CORPORATION; MICROSEMI STORAGE SOLUTIONS, INC.
Reel/Frame 059863/0400 →
SECURITY INTEREST Recorded Jun 4, 2021
From: MICROCHIP TECHNOLOGY INCORPORATED; SILICON STORAGE TECHNOLOGY, INC.; ATMEL CORPORATION; MICROSEMI CORPORATION; MICROSEMI STORAGE SOLUTIONS, INC.
To: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 057935/0474 →
SECURITY INTEREST Recorded Dec 24, 2020
From: MICROCHIP TECHNOLOGY INCORPORATED; SILICON STORAGE TECHNOLOGY, INC.; ATMEL CORPORATION; MICROSEMI CORPORATION; MICROSEMI STORAGE SOLUTIONS, INC.
To: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 055671/0612 →
SECURITY INTEREST Recorded Jun 5, 2020
From: MICROCHIP TECHNOLOGY INC.; SILICON STORAGE TECHNOLOGY, INC.; ATMEL CORPORATION; MICROSEMI CORPORATION; MICROSEMI STORAGE SOLUTIONS, INC.
To: WELLS FARGO BANK, NATIONAL ASSOCIATION
Reel/Frame 053468/0705 →
RELEASE OF SECURITY INTEREST Recorded May 30, 2020
From: JPMORGAN CHASE BANK, N.A, AS ADMINISTRATIVE AGENT
To: MICROCHIP TECHNOLOGY INC.; SILICON STORAGE TECHNOLOGY, INC.; ATMEL CORPORATION; MICROSEMI CORPORATION; MICROSEMI STORAGE SOLUTIONS, INC.
Reel/Frame 053466/0011 →
SECURITY INTEREST Recorded Apr 24, 2020
From: MICROCHIP TECHNOLOGY INC.; SILICON STORAGE TECHNOLOGY, INC.; ATMEL CORPORATION; MICROSEMI CORPORATION; MICROSEMI STORAGE SOLUTIONS, INC.
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 053311/0305 →
MERGER Recorded Dec 12, 2017
From: STANDARD MICROSYSTEMS CORPORATION
To: MICROCHIP TECHNOLOGY INCORPORATED
Reel/Frame 044840/0747 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 26, 2010
From: ANDERSSON, JONATHAN; MUYSHONDT, JORGE ENRIQUE
To: STANDARD MICROSYSTEMS CORPORATION
Reel/Frame 024443/0509 →