<?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>Zephyr nRF52 flash driver</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/34962/zephyr-nrf52-flash-driver</link><description>I plan to use the flash device driver from Nordic (52840) in a Zephyr system. My plan is to use the &amp;lt;flash.h&amp;gt; api but it seams that this api is not available in a default configuration. 
 I have experimented with this parameters from the project:: 
 CONFIG_FLASH_NRF</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Fri, 08 Jun 2018 08:46:13 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/34962/zephyr-nrf52-flash-driver" /><item><title>RE: Zephyr nRF52 flash driver</title><link>https://devzone.nordicsemi.com/thread/135309?ContentTypeID=1</link><pubDate>Fri, 08 Jun 2018 08:46:13 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:5978d964-ba85-4d55-b201-5064f4af0465</guid><dc:creator>jlz</dc:creator><description>&lt;p&gt;I solved the issue with this hidden flag:&lt;/p&gt;
&lt;p&gt;CONFIG_MPU_ALLOW_FLASH_WRITE=y&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Zephyr nRF52 flash driver</title><link>https://devzone.nordicsemi.com/thread/135078?ContentTypeID=1</link><pubDate>Thu, 07 Jun 2018 08:06:56 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e2eec8cc-a2a3-47be-81b4-3e5c5c227143</guid><dc:creator>emdi</dc:creator><description>&lt;p&gt;You could try to run zephyr/samples/drivers/soc_flash_nrf to see if that is working and confirm whether it&amp;#39;s a problem with the driver or its use in your application.&amp;nbsp;As Vidar suggested though, you should try to ask on the Zephyr mailing list or IRC. The file you are debugging is indeed 100% part of Zephyr and not of the &amp;quot;Nordic device driver implementation&amp;quot; (I guess you meant nrfx).&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Zephyr nRF52 flash driver</title><link>https://devzone.nordicsemi.com/thread/134802?ContentTypeID=1</link><pubDate>Tue, 05 Jun 2018 18:56:01 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:ba44521c-8347-4b65-9176-ac38143133c6</guid><dc:creator>jlz</dc:creator><description>&lt;p&gt;this is the exception:&lt;/p&gt;
&lt;p&gt;______addr/line|code___________|label____|mnemonic________________|comment&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ST:00012D40|BDF0&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pop&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {r4-r7,pc}&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; 499|&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;&amp;nbsp;&amp;nbsp; nvmc_wait_ready();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ST:00012D42|F7FFFE37&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bl&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x129B4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; nvmc_wait_ready&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; 501|&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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UNALIGNED_GET((u32_t *)w_ctx-&amp;gt;data_addr);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ST:00012D46|6823&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r3,[r4]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ST:00012D48|681A&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r2,[r3]&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; 500|&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;&amp;nbsp;&amp;nbsp; *(u32_t *)w_ctx-&amp;gt;flash_addr =&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ST:00012D4A|6863&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r3,[r4,#0x4]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ST:00012D4C|601A______________________str_____r2,[r3]&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;&amp;nbsp; |&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;&amp;nbsp; |static void shift_write_context(u32_t shift, struct write_context *w_ctx)&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;&amp;nbsp; |{&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; 441|&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; w_ctx-&amp;gt;flash_addr += shift;&lt;/p&gt;
&lt;p&gt;and the register:&lt;/p&gt;
&lt;p&gt;N _&amp;nbsp; R0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp; R8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp; ^&lt;br /&gt;Z _&amp;nbsp; R1&amp;nbsp;&amp;nbsp; FFFFFFFF&amp;nbsp; R9&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;br /&gt;C C&amp;nbsp; R2&amp;nbsp;&amp;nbsp; 01020304&amp;nbsp; R10&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;br /&gt;V _&amp;nbsp; R3&amp;nbsp;&amp;nbsp; 00040000&amp;nbsp; R11&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;br /&gt;Q _&amp;nbsp; R4&amp;nbsp;&amp;nbsp; 20003D48&amp;nbsp; R12&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; R5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp; R13&amp;nbsp; 20003D18&lt;br /&gt;0 _&amp;nbsp; R6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp; R14&amp;nbsp; 00012D47&lt;br /&gt;1 _&amp;nbsp; R7&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0B7B&amp;nbsp; PC&amp;nbsp;&amp;nbsp; 00012D4C&lt;br /&gt;2 _&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; XPSR 21000000&lt;br /&gt;3 _&amp;nbsp; CONTROL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp; MSP&amp;nbsp; 200046E0&lt;br /&gt;4 _&amp;nbsp; FAULTMASK&amp;nbsp;&amp;nbsp; 0&amp;nbsp; PSP&amp;nbsp; 20003D18&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BASEPRI&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PRIMASK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;/p&gt;
&lt;p&gt;Looks ok, writing 0x01020304 to 0x40000. But I get exception. If I write t manually it works so no ASIC or NOR issue.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Zephyr nRF52 flash driver</title><link>https://devzone.nordicsemi.com/thread/134785?ContentTypeID=1</link><pubDate>Tue, 05 Jun 2018 15:50:19 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:500f73b4-ca32-4199-8b26-f92932174c36</guid><dc:creator>jlz</dc:creator><description>&lt;p&gt;Yes I know it must be 32-bit aligned so this i not the issue, the driver also check for this so you would get an error. Write can only lower bits so this is super clear and this goes for all NOR and NAND devices. I follow the write operation so I see that its writing to the erase block want and the data is not 0xFF.&lt;/p&gt;
&lt;p&gt;This is a test code and this is the what parameters are provided:&lt;/p&gt;
&lt;p&gt;-000|write_op(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; context = 0x20003D38)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp; w_ctx = 0x20003D38&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp; tmp_word = 0x19AB&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp; ticks_begin = 0x0&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp; i = 0x1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;-001|write(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp; ?,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp; ?,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp; ?)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp; context = (&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; data_addr = 0x20003D60,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; flash_addr = 0x00040000,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; len = 0x18,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; enable_time_limit = 0x0)&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;And the code exit on -&amp;gt; return FLASH_OP_DONE;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Zephyr nRF52 flash driver</title><link>https://devzone.nordicsemi.com/thread/134783?ContentTypeID=1</link><pubDate>Tue, 05 Jun 2018 15:29:11 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:0cf736e9-ccb2-4f16-a7a9-9d68b6d648f3</guid><dc:creator>Vidar Berg</dc:creator><description>&lt;p&gt;Hi,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Thanks for the update. I&amp;#39;ve started to look into this, but&amp;nbsp;takes time to get familiar with the code base.&amp;nbsp;Please&amp;nbsp;include flash related code snippets in your answer for reference.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;quot;I also mange to write to the device but only ones&amp;quot;.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;As you may know, the flash is all ones by default (i.e., after an erase). So are you certain that the flash was actually written to? Also worth noting is that flash writes must be word aligned. Writing to an unaligned address in flash will lead to a&amp;nbsp; fault exception.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Zephyr nRF52 flash driver</title><link>https://devzone.nordicsemi.com/thread/134778?ContentTypeID=1</link><pubDate>Tue, 05 Jun 2018 14:43:37 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:15f86646-c8e3-46c7-a277-c37e35145c70</guid><dc:creator>jlz</dc:creator><description>&lt;p&gt;I fixed the exception error by removing the UNALIGNED_GET() from write_op. Strange why this issue occur, any comments? I also mange to write to the device but only ones. I use flash_write_protection_set(flash_dev, false) but I cannot write to the device anymore. Read and Erase works and I do not get any errors back from the flash_write api.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Zephyr nRF52 flash driver</title><link>https://devzone.nordicsemi.com/thread/134573?ContentTypeID=1</link><pubDate>Mon, 04 Jun 2018 13:03:04 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:fffdd1d8-fa21-4bed-b672-d75f394ed65d</guid><dc:creator>jlz</dc:creator><description>&lt;p&gt;Sure, But this is not really a Zephyr component because it&amp;#39;s part of the Nordic device driver implementation. I do agree that CONFIG_ flags is part of Zephyr but the NOR driver is Nordic. I have not used Nordics NOR driver before so I&amp;#39;m not sure witch part needs to be configured from a default state. I can see a that the flash geometry is there but still exception error in write_op().&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Zephyr nRF52 flash driver</title><link>https://devzone.nordicsemi.com/thread/134536?ContentTypeID=1</link><pubDate>Mon, 04 Jun 2018 11:44:39 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e2ddf9bb-9eb0-4968-8c12-533bff91fad2</guid><dc:creator>Vidar Berg</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;Can you instead send this question to the Zephyr mailing list?&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://lists.zephyrproject.org/g/users"&gt;https://lists.zephyrproject.org/g/users&lt;/a&gt;.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I can look into this if not, but it will probably take longer time.&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Zephyr nRF52 flash driver</title><link>https://devzone.nordicsemi.com/thread/134327?ContentTypeID=1</link><pubDate>Fri, 01 Jun 2018 10:31:29 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:2437c3f9-c8bc-4bf8-a0c7-3591ca748601</guid><dc:creator>jlz</dc:creator><description>&lt;p&gt;I now have the flash_dev working. I now use this configuration flags.&lt;/p&gt;
&lt;p&gt;CONFIG_FLASH=y&lt;br /&gt;CONFIG_SOC_FLASH_NRF=y&lt;br /&gt;CONFIG_FLASH_HAS_DRIVER_ENABLED=y&lt;/p&gt;
&lt;p&gt;But the configuration is not fully configured. Still get exception error when the driver executes write_op().&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>