Lightweight Boot Protocol Stack for USB Software Upgrades
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing electronic devices, such as modems, face limitations in software upgrades during booting operations due to the large size of complete protocol stack codes, which are not suitable for flash memory, and the risk of device inoperability during software downloads to flash memory.
Innovation Solution
Implementing a lightweight protocol stack code for the boot code that includes a subset of the complete protocol stack, allowing software upgrades during booting via interfaces like USB and Ethernet, with specific support for BOOTP, UDP, and IP protocols, and using endpoints for controlled data transmission.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Adaptability or versatility
If a complete protocol stack code is used in the boot code, then the device can perform all operations during booting, but the flash memory size becomes too large
Solution Approach 1:
The protocol stack is segmented into two parts: a lightweight protocol stack in the boot code for basic booting operations, and a complete protocol stack in the operational software for full functionality. This segmentation allows the boot code to be small while still providing necessary booting capabilities, and the complete protocol stack is loaded only when needed during normal operation.
Solution Approach 2:
The essential protocol handling code is extracted from the complete protocol stack and placed in the boot code, while the remaining extensive protocol code is kept in the operational software. This extraction ensures that the boot code contains only the minimum necessary code to perform booting operations, significantly reducing flash memory requirements.
2Adaptability or versatility
If software is downloaded to flash memory during operational mode, then software upgrades can be performed, but the device may become inoperable if a failure occurs
Solution Approach 1:
The boot code is designed to perform preliminary actions by downloading software to the SDRAM (volatile memory) first during the booting operation, before attempting to write to the flash memory. This preliminary action allows the device to have a functional software image in volatile memory even if the flash memory write fails, preventing the device from becoming inoperable.
Solution Approach 2:
The system prepares a backup software image in the SDRAM during booting, which acts as a cushion against potential flash memory write failures. If the flash memory write fails, the device can fall back to the software image in volatile memory, ensuring continuous operation and preventing complete device failure.
3Adaptability or versatility
If a USB interface with complete protocol stack is used during booting, then software upgrades are possible, but the protocol stack size is too large for flash memory
Solution Approach 1:
The USB protocol stack is segmented into a lightweight version for booting operations and a complete version for normal operation. The lightweight protocol stack in the boot code includes only the essential code for USB communication during booting, while the complete protocol stack is available in the operational software, allowing full upgrade capabilities when needed.
Solution Approach 2:
The system dynamically loads the complete protocol stack into memory during normal operation, rather than having it permanently resident in flash memory. This dynamic approach allows the device to use a small lightweight protocol stack during booting and then load the complete protocol stack only when software upgrades are needed, optimizing memory usage at all times.
Data Source
AI summary
The present invention is related to an electronics device, such as a modem, having an interface operable with a complete protocol stack code in normal operation, and comprising a non-volatile memory, such as a flash memory containing a code for booting said device. The device is characterized in that software of said device is upgradable during a booting operation of said device via said interface, wherein said boot code comprises a lightweight protocol stack code for said interface, said lightweight protocol stack comprising a subset of the layers of the complete protocol stack.


