IP Library Granted Patent US 10,409,507
Granted Patent B1
US 10,409,507 · App. 15/797,489 · Granted Sep 10, 2019

Methods and apparatus for implementing virtual dynamic library loading in embedded systems

Inventors: Zhengqiang Huang (Dublin, CA); Shuangqing Yuan (Fremont, CA); Tao Song (Shanghai, CN); James Jan (San Jose, CA); Xinyu Zang (Palo Alto, CA); Yun-Chang Chang (Hsinchu, TW); Albert Xi Cheng (San Jose, CA)
Assignee: Marvell International Ltd.
G06F3/0626G06F3/0607G06F3/0631G06F3/0655G06F3/0679G06F9/44521G06F12/10G06F13/4282G06F2212/65G06F2213/0026
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 10,409,507
App. No.
15/797,489
Filed
Oct 30, 2017
Granted
Sep 10, 2019
Kind
B1
Art Unit
2181
USPC
710/313
Abstract

The present disclosure describes methods and apparatuses for implementing virtual dynamic library loading in embedded systems. In some aspects, a determination is made that a feature is not available in firmware executed from a first memory. Based on information associated with the feature, a portion of a second memory is allocated for code of the feature. In some cases, the portion of the second memory is allocated from a data buffer or part of a shared memory. The code of the feature is loaded to the allocated portion of the second memory and address aliasing logic is configured enable execution of the feature from the second memory. By allocating and executing firmware features from the second memory, a size of the firmware executed from the first memory can be reduced to conserve memory space and other firmware features may be dynamically loaded and executed from the second memory.

Claims (73)

1. A method comprising:

determining that a feature is not available in firmware executed by a processor from a first memory, the first memory being a first memory of a system-on-chip;

accessing, via the firmware, information associated with the feature;

allocating, based on the information, a portion of a second memory for code of the feature, the second memory being a second memory of the system-on-chip;

loading, from a third memory, the code of the feature to the allocated portion of the second memory;

configuring, via the firmware, address aliasing logic to enable execution of the code of the feature from the second memory; and

executing, via the processor, the code of the feature from the second memory to implement the feature.

2. The method as recited in claim 1 , further comprising loading the firmware to the first memory from the third memory prior to execution of the firmware.

3. The method as recited in claim 1 , wherein configuring address aliasing logic comprises configuring registers of the address aliasing logic with virtual address information associated with the allocated portion of the second memory.

4. The method as recited in claim 1 , wherein allocating the portion of the second memory comprises allocating at least part of a communication data buffer implemented in the second memory for the code of the feature.

5. The method as recited in claim 1 , further comprising releasing, prior to allocating the portion of the second memory, at least part of the portion of the second memory from other code of another feature.

6. The method as recited in claim 1 , wherein the third memory is a memory of a host device and the loading of the code comprises:

transmitting, via a host interface and based on the information, a request to the host device for the code of the feature;

receiving, from the host device via the host interface, the code of the feature; and

storing the code of the feature to the allocated portion of the second memory.

7. The method as recited in claim 1 , wherein loading the code of the feature loads a first block of code of the feature and the method further comprises:

verifying the first block of code based on a cyclic redundancy check value; and

responsive to successful verification of the first block of code, loading a second block of code of the feature or releasing the first block of code for execution by the processor.

8. A system-on-chip comprising:

a medium access control (MAC) unit of a communication interface;

a host interface;

a processor;

a first memory coupled to the processor;

a second memory coupled between the MAC unit and address logic;

an interconnect bus coupled between the processor, the address logic, and the host interface; and

a virtual dynamic library loading (VDLL) manager configured to:

determine when a feature is not available in firmware executed from the first memory by the processor;

access, in the first memory, information associated with the feature;

allocate, based on the information, a portion of the second memory for code of the feature;

load, from the host interface, the code of the feature to the allocated portion of the second memory;

configure the address logic to enable execution of the code of the feature from the second memory; and

cause the processor to execute the code of the feature from the second memory to implement the feature.

9. The system-on-chip as recited in claim 8 , further comprising a third memory that is configured as a cache memory and coupled between the processor and the interconnect bus.

10. The system-on-chip as recited in claim 8 , wherein

the address logic comprises address alias logic that includes address translation registers; and

the VDLL manager is further configured to program address translation registers of the address alias logic effective to enable the processor to execute, from the second memory, the code of the feature through virtual addressing.

