`Kirschner et al.
`
`(10) Patent No.:
`(45) Date of Patent:
`
`US 6,629,317 B1
`Sep. 30, 2003
`
`USOO662.9317B1
`
`(54)
`
`(75)
`
`(73)
`(*)
`
`(21)
`(22)
`
`(51)
`
`(52)
`
`(58)
`
`(56)
`
`METHOD FOR PROVIDING FOR
`PROGRAMMING FLASH MEMORY OFA
`MAILNG APPARATUS
`
`Inventors: Wesley A. Kirschner, Hamden, CT
`(US); Louis J. Loglisci, Stamford, CT
`(US); George T. Monroe, Seymour, CT
`(US); Richard A Rudolph, Newington,
`CT (US)
`Assignee: Pitney Bowes Inc., Stamford, CT (US)
`Notice:
`Subject to any disclaimer, the term of this
`patent is extended or adjusted under 35
`U.S.C. 154(b) by 0 days.
`Appl. No.: 09/364,081
`Filed:
`Jul. 30, 1999
`
`Int. Cl." ........................... G06F 9/445; G06F 9/44;
`G06F 12/00; G06F 17/00
`
`U.S. Cl. ....................... 717/175; 717/169; 711/103;
`705/500
`
`Field of Search ......................... 717/100, 168-178,
`717/129; 711/103, 173, 203; 710/10; 713/2;
`705/400-416, 500; 235/101
`References Cited
`U.S. PATENT DOCUMENTS
`
`5,432,927 A * 7/1995 Grote et al. ................... 713/2
`5,621,738 A 4/1997 Caywood et al. .
`... 714/721
`5,652,886 A * 7/1997 Tulpule et al.................. 713/2
`5,682,497 A * 10/1997 Robinson .................... 711/103
`5,717.887. A
`2/1998 Leslie ........................ 717/173
`5,737.265 A
`4/1998 Atwood et al. ........ 365/185.03
`5,809,558 A * 9/1998 Matthews et al. .......... 711/173
`5,819,108 A * 10/1998 Hsu et al. ..................... 710/10
`5,943,692 A * 8/1999 Marberg et al. ..
`... 711/203
`6,134.628 A * 10/2000 Hamadani .....
`... 711/103
`6,219,828 B1
`4/2001 Lee ..................
`... 717/129
`6,272.586 B1 * 8/2001 Roohparvar et al.
`... 711/103
`6.279,153 B1 * 8/2001 Bi et al. ..................... 717/171.
`
`
`
`OTHER PUBLICATIONS
`Komoto-Grundmann, Designing with Flash Memory in
`Windows CE Applications, Jun. 1998, Intel Corporation,
`http://www.cet.com/archives/9806/9806desi.shtml.*
`* cited by examiner
`Primary Examiner Hoang-Vu. Antony Nguyen-Ba
`(74) Attorney, Agent, or Firm-Angelo N. Chaclas; Charles
`A. Malandra; George M. Macdonald
`(57)
`ABSTRACT
`A method providing for programming reprogramming at
`least Some Software into flash memory of a postage machine
`or other mailing apparatus. The method calls for providing
`the Software to be programmed into the flash memory in at
`least two builds, with one build providing kernel software
`that includes the functionality needed for programming/
`reprogramming (including functionality for linking to a
`personal computer by which the Software to be programmed
`may be provided), and the other build providing non-kernel
`Software, usually routines providing application-oriented
`functionality, and not essential to programming the flash
`memory. The first build, of the at least two builds, is written
`into sectors of the flash memory that are then locked. The
`System provides, in Some applications, for writing the non
`kernel Software using a paging algorithm that writes Several
`Sectors worth of non-kernel Software at a time. Once the
`programming of the kernel Software is completed, at least
`part of the flash memory, the part hosting the non-kernel
`Software, can be programmed or reprogrammed using the
`functionality provided by the kernel software. In some
`applications, three builds are provided, with a bare minimum
`of kernel Software, including only a Subset of flash program
`ming utilities and routines providing for a basic Serial I/O
`link for linking to a personal computer. In Such an
`application, all of the operating System Software, i.e. the
`Software providing for system-level functionality of the
`mailing machine, is provided as a Second, non-protected
`build, and a third build is provided including application
`Software.
`
`7 Claims, 8 Drawing Sheets
`
`Stat
`
`Create build of kernel software.
`
`Create at least one other build,
`with jump tables in each other
`build, as needed.
`
`92
`
`83
`
`Provide kerned software to sectors
`of flash memory,
`
`94's
`
`lock sectors in which kernel
`software resides.
`
`Provide flash memory with each
`other build, in turn.
`
`Petitioner Intel Corp., Ex. 1026
`IPR2023-00783
`
`
`
`U.S. Patent
`
`Sep. 30, 2003
`
`Sheet 1 of 8
`
`US 6,629,317 B1
`
`Flash memory
`Software to load
`
`
`
`13
`
`
`
`
`
`
`
`Microprocessor o
`
`Flash memory
`
`Mailing Apparatus
`
`Fig. 1A (Prior Art)
`
`Petitioner Intel Corp., Ex. 1026
`IPR2023-00783
`
`
`
`U.S. Patent
`U.S. Patent
`
`Sep. 30, 2003
`Sep. 30, 2003
`
`Sheet 2 of 8
`Sheet 2 of 8
`
`US 6,629,317 B1
`US 6,629,317 B1
`
`
`
`Fig.1B
`
`Petitioner Intel Corp., Ex. 1026
`IPR2023-00783
`
`Petitioner Intel Corp., Ex. 1026
`IPR2023-00783
`
`
`
`U.S. Patent
`
`Sep. 30, 2003
`
`Sheet 3 of 8
`
`US 6,629,317 B1
`
`, 24
`
`Power up routines
`
`Operating system routines
`
`25
`
`. 26
`
`Application Software
`
`
`
`
`
`27 N
`
`Unused Flash memory
`
`Fig. 2 (Prior Art)
`
`Petitioner Intel Corp., Ex. 1026
`IPR2023-00783
`
`
`
`U.S. Patent
`
`Sep. 30, 2003
`
`Sheet 4 of 8
`
`US 6,629,317 B1
`
`- 30
`
`
`
`Power up routines (Core power up
`routines, flash utilities, and
`Communication utilities)
`
`Complementary Software
`
`Unused Flash memory
`
`Petitioner Intel Corp., Ex. 1026
`IPR2023-00783
`
`
`
`U.S. Patent
`
`Sep. 30, 2003
`
`Sheet 5 of 8
`
`US 6,629,317 B1
`
`Protected routine for reloading complementary software.
`Protected routine that provides for modem communication So
`as to make possible receiving Complementary Software by
`modem.
`Protected routine that accepts complementary Software in
`compressed format.
`Protected routine that writes into the non-protected sectors
`Selected Software in Compressed format, and that
`decompresses the software into RAM at run-time.
`Protected routine that accumulates in RAM several Sectors
`worth of software for loading, and then load the sectors as a
`block Or batch.
`Protected routine for Writing new signatures periodically during
`a reprogramming.
`
`
`
`
`
`Protected routine that provides for reprogramming apart of the
`Complementary Software.
`
`Jump addresses into (protected) kernel software.
`
`Protected bootup routine that looks for a signature written into the flash
`memory when it was last programmed, instead of performing a checksum.
`
`
`
`Checksum on complementary software.
`
`40
`
`41
`
`42
`
`43
`
`45
`
`46
`
`47
`
`48
`
`49
`
`Fig. 4
`
`Petitioner Intel Corp., Ex. 1026
`IPR2023-00783
`
`
`
`U.S. Patent
`
`Sep. 30, 2003
`
`Sheet 6 of 8
`
`US 6,629,317 B1
`
`
`
`Core power up routines
`
`Flash utility routines
`
`Communication routines (for
`interface with a PC)
`
`Compression routines
`
`Debugger routines
`
`Operating System
`
`Petitioner Intel Corp., Ex. 1026
`IPR2023-00783
`
`
`
`U.S. Patent
`
`Sep. 30, 2003
`
`Sheet 7 of 8
`
`US 6,629,317 B1
`
`- 70
`
`
`
`Core power up routines
`
`Subset of Flash utility routines
`(erase flash, program flash)
`
`71
`
`Basic serial I/O (for primitive
`interface with a PC)
`
`Other Flash utility routines
`
`Other communication routines (for
`interface with a PC)
`
`72
`
`Debugger routines
`
`Operating System
`
`Application software
`
`
`
`73
`
`
`
`
`
`
`
`
`
`74
`
`75
`
`76
`
`77
`78
`
`79
`
`81
`
`
`
`82
`
`
`
`
`
`Fig. 6
`
`Petitioner Intel Corp., Ex. 1026
`IPR2023-00783
`
`
`
`U.S. Patent
`
`Sep. 30, 2003
`
`Sheet 8 of 8
`
`US 6,629,317 B1
`
`Create build of kernel Software.
`
`Create at least One other build,
`with jump tables in each other
`build, as needed.
`
`91
`
`92
`
`93
`
`94
`
`Provide kernel Software to Sectors
`of flash memory.
`
`Lock Sectors in which kernel
`Software resides.
`
`
`
`Provide flash memory with each
`other build, in turn.
`
`Fig. 7
`
`Petitioner Intel Corp., Ex. 1026
`IPR2023-00783
`
`
`
`US 6,629,317 B1
`
`1
`METHOD FOR PROVIDING FOR
`PROGRAMMING FLASH MEMORY OFA
`MAILINGAPPARATUS
`
`2
`All of the software must be written (programmed) into the
`flash memory for the mailing apparatus to work correctly. If
`a power failure interrupts the programming of the flash
`memory, the flash memory must be erased, and the pro
`gramming of the flash memory must be started again from
`the beginning. When flash memory is being reprogrammed
`(either at a user's facility or at a manufacturing site), if
`power fails during the reprogramming, the mailing appara
`tus is completely inoperative, since it has no ROM for
`holding even boot-up routines. AS indicated above, flash
`memory write cycles are often long, and reprogrammed
`from the beginning causes delays which are often costly.
`Therefore, there is a need for a way to program flash
`memory of a mailing apparatus So as to avoid the long delayS
`caused by a power failure during programming, and the
`Subsequent restarting of the programming process.
`SUMMARY OF THE INVENTION
`The present invention seeks to provide a System of
`programming the flash memory of a mailing apparatus So
`that in case of a power failure during Some of its
`programming, or in case of a need to reprogram at least Some
`parts of the flash memory, only part of the programming
`must be performed. It does this by providing a method of
`programming flash memory of a mailing apparatus in more
`than one build, with one build containing only a fraction of
`the Software needed to impart to the mailing apparatus its
`full functionality, but all of the Software needed to link to a
`PC and to reprogram at least Some Sectors of the flash
`memory (i.e. erase and write Sectors of flash memory). After
`Writing this So-called kernel Software into Sectors of flash
`memory, the Sectors are locked, i.e. are prevented by Soft
`ware from being erased and rewritten. The other builds are
`written to Sectors that are not necessarily locked. The
`invention includes embodiments differing chiefly in what
`Software is included in the kernel Software.
`Accordingly, the present invention provides a method of
`programming a mailing apparatus, the mailing apparatus
`comprising a microprocessor and a flash memory, the pro
`gramming amounting to writing, to Sectors of the flash
`memory, Software needed for operation of the mailing
`apparatus, the method comprising the Steps of providing, as
`one build, kernel Software, including routines for program
`ming the flash memory, creating in particular Sectors of flash
`an image of the one build, and then locking the Sectors, and
`providing, as at least one other, Separate build, all other
`Software, and creating an image in flash of each other build.
`In Some applications of the present invention, the kernel
`Software comprises: power-up routines automatically loaded
`by the microprocessor at power on, these for initializing the
`microprocessor, for initializing communications between
`the microprocessor and a programming computer, for
`enabling the microprocessor to read and write to the flash
`memory; and for loading operating System Software; the
`operating System Software itself, comprising routines for
`providing System-oriented functionality of the mailing
`apparatus, and kernel application Software, comprising rou
`tines for providing application-oriented functionality,
`including enabling the microprocessor to be used by a
`programming computer to reprogram the non-kernel Soft
`WC.
`
`65
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`Various features and advantages of the invention will
`become apparent upon consideration of the Subsequent
`detailed description presented in connection with accompa
`nying drawings, in which:
`
`15
`
`TECHNICAL FIELD
`The present invention pertains to the field of postage
`meters and other mailing equipment. More particularly, the
`present invention pertains to programming flash memory
`used in mailing equipment.
`DESCRIPTION OF RELATED ART
`Referring to FIG. 1A, a mailing apparatus 13, Such as a
`postage meter 17 shown in FIG. 1B, often includes a
`microprocessor 14 having no read only memory (ROM), but
`having random access memory (RAM) 16 for holding
`program instructions to be executed by the microprocessor
`14. Consequently, Software, i.e. program instructions and
`data, can be Stored in So-called flash memory 15, a type of
`non-volatile memory. The flash memory software to load 10
`is often provided by a flash memory programmer 12 through
`a personal computer (PC) 11 linked to the microprocessor 14
`of the mailing apparatus 13. The microprocessor 14 has a
`universal asynchronous receiver/transmitter (UART) (not
`shown), which routes the software 10 from the PC 11 to the
`flash memory device 15.
`The flash memory software to load 10 is first loaded at the
`time the mailing apparatus is manufactured, and from time
`to time, it is desirable to change the program instructions and
`data in the flash memory, for example to incorporate revi
`Sions to the program instructions or to change the data used
`in operating the mailing equipment. The act of writing
`Software to a flash memory is called “programming the
`flash memory. A flash memory is a device providing erasable
`programmable read only memory containing many Sectors,
`each Sector containing a number of bytes, where each Sector
`is separately erasable. In addition, a flash memory device is
`often byte programmable. Often also, flash memory is block
`erasable/writable, blocks being groups of bytes. Usually, a
`flash memory device is divided into a plurality of Volumes,
`which are the unit-erasable quantity of memory on a given
`piece of hardware. A volume may be a Single Sector or
`multiple Sectors of a storage space representing the capacity
`of the memory. Prior to writing to, or programming, a
`location within the memory device, the volume within
`which the location is found must be erased and then the
`whole Volume is rewritten to include the programmed loca
`tion. Thus, programming of a single location requires an
`erase cycle of the Volume within which the Single location
`is located, and a write time to rewrite the erased Volume.
`Typical erase cycles do not take long (approximately one
`Second), but it is possible for a typical write cycle (time to
`program all of flash memory of a typical mailing apparatus
`using flash memory) to require up to 15 minutes.
`According to the prior art, the Software for a mailing
`apparatus is loaded into the flash memory as a Single build,
`i.e. Software including routines that call each other to
`provide the functionality of the mailing apparatus. The
`routines are able to call each other, according to Standard
`programming practice, using function calls that are com
`60
`piled and made operative by linking the routines together.
`Referring to FIG. 2 and again to FIG. 1A, a single build as
`provided by the prior art is arranged in the flash memory 15
`of a mailing apparatus 13, and includes power up routines
`24, operating System routines 25, application Software 26.
`Some of the flash memory is shown as unused flash memory
`27.
`
`25
`
`35
`
`40
`
`45
`
`50
`
`55
`
`Petitioner Intel Corp., Ex. 1026
`IPR2023-00783
`
`
`
`3
`FIG. 1A is a block diagram showing programming of flash
`memory of a mailing apparatus built according to the prior
`art and according to the present invention;
`FIG. 1B is a simplified perspective view of a mailing
`apparatus illustrating one kind of mailing apparatus in which
`it is possible to incorporate the present invention;
`FIG. 2 is a diagram illustrating the arrangement in a linear
`array of flash memory of the various kinds of software
`written into the flash memory during programming, accord
`ing to the prior art;
`FIG. 3 is an illustration of the arrangement in a linear
`array of flash memory of the software written into the flash
`memory of a mailing apparatus, according to the present
`invention;
`FIG. 4 is a component diagram showing Software routines
`(utility procedures) as components of a Software build
`programmed into the flash memory of a mailing apparatus,
`according to the present invention;
`FIG. 5 is an illustration of one arrangement in flash
`memory of Specific Software provided by the present inven
`tion;
`FIG. 6 is an illustration of the preferred arrangement in
`flash memory of Specific Software provided by the present
`invention; and
`FIG. 7 is a flow chart showing the method of the present
`invention.
`BEST MODE FOR CARRYING OUT THE
`INVENTION
`Referring again to FIG. 1B, a mailing apparatuS 17 in
`which the present invention can be incorporated includes a
`printer module (not shown), a conveyor apparatus (not
`shown), a micro control System (not shown), other modules
`not shown for the Sake of clarity, and user interface equip
`ment 18 including a set of function keys 20, a numeric
`keypad 21, a set of (non-function-type) keys 22, and a
`display 19, which can be a cathode ray tube (CRT), light
`emitting diode (LED), LCD or other kind of display. The
`(non-function-type) keys allow a user to indicate commands
`that are not directly related to processing a mail piece, Such
`as: enter, clear, download postage, generate report, and
`account Setup. In contrast, the function keys are concerned
`with actions needed to process a mailpiece, Such as: Start,
`Stop, print tape, reset batch counter, weigh mode on/off,
`Sealer/moistener mode on/off.
`Referring now to FIG. 3, according to the present inven
`tion in one embodiment, the Software for a postage meter 17
`(FIG. 1B) or a mailing apparatus 13 generally (FIG. 1A) is
`written into flash memory 30 as two separate software builds
`31,32: a first build 31 written into sectors of flash memory
`that are afterward locked, and So protected; and a Second
`build 32 written into sectors of flash memory that remain
`non-locked, and So are unprotected.
`As shown further, what is written to the locked sectors
`includes what is called here kemel Software, i.e. Software
`upon which essential hardware and other Software depend.
`Thus, the kernel Software typically includes: power-up rou
`tines 33, which are automatically loaded into the micropro
`ceSSor at power-up, and which load the operating Systems
`routines, and which include utilities for communicating with
`a PC and which enable the microprocessor to find software
`in the flash memory; operating System routines 34, which
`provide System-level functionality; and Selected application
`Software, called, here kernel application Software 35. AS
`indicated above, any reference to Software is a reference to
`program instructions and data.
`
`5
`
`15
`
`25
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`US 6,629,317 B1
`
`4
`The kernel application software (build) 31 includes all
`functionality needed for accepting Software to be loaded into
`flash memory from a PC, and the functionality needed to
`write the software into the flash memory. Besides commu
`nications functions (in the power up routines 33) and flash
`memory operating routines (in the operating System routines
`34), the kernel application Software may contain other
`functionality.
`Still referring to FIG.3, the second build 32, written to the
`non-locked Sectors, is here called complementary Software
`36, and is usually Software providing application-oriented
`functionality of the mailing equipment not provided by the
`kernel Software. Such Software may also included Some
`complementary operating System routines. The complemen
`tary Software is usually much larger in size than all of the
`protected Software, i.e., all of the power-up routines in
`combination with the operating System routines and further
`in combination with the kernel application Software.
`The total Software that would be written to the flash
`memory according to the prior art is exceeded in Size by the
`Software written to the flash memory according to the
`present invention. This is because according to the present
`invention routines are provided to the flash memory, in the
`protected Sectors, that specifically enable programming of
`flash memory and also provide other functions and features
`not found in the Software written in a flash memory of a
`mailing apparatus according to the prior art.
`Referring now to FIG. 4, a method, according to the
`present invention, for programming the flash memory of a
`mailing apparatus includes, in general, providing various
`routines and jump tables. First, in the preferred embodiment,
`as already discussed, the method includes providing a pro
`tected routine 40 for reloading complementary Software,
`Such as would be required in case of a power failure in the
`midst of programming complementary Software into the
`flash memory (after the kernel software is loaded). The
`routine 40 for reloading complementary software therefore
`includes, as already discussed, enabling the microprocessor
`14 of the mailing apparatus 13 to communicate with the PC
`11, and enabling the microprocessor to access the flash
`memory 15 (see FIG. 1A).
`In addition, in Some applications, the method includes
`providing various other routines 41-46 associated with
`reprogramming flash memory, and also includes other rou
`tines 47-49 of more general use. The other routines 41-46
`asSociated with reprogramming flash memory include: a
`protected routine 41 that provides for modem communica
`tion So that the flash memory can be reprogrammed
`remotely; a protected routine 42 that accepts from a PC in
`compressed format the complementary Software that is to be
`written to the flash memory (which is of particular advan
`tage when Some or all of the complementary Software will
`be written to the flash memory in compressed format); a
`protected routine 43 that writes into the non-protected
`Sectors of the flash memory Selected Software in compressed
`format, compressing the Software if it is not already
`compressed, and decompressing at run-time the Software
`into the RAM of the microprocessor; a protected routine that
`accumulates in the RAM of the microprocessor Several
`Sectors worth of complementary Software, which it then
`writes as a block, or in batch mode, to the flash memory (this
`paging of memory imageS Saving time because of Savings in
`the overhead required for each new access of the flash
`memory); a protected routine 45 for periodically signing
`(usually in a non-protected Sector) the flash memory during
`a programming of the flash memory So as to indicate the last
`Successfully completed Stage of a programming (thereby
`
`Petitioner Intel Corp., Ex. 1026
`IPR2023-00783
`
`
`
`S
`enabling referring to the Signature to determine where to
`restart programming in case of an interruption by a power
`failure, instead of having to always Start from the
`beginning); and a protected routine 46 that provides for
`reprogramming/revising a part of the complementary
`Software, and, in the course of this revising, finds where in
`the non-locked Sectors to write the revision (preferably on
`top of what is being revised, but if the revision is larger than
`what it is replacing, the routine will use a previously unused
`area of the flash memory).
`The routines 47-49 of more general use include a table of
`jump addresses 47 for directing the microprocessor 14 (FIG.
`1A) to call protected kernel Software. In the prior art, when
`all of the routines for the mailing apparatus are written to its
`flash memory in one build, one of the routines can call a
`function provided by another according to Standard pro
`gramming practice, because the routines are linked in the
`process of creating the build. In the present invention,
`however, a routine of the complementary Software is not
`able to call a routine written into the protected Sectors of the
`flash memory according to Standard programming practice.
`The jump addresses of the present invention, by which a
`routine in the complementary Software can “call” a function
`provided by a protected routine (by directing that the
`instruction pointer of the microprocessor jump to the address
`in the protected Sector where the routine begins), make the
`Services of a protected Sector routine available to the
`complementary Software. Thus, with jump tables, there is no
`loSS in functionality that results from partitioning into two
`builds in its flash memory Software, including power-up
`routines, for operating a mailing apparatus. Jump tables are
`provided as part of each non-kernel build, as needed. In case
`of more than two builds, jump tables can be provided by
`which software in any of the non-kernel builds can invoke
`the Services of any other build, but usually, and in the
`preferred embodiment described below, in which the kernel
`is a bare minimum, the non-kernel builds would not invoke
`the kernel.
`In addition, because of having used, in Some applications,
`a Series of Signatures to Signal having Successfully loaded
`Successive increments of a build, the method of the present
`invention includes providing a routine 48 that, at power-up,
`instead of performing a checksum on the flash memory,
`inspects the last Signature written to determine if it is the
`Signature signaling the Successful loading of the last incre
`ment. Avoiding a checksum in this way Saves time at
`power-up, with only a Small risk that the content of a flash
`memory is not correct because of having been altered by e.g.
`a cosmic ray or other disturbance.
`From time to time, however, the flash memory should be
`inspected for an unplanned change of content, and the
`method of the present invention also includes, in Some
`applications, providing a routine 49 that performs a check
`Sum at Scheduled intervals, or as directed by a user. Although
`the periodic Signing of the flash memory does Signal whether
`or not all of the increments of a build have been written into
`the flash memory of a mailing apparatus, only a checksum
`calculation can verify the integrity of the programming.
`Thus, performing a checkSum calculation is advisable at
`least once after writing a complementary build to the flash
`memory.
`Referring now to FIG. 5, in one particular embodiment,
`the method of the present invention includes providing, to a
`flash memory 50, only two builds 51, 52, in which the first,
`kernel software build 51 includes: core power up routines
`53, flash utility routines 54, communication routines 55 for
`interfacing with a PC, compression routines 56, as discussed
`
`15
`
`25
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`US 6,629,317 B1
`
`6
`above, but usually only for accepting, in compressed format,
`Software to be written to flash memory and decompressing
`the Software; debugger routines 57 for tracing errors, and
`operating System routines 58; but no application Software.
`The second build 52, which is not protected, i.e. is not
`programmed in Sectors that were Subsequently locked, is
`application software 59. FIG. 5 shows that after the pro
`gramming of the flash memory 50 with the two builds 51,
`52, there can be some unused flash memory 60.
`Referring now to FIG. 6, in what is considered the
`preferred embodiment, the method of the present invention
`includes providing, to a flash memory 70, three different
`builds 71, 72,73, in which the first, kernel software build 71
`includes only: core power up routines 74; a Subset 75 of all
`of the available flash utility routines; and basic serial I/O
`routines 76, providing the bare minimum needed for the PC
`11 to feed software to the microprocessor 14 of the mailing
`apparatus 13, as shown in FIG. 1A. The time to program/
`write this kernel (to Sectors that are Subsequently locked) is
`Significantly less (on the order of minutes) than the time to
`write the kernel indicated in FIG. 5.
`In this embodiment, two other builds 72,73 are provided,
`with neither locked, because only part of the rest of the
`Software is particularly likely to be programmed/
`reprogrammed, i.e. the application Software 82 of the third
`build 73. In this preferred embodiment, the second build 72
`includes the Software carved out from the kernel 51 provided
`by the embodiment producing the arrangement shown in
`FIG. 5, and therefore includes: other flash utility routines 77;
`other communication routines 78, beyond that providing for
`bare serial I/O communication with a PC; and compression
`routines 79, debugger routineS 80, and operating System
`routines 81, all in content as in the embodiment correspond
`ing to FIG. 5 (but not locked).
`With this arrangement, the Software that cannot be repro
`grammed (the kernel Software 71 in locked sectors) is kept
`to a bare minimum. All of the other Software can be
`reprogrammed, but what would most likely be
`reprogrammed, the application Software 82 is kept alone in
`a third build 73. Jump tables (not shown) are provided as
`necessary for routines in one build to invoke routines (or
`particular functions of routines) in another, but usually jump
`table need only be provided to allow the application soft
`ware 82 to invoke the services of routines in the second build
`72.
`Referring now to FIG. 7, the method of the present
`invention is indicated generally as involving, after first
`having determined how to partition into Separate builds all
`of the Software for the mailing apparatus: a first step 91 of
`creating, as one build, the kernel Software; a next Step 92 of
`creating each other build, in turn, along with jump tables in
`each build, as needed, allowing the routines in the build to
`invoke the services of routines in other builds; a next step 93
`of providing kernel Software to Sectors of flash memory; a
`next step 94 of locking the sectors in which the kernel sector
`resides; and a last step 95 of providing the flash memory
`with each other build, in turn.
`In the method of the present invention, the Steps involving
`programming the flash of a mailing apparatus, Steps which
`are described as “providing Software to Sectors of flash, are
`to be understood as encompassing any action by which an
`image of Software (including data) is created in flash. In
`other words, the present invention is not limited to program
`ming flash using a PC 11 connected to a microprocessor 14
`of a mailing apparatus 13, as shown in FIG. 1A, but includes
`any action resulting in the creation of an image of Software
`
`Petitioner Intel Corp., Ex. 1026
`IPR2023-00783
`
`
`
`7
`in flash. The method of the present invention is not directed
`to how to write software to flash; it is directed only to the
`arrangement of what is written to flash.
`It is to be understood that the above described arrange
`ments are only illustrative of the application of the principals
`of the present invention. Numerous modifications and alter
`native arrangements may be devised by those skilled in the
`art without departing from the Spirit and Scope and the
`present invention, and the appended claims are intended to
`cover Such modifications and arrangements.
`What is claimed is:
`1. A method of programming a mailing apparatus, the
`mailing apparatus including a microprocessor and a flash
`memory, the flash memory having a plurality of Sectors, the
`programming performed by writing Software to Sectors of
`the flash memory, the method comprising the Steps of:
`providing, as one build, kernel Software, including rou
`tines for programming the flash memory;
`creating in particular Sectors of flash an image of the one
`build, and then locking the Sectors, and
`providing, as at least one other, Separate build, all other
`Software, and creating an image in flash of each other
`build.
`2. The method of claim 1, wherein the kernel Software
`comprises:
`power up routines, for hardwired loading by the micro
`processor at power on, for initializing the
`microprocessor, for initializing communications
`between the microprocessor and a programming
`computer, for enabling the microprocessor to read and
`write to the flash memory, and for loading operating
`System Software;
`Said operating System Software, comprising routines for
`providing System-oriented functionality of the mailing
`apparatus, and
`kernel application Software, comprising routines for pro
`Viding application-oriented functionality, including
`enabling the microprocessor to be used by a program
`ming computer to reprogram the other, non-kemel
`Software.
`3. The method of claim 2, wherein the kernel Software
`further comprises:
`a routine that provides for modem communication So as to
`make possible receiving non-kemel Software by
`modem,
`a routine that accepts non-kemel Software in compressed
`format,
`
`15
`
`25
`
`35
`
`40
`
`45
`
`US 6,629,317 B1
`
`8
`a routine that accumulates in the microprocessor RAM
`Several Sectors worth of Software for loading, and then
`loads the Sectors as a block or batch;
`a routine for writing new signatures periodically during
`programming, and
`a routine for programming a part of the non-kemel
`Software.
`4. The method of claim 3, wherein the kernel Software
`further comprises:
`a boot-up routine that looks for a signature written into the
`flash memory when it was last programmed, instead of
`performing a checkSum; and
`a routine that performs a checksum.
`5. The method of claim 4, wherein the kernel Software
`further comprises a routine tha