IP Library Granted Patent US 8,689,204
Granted Patent B2
US 8,689,204 · App. 12/474,741 · Granted Apr 1, 2014

Methods and tools for creation of read-only-memory software binary images and corresponding software patches

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,689,204
App. No.
12/474,741
Granted
Apr 1, 2014
Kind
B2
Abstract

There are described tools and methodologies for building Read Only Memory (ROM) mask software images and the corresponding data/code patching software images. One method is for creating ROM mask content having patch references included therein whereby patch reference errors are detected and corrected. A software patch for a ROM mask with existing patch references may then automatically be created.

Claims (51)

1. A method for creating Read Only Memory (ROM) mask content, the method comprising:

creating a plurality of single ROM object files;

inserting a respective patch reference into selected ones of functions and data objects in said ROM object files, each respective patch reference pointing to a respective memory location;

linking said plurality of single ROM object files together into a combined file;

detecting patch reference errors in said selected ones of functions and data objects by validating a start memory location of the respective patch reference and the respective pointed-to memory location;

correcting said detected patch reference errors for inappropriate patch references; and

generating said mask content from said combined file, wherein said detecting patch reference errors comprises identifying patch references that originate from frozen memory and end in non-frozen memory, and patch references that originate from frozen memory and end in frozen memory and are not patch references to a static function.

2. The method of claim 1 , wherein said creating a plurality of single ROM object files comprises:

creating a source code file;

converting a file format of said source code file into assembly code and compiling an assembly file; and

selecting at least one of functions and data objects in said assembly file in accordance with a predetermined parameter; and

the inserting comprises inserting said patch reference to each said selected ones of functions and data objects.

3. The method of claim 2 , wherein said inserting said patch reference comprises adding a data indirection pointer to each selected ones of data objects.

4. The method of claim 3 , wherein said inserting said patch reference comprises placing all of said data indirection pointers in a same source file.

5. The method of claim 3 , wherein said inserting said patch reference comprises using multiple source files to hold said data indirection pointers.

6. The method of claim 2 , wherein said inserting said patch reference comprises adding a thunk.

7. The method of claim 2 , wherein said selecting comprises selecting ones of functions and data objects exceeding a predetermined size threshold.

8. The method of claim 2 , wherein said selecting comprises selecting ones of functions and data objects in accordance with a position in said assembly file.

9. The method of claim 1 , wherein said detecting patch reference errors comprises sending said patch reference errors to an error file.

10. The method of claim 1 , wherein all steps of the method are performed by a processor.

11. The method of claim 1 wherein said each respective patch reference is unchangeable in a respective ROM upon creation of the respective ROM using the generated mask content.

12. The method of claim 1 wherein said detecting patch reference errors comprises validating patch references that respectively originate in frozen memory and point to a respective unmovable memory location in anchored memory in a corresponding Random Access Memory (RAM).

13. A method for automatically creating a software patch for a ROM mask, the method comprising:

receiving a list of patchable functions and/or data objects, each patchable function and/or data object comprising a patch reference having been inserted into the respective patchable function and/or data object at the time of creation of said ROM mask, each respective patch reference pointing to a respective memory location each respective patch reference having been validated at least partly by validating a start memory location of the respective patch reference and by validating the respective pointed-to memory location such that patch references that originated from frozen memory and ended in non-frozen memory had been identified, and patch references that originated from frozen memory and ended in frozen memory and were not patch references to a static function had been identified;

comparing an original ROM assembly file used to make the ROM mask with an updated ROM assembly file;

applying a first set of rules if the patchable function or data object has a patch reference and recording results in an output file;

applying a second set of rules if the patchable function or data object does not have a patch reference and recording results in said output file; and

creating the software patch from the output file.

14. The method of claim 13 , wherein said applying a first set of rules comprises:

discarding deleted functions or data objects and pointing the patch reference to an error;

renaming changed functions in ROM with a patch suffix and saving them to the output file;

discarding unchanged functions or data objects;

renaming the unchanged functions that are not in ROM and saving them to the output file; and

saving changed data objects to the output file.

15. The method of claim 13 , wherein said applying a second set of rules comprises:

saving functions that are not in ROM to the output file;

discarding functions that are in ROM and have not changed;

logging an error for functions that are in ROM, have changed, and are not static;

saving the functions that are in ROM, have changed, and are static, marking all calling function as changed, and reprocessing said all calling functions;

logging an error for all changed data objects; and

discarding unchanged data objects.

16. The method of claim 13 , further comprising creating the software patch as a multi-version software patch by:

creating N ROM patch object files individually;

creating a boot code object file comprising ROM detection code; and

linking the N ROM patch object files and the boot code object files together to generate a single executable file that supports N ROM versions.

17. The method of claim 16 , wherein said creating a boot code object file comprising ROM detection code comprises providing code for:

reading a ROM mask type and version number from a processor of a target device;

searching for a ROM patch image corresponding to the ROM mask type and version number; and

loading a corresponding ROM patch image into the processor.

18. The method of claim 13 , wherein all steps of the method are performed by a processor.

19. The method of claim 13 wherein each respective patch reference is unchangeable in a respective ROM upon creation of the respective ROM using the ROM mask.

Assignments (2)
CHANGE OF NAME Recorded Jan 27, 2014
From: RESEARCH IN MOTION LIMITED
To: BLACKBERRY LIMITED
Reel/Frame 032126/0830 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 24, 2009
From: KREEK, CONRAD, MR.; SIMMONS, SEAN, MR.; BURKHOLDER, JACOB, MR.; PHAT, TRAN, MR.; SWOBODA, JONATHAN, MR.
To: RESEARCH IN MOTION LIMITED
Reel/Frame 023004/0065 →