11. The system-on-chip as recited in claim 8 , wherein:

the second memory includes a data buffer associated with the MAC unit; and

the VDLL manager is further configured to allocate the portion of the second memory from at least part of the data buffer associated with the MAC unit.

12. The system-on-chip as recited in claim 8 , wherein:

the first memory is configured as a volatile instruction memory that is coupled directly with the processor; and

the second memory is configured as a volatile shared memory that is coupled between the address logic and the MAC unit.

13. The system-on-chip as recited in claim 8 , wherein:

the system-on-chip does not include a memory management unit coupled with the processor;

the firmware executed by the processor comprises a real-time operating system; and

the processor is not capable of implementing memory paging or virtual memory addressing.

14. The system-on-chip as recited in claim 8 , wherein the host interface comprises a universal serial bus interface, a peripheral component interconnect express interface, or a secure digital input output interface.

15. The system-on-chip as recited in claim 8 , wherein the interconnect bus that couples the processor, the host interface, and the address logic is implemented in accordance with an advanced microcontroller bus architecture specification.

16. The system-on-chip as recited in claim 8 , wherein the system-on-chip is embodied in whole or part as a network interface controller, a wireless network interface controller, a wired network interface controller, a network-enabled storage controller, a network-enabled print controller, or a network-enabled media device.

17. An apparatus comprising:

a non-volatile memory storing firmware;

a network interface controller comprising:

a media access control (MAC) unit;

a host interface;

a processor;

a first memory coupled to the processor;

a second memory coupled between the MAC unit and address logic;

an interconnect bus coupled between the processor, the address logic, and the host interface; and

a virtual dynamic library loading (VDLL) manager configured to:

determine when a feature is not available in firmware executed from the first memory by the processor;

access, in the first memory, information associated with the feature;

allocate, based on the information, a portion of the second memory for code of the feature;

load, via the host interface and from the non-volatile memory of the apparatus, the code of the feature to the allocated portion of the second memory; and

configure the address logic to enable execution, by the processor, of the code of the feature from the second memory to implement the feature.

18. The apparatus as recited in claim 17 , wherein:

the firmware stored on the non-volatile memory of the apparatus is a firmware image;

the code of the feature is stored as blocks of code in the firmware image; and

to load the cod of the feature the VDLL manager is further configured to:

request, based on the information and via the host interface, a driver executing on the apparatus for one or more block of code associated with the feature;

receive, via the host interface, the one or more block of code associated with the feature; and

store, to the allocated portion of the second memory, the one or more block of code associated with the feature.

19. The apparatus as recited in claim 18 , wherein the firmware executed from the first memory by the processor is a core firmware loaded from the non-volatile memory of the apparatus.

20. The apparatus as recited in claim 17 , wherein the apparatus is configured as a multimedia plug device, a gaming device, a set-top box, a network-attached-storage device, a wireless router, a wireless printer, or a vehicle-based computing system.

Assignments (8)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 16, 2020
From: CAVIUM INTERNATIONAL
To: MARVELL ASIA PTE, LTD.
Reel/Frame 053475/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 20, 2020
From: MARVELL INTERNATIONAL LTD.
To: CAVIUM INTERNATIONAL
Reel/Frame 052918/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 13, 2018
From: MARVELL TECHNOLOGY (SHANGHAI) LTD.
To: MARVELL INTERNATIONAL LTD.
Reel/Frame 045186/0694 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 13, 2018
From: MARVELL TAIWAN LTD.
To: MARVELL INTERNATIONAL LTD.
Reel/Frame 045186/0747 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 13, 2018
From: CHANG, YUN-CHANG
To: MARVELL TAIWAN LTD.
Reel/Frame 045186/0212 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 13, 2018
From: SONG, TAO
To: MARVELL TECHNOLOGY (SHANGHAI) LTD.
Reel/Frame 045573/0296 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 13, 2018
From: HUANG, ZHENGQIANG; YUAN, SHUANGQING; JAN, JAMES; ZANG, XINYU; CHENG, ALBERT XI
To: MARVELL SEMICONDUCTOR, INC.
Reel/Frame 045573/0266 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 13, 2018
From: MARVELL SEMICONDUCTOR, INC.
To: MARVELL INTERNATIONAL LTD.
Reel/Frame 045186/0634 →
Continuity (1)
Provisional Application 62415200 · Oct 31, 2016
Cited By (3)
US 12,210,880 US 12,223,364 US 12,737,196