<?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>SPI doesn&amp;#39;t work with bootloader</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/16047/spi-doesn-t-work-with-bootloader</link><description>Hi, 
 I&amp;#39;m creating a simple SPI bootloader without SD for nRF51822 based on this post 
 The bootloader is connected to Freescale 22F through SPI and it will be without any BLE.
The application itself is simple, which is only sending some SPI data back</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Wed, 31 Aug 2016 14:32:33 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/16047/spi-doesn-t-work-with-bootloader" /><item><title>RE: SPI doesn't work with bootloader</title><link>https://devzone.nordicsemi.com/thread/61202?ContentTypeID=1</link><pubDate>Wed, 31 Aug 2016 14:32:33 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:64184118-9ac0-48d9-8329-c22f5c953b2a</guid><dc:creator>Hung Bui</dc:creator><description>&lt;p&gt;Hi Stef,&lt;/p&gt;
&lt;p&gt;I assume you use the GPIOTE_IRQ handler in the bootloader. If you do, you would need to have  branching, it&amp;#39;s the same with the handlers in my bootloader example(SWI0_IRQHandler_Bootloader, RTC1_IRQHandler_Bootloader, UART0_IRQHandler_Bootloader, GPIOTE_IRQHandler_Bootloader).&lt;/p&gt;
&lt;p&gt;I think if you don&amp;#39;t want to modify the driver&amp;#39;s IRQ handler, what you can do is to modify the IRQ handler names in arm_startup_nrf51.s and then match the names accordingly in the interrupt_handler.c . This way you avoid declaring weak interrupt handler declare to for example GPIOTE_IRQHandler, and then use that in the driver files so you can keep file intact.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: SPI doesn't work with bootloader</title><link>https://devzone.nordicsemi.com/thread/61201?ContentTypeID=1</link><pubDate>Tue, 30 Aug 2016 15:49:50 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:68153476-2c10-4869-8d53-f7762724941c</guid><dc:creator>Stef</dc:creator><description>&lt;p&gt;Thanks, Hung Bui. That works! One followup question:
Is there a way to blindly forward the vector table from 0x00000000 to the application without modifying the interrupt handler code in bootloader?
I&amp;#39;m using the standard nRF libraries and drivers which already define interrupt handler (e.g., GPIOTE_IRQHandler code in app_gpiote.c).
If I just redefine the GPIOTE_IRQHandler function in interrupt.c file, the compiler will complain about multiply defined GPIOTE_IRQHandler (which is true since I have two of them).
To resolve this, I need to modify the GPIOTE_IRQHandler inside app_gpiote.c (rename it to GPIOTE_IRQHandler_Bootloader).&lt;/p&gt;
&lt;p&gt;It will be good if I can leave the library/driver files as it is.&lt;/p&gt;
&lt;p&gt;Thanks,
-- Steven&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: SPI doesn't work with bootloader</title><link>https://devzone.nordicsemi.com/thread/61200?ContentTypeID=1</link><pubDate>Mon, 29 Aug 2016 14:25:37 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:17b773d9-8398-4c4c-8193-9ee557bae9a6</guid><dc:creator>Hung Bui</dc:creator><description>&lt;p&gt;Hi Steven,&lt;/p&gt;
&lt;p&gt;I can see you move the MSP and the PC to the application, but I haven&amp;#39;t seen you forward the vector table. Note that on Cortex M0 the vector table is fixed at 0x00000000. So you need to forward it manually.&lt;/p&gt;
&lt;p&gt;You can test simply blinking a LED in your application to see if it&amp;#39;s forwarded correctly or not.&lt;/p&gt;
&lt;p&gt;You can find my code of forwarding the vector table in the case you quoted in your question (in interrupt_handler.c file)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>