IP Library Granted Patent US 8,612,734
Granted Patent B2
US 8,612,734 · App. 12/754,380 · Granted Dec 17, 2013

Method and apparatus for reprogramming applications in embedded devices

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,612,734
App. No.
12/754,380
Granted
Dec 17, 2013
Kind
B2
Abstract

A method for uploading and storing application code in a re-writable, non-volatile memory of an electronic device is carried out by means of a bootloader. The bootloader receives the application code transmitted by a master unit through a communication channel, writes at least one portion of the application code to a portion of the non-volatile memory, and validates the at least one portion of the application code by means of the bootloader.

Claims (79)

1. A method for uploading and storing application code in a re-writable, non-volatile memory of an electronic device by means of a bootloader, comprising the steps of:

in a receiving step, receiving the application code transmitted by a master unit through a communication channel;

in a writing step, writing at least one portion of the application code to a portion of the non-volatile memory;

in a calculation step, calculating by means of the bootloader a checksum of the at least one portion of the application code;

in a transmitting step, transmitting the checksum calculated by the bootloader to the master unit; and

in a verification step, verifying by the master unit if the checksum calculated by the bootloader matches with an original checksum previously calculated on the at least one portion of the application code before transmission through the communication channel.

2. The method of claim 1 , wherein the bootloader receives in sequence a plurality of portions of the application code, the method further comprising:

in the calculation step, the bootloader calculates a checksum for each received portion of the application code;

in the calculation step, the bootloader calculates a checksum for the entire application code;

in the transmitting step, each checksum calculated by the bootloader is transmitted to the master unit; and

in the verification step, the master unit verifies matching of each checksum calculated by the bootloader on each received portion and on the entire application code with a checksum previously calculated on the corresponding portion of the application code and on the entire application code before transmission through the communication channel.

3. The method of claim 2 , wherein:

after having successfully verified matching between the checksum calculated by the bootloader on the entire application code and the original checksum on the entire application code, the master unit sends to the bootloader at least one validation parameter for validating the application code, and the validation parameter is stored by the bootloader in a protected memory; and

at each startup of the device, the bootloader performs a validation of the application code through the validation parameter.

4. The method of claim 1 , wherein:

after having successfully verified the matching between the checksum calculated by the bootloader and the original checksum, the master unit sends to the bootloader at least one validation parameter for validating the at least one portion of the application code, and the parameter is stored by the bootloader in a protected memory; and

at each startup of the device, the bootloader performs a validation of the application code through the validation parameter.

5. The method of claim 1 , wherein each portion of the application code is constituted by a page of the application code.

6. The method of claim 1 , wherein in the receiving step, the master unit transmits each portion of application code subdivided into a series of two or more parts, sent in sequence through the channel, and recomposed by means of the bootloader in order to form the portion of the application code.

7. The method of claim 6 , wherein, in the calculation step, the bootloader calculates the checksum of each single portion of application code constituted by a series of parts singularly transmitted, before receiving the series of parts forming a subsequent portion of the application code.

8. The method of claim 1 , wherein

after having written a plurality of portions of the application code to the non-volatile memory, by means of the bootloader, in the calculation step the bootloader calculates the checksum of the entire application code formed by the plurality of portions,

in the transmitting step, the bootloader transmits the checksum to the master unit; and

in the verification step, the master unit verifies if the checksum calculated by the bootloader matches with an original checksum previously calculated on the entire application code before transmission through the communication channel.

9. The method of claim 1 , further comprising:

(a) the receiving step further comprises sequentially receiving by the bootloader a plurality of portions of the application code, the plurality of portions constituting a page of the application code;

(b) the writing step further comprises storing the portions of application code in a sequential manner;

(c) the calculating step further comprises calculating a current page checksum of the page of application code as all the portions of the page have been stored;

(d) storing the current page checksum in a register;

(e) the transmitting step further comprises sending the current page checksum to the master unit;

(f) the verification step further comprises verifying by the master unit of the current page checksum calculated with a corresponding original page checksum previously calculated; and

(g) repeating steps (a)-(f) for any following pages of the application code, if the verification step confirmed matching of current page and original page checksums.

10. The method of claim 1 , further comprising:

(a) the receiving step further comprises sequentially receiving by the bootloader a sequence of parts of a current page of the application code;

(b) storing the parts of application code in a support buffer in a sequential manner;

(c) the writing step further comprises writing the content of the support buffer to the re-writable, non-volatile memory as all the parts of the current page have been stored in the support buffer;

