<?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>mqttsn with openthread and freertos</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/65742/mqttsn-with-openthread-and-freertos</link><description>I am trying to hook openthread with freeRTOS. 
 Short story: the current state of my implementation is that I get a hardfault after succesfully calling mqttsn_client_search_gateway, but before receiving any data on the other end on the mqtt-sn gateway</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Thu, 10 Sep 2020 17:44:15 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/65742/mqttsn-with-openthread-and-freertos" /><item><title>RE: mqttsn with openthread and freertos</title><link>https://devzone.nordicsemi.com/thread/269052?ContentTypeID=1</link><pubDate>Thu, 10 Sep 2020 17:44:15 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:9bed7785-66db-4693-a44f-14f233b71328</guid><dc:creator>EdgarGrimberg</dc:creator><description>&lt;p&gt;OK, I think I got it. I was single stepping through the mqttsn code, when stack overflow handler kicked. Really lucky here!&lt;/p&gt;
&lt;p&gt;Here&amp;#39;s what the current TCB was showing:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://devzone.nordicsemi.com/resized-image/__size/320x240/__key/communityserver-discussions-components-files/4/pastedimage1599759713507v1.png" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;So it was the timer task that was running low on stack. The solution, of course, was to increase the task size for the timer task.&lt;/p&gt;
&lt;p&gt;In FreeRTOSConfig.h, I bumped the timer task stack depth to 160:&lt;/p&gt;
&lt;div style="background-color:#1e1e1e;color:#d4d4d4;font-family:Consolas, &amp;#39;Courier New&amp;#39;, monospace;font-size:14px;font-weight:normal;line-height:19px;white-space:pre;"&gt;
&lt;div&gt;&lt;span style="color:#c586c0;"&gt;#define&lt;/span&gt;&lt;span style="color:#569cd6;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#569cd6;"&gt;configTIMER_TASK_STACK_DEPTH&lt;/span&gt;&lt;span style="color:#569cd6;"&gt;&amp;nbsp; (&amp;nbsp;160&amp;nbsp;)&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;And it all went fine from there.&lt;/p&gt;
&lt;p&gt;Thanks for pointing me into the right direction, really appreciate the support!&lt;/p&gt;
&lt;p&gt;Regards,&lt;/p&gt;
&lt;p&gt;Edgar&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: mqttsn with openthread and freertos</title><link>https://devzone.nordicsemi.com/thread/269049?ContentTypeID=1</link><pubDate>Thu, 10 Sep 2020 16:44:29 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:cd2e01aa-6bc0-4bd8-babb-32c9b9125962</guid><dc:creator>EdgarGrimberg</dc:creator><description>&lt;p&gt;Hi J&amp;oslash;rgen.&lt;/p&gt;
&lt;p&gt;Thanks for the suggestions. Here&amp;#39;s what I did:&lt;/p&gt;
&lt;p&gt;- Double the heap in freeRTOS:&lt;/p&gt;
&lt;div style="background-color:#1e1e1e;color:#d4d4d4;font-family:Consolas, &amp;#39;Courier New&amp;#39;, monospace;font-size:14px;font-weight:normal;line-height:19px;white-space:pre;"&gt;
&lt;div&gt;&lt;span style="color:#c586c0;"&gt;#define&lt;/span&gt;&lt;span style="color:#569cd6;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#569cd6;"&gt;configTOTAL_HEAP_SIZE&lt;/span&gt;&lt;span style="color:#569cd6;"&gt; (&amp;nbsp;1024&amp;nbsp;*&amp;nbsp;64&amp;nbsp;)&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;- Increase the stack sizes for:&amp;nbsp; * my state machine twice as I had, still crashes:&lt;/p&gt;
&lt;div style="background-color:#1e1e1e;color:#d4d4d4;font-family:Consolas, &amp;#39;Courier New&amp;#39;, monospace;font-size:14px;font-weight:normal;line-height:19px;white-space:pre;"&gt;
&lt;div&gt;&lt;span style="color:#c586c0;"&gt;#define&lt;/span&gt;&lt;span style="color:#569cd6;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#569cd6;"&gt;CSM_STACK_TASK_STACK_SIZE&lt;/span&gt;&lt;span style="color:#569cd6;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;((&amp;nbsp;1024&amp;nbsp;*&amp;nbsp;16&amp;nbsp;)&amp;nbsp;&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;/&lt;/span&gt;&lt;span style="color:#569cd6;"&gt;&amp;nbsp;sizeof(&lt;/span&gt;&lt;span style="color:#4ec9b0;"&gt;StackType_t&lt;/span&gt;&lt;span style="color:#569cd6;"&gt;))&lt;/span&gt;&lt;span style="color:#6a9955;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/**&amp;lt;&amp;nbsp;FreeRTOS&amp;nbsp;task&amp;nbsp;stack&amp;nbsp;size&amp;nbsp;is&amp;nbsp;determined&amp;nbsp;in&amp;nbsp;multiples&amp;nbsp;of&amp;nbsp;StackType_t.&amp;nbsp;*/&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp; * the openthread task, increased with (1024 * 2) / sizeof(StackType_t), still crashes. increased even with (1024 * 4) / sizeof(StackType_t), the same result:&lt;/p&gt;
&lt;div style="background-color:#1e1e1e;color:#d4d4d4;font-family:Consolas, &amp;#39;Courier New&amp;#39;, monospace;font-size:14px;font-weight:normal;line-height:19px;white-space:pre;"&gt;
&lt;div&gt;&lt;span style="color:#c586c0;"&gt;#define&lt;/span&gt;&lt;span style="color:#569cd6;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#569cd6;"&gt;THREAD_STACK_TASK_STACK_SIZE&lt;/span&gt;&lt;span style="color:#569cd6;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;((&amp;nbsp;1024&amp;nbsp;* 12 )&amp;nbsp;&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;/&lt;/span&gt;&lt;span style="color:#569cd6;"&gt;&amp;nbsp;sizeof(&lt;/span&gt;&lt;span style="color:#4ec9b0;"&gt;StackType_t&lt;/span&gt;&lt;span style="color:#569cd6;"&gt;))&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Even more, I&amp;#39;ve added the hard fault handlers from the SDK, and here&amp;#39;s the log:&lt;pre class="ui-code" data-mode="text"&gt;00&amp;gt; &amp;lt;info&amp;gt; app: Succesfully send the search for gate&amp;lt;error&amp;gt; hardfault: HARD FAULT at 0x00008D52
00&amp;gt;
00&amp;gt; &amp;lt;error&amp;gt; hardfault:   R0:  0x20040000  R1:  0x00000000  R2:  0x00000000  R3:  0x20015410
00&amp;gt;
00&amp;gt; &amp;lt;error&amp;gt; hardfault:   R12: 0x20020BD0  LR:  0x00008D45  PSR: 0x4100000E
00&amp;gt;
00&amp;gt; &amp;lt;error&amp;gt; hardfault: Cause: Data bus error (PC value stacked for the exception return points to the instruction that caused the fault).
00&amp;gt;
00&amp;gt; &amp;lt;error&amp;gt; hardfault: Bus Fault Address: 0x20040000&lt;/pre&gt;&lt;br /&gt;Setting a breakpoint here, I can see the following variables:&lt;img src="https://devzone.nordicsemi.com/resized-image/__size/320x240/__key/communityserver-discussions-components-files/4/pastedimage1599755777370v2.png" alt=" " /&gt;and &lt;img src="https://devzone.nordicsemi.com/resized-image/__size/320x240/__key/communityserver-discussions-components-files/4/pastedimage1599755828356v3.png" alt=" " /&gt;Still chasing a memory corruption, I&amp;#39;ve enabled more debugging from freeRTOS:&lt;/p&gt;
&lt;div style="background-color:#1e1e1e;color:#d4d4d4;font-family:Consolas, &amp;#39;Courier New&amp;#39;, monospace;font-size:14px;font-weight:normal;line-height:19px;white-space:pre;"&gt;
&lt;div&gt;&lt;span style="color:#c586c0;"&gt;#define&lt;/span&gt;&lt;span style="color:#569cd6;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#569cd6;"&gt;configCHECK_FOR_STACK_OVERFLOW&lt;/span&gt;&lt;span style="color:#569cd6;"&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;&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;&lt;/span&gt;&lt;span style="color:#b5cea8;"&gt;1&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#c586c0;"&gt;#define&lt;/span&gt;&lt;span style="color:#569cd6;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#569cd6;"&gt;configUSE_MALLOC_FAILED_HOOK&lt;/span&gt;&lt;span style="color:#569cd6;"&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;&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;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#b5cea8;"&gt;1&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;and implemented my hooks:&lt;/p&gt;
&lt;div style="background-color:#1e1e1e;color:#d4d4d4;font-family:Consolas, &amp;#39;Courier New&amp;#39;, monospace;font-size:14px;font-weight:normal;line-height:19px;white-space:pre;"&gt;
&lt;div&gt;&lt;span style="color:#569cd6;"&gt;void&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#dcdcaa;"&gt;vApplicationMallocFailedHook&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;(&amp;nbsp;&lt;/span&gt;&lt;span style="color:#569cd6;"&gt;void&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;&amp;nbsp;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#d4d4d4;"&gt;{&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#d4d4d4;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#569cd6;"&gt;NRF_LOG_ERROR&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;(&lt;/span&gt;&lt;span style="color:#ce9178;"&gt;&amp;quot;malloc&amp;nbsp;failed&amp;quot;&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#d4d4d4;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#c586c0;"&gt;while&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;(&lt;/span&gt;&lt;span style="color:#b5cea8;"&gt;1&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#d4d4d4;"&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style="color:#569cd6;"&gt;void&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#dcdcaa;"&gt;vApplicationStackOverflowHook&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;(&amp;nbsp;&lt;/span&gt;&lt;span style="color:#569cd6;"&gt;void&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;&amp;nbsp;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#d4d4d4;"&gt;{&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#d4d4d4;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#569cd6;"&gt;NRF_LOG_ERROR&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;(&lt;/span&gt;&lt;span style="color:#ce9178;"&gt;&amp;quot;stack&amp;nbsp;overflow&amp;quot;&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#d4d4d4;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#c586c0;"&gt;while&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;(&lt;/span&gt;&lt;span style="color:#b5cea8;"&gt;1&lt;/span&gt;&lt;span style="color:#d4d4d4;"&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#d4d4d4;"&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;but I never reach the infinite loops, only the hard faultThanks,Edgar&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: mqttsn with openthread and freertos</title><link>https://devzone.nordicsemi.com/thread/268947?ContentTypeID=1</link><pubDate>Thu, 10 Sep 2020 11:44:35 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:703742fe-5d88-4e48-9bfc-2cb4a6280873</guid><dc:creator>J&amp;#248;rgen Holmefjord</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;div&gt;It looks like the hardfault happens when xPortPendSVHandler is executing. This will attempt to pop the current TCB value from the stack, but if the stack or stack pointer is corrupted at this point, it could lead to hardfault. First step is to increase the heap size in FreeRTOSConfig.h file and increase the default task stack size&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;You can try the following as a starting point:&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;#define configMINIMAL_STACK_SIZE ( 400 )
#define configTOTAL_HEAP_SIZE ( 1024 * 40 )&lt;/pre&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;If this does not work, try to increase the stack size in 200 byte steps, and heap size in 1-2 kB steps. This can be fine-tuned at a later point once you get everything working correctly.&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;Best regards,&lt;br /&gt;Jørgen&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: mqttsn with openthread and freertos</title><link>https://devzone.nordicsemi.com/thread/268731?ContentTypeID=1</link><pubDate>Wed, 09 Sep 2020 11:53:59 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:dd9b9c6f-651e-406d-9d52-96d1c3580531</guid><dc:creator>EdgarGrimberg</dc:creator><description>&lt;p&gt;Forgot to mention, the same build environment minus freeRTOS and re-arranged code to look more like the example code works fine.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>