<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://community.arm.com/utility/feedstylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Everything stops during flash/EE erase</title><link>https://community.arm.com/developer/tools-software/tools/f/keil-forum/26030/everything-stops-during-flash-ee-erase</link><description> 
I am using an ADuC7021 for my embedded application. one task is to
drive a 7-seg display, another task is to store parameters in
Flash/EE. The refresh display function is called every 2.5ms. The
flash erase is called when the next flash page is not</description><dc:language>en-US</dc:language><generator>Telligent Community 10</generator><item><title>RE: Everything stops during flash/EE erase</title><link>https://community.arm.com/thread/77924?ContentTypeID=1</link><pubDate>Fri, 20 Nov 2009 04:37:38 GMT</pubDate><guid isPermaLink="false">dd9e70c8-6d3c-4c71-b136-2456382a7b5c:548fa6c0-b41d-45b9-b5d9-06fd201020d2</guid><dc:creator>Kristin Millwood</dc:creator><description>&lt;p&gt;&lt;p&gt;
The example program above is all running out of RAM, hence the
scatter file. What I am trying to achieve is running the essential
functions from RAM whilst the flash is erasing. At the moment it
isn&amp;#39;t. BTW the ERASE_PAGE is in the ADuc7021.h file and it is a
single erase.&lt;/p&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Everything stops during flash/EE erase</title><link>https://community.arm.com/thread/57280?ContentTypeID=1</link><pubDate>Thu, 19 Nov 2009 00:34:12 GMT</pubDate><guid isPermaLink="false">dd9e70c8-6d3c-4c71-b136-2456382a7b5c:e43fc918-3e2a-45ca-93ec-73357ae0ea47</guid><dc:creator>Christoph Franck</dc:creator><description>&lt;p&gt;&lt;p&gt;
&lt;i&gt;What am I missing?&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;
Is the program running out of flash memory? It may be possible
that accessing _any_ part of the flash memory is not possible during
an erase cycle (which, according to the chip documentation, takes
approximately 24ms).&lt;/p&gt;

&lt;p&gt;
I&amp;#39;m not familiar with the ADuC7021, but with the chip I use, the
CPU can still run out of RAM while the flash ROM is being erased. So
you might try to move all essential functions to RAM.&lt;/p&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Everything stops during flash/EE erase</title><link>https://community.arm.com/thread/57283?ContentTypeID=1</link><pubDate>Thu, 19 Nov 2009 00:09:27 GMT</pubDate><guid isPermaLink="false">dd9e70c8-6d3c-4c71-b136-2456382a7b5c:bb38030a-0e98-45f0-a5ae-9043509f9a0b</guid><dc:creator>Martin Unger</dc:creator><description>&lt;p&gt;&lt;p&gt;
Hello Kristin,&lt;/p&gt;

&lt;p&gt;
I did not run your code, but I have some things to mention which
may help:&lt;br /&gt;
First, do not start a new operation if flash is busy (check bit 0 in
FEESTA).&lt;/p&gt;

&lt;p&gt;
The definition of ERASE_PAGE is missing. There seem to be two
possibilities:&lt;br /&gt;
0x05 single erase&lt;br /&gt;
0x03 erase write&lt;br /&gt;
For erase write, the manual states that this operation takes 20ms. So
you may want to try the combination of single erase, continue to work
while flash is busy, followed by single write.&lt;/p&gt;

&lt;p&gt;
Additional notes:&lt;br /&gt;
The manual I looked at says FEE_ERASE_WRITE_EN enables an interrupt
on termination of the operation - seems you don&amp;#39;t use it. And keep in
mind flash wearing - do not write too often.&lt;/p&gt;

&lt;p&gt;
Regards&lt;/p&gt;

&lt;p&gt;
Martin&lt;/p&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>