<?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>Timeslots and SOFTDEVICE: ASSERTION FAILED, PCxxx: 0x2552e</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/58373/timeslots-and-softdevice-assertion-failed-pcxxx-0x2552e</link><description>Hello 
 in our concurrent radio application using timeslot API there are failed assertions from time to time (10min - 10h). 
 Message is as above. 
 Stacktrace and system state shows clearly that the failed assertion happens during sd_radio_request()</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Tue, 03 Mar 2020 11:06:31 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/58373/timeslots-and-softdevice-assertion-failed-pcxxx-0x2552e" /><item><title>RE: Timeslots and SOFTDEVICE: ASSERTION FAILED, PCxxx: 0x2552e</title><link>https://devzone.nordicsemi.com/thread/237692?ContentTypeID=1</link><pubDate>Tue, 03 Mar 2020 11:06:31 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:a0c28977-63e5-448c-8bd6-757b918ae338</guid><dc:creator>rgrr2</dc:creator><description>&lt;p&gt;Ok Susheel, you are my hero definitely!&lt;/p&gt;
&lt;p&gt;One suggestion: it would be great to have an additional chapter in the timeslot API documentation how the slot has be be returned / cleaned up.&lt;/p&gt;
&lt;p&gt;But... thanks again.&lt;/p&gt;
&lt;p&gt;Hardy&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Timeslots and SOFTDEVICE: ASSERTION FAILED, PCxxx: 0x2552e</title><link>https://devzone.nordicsemi.com/thread/237226?ContentTypeID=1</link><pubDate>Fri, 28 Feb 2020 17:56:39 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:1f23d76b-d867-42f1-95bd-88623d3e67eb</guid><dc:creator>Susheel Nuguru</dc:creator><description>&lt;p&gt;Great to know that it could be the issue. I&amp;#39;ll wait for your results&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Timeslots and SOFTDEVICE: ASSERTION FAILED, PCxxx: 0x2552e</title><link>https://devzone.nordicsemi.com/thread/237111?ContentTypeID=1</link><pubDate>Fri, 28 Feb 2020 12:04:19 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:f858e394-612e-4020-92df-d0e43aee6143</guid><dc:creator>rgrr2</dc:creator><description>&lt;p&gt;Susheel, you are (perhaps) my hero!&lt;/p&gt;
&lt;p&gt;I don&amp;#39;t want to be too euphoric, but we have a &amp;quot;NVIC_SetPriority(RADIO_IRQn, 1);&amp;quot; in our code (actually don&amp;#39;t know why).&lt;/p&gt;
&lt;p&gt;I have removed this line of code and the application has been running now for ~2h on two targets.&lt;/p&gt;
&lt;p&gt;That happened before as well, so I will make a longer term test over the weekend and will report the result.&lt;/p&gt;
&lt;p&gt;Hardy&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Timeslots and SOFTDEVICE: ASSERTION FAILED, PCxxx: 0x2552e</title><link>https://devzone.nordicsemi.com/thread/237051?ContentTypeID=1</link><pubDate>Fri, 28 Feb 2020 08:33:18 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c1f66d48-b3b7-4cf8-95b0-383a3c963d93</guid><dc:creator>Susheel Nuguru</dc:creator><description>&lt;p&gt;We have noticed that some other customer had the same problem when they did something illegal with RADIO priority when used other protocols.&lt;/p&gt;
&lt;p&gt;If you are using ESB or any other protocol, please make sure that by the time the timeslot is finished, you should switch the RADIO and Timer priority to what they were before.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Timeslots and SOFTDEVICE: ASSERTION FAILED, PCxxx: 0x2552e</title><link>https://devzone.nordicsemi.com/thread/237050?ContentTypeID=1</link><pubDate>Fri, 28 Feb 2020 08:28:50 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:19a0cc22-3bf7-4fe0-b96c-63c4baec1483</guid><dc:creator>Susheel Nuguru</dc:creator><description>&lt;p&gt;Sorry , I was looking at wrong variant map file.&lt;/p&gt;
&lt;p&gt;the assert happens in sd_radio_request while requesting a radio slot inside the lower layer. It could fail when making a request on a session that has pending signals is rejected and this will cause an assert.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Timeslots and SOFTDEVICE: ASSERTION FAILED, PCxxx: 0x2552e</title><link>https://devzone.nordicsemi.com/thread/236920?ContentTypeID=1</link><pubDate>Thu, 27 Feb 2020 14:54:41 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:8344fc70-5fe6-473a-ae74-e3477264347e</guid><dc:creator>rgrr2</dc:creator><description>&lt;p&gt;I doubt it.&amp;nbsp; At least my softdevice code shows&lt;/p&gt;
&lt;p&gt;00025506:&amp;nbsp;&amp;nbsp; beq.n&amp;nbsp;&amp;nbsp; 0x2551c&lt;br /&gt;00025508:&amp;nbsp;&amp;nbsp; movs&amp;nbsp;&amp;nbsp;&amp;nbsp; r0, #15&lt;br /&gt;0002550a:&amp;nbsp;&amp;nbsp; pop&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {r4, r5, r6, pc}&lt;br /&gt;0002550c:&amp;nbsp;&amp;nbsp; movs&amp;nbsp;&amp;nbsp;&amp;nbsp; r0, #16&lt;br /&gt;0002550e:&amp;nbsp;&amp;nbsp; pop&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {r4, r5, r6, pc}&lt;br /&gt;00025510:&amp;nbsp;&amp;nbsp; movs&amp;nbsp;&amp;nbsp;&amp;nbsp; r0, #7&lt;br /&gt;00025512:&amp;nbsp;&amp;nbsp; pop&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {r4, r5, r6, pc}&lt;br /&gt;00025514:&amp;nbsp;&amp;nbsp; mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r0, r5&lt;br /&gt;00025516:&amp;nbsp;&amp;nbsp; bl&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x251ca&lt;br /&gt;0002551a:&amp;nbsp;&amp;nbsp; b.n&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x25524&lt;br /&gt;0002551c:&amp;nbsp;&amp;nbsp; movs&amp;nbsp;&amp;nbsp;&amp;nbsp; r1, #0&lt;br /&gt;0002551e:&amp;nbsp;&amp;nbsp; mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r0, r5&lt;br /&gt;00025520:&amp;nbsp;&amp;nbsp; bl&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x25208&lt;br /&gt;00025524:&amp;nbsp;&amp;nbsp; ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r1, [pc, #16]&amp;nbsp;&amp;nbsp; ; (0x25538)&lt;br /&gt;00025526:&amp;nbsp;&amp;nbsp; ldrb&amp;nbsp;&amp;nbsp;&amp;nbsp; r0, [r4, #3]&lt;br /&gt;00025528:&amp;nbsp;&amp;nbsp; bl&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x150a0&lt;br /&gt;0002552c:&amp;nbsp;&amp;nbsp; cbnz&amp;nbsp;&amp;nbsp;&amp;nbsp; r0, 0x25530&lt;br /&gt;0002552e:&amp;nbsp;&amp;nbsp; svc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 255&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; 0xff&lt;br /&gt;00025530:&amp;nbsp;&amp;nbsp; movs&amp;nbsp;&amp;nbsp;&amp;nbsp; r0, #0&lt;br /&gt;00025532:&amp;nbsp;&amp;nbsp; pop&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {r4, r5, r6, pc}&lt;br /&gt;00025534:&amp;nbsp;&amp;nbsp; lsls&amp;nbsp;&amp;nbsp;&amp;nbsp; r4, r1, #7&lt;br /&gt;00025536:&amp;nbsp;&amp;nbsp; movs&amp;nbsp;&amp;nbsp;&amp;nbsp; r0, #0&lt;br /&gt;00025538:&amp;nbsp;&amp;nbsp; asrs&amp;nbsp;&amp;nbsp;&amp;nbsp; r4, r5, #13&lt;br /&gt;0002553a:&amp;nbsp;&amp;nbsp; movs&amp;nbsp;&amp;nbsp;&amp;nbsp; r0, #0&lt;br /&gt;0002553c:&amp;nbsp;&amp;nbsp; strh&amp;nbsp;&amp;nbsp;&amp;nbsp; r5, [r7, #48]&amp;nbsp;&amp;nbsp; ; 0x30&lt;br /&gt;0002553e:&amp;nbsp;&amp;nbsp; movs&amp;nbsp;&amp;nbsp;&amp;nbsp; r1, r0&lt;br /&gt;00025540:&amp;nbsp;&amp;nbsp; subs&amp;nbsp;&amp;nbsp;&amp;nbsp; r7, r7, #7&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Timeslots and SOFTDEVICE: ASSERTION FAILED, PCxxx: 0x2552e</title><link>https://devzone.nordicsemi.com/thread/236900?ContentTypeID=1</link><pubDate>Thu, 27 Feb 2020 14:12:36 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:9263b176-d297-4e71-a9f0-6dcedd65393a</guid><dc:creator>Susheel Nuguru</dc:creator><description>&lt;p&gt;sorry, I missed to see the address.&lt;/p&gt;
&lt;p&gt;i checked S140 v6.1.0 at 0x2552E and it does not look like there is code there. It looks like that is reserved space for data. If you see that this is your assert address in the fault handler, then it could be because of the stack corruption which does not show correct faulting address&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Timeslots and SOFTDEVICE: ASSERTION FAILED, PCxxx: 0x2552e</title><link>https://devzone.nordicsemi.com/thread/236881?ContentTypeID=1</link><pubDate>Thu, 27 Feb 2020 13:38:09 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:7519904e-5471-484a-ae3d-323edfd56a5f</guid><dc:creator>rgrr2</dc:creator><description>&lt;p&gt;The assertion happens inside the softdevice (0x2552e, see subject).&amp;nbsp; That&amp;#39;s why I&amp;#39;m asking you what the actual cause of this (failed) assertion could be.&lt;/p&gt;
&lt;p&gt;From internal states and the call stack, I can assure you that the assertion happens during sd_radio_request().&lt;/p&gt;
&lt;p&gt;Call stack, if this is of any help (S140 6.1.0):&lt;/p&gt;
&lt;p&gt;0xb0af2&lt;br /&gt;0x2003a5d0&lt;br /&gt;0x53f39: __assert_func at errorhandler.c:175:0&lt;br /&gt;0xa4f4f&lt;br /&gt;0x20009772&lt;br /&gt;0x20008f2c&lt;br /&gt;0x20000acc&lt;br /&gt;0x0&lt;br /&gt;0x0&lt;br /&gt;0x0&lt;br /&gt;0x20000acc&lt;br /&gt;0x0&lt;br /&gt;0x2552e&lt;br /&gt;0x1&lt;br /&gt;0x200001cc&lt;br /&gt;0x20005258&lt;br /&gt;0x254e7&lt;br /&gt;0x24add&lt;br /&gt;0x0&lt;br /&gt;0x1ee9c4&lt;br /&gt;0x1eec9f&lt;br /&gt;0x1e0300fd&lt;br /&gt;0x47a69&lt;br /&gt;0x1524d&lt;br /&gt;0x25530&lt;br /&gt;0x6100000b&lt;br /&gt;0x2003a620&lt;br /&gt;0x1000001&lt;br /&gt;0x20005258&lt;br /&gt;0x24211&lt;br /&gt;0x2000b3f8&lt;br /&gt;0x2003ec08&lt;br /&gt;0x2003de0c&lt;br /&gt;0x2003a668&lt;br /&gt;0x2003addc&lt;br /&gt;0xfffffff1&lt;br /&gt;0x20005258&lt;br /&gt;0x20005210&lt;br /&gt;0x1f1bff&lt;br /&gt;0x2&lt;br /&gt;0x47a69&lt;br /&gt;0x46e89: _SlotRequest at TimeslotControl.c:603:26&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;gt; line 603 does sd_radio_request()&lt;br /&gt;0x9d506&lt;br /&gt;0x1000024&lt;br /&gt;0x0&lt;br /&gt;0x1f1bfe&lt;br /&gt;0x20005264&lt;br /&gt;0x2000ba07&lt;br /&gt;0x1f&lt;br /&gt;0x4268&lt;br /&gt;0x0&lt;br /&gt;0x0&lt;br /&gt;0x2000b3f8&lt;br /&gt;0x2003de0c&lt;br /&gt;0x2003a7d8&lt;br /&gt;0x475e3: TimeSlotControl_Request at TimeslotControl.c:721:8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;gt; line 721 does _SlotRequest()&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Timeslots and SOFTDEVICE: ASSERTION FAILED, PCxxx: 0x2552e</title><link>https://devzone.nordicsemi.com/thread/236867?ContentTypeID=1</link><pubDate>Thu, 27 Feb 2020 13:20:15 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:d682b3da-6059-43a8-b8c4-48295b8d6c82</guid><dc:creator>Susheel Nuguru</dc:creator><description>&lt;p&gt;can you please provide us with the proper call stack to understand context properly.&lt;/p&gt;
&lt;p&gt;I do not see any instruction address for the fault in your question. If this is an assert, which address caused this?&lt;/p&gt;
&lt;p&gt;Combined with call stack info and assert instruction address, we should be able understand the nature of the fault.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Timeslots and SOFTDEVICE: ASSERTION FAILED, PCxxx: 0x2552e</title><link>https://devzone.nordicsemi.com/thread/236861?ContentTypeID=1</link><pubDate>Thu, 27 Feb 2020 13:11:11 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c2234662-8e69-4969-8413-5355a5113fa2</guid><dc:creator>rgrr2</dc:creator><description>&lt;p&gt;Sorry, I did not write, that the sd_radio_request() happens during the callback.&lt;/p&gt;
&lt;p&gt;The above readout is done post-mortem with the debugger.&lt;/p&gt;
&lt;p&gt;sd_radio_request()s are done in NRF_EQU0 context which has an assigned prio of 7.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Timeslots and SOFTDEVICE: ASSERTION FAILED, PCxxx: 0x2552e</title><link>https://devzone.nordicsemi.com/thread/236835?ContentTypeID=1</link><pubDate>Thu, 27 Feb 2020 12:43:13 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:199a9687-a44c-4b07-98e3-a816dccac388</guid><dc:creator>Susheel Nuguru</dc:creator><description>&lt;p&gt;As far as I know your timeslot code runs at highest priority (0) and you are not allowed to call any SVC functions from inside. sd_radio_request would translate to an SVC call which has lower priority than the context you call it in and on ARM Cortex M4 that would cause a hardfault. If you want to reschedule another timeslot that is not the way to do it.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>