<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://devzone.nordicsemi.com/cfs-file/__key/system/syndication/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/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>sometime fds_gc() does not call the user handler.</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/37791/sometime-fds_gc-does-not-call-the-user-handler</link><description>Hi, 
 I use the FDS on our project firmware. The firmware saves some configurations to FDS at shutdown and the factory reset. At this time, sometime fds_gc() does not call the user handler. (freq = 3/100) 
 Are there some known bugs? or Do you know any</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Mon, 03 Sep 2018 01:26:15 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/37791/sometime-fds_gc-does-not-call-the-user-handler" /><item><title>RE: sometime fds_gc() does not call the user handler.</title><link>https://devzone.nordicsemi.com/thread/146863?ContentTypeID=1</link><pubDate>Mon, 03 Sep 2018 01:26:15 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:3ce66271-b5fc-440f-979d-c1a69a3febb0</guid><dc:creator>masataka hasegawa</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;I checked&amp;nbsp;modules/nrfx/mdk/system_nrf52.c&lt;span&gt;,&lt;br /&gt;and I found the workaround code of errata 108.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt; if (errata_108()){&lt;br /&gt;&amp;nbsp; &amp;nbsp; *(volatile uint32_t *)0x40000EE4 = *(volatile uint32_t *)0x10000258 &amp;amp; 0x0000004F;&lt;br /&gt; }&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;And we are discussing Zou-san.&lt;br /&gt;We are trying to reproduce it at simple projects.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Thanks,&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: sometime fds_gc() does not call the user handler.</title><link>https://devzone.nordicsemi.com/thread/146259?ContentTypeID=1</link><pubDate>Wed, 29 Aug 2018 09:19:29 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:38ee0a89-33ca-42f2-81b8-882402d8985e</guid><dc:creator>Kenneth</dc:creator><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;From my understand you have also been in contact with my colleague Zou-san. We are not able to recreate your issue at the moment.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;We&amp;nbsp;will need a&amp;nbsp;(simplified test)&amp;nbsp;project from you that we can run on a nRF52840-DK to recreate your issue here, can you please arrange that for us?&lt;/p&gt;
