20 Serial DataFlash
0842C–07/01
Extended
Reprogramming
To improve the reprogramming ability of the Serial DataFlash for write intensive applications
that do not write in a cyclical, sequential manner, certain guidelines must be followed to pre-
serve the integrity of data stored within the Flash array. A write intensive application can be
defined as any application in which thousands of cumulative reprogram (erase/program) oper-
ations are performed throughout the course of the product’s life cycle.
If the reprogram operations occur in a cyclical, sequential manner, then no special guidelines
need to be followed. That is, if the Flash pages are updated/rewritten beginning with a specific
page (e.g., page 6) and continuing sequentially through the next 2047 pages (e.g., pages 7-
2047 and 0-5), and cycled again starting back at the original page (e.g., page 6), then no addi-
tional algorithms need to be incorporated into the system’s microcontroller or microprocessor
software.
However, if the reprogram operations occur in a random fashion in which any number of
pages is updated in a random order, then the system must ensure that each page of the Serial
DataFlash memory array be updated/rewritten at least once within every 10,000 cumulative
page reprogram operations. Depending on the type of application, different methodologies
can be used to accomplish the updating of the Flash array.
One method requires that every reprogram operation of a single page be followed by an addi-
tional page update. In this scenario, a software controlled pointer would be used to designate
which additional page of the Flash array is to be updated. For example, the pointer would ini-
tially point to page 0. When the system reprograms a page, say page 12, the system would
then issue the Auto Page Rewrite command for page 0 after the completion of the page 12
erase/program operation (tEP). The pointer would then be incremented to point to page 1.
When the system reprograms another page, the process would be repeated. When the
pointer reaches 2048, it would be reset back to 0. Figure 9 illustrates this example.
Another method for updating the Flash array is somewhat similar to the previous method, but
would accommodate reprogram operations of multiple pages. With this method, a software
controlled pointer would again be implemented with the addition of a software controlled
counter. Like the previous example, the pointer would initially point to page 0 and the counter
would be set to 0. When the system reprograms multiple pages, the counter would be incre-
mented for each page reprogram operation. After the system completes the programming of
the multiple pages (e.g., pages 4, 18, 23 and 25), the system would then issue the Auto Page
Rewrite command for page 0. Once the rewrite operation of page 0 is complete, the pointer
would be incremented to point to page 1, and the counter would decrement from 4 to 3. The
system would continue by issuing the Auto Page Rewrite command for page 1, and the rewrite
process would repeat until the counter decremented back to 0. When the pointer reaches
2048, it would be reset back to 0. Figure 10 illustrates this example.
The final method for updating the Flash array would allow 10,000 reprogram operations to
occur before the Auto Page Rewrite command needs to be issued. With this method, a soft-
ware controlled counter needs to be implemented. The counter would initially be set to 0, and
after every reprogram operation, the counter would be incremented. Once the counter
reaches 10,000, the system would begin the Auto Page Rewrite process by issuing the Auto
Page Rewrite command for page 0. Once the rewrite operation of page 0 is complete, the
system would continue by rewriting pages 1, 2, 3, and so on until all 2048 pages have been
rewritten. After the entire Flash array has been rewritten, the counter would be reset back to
0. Figure 11 illustrates this example.