<?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>Minimalist Bootloader S110</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/6027/minimalist-bootloader-s110</link><description>Background : 
 I&amp;#39;m working with an nRF51822-EK development board. We&amp;#39;re working on a project implementing the S110 soft device. We need to create a minimalist Bootloader. All we want to do is implement our own proprietary serial (UART) protocol to erase</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Mon, 16 Mar 2015 12:52:33 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/6027/minimalist-bootloader-s110" /><item><title>RE: Minimalist Bootloader S110</title><link>https://devzone.nordicsemi.com/thread/21072?ContentTypeID=1</link><pubDate>Mon, 16 Mar 2015 12:52:33 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:3bc0b248-1a77-4459-acce-385890ee0624</guid><dc:creator>Mostly Harmless</dc:creator><description>&lt;p&gt;Yup.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;const unsigned long UICR_ADDR_0x14 @ (NRF_UICR_BASE  + 0x14) = FLASH_BOOTLOADER_START_ADDRESS;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;FLASH_BOOTLOADER_START_ADDRESS is defined in another file as 0x1A000.  It&amp;#39;s looking like the answer to this question is that the chip itself had an issue.  This one could probably be closed out.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Minimalist Bootloader S110</title><link>https://devzone.nordicsemi.com/thread/21071?ContentTypeID=1</link><pubDate>Mon, 16 Mar 2015 12:43:42 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:3514ec5c-a320-43cc-954a-b125ef7432c8</guid><dc:creator>Hung Bui</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;I assume that you have written in UICR at address NRF_UICR_BASE + 0x14 the address of your bootloader: 0x1A000. Note that if there is nothing written at that address, the interrupt will be  forwarded to the softdevice instead of the bootloader.&lt;/p&gt;
&lt;p&gt;Have you tried erasing&amp;amp;writing with nrfjprog.exe ?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Minimalist Bootloader S110</title><link>https://devzone.nordicsemi.com/thread/21070?ContentTypeID=1</link><pubDate>Fri, 13 Mar 2015 15:24:44 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:216ac56b-c6f8-4d42-878d-7f28356169c4</guid><dc:creator>Mostly Harmless</dc:creator><description>&lt;p&gt;HB, sorry, I&amp;#39;m new to your forum.  I meant my comment to be a response to yours. I&amp;#39;m not flashing my application to 0x00000000. I&amp;#39;m flashing the soft device to 0x00000000.  As I said, I had this working before. My application is going in at 0x1A000.  I&amp;#39;ve swapped out my Evaluation Board for a different Evaluation Board of the same type.  So far, so good.  I flashed in the v7.0.0 s100 soft device, and am using the v6.1.0 SDK.  It looks like I&amp;#39;m back to where I was before all this started.  I&amp;#39;m not exactly sure what happened.  It appears that the nRF chip may have gone toes up during a re-flash of the part?  Strange coincidence if so. We&amp;#39;re going to swap the nRF chip out and retry the board to see if it&amp;#39;s him or the Segger chip (or possibly something else wrong with the board).&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Minimalist Bootloader S110</title><link>https://devzone.nordicsemi.com/thread/21069?ContentTypeID=1</link><pubDate>Fri, 13 Mar 2015 15:16:06 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:af6a30bd-3e8a-49f2-8b8a-ca2ae5a4f2f0</guid><dc:creator>Hung Bui</dc:creator><description>&lt;p&gt;@Harmless: Next time please edit your question to add more information instead of creating an answer, because it&amp;#39;s not an answer.
Address 0x00000 is where the softdevice located, the application should not be programmed there. If you are using S110 v7.x you would need to locate your application at address 0x16000. In KEIL it&amp;#39;s the IROM1 start address configuration.&lt;/p&gt;
&lt;p&gt;Also you would need to flash the softdevice before you program your application.
What you described with Jlink is pretty strange, have you tried to use our nrfjprog.exe tool to flash the hex and also can read/write on the flash ?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Minimalist Bootloader S110</title><link>https://devzone.nordicsemi.com/thread/21068?ContentTypeID=1</link><pubDate>Fri, 13 Mar 2015 13:54:53 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:ea7c47fd-5e70-4b81-ad4a-2ff7f8c8c855</guid><dc:creator>Mostly Harmless</dc:creator><description>&lt;p&gt;Thanks for the response, HB.  I&amp;#39;m aware of the differences between the different soft devices.  I&amp;#39;ve made sure to copy the appropriate APIs for each version I&amp;#39;ve downloaded.&lt;/p&gt;
&lt;p&gt;So here&amp;#39;s some more info from this morning.  I decided to try an example application.  I chose the S110 Beacon example.  (nrf51822\Board\pca10001\s110\ble_app_beacon)  After getting the example to compile, I received an error when downloading to the evaluation board.  (Programming failed @ Address 0x00000000 (Block Verification Error)).&lt;/p&gt;
&lt;p&gt;Using J-Link Commander, I erased the chip again.  As shown in the attached image &amp;quot;Erase&amp;quot; (&lt;a href="https://devzone.nordicsemi.com/cfs-file/__key/communityserver-discussions-components-files/4/Erase.png"&gt;Erase.png&lt;/a&gt;) the mem command shows the device is erased.  I unplugged the evaluation board from the USB cable, plugged it back in, reconnected with J-Link Commander and dumped the first 0x200 bytes again, shown in attached image &amp;quot;Reset&amp;quot; (&lt;a href="https://devzone.nordicsemi.com/cfs-file/__key/communityserver-discussions-components-files/4/Reset.png"&gt;Reset.png&lt;/a&gt;). They&amp;#39;re not erased any more.  The data looks like garbage too.  This process can be repeated over and over.&lt;/p&gt;
&lt;p&gt;I&amp;#39;ll continue working on this.  I&amp;#39;m definitely open to other suggestions.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Minimalist Bootloader S110</title><link>https://devzone.nordicsemi.com/thread/21067?ContentTypeID=1</link><pubDate>Fri, 13 Mar 2015 13:38:40 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:1d5b68dd-d649-442e-bdb4-347be1cfaae5</guid><dc:creator>Hung Bui</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;I don&amp;#39;t think writing and erasing the chip can cause any damage (except if you wear it out with 20.000 erase-write cycles).
Note that there are differences between S120 and S110 in term of API and the MBR.
S110 v6.x doesn&amp;#39;t have an MBR to support softdevice update. The API header files are also differents.
S110 v7.x has the MBR and is closer to S120 but not the same, so you need to update the API header files.&lt;/p&gt;
&lt;p&gt;I would suggest you to test by simply flash a S110 v7.x softdevice and then flash a normal example we provided in our SDK just to make sure the chip is working fine.&lt;/p&gt;
&lt;p&gt;You can try to use S110 v8.0 which has the same APIs list as the S120 v2.0. However it&amp;#39;s aimed at chip version 3. If you use chip version 2 you would need to call the option api to enable CPU lookup when softdevice is active.&lt;/p&gt;
&lt;p&gt;Please be aware that we do provide an UART bootloader in our SDK v7.x that works with S110 v7.x&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>