&lt;p&gt;Our FreeRTOS expert is back on Monday, he can look at your project then.&amp;nbsp;Also please&amp;nbsp;send us your system_nrf52.c file in your project so we can check that you have a workaround for errata_108().&lt;/p&gt;
&lt;p&gt;Best regards,&lt;br /&gt;Kenneth&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: sometime fds_gc() does not call the user handler.</title><link>https://devzone.nordicsemi.com/thread/146195?ContentTypeID=1</link><pubDate>Wed, 29 Aug 2018 01:38:52 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:f5ffaf71-9088-490e-88cc-f605db5df08d</guid><dc:creator>masataka hasegawa</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;Yes, I know the meaning of NRF_ERROR_BUSY.&lt;br /&gt;My experiment is below.&lt;/p&gt;
&lt;p&gt;1. our firmware calls fds_gc.&lt;br /&gt;2. fds_gc calls some fstorage APIs.&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;:&lt;br /&gt;3. fds_gc calls sd_flash_write.&lt;br /&gt;4. no event and no call user handler.&lt;br /&gt;5. check timeout.&lt;br /&gt;6. if timeout is detected, f/w calls event handler itself.&lt;br /&gt;7. fds_gc goes to next step.&lt;br /&gt;8. fds_gc calls some sd APIs (sd_flash_write...)&lt;br /&gt;9. sd_flash_write return NRF_ERROR_BUSY.&lt;/p&gt;
&lt;p&gt;1 ~ 4, 7 ~ 9 = original SDK code&lt;br /&gt;5, 6, = added my experiment code&lt;/p&gt;
&lt;p&gt;This result means that sd_flash_write of No 3 have not complete.&lt;/p&gt;
&lt;p&gt;Thanks,&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: sometime fds_gc() does not call the user handler.</title><link>https://devzone.nordicsemi.com/thread/146143?ContentTypeID=1</link><pubDate>Tue, 28 Aug 2018 13:52:14 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:1a71280b-d593-4803-ac84-fd63b58b804b</guid><dc:creator>Kenneth</dc:creator><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;* @retval ::NRF_ERROR_BUSY&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;The previous command has not yet completed.&lt;/p&gt;
&lt;p&gt;This means that there is already an on-going flash operation, you will have to wait until&amp;nbsp;NRF_EVT_FLASH_OPERATION_SUCCESS or&amp;nbsp;NRF_EVT_FLASH_OPERATION_ERROR events and try again.&lt;/p&gt;
&lt;p&gt;There is no way to reset the flash module in the softdevice no.&lt;/p&gt;
&lt;p&gt;Best regards,&lt;br /&gt;Kenneth&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: sometime fds_gc() does not call the user handler.</title><link>https://devzone.nordicsemi.com/thread/146074?ContentTypeID=1</link><pubDate>Tue, 28 Aug 2018 09:49:29 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:75f2ad26-8e73-4338-9fb3-317b0bb2d4ea</guid><dc:creator>masataka hasegawa</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;I want to reset flash module in softdevice.&lt;br /&gt;Are there the reset API in softdevice?&lt;/p&gt;
&lt;p&gt;Thanks,&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: sometime fds_gc() does not call the user handler.</title><link>https://devzone.nordicsemi.com/thread/146062?ContentTypeID=1</link><pubDate>Tue, 28 Aug 2018 09:07:20 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:9fdc9027-fd5a-4547-bda3-bfe8b1dab8c9</guid><dc:creator>masataka hasegawa</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;I added debug code (detect timeout and retry sd_flash_write.)&lt;br /&gt;sd_flash_write returns NRF_ERROR_BUSY.&lt;/p&gt;
&lt;p&gt;Thanks,&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: sometime fds_gc() does not call the user handler.</title><link>https://devzone.nordicsemi.com/thread/146023?ContentTypeID=1</link><pubDate>Tue, 28 Aug 2018 05:36:58 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:47856af0-8d57-4897-b393-33fa472197a3</guid><dc:creator>masataka hasegawa</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;I am using SDK15.&lt;br /&gt;and My projects is based on ANCS example.&lt;/p&gt;
&lt;p&gt;Thanks,&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: sometime fds_gc() does not call the user handler.</title><link>https://devzone.nordicsemi.com/thread/145908?ContentTypeID=1</link><pubDate>Mon, 27 Aug 2018 11:23:23 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:34ce6dfb-502f-4d04-9311-01ea411f8977</guid><dc:creator>Kenneth</dc:creator><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;Can you provide which SDK you are using? For instance is it nRF5 SDK v14.2? That will help me find internally if there are any known issues.&lt;/p&gt;
&lt;p&gt;Best regards,&lt;br /&gt;Kenneth&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: sometime fds_gc() does not call the user handler.</title><link>https://devzone.nordicsemi.com/thread/145799?ContentTypeID=1</link><pubDate>Mon, 27 Aug 2018 04:33:17 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:7ca8ef16-4ca5-4912-97b7-abeeabdd0541</guid><dc:creator>masataka hasegawa</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;I added log code and followings&amp;nbsp; is the log.&lt;/p&gt;
&lt;p&gt;call fds_record_delete().&lt;br /&gt;&amp;gt; delete_execute()&lt;br /&gt;&amp;gt; sd_flash_write(0x000fea20, 0x00000001)&lt;br /&gt;&amp;gt; destination flash value = 0x00240051 (not 0xFFFFFFFF)&lt;br /&gt;result == FDS_OP_EXECUTING&lt;/p&gt;
&lt;p&gt;&amp;gt; nrf_fstorage_sys_evt_handler()&lt;br /&gt;&amp;gt; fs_event_handler()&lt;br /&gt;&amp;gt; delete_execute()&lt;br /&gt;call fds_record_write().&lt;br /&gt;&amp;gt; write_execute()&lt;br /&gt;&amp;gt; sd_flash_write(0x000fbf0c, 0x00000001)&lt;br /&gt;&amp;gt; destination flash value = 0xffffffff&lt;br /&gt;result == FDS_OP_EXECUTING&lt;/p&gt;
&lt;p&gt;&amp;gt; nrf_fstorage_sys_evt_handler()&lt;br /&gt;&amp;gt; fs_event_handler()&lt;br /&gt;&amp;gt; write_execute()&lt;br /&gt;result == FDS_OP_EXECUTING&lt;br /&gt;&amp;gt; sd_flash_write(0x000fbf14, 0x00000001)&lt;br /&gt;&amp;gt; destination flash value = 0xffffffff&lt;/p&gt;
&lt;p&gt;&amp;gt; nrf_fstorage_sys_evt_handler()&lt;br /&gt;&amp;gt; fs_event_handler()&lt;br /&gt;&amp;gt; write_execute()&lt;br /&gt;result == FDS_OP_EXECUTING&lt;br /&gt;&amp;gt; sd_flash_write(0x000fbf18, 0x00000024)&lt;br /&gt;&amp;gt; destination flash value = 0xffffffff&lt;/p&gt;
&lt;p&gt;&amp;gt; nrf_fstorage_sys_evt_handler()&lt;br /&gt;&amp;gt; fs_event_handler()&lt;br /&gt;&amp;gt; write_execute()&lt;br /&gt;result == FDS_OP_EXECUTING&lt;br /&gt;&amp;gt; sd_flash_write(0x000fbf10, 0x00000001)&lt;br /&gt;&amp;gt; destination flash value = 0xffffffff&lt;/p&gt;
&lt;p&gt;&amp;gt; nrf_fstorage_sys_evt_handler()&lt;br /&gt;&amp;gt; fs_event_handler()&lt;br /&gt;&amp;gt; write_execute()&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;call fds_record_delete().&lt;br /&gt;&amp;gt; delete_execute()&lt;br /&gt;&amp;gt; sd_flash_write(0x000feabc, 0x00000001)&lt;br /&gt;&amp;gt; destination flash value = 0x00ad0002 (not 0xFFFFFFFF)&lt;br /&gt;result == FDS_OP_EXECUTING&lt;/p&gt;
&lt;p&gt;&amp;gt; nrf_fstorage_sys_evt_handler()&lt;br /&gt;&amp;gt; fs_event_handler()&lt;br /&gt;&amp;gt; delete_execute()&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;call fds_record_write().&lt;br /&gt;call fds_gc().&lt;br /&gt;&amp;gt; gc_execute()&lt;br /&gt;&amp;gt; gc_init()&lt;br /&gt;&amp;gt; gc_next_page();&lt;br /&gt;&amp;gt; sd_flash_write(0x000ff008, 0x00000 093)&lt;br /&gt;&amp;gt; destination flash value = 0xffffffff&lt;br /&gt;result == FDS_OP_EXECUTING&lt;/p&gt;
&lt;p&gt;&amp;gt; nrf_fstorage_sys_evt_handler()&lt;br /&gt;&amp;gt; fs_event_handler()&lt;br /&gt;&amp;gt; gc_execute()&lt;br /&gt;&amp;gt; gc_update_swap_offset()&lt;br /&gt;&amp;gt; gc_record_find_next()&lt;br /&gt;result == FDS_OP_EXECUTING&lt;br /&gt;&amp;gt; sd_flash_page_erase(0xfe)&lt;/p&gt;
&lt;p&gt;&amp;gt; nrf_fstorage_sys_evt_handler()&lt;br /&gt;&amp;gt; fs_event_handler()&lt;br /&gt;&amp;gt; gc_execute()&lt;br /&gt;&amp;gt; gc_swap_pages()&lt;br /&gt;&amp;gt; gc_swap_promote()&lt;br /&gt;result == FDS_OP_EXECUTING&lt;br /&gt;&amp;gt; sd_flash_write(0x000ff000, 0x00000002)&lt;br /&gt;&amp;gt; destination flash value = 0xdeadc0de (not 0xFFFFFFFF)&lt;/p&gt;
&lt;p&gt;&amp;gt; nrf_fstorage_sys_evt_handler()&lt;br /&gt;&amp;gt; fs_event_handler()&lt;br /&gt;&amp;gt; gc_execute()&lt;br /&gt;&amp;gt; case GC_PROMOTE_SWAP: m_gc.state = GC_TAG_NEW_SWAP;&lt;br /&gt;&amp;gt; gc_tag_new_swap()&lt;br /&gt;result == FDS_OP_EXECUTING&lt;br /&gt;&amp;gt; sd_flash_write(0x000fe000, 0x00000002)&lt;br /&gt;&amp;gt; destination flash value = 0xffffffff&lt;/p&gt;
&lt;p&gt;&amp;gt; nrf_fstorage_sys_evt_handler()&lt;br /&gt;&amp;gt; fs_event_handler()&lt;br /&gt;&amp;gt; gc_execute()&lt;br /&gt;&amp;gt; change m_gc.state = GC_NEXT_PAGE&lt;br /&gt;&amp;gt; gc_next_page()&lt;br /&gt;result == FDS_OP_EXECUTING&lt;br /&gt;&amp;gt; sd_flash_write(0x000fe008, 0x000000B0)&lt;br /&gt;&amp;gt; destination flash value = 0xffffffff&lt;/p&gt;
&lt;p&gt;&amp;gt; nrf_fstorage_sys_evt_handler()&lt;br /&gt;&amp;gt; fs_event_handler()&lt;br /&gt;&amp;gt; gc_execute()&lt;br /&gt;&amp;gt; gc_update_swap_offset()&lt;br /&gt;&amp;gt; gc_record_find_next()&lt;br /&gt;result == FDS_OP_EXECUTING&lt;br /&gt;&amp;gt; sd_flash_write(0x000fe2c8, 0x000000C5)&lt;br /&gt;&amp;gt; destination flash value = 0xffffffff&lt;/p&gt;
&lt;p&gt;&amp;gt; nrf_fstorage_sys_evt_handler()&lt;br /&gt;&amp;gt; fs_event_handler()&lt;br /&gt;&amp;gt; gc_execute()&lt;br /&gt;&amp;gt; gc_update_swap_offset()&lt;br /&gt;&amp;gt; gc_record_find_next()&lt;br /&gt;result == FDS_OP_EXECUTING&lt;br /&gt;&amp;gt; sd_flash_write(0x000fe5dc, 0x00000093)&lt;br /&gt;&amp;gt; destination flash value = 0xffffffff&lt;/p&gt;
&lt;p&gt;&amp;gt; nrf_fstorage_sys_evt_handler()&lt;br /&gt;&amp;gt; fs_event_handler()&lt;br /&gt;&amp;gt; gc_execute()&lt;br /&gt;&amp;gt; gc_update_swap_offset()&lt;br /&gt;&amp;gt; gc_record_find_next()&lt;br /&gt;result == FDS_OP_EXECUTING&lt;br /&gt;&amp;gt; sd_flash_write(0x000fe828, 0x00000093)&lt;br /&gt;&amp;gt; destination flash value = 0xffffffff&lt;/p&gt;
&lt;p&gt;&amp;gt; nrf_fstorage_sys_evt_handler()&lt;br /&gt;&amp;gt; fs_event_handler()&lt;br /&gt;&amp;gt; gc_execute()&lt;br /&gt;&amp;gt; gc_update_swap_offset()&lt;br /&gt;&amp;gt; gc_record_find_next()&lt;br /&gt;result == FDS_OP_EXECUTING&lt;br /&gt;&amp;gt; sd_flash_write(0x000fea74, 0x00000093)&lt;br /&gt;&amp;gt; destination flash value = 0xffffffff&lt;/p&gt;
&lt;p&gt;&amp;gt; nrf_fstorage_sys_evt_handler()&lt;br /&gt;&amp;gt; fs_event_handler()&lt;br /&gt;&amp;gt; gc_execute()&lt;br /&gt;&amp;gt; gc_update_swap_offset()&lt;br /&gt;&amp;gt; gc_record_find_next()&lt;br /&gt;result == FDS_OP_EXECUTING&lt;br /&gt;&amp;gt; sd_flash_write(0x000fecc0, 0x00000093)&lt;br /&gt;&amp;gt; destination flash value = 0xffffffff&lt;/p&gt;
&lt;p&gt;&amp;gt; nrf_fstorage_sys_evt_handler()&lt;br /&gt;&amp;gt; fs_event_handler()&lt;br /&gt;&amp;gt; gc_execute()&lt;br /&gt;&amp;gt; gc_update_swap_offset()&lt;br /&gt;&amp;gt; gc_record_find_next()&lt;br /&gt;result == FDS_OP_EXECUTING&lt;br /&gt;&amp;gt; sd_flash_write(0x000fef0c, 0x0000009c)&lt;br /&gt;&amp;gt; destination flash value = 0xffffffff&lt;/p&gt;
&lt;p&gt;&amp;gt; nrf_fstorage_sys_evt_handler()&lt;br /&gt;&amp;gt; fs_event_handler()&lt;br /&gt;&amp;gt; gc_execute()&lt;br /&gt;&amp;gt; gc_update_swap_offset()&lt;br /&gt;&amp;gt; gc_record_find_next()&lt;br /&gt;result == FDS_OP_EXECUTING&lt;br /&gt;&amp;gt; sd_flash_page_erase(0xfb)&lt;/p&gt;
&lt;p&gt;&amp;gt; nrf_fstorage_sys_evt_handler()&lt;br /&gt;&amp;gt; fs_event_handler()&lt;br /&gt;&amp;gt; gc_execute()&lt;br /&gt;&amp;gt; gc_swap_pages()&lt;br /&gt;&amp;gt; gc_swap_promote()&lt;br /&gt;result == FDS_OP_EXECUTING&lt;br /&gt;&amp;gt; sd_flash_write(0x000fe000, 0x00000002)&lt;br /&gt;&amp;gt; destination flash value = 0xdeadc0de (not 0xFFFFFFFF)&lt;/p&gt;
&lt;p&gt;&amp;gt; nrf_fstorage_sys_evt_handler()&lt;br /&gt;&amp;gt; fs_event_handler()&lt;br /&gt;&amp;gt; gc_execute()&lt;br /&gt;&amp;gt; case GC_PROMOTE_SWAP: m_gc.state = GC_TAG_NEW_SWAP;&lt;br /&gt;&amp;gt; gc_tag_new_swap()&lt;br /&gt;result == FDS_OP_EXECUTING&lt;br /&gt;&amp;gt; sd_flash_write(0x000fb000, 0x00000002)&lt;br /&gt;&amp;gt; destination flash value = 0xffffffff&lt;/p&gt;
&lt;p&gt;&amp;gt; nrf_fstorage_sys_evt_handler()&lt;br /&gt;&amp;gt; fs_event_handler()&lt;br /&gt;&amp;gt; gc_execute()&lt;br /&gt;&amp;gt; change m_gc.state = GC_NEXT_PAGE&lt;br /&gt;&amp;gt; gc_next_page()&lt;br /&gt;result == FDS_OP_EXECUTING&lt;br /&gt;&amp;gt; sd_flash_write(0x000fb008, 0x000000B0)&lt;br /&gt;&amp;gt; destination flash value = 0xffffffff&lt;/p&gt;
&lt;p&gt;&amp;gt; nrf_fstorage_sys_evt_handler()&lt;br /&gt;&amp;gt; fs_event_handler()&lt;br /&gt;&amp;gt; gc_execute()&lt;br /&gt;&amp;gt; gc_update_swap_offset()&lt;br /&gt;&amp;gt; gc_record_find_next()&lt;br /&gt;result == FDS_OP_EXECUTING&lt;br /&gt;&amp;gt; sd_flash_write(0x000fb2c8, 0x00000093)&lt;br /&gt;&amp;gt; destination flash value = 0xffffffff&lt;/p&gt;
&lt;p&gt;&amp;gt; nrf_fstorage_sys_evt_handler()&lt;br /&gt;&amp;gt; fs_event_handler()&lt;br /&gt;&amp;gt; gc_execute()&lt;br /&gt;&amp;gt; gc_update_swap_offset()&lt;br /&gt;&amp;gt; gc_record_find_next()&lt;br /&gt;result == FDS_OP_EXECUTING&lt;br /&gt;&amp;gt; sd_flash_page_erase(0xfc)&lt;/p&gt;
&lt;p&gt;&amp;gt; nrf_fstorage_sys_evt_handler()&lt;br /&gt;&amp;gt; fs_event_handler()&lt;br /&gt;&amp;gt; gc_execute()&lt;br /&gt;&amp;gt; gc_swap_pages()&lt;br /&gt;&amp;gt; gc_swap_promote()&lt;br /&gt;result == FDS_OP_EXECUTING&lt;br /&gt;&amp;gt; sd_flash_write(0x000fb000, 0x00000002)&lt;br /&gt;&amp;gt; destination flash value = 0xdeadc0de (not 0xFFFFFFFF)&lt;/p&gt;
&lt;p&gt;&amp;gt; nrf_fstorage_sys_evt_handler()&lt;br /&gt;&amp;gt; fs_event_handler()&lt;br /&gt;&amp;gt; gc_execute()&lt;br /&gt;&amp;gt; case GC_PROMOTE_SWAP: m_gc.state = GC_TAG_NEW_SWAP;&lt;br /&gt;&amp;gt; gc_tag_new_swap()&lt;br /&gt;result == FDS_OP_EXECUTING&lt;br /&gt;&amp;gt; sd_flash_write(0x000fc000, 0x00000002)&lt;br /&gt;&amp;gt; destination flash value = 0xffffffff&lt;/p&gt;
&lt;p&gt;&amp;gt; nrf_fstorage_sys_evt_handler()&lt;br /&gt;&amp;gt; fs_event_handler()&lt;br /&gt;&amp;gt; gc_execute()&lt;br /&gt;&amp;gt; change m_gc.state = GC_NEXT_PAGE&lt;br /&gt;&amp;gt; gc_next_page()&lt;br /&gt;result == FDS_OP_EXECUTING&lt;br /&gt;&amp;gt; sd_flash_write(0x000fc008, 0x00000093)&lt;br /&gt;&amp;gt; destination flash value = 0xffffffff&lt;/p&gt;
&lt;p&gt;&amp;gt; nrf_fstorage_sys_evt_handler()&lt;br /&gt;&amp;gt; fs_event_handler()&lt;br /&gt;&amp;gt; gc_execute()&lt;br /&gt;&amp;gt; gc_update_swap_offset()&lt;br /&gt;&amp;gt; gc_record_find_next()&lt;br /&gt;result == FDS_OP_EXECUTING&lt;br /&gt;&amp;gt; sd_flash_page_erase(0xfd)&lt;/p&gt;
&lt;p&gt;&amp;gt; nrf_fstorage_sys_evt_handler()&lt;br /&gt;&amp;gt; fs_event_handler()&lt;br /&gt;&amp;gt; gc_execute()&lt;br /&gt;&amp;gt; gc_swap_pages()&lt;br /&gt;&amp;gt; gc_swap_promote()&lt;br /&gt;result == FDS_OP_EXECUTING&lt;br /&gt;&amp;gt; sd_flash_write(0x000fc000, 0x00000002)&lt;br /&gt;&amp;gt; destination flash value = 0xdeadc0de (not 0xFFFFFFFF)&lt;/p&gt;
&lt;p&gt;&amp;gt; nrf_fstorage_sys_evt_handler()&lt;br /&gt;&amp;gt; fs_event_handler()&lt;br /&gt;&amp;gt; gc_execute()&lt;br /&gt;&amp;gt; case GC_PROMOTE_SWAP: m_gc.state = GC_TAG_NEW_SWAP;&lt;br /&gt;&amp;gt; gc_tag_new_swap()&lt;br /&gt;result == FDS_OP_EXECUTING&lt;br /&gt;&amp;gt; sd_flash_write(0x000fd000, 0x00000002)&lt;br /&gt;&amp;gt; destination flash value = 0xffffffff&lt;/p&gt;
&lt;p&gt;no nrf_fstorage_sys_evt_handler() event of sd_flash_write !!!&lt;/p&gt;
&lt;p&gt;Thanks,&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>