<?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>Download firmware over BLE for another MCU</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/29028/download-firmware-over-ble-for-another-mcu</link><description>Hi, 
 I&amp;#39;ve a custom board which has NRF51822 SOC and STM32 SOC. These two are connected over UART. In past I&amp;#39;ve successfully performed DFU OTA (BLE) for nrf51822 MCU, and now I&amp;#39;d like to use the nrf51 to download firmware over BLE for this other SOC</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Sun, 21 Jan 2018 12:13:18 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/29028/download-firmware-over-ble-for-another-mcu" /><item><title>RE: Download firmware over BLE for another MCU</title><link>https://devzone.nordicsemi.com/thread/114894?ContentTypeID=1</link><pubDate>Sun, 21 Jan 2018 12:13:18 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:9ec4d00d-e717-486c-bfa4-59325a8743f1</guid><dc:creator>John</dc:creator><description>&lt;p&gt;Hi Ben,&lt;/p&gt;
&lt;p&gt;In my case we are sending the raw binary. I actually run the hex produced by the XC16 compiler through a tool we wrote to convert it to binary. We needed a custom tool to strip the &amp;quot;phantom&amp;quot; bytes stuffed by the compiler due to the PIC24s 24 bit addressing scheme. We have two cases. Some of our devices accept a small data packet that contains the start address of the binary and other information. The other case is simpler and the start address where the binary should be programmed to is known and hard coded. Obviously this is less flexible.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Download firmware over BLE for another MCU</title><link>https://devzone.nordicsemi.com/thread/114893?ContentTypeID=1</link><pubDate>Sun, 21 Jan 2018 08:22:17 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:73ffe586-a287-46b7-ae16-0561cf41d2c1</guid><dc:creator>Ben</dc:creator><description>&lt;p&gt;Hi,
I was reading this thread with interest.
My question relates to technique with which the Central (mobile app for iPhone in my case) can send data to the nRF peripheral.
Based on reply:
&amp;quot;The central device would send the new PIC24 binary down in 20 byte packets which were sent over the UART to the PIC24.&amp;quot;
Is this raw binary or is the binary is hex or some such format? Clearly the address needs to be sent besides the bytes themselves. If just just the binary is sent how will the addressing be encoded?
Thanks
Ben&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Download firmware over BLE for another MCU</title><link>https://devzone.nordicsemi.com/thread/114885?ContentTypeID=1</link><pubDate>Tue, 03 Oct 2017 20:06:34 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:86bac54f-85cf-4ab7-a36f-56fbd132de60</guid><dc:creator>John</dc:creator><description>&lt;p&gt;Do you have enough free program space on the nRF5x to use as a scratch area to save the other MCU&amp;#39;s image? That could take the place of an external EEPROM. Some other ideas can be found in the nRF5x bootloader, particularly the single bank implementation. You could CRC your new image in chunks as you transfer it and burn it into the other MCU. You could also implement some of the features that make the nRF bootloaders able to resume after encountering disconnects etc.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Download firmware over BLE for another MCU</title><link>https://devzone.nordicsemi.com/thread/114884?ContentTypeID=1</link><pubDate>Tue, 03 Oct 2017 19:49:13 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:043c0d71-bee3-446a-8d79-716f0c66d665</guid><dc:creator>Harshil</dc:creator><description>&lt;p&gt;Lets say you dont have an EEPROM to save the image received from the nrfx UART...in that case what to do? I have a feeling its not possible in that case but I still wanna ask...&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Download firmware over BLE for another MCU</title><link>https://devzone.nordicsemi.com/thread/114892?ContentTypeID=1</link><pubDate>Mon, 13 Mar 2017 06:52:07 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:713cf6ea-434f-4a15-9753-5f664c2c1e69</guid><dc:creator>dc</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;I want to OTA firmware upgrade of STM32 (External MCU) using nRF51 through Android App on BLE. STM32 and nRF51 communicate on UART.&lt;/p&gt;
&lt;p&gt;Please any one suggests how to use nRF connect or Master Control Panel for that. please provide steps if available.&lt;/p&gt;
&lt;p&gt;As per my knowledge I just need to browse STM32 bin file. Android app detect that file and divided that file into 20 bytes of multiple packets and send one by one. I want this communication with ACK. Android app sending second packet only after getting first packet ACK from Device. like that.&lt;/p&gt;
&lt;p&gt;I need android app that do it. is it possible with  nRF connect or Master Control Panel?  or Do i need to make custom android app?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Download firmware over BLE for another MCU</title><link>https://devzone.nordicsemi.com/thread/114879?ContentTypeID=1</link><pubDate>Thu, 28 Jul 2016 12:22:13 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:ce6414b1-3b98-4841-9372-87970adb70e0</guid><dc:creator>John</dc:creator><description>&lt;p&gt;Congratulations!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Download firmware over BLE for another MCU</title><link>https://devzone.nordicsemi.com/thread/114890?ContentTypeID=1</link><pubDate>Fri, 10 Jun 2016 12:15:49 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:aeb89770-e242-4c1f-92bb-41bf36f21f13</guid><dc:creator>John</dc:creator><description>&lt;p&gt;Yes, that should be fine. As long as you adhere to what the MCP wants to see from a bootloader it should be transparent to it that you are bootloading another MCU rather than the Nordic radio.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Download firmware over BLE for another MCU</title><link>https://devzone.nordicsemi.com/thread/114889?ContentTypeID=1</link><pubDate>Fri, 10 Jun 2016 12:11:10 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:6cd2adaf-0d0b-435d-9095-195bec215805</guid><dc:creator>sidekick</dc:creator><description>&lt;p&gt;@jldewitt: thank you so much for the feedback. I&amp;#39;m heading in right direction then :)
I assume, with &lt;strong&gt;sure&lt;/strong&gt;, you also meant, that MCP android app is also okay for my test scenario.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Download firmware over BLE for another MCU</title><link>https://devzone.nordicsemi.com/thread/114888?ContentTypeID=1</link><pubDate>Fri, 10 Jun 2016 12:00:41 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:ca28d414-caab-4dab-aaca-65a99f933f28</guid><dc:creator>John</dc:creator><description>&lt;p&gt;Sure, that&amp;#39;s fine. On the peripheral side that is pretty much what I did.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Download firmware over BLE for another MCU</title><link>https://devzone.nordicsemi.com/thread/114891?ContentTypeID=1</link><pubDate>Fri, 10 Jun 2016 11:49:15 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:8cbaac3b-688b-4ce2-8137-d6b1b24bc562</guid><dc:creator>sidekick</dc:creator><description>&lt;p&gt;As, I do not have any experience with the Central side application development, I am planning to use the Nordic Master Control Panel (MCP) android application at the moment. On the peripheral side, I intend to use the sample bootloader that Nordic provides for DFU-OTA (BLE), but with some changes (at the moment, just send the received firmware image over BLE to UART interface). Is this approach okay ? If there is any sample example, it would be even better :)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Download firmware over BLE for another MCU</title><link>https://devzone.nordicsemi.com/thread/114887?ContentTypeID=1</link><pubDate>Tue, 31 May 2016 15:39:41 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:bed1ef41-bf52-4065-ad38-21519d5f1879</guid><dc:creator>John</dc:creator><description>&lt;p&gt;Whoops. Didn&amp;#39;t mean to convert that to a answer. Sounds like you are on the right track. We had to write our own hex2bin utility because of some limitations we needed to overcome. We were using a PIC24 which has &amp;quot;shadow bytes&amp;quot; in the hex file due to its 3 byte instruction word. We didn&amp;#39;t have enough room in external flash to store the binary with the shadow bytes included so we needed to strip them off and later reexpand them when writing the binary into the actual program memory.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Download firmware over BLE for another MCU</title><link>https://devzone.nordicsemi.com/thread/114886?ContentTypeID=1</link><pubDate>Tue, 31 May 2016 15:35:36 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:9e9c7793-4880-4a20-ad4d-b0c62ac3a6a0</guid><dc:creator>sidekick</dc:creator><description>&lt;p&gt;Thank you for swift response. I&amp;#39;m also looking at the nordic bootloader example for the peripheral side implementation. Using a hex file instead of a binary would require additional parsing either at the central or at the peripheral. Luckily ARM buildtool already provides the conversion (ARM binary .axf to plain binary, .bin) utility called &lt;strong&gt;nrftool&lt;/strong&gt;. I had use this same utility while developing a bootloader  that would allow over the air update of STM32 SOC firmware over GSM/GPRS network.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Download firmware over BLE for another MCU</title><link>https://devzone.nordicsemi.com/thread/114882?ContentTypeID=1</link><pubDate>Tue, 31 May 2016 15:17:27 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:a7164cfb-12dd-4da5-a422-b02189161f8d</guid><dc:creator>John</dc:creator><description>&lt;p&gt;Yes, you are correct. We were lucky the MCU vendor provided a example bootloader that we were able to put  to use. We used their command set over a proprietary service and characteristics to mimic how they would bootload their MCU over a serial port or USB connection. Our app developers had to create the support for these commands in our custom app running on a iOS or Android device. I was able to save them the trouble of converting the hex data to binary by doing that conversion as part of our FW build process.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Download firmware over BLE for another MCU</title><link>https://devzone.nordicsemi.com/thread/114883?ContentTypeID=1</link><pubDate>Tue, 31 May 2016 14:25:07 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:3ac17bd8-a4f9-4db3-8d99-f814dfed2743</guid><dc:creator>sidekick</dc:creator><description>&lt;p&gt;@jldewitt, today I started working on this feature. So far, I&amp;#39;ve only worked on the peripheral side and from what you have mentioned in &lt;strong&gt;step 4&lt;/strong&gt; above, it seems that I would need to do some work on the central side as well. Will I be able to use the Nordic Android application, Master control Panel (MCP) for testing purposes or would have to develop a custom central application /&lt;/p&gt;
&lt;p&gt;Thank you for your help.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Download firmware over BLE for another MCU</title><link>https://devzone.nordicsemi.com/thread/114881?ContentTypeID=1</link><pubDate>Tue, 17 May 2016 10:42:52 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:18758d74-7826-4dd0-a9dc-c8e94576bd12</guid><dc:creator>sidekick</dc:creator><description>&lt;p&gt;Been busy doing some other stuff. I&amp;#39;ll try a similar approach. Thank you for sharing your ideas.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Download firmware over BLE for another MCU</title><link>https://devzone.nordicsemi.com/thread/114880?ContentTypeID=1</link><pubDate>Mon, 09 May 2016 13:54:06 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:9315b371-857d-4c2b-9340-03a986993065</guid><dc:creator>John</dc:creator><description>&lt;p&gt;I think you have all of the right ideas here to implement what you want. I did a very similar thing to bootload a PIC24 OTA through a nRF51822 on a project. What I did was basically:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;I had a vendor specific service for my application&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I had a characteristic that was written by the central device to send proprietary commands&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The central device would send a command that instructed the nRF51 that it wanted to upgrade the PIC24 FW. The nRF51 forwarded that to the PIC24 which went into its bootloader mode. The nRF51 also remembered that that the PIC24 was in bootloader mode&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The central device would send the new PIC24 binary down in 20 byte packets which were sent over the UART to the PIC24. The PIC24 would save the binary data to an external EEPROM&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;When the binary copy was complete the central would send a command to make the PIC24 bootloader validate the CRC of the binary.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If the response to that command was success, the central instructs the PIC24 via the nRF51 to erase its application program and copy in the new binary image.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;When the succeeds the central sends a command to reset the PIC24 and resume normal communication operations.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>