US10452375B1ActiveUtility

Memory-efficient upgrade staging

90
Assignee: MICROSOFT TECHNOLOGY LICENSING LLCPriority: Jun 21, 2018Filed: Jun 21, 2018Granted: Oct 22, 2019
Est. expiryJun 21, 2038(~11.9 yrs left)· nominal 20-yr term from priority
G06F 8/658G06F 8/65H04L 67/34H04L 63/20H04L 67/12G06F 9/4401G06F 21/53G06F 21/577G06F 8/61
90
PatentIndex Score
10
Cited by
1
References
20
Claims

Abstract

The disclosed technology is generally directed to embedded device updates. In one example of the technology, staging is performed for at least two priority groups, completing staging of each higher priority group before staging a lower priority group, including, for each priority group, the following actions. A list of install targets is generated for the priority group based on a list of software for installation in a memory and software present in the memory. A list of purge targets is generated for the priority group based on the list of software for installation in the memory and the software present in the memory. The install targets are downloaded to a backup partition of the memory. Updating of the software in the memory is caused based on the install targets. The purge targets are deleted from the memory. The install targets are deleted from the back-up partition.

Claims

exact text as granted — not AI-modified
We claim: 
     
       1. An apparatus, comprising:
 a device including at least one memory adapted to store run-time data for the device, and at least one processor that is adapted to execute processor-executable code that, in response to execution, enables the device to perform actions, including:
 performing staging for a first priority group, including, in priority order:
 generating a list of install targets for the first priority group based on a list of software for installation in a memory and software present in the memory; and 
 generating a list of purge targets for the first priority group based on the list of software for installation in the memory and the software present in the memory; 
 downloading the install targets to a backup partition of the memory; 
 causing updating of the software in the memory based on the install targets; 
 deleting the purge targets from the memory; and 
 deleting the install targets from the back-up partition; and 
 
 after performing staging for the first priority group, performing staging for a second priority group, including, in priority order:
 generating a list of install targets for the second priority group based on the list of the software for installation in the memory and the software present in the memory; and 
 generating a list of purge targets for the second priority group based on the list of the software for installation in the memory and the software present in the memory; 
 downloading the install targets to a backup partition; 
 causing updating of the software in the memory based on the install targets; 
 deleting the purge targets from the memory; and 
 deleting the install targets from the back-up partition. 
 
 
 
     
     
       2. The apparatus of  claim 1 , the actions further including:
 after performing staging for the second priority group, performing staging for a third priority group, including, in priority order:
 generating a list of install targets for the third priority group based on the list of the software for installation in the memory and the software present in the memory; and 
 generating a list of purge targets for the third priority group based on the list of the software for installation in the memory and the software present in the memory; 
 downloading the install targets to a backup partition; 
 causing updating of the software in the memory based on the install targets; 
 deleting the purge targets from the memory; and 
 deleting the install targets from the back-up partition. 
 
 
     
     
       3. The apparatus of  claim 1 , wherein the first priority group and the second priority group are elements of a set of priority groups, wherein the set of priority groups include a secure key store. 
     
     
       4. The apparatus of  claim 1 , wherein the first priority group and the second priority group are elements of a set of priority groups, wherein the set of priority groups include a bootloader. 
     
     
       5. The apparatus of  claim 1 , wherein the memory is flash memory of an integrated circuit with multiple cores including at least one central processing unit and at least one microcontroller. 
     
     
       6. The apparatus of  claim 1 , wherein performing staging for the first priority group further includes:
 generating a list of rollback targets for the first priority group based on the list of the software for installation in the memory and the software present in the memory. 
 
     
     
       7. The apparatus of  claim 6 , the actions further including:
 rolling back to the last known good for the first priority group, including changing the rollback targets for the first priority group to install targets for the first priority group. 
 
     
     
       8. The apparatus of  claim 6 , wherein performing staging for the first priority group further includes:
 for software in the memory marked as temporary, marking no rollback targets for the temporary software and marking the temporary software as a purge target. 
 
     
     
       9. The apparatus of  claim 1 , wherein the first priority group and the second priority group are elements of a set of priority groups, wherein the set of priority groups include a set of partitions. 
     
     
       10. The apparatus of  claim 9 , wherein the set of partitions correspond to a set of independent execution environments configured to have a defense-in-depth hierarchy. 
     
     
       11. The apparatus of  claim 10 , wherein at least two independent execution environments in the set of independent execution environments are running on general purpose cores with differing capabilities from each other, and wherein the general purpose cores with differing capabilities from each other include at least a first microcontroller and a first central processing unit (CPU). 
     
     
       12. A method, comprising:
 staging for a first priority group via a first processor, including:
 providing a list of install targets for the first priority group based on a list of software for installation in a memory and software present in the memory; and 
 providing a list of purge targets for the first priority group based on the list of software for installation in the memory and the software present in the memory; 
 downloading the install targets to a backup partition of the memory; 
 deleting the purge targets from the memory; and 
 deleting the install targets from the back-up partition responsive to updating of the software in the memory based on the install targets; and 
 
 after staging for the first priority group, staging for a second priority group, including:
 providing a list of install targets for the second priority group based on the list of the software for installation in the memory and the software present in the memory; and 
 providing a list of purge targets for the second priority group based on the list of the software for installation in the memory and the software present in the memory; 
 downloading the install targets to a backup partition; 
 deleting the install targets from the back-up partition responsive to updating of the software in the memory based on the install targets; and 
 deleting the install targets from the back-up partition. 
 
 
     
     
       13. The method of  claim 12 , further comprising:
 after staging the second priority group, staging a third priority group, including:
 providing a list of install targets for the third priority group based on the list of the software for installation in the memory and the software present in the memory; and 
 providing a list of purge targets for the third priority group based on the list of the software for installation in the memory and the software present in the memory; 
 downloading the install targets to a backup partition; 
 deleting the purge targets from the memory; and 
 deleting the install targets from the back-up partition responsive to updating of the software in the memory based on the install targets. 
 
 
     
     
       14. The method of  claim 12 , wherein the first priority group and the second priority group are elements of a set of priority groups, wherein the set of priority groups include a set of partitions. 
     
     
       15. The method of  claim 12 , wherein staging the first priority group further includes:
 providing a list of rollback targets for the first priority group based on the list of the software for installation in the memory and the software present in the memory. 
 
     
     
       16. The method of  claim 15 , further comprising:
 rolling back to the last known good for the first priority group, including changing the rollback targets for the first priority group to install targets for the first priority group. 
 
     
     
       17. A processor-readable storage medium, having stored thereon process-executable code that, upon execution by at least one processor, enables actions, comprising:
 performing staging for at least two priority groups, completing staging of each higher priority group before staging a lower priority group, including, for each priority group:
 generating a list of install targets for the priority group based on a list of software for installation in a memory and software present in the memory; 
 generating a list of purge targets for the priority group based on the list of software for installation in the memory and the software present in the memory; 
 downloading the install targets to a backup partition of the memory; 
 causing updating of the software in the memory based on the install targets; 
 deleting the purge targets from the memory; and 
 deleting the install targets from the back-up partition. 
 
 
     
     
       18. The processor-readable storage medium of  claim 17 , wherein each of the priority groups are elements of a set of priority groups, wherein the set of priority groups include a set of partitions. 
     
     
       19. The processor-readable storage medium of  claim 17 , wherein performing staging for each priority group further includes:
 generating a list of rollback targets for the priority group based on the list of the software for installation in the memory and the software present in the memory. 
 
     
     
       20. The processor-readable storage medium of  claim 19 , the actions further comprising:
 rolling back to the last known good for the priority group, including changing the rollback targets for the priority group to install targets for the priority group.

Cited by (0)

No later patents cite this yet.

References (0)

No backward citations on record.