(d) the calculating step further comprises calculating a current page checksum of the page;

(e) storing the current page checksum in a register;

(f) the transmitting step further comprises sending the current page checksum to the master unit;

(g) the verification step further comprises verifying by the master unit the calculated current page checksum;

(h) repeating steps (a)-(f) for any following pages of the application code, if the verification step confirmed the current page checksum.

11. The method of claim 1 , further comprising:

(a) the receiving step further comprises receiving by the bootloader a current page of the application code;

(b) the writing step further comprises storing the current page in the re-writable, non-volatile memory;

(c) the calculating step further comprises calculating a current page checksum of the current page;

(d) storing the current page checksum in a register;

(e) the transmitting step further comprises sending the current page checksum to the master;

(f) the verification step further comprises verifying by the master unit the calculated current page checksum;

(g) repeating steps (a)-(f) for any following pages of the application code, if the verification step confirmed the current page checksum.

12. The method of claim 1 , further comprising:

(a) the receiving step further comprises receiving by the bootloader a sequence of parts of a current page of the application code;

(b) storing the parts of application code in a support buffer in a sequential manner;

(c) the calculating step further comprises calculating a current page checksum of the current page and storing the current page checksum in a register, as all the parts of the current page have been stored in the support buffer;

(d) the writing step further comprises writing the content of the support buffer to the rewritable non-volatile memory;

(e) the transmitting step further comprises sending the current page checksum to the master unit;

(f) the verification step further comprises verifying by the master unit the calculated current page checksum;

(g) repeating steps (a)-(f) for any following pages of the application code, if the verification step confirmed the current page checksum.

13. The method of claim 1 , wherein, in the calculating step, the bootloader calculates the checksum of the entire application code written to the re-writable, non-volatile memory and, in the transmitting step, communicates the checksum to the master unit, and, in the calculating step, the master unit compares the checksum calculated by the bootloader with a checksum calculated on the application code before transmission through the communication channel to the bootloader.

14. The method of claim 1 , wherein:

the application code utilizes management functions present in the bootloader and made available by the bootloader to the application code;

the bootloader is always active; and

in case of a request for update of the application code, the bootloader suspends the execution of the application until further commands and until a correct and validated application is present again.

15. The method of claim 1 , wherein the bootloader is stored in a portion of protected memory.

16. An electronic device comprising:

a microcontroller coupled to a communications channel;

a volatile memory unit coupled to the microcontroller;

a re-writable, non-volatile memory unit functionally coupled to the microcontroller and effective to store application code;

a protected, non-volatile memory unit comprising a stored bootloader functionally coupled to the microcontroller, and

the bootloader is functional to

receive the application code transmitted by a master unit through the communication channel,

write at least one portion of the application code to a portion of the non-volatile memory,

calculate a checksum for the at least one portion of the application code by means of the bootloader,

transmit the calculated checksum to a master unit via the communications channel, and

receive confirmation from the master unit that the application code is validated.

17. The electronic device of claim 16 wherein the bootloader is further functional to

receive in sequence a plurality of portions of the application code,

individually calculate a checksum for each received portion of the application code, and

transmit each calculated checksum to the master unit.

18. The electronic device of claim 17 wherein the bootloader is further functional to perform a calculation of the checksum of each single portion of application code constituted by a series of parts singularly transmitted, before receiving the series of parts forming a subsequent portion.

Assignments (6)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 26, 2020
From: ABB SCHWEIZ AG
To: MARICI HOLDINGS THE NETHERLANDS B.V.
Reel/Frame 054205/0806 →
MERGER Recorded Nov 15, 2016
From: ABB TECHNOLOGY LTD.
To: ABB SCHWEIZ AG
Reel/Frame 040621/0714 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 20, 2015
From: POWER-ONE ITALY S.P.A.
To: ABB TECHNOLOGY AG
Reel/Frame 035450/0191 →
RELEASE OF SECURITY INTEREST Recorded May 5, 2014
From: BANK OF AMERICA, N.A. AS ADMINISTRATIVE AGENT
To: POWER-ONE, INC.
Reel/Frame 032826/0684 →
SECURITY AGREEMENT Recorded Jun 7, 2011
From: POWER-ONE, INC.
To: BANK OF AMERICA, N.A.
Reel/Frame 026401/0098 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 31, 2011
From: TAZZARI, DAVIDE; VERNIA, FILIPPO
To: POWER-ONE ITALY S.P.A.
Reel/Frame 026056/0388 →