<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><meta http-equiv="Content-Type" content="text/html; charset=utf-8" class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">Back in June 2015 I reported an issue where my program would crash after a very predictable period when working with rtems_event_receive. Sebastian and I tracked the problem down to an issue with the priorities of my interrupts causing an infinite loop in the dealings with “Watchdog” values in events and “NMI”s. (neither watchdog nor NMI are used in the hardware sense).<div class=""><br class=""></div><div class="">If my DMA complete interrupts use a priority of less than 0x80 they are interpreted as RTEMS NMI events (I probably have that wrong, but no matter).</div><div class=""><br class=""></div><div class="">Now, I’m trying to get a system going on a ST Cortex-M7 using the same structures and I’m running into this same problem, or maybe something related even though I have set my priorities to 0x80, 0x90, 0xA0, and so on.</div><div class=""><br class=""></div><div class="">I am using the latest head version pulled out of git with the latest tools.</div><div class=""><br class=""></div><div class="">Here is the situation, I have my ADCs set up to deliver results using DMA 200 times per second using two interrupt routines. One routine is called when the ADC buffer is half full, the other when the ADC buffer is full. The interrupt routines execute a rtems_event_send call that is picked up in the task code using rtems_event_receive.</div><div class=""><br class=""></div><div class="">If I don’t call rtems_event_receive (wth a timeout of 100 ticks) the code runs for hours. With the rtems_event_send call, it fails after 125 seconds.</div><div class=""><br class=""></div><div class="">The failure is not something that I have seen before:</div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><div style="margin: 0px; font-stretch: normal; line-height: normal; font-family: Helvetica;" class="">#0  _Terminate (the_source=the_source@entry=INTERNAL_ERROR_CORE, the_error=the_error@entry=31) at /Users/andreichichak/development/rtems/kernel/rtems/c/src/../../cpukit/score/src/interr.c:37</div><div style="margin: 0px; font-stretch: normal; line-height: normal; font-family: Helvetica;" class="">#1  0x0800bf6e in _Internal_error (core_error=core_error@entry=INTERNAL_ERROR_BAD_THREAD_DISPATCH_ENVIRONMENT) at /Users/andreichichak/development/rtems/kernel/rtems/c/src/../../cpukit/score/src/interr.c:52</div><div style="margin: 0px; font-stretch: normal; line-height: normal; font-family: Helvetica;" class="">#2  0x0800dd38 in _Thread_Do_dispatch (cpu_self=<optimized out>, level=<optimized out>) at /Users/andreichichak/development/rtems/kernel/rtems/c/src/../../cpukit/score/src/threaddispatch.c:186</div><div style="margin: 0px; font-stretch: normal; line-height: normal; font-family: Helvetica;" class="">#3  0x0800f924 in _ARMV7M_Thread_dispatch () at /Users/andreichichak/development/rtems/kernel/rtems/c/src/../../cpukit/score/cpu/arm/armv7m-isr-dispatch.c:32</div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">In _Thread_Do_dispatch, it looks like an maybe an ISR is firing when it is disabled (?) and then _Internal_error is being called.</div><div class=""> </div>
<br class=""></div><div class=""><div style="margin: 0px; font-stretch: normal; line-height: normal; font-family: Courier;" class=""><span style="color: #931a68" class=""><b class="">void</b></span> <b class="">_Thread_Do_dispatch</b>( <span style="color: #006141" class="">Per_CPU_Control</span> *cpu_self, <span style="color: #006141" class="">ISR_Level</span> level )</div><div style="margin: 0px; font-stretch: normal; line-height: normal; font-family: Courier;" class="">{</div><div style="margin: 0px; font-stretch: normal; line-height: normal; font-family: Courier;" class="">  <span style="color: #006141" class="">Thread_Control</span> *executing;</div><div style="margin: 0px; font-stretch: normal; line-height: normal; font-family: Courier; min-height: 14px;" class=""><br class=""></div><div style="margin: 0px; font-stretch: normal; line-height: normal; font-family: Courier;" class="">  _Assert( cpu_self-><span style="color: #0326cc" class="">thread_dispatch_disable_level</span> == 1 );</div><div style="margin: 0px; font-stretch: normal; line-height: normal; font-family: Courier; min-height: 14px;" class=""><br class=""></div><div style="margin: 0px; font-stretch: normal; line-height: normal; font-family: Courier;" class=""><span style="color: #931a68" class=""><b class="">#if</b></span> defined(RTEMS_SCORE_ROBUST_THREAD_DISPATCH)</div><div style="margin: 0px; font-stretch: normal; line-height: normal; font-family: Courier;" class="">  <span style="color: #931a68" class=""><b class="">if</b></span> (</div><div style="margin: 0px; font-stretch: normal; line-height: normal; font-family: Courier;" class="">    !_ISR_Is_enabled( level )</div><div style="margin: 0px; font-stretch: normal; line-height: normal; font-family: Courier;" class=""><span style="color: #931a68" class=""><b class="">#if</b></span> defined(RTEMS_SMP)</div><div style="margin: 0px; font-stretch: normal; line-height: normal; font-family: Courier;" class="">      && rtems_configuration_is_smp_enabled()</div><div style="margin: 0px; font-stretch: normal; line-height: normal; font-family: Courier; color: rgb(147, 26, 104);" class=""><b class="">#endif</b></div><div style="margin: 0px; font-stretch: normal; line-height: normal; font-family: Courier;" class="">  ) {</div><div style="margin: 0px; font-stretch: normal; line-height: normal; font-family: Courier;" class="">    _Internal_error( INTERNAL_ERROR_BAD_THREAD_DISPATCH_ENVIRONMENT );</div><div style="margin: 0px; font-stretch: normal; line-height: normal; font-family: Courier;" class="">  }</div><div style="margin: 0px; font-stretch: normal; line-height: normal; font-family: Courier; color: rgb(147, 26, 104);" class=""><b class="">#endif</b></div><div class=""><b class=""><br class=""></b></div><div class=""><b class=""><br class=""></b></div><div class=""><b class="">Does anybody have any idea where I should look to figure this out?</b></div><div class=""><b class=""><br class=""></b></div><div class=""><b class="">Thanks,</b></div><div class=""><b class="">Andrei</b></div><div class=""><br class=""></div></div></div><div class="">
<div style="color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; border-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-stroke-width: 0px;"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; border-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-stroke-width: 0px;"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; border-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-stroke-width: 0px;"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; border-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-stroke-width: 0px;"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; border-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-stroke-width: 0px;"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-position: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; border-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-stroke-width: 0px;"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">---------------------</div><div class="">Andrei Chichak</div><div class=""><br class=""></div><div class="">Systems Developer</div><div class="">CBF Systems Inc.</div><div class="">Suite 225 </div><div class=""><span style="color: rgb(34, 34, 34); font-family: arial, sans-serif; font-size: 13px; background-color: rgb(255, 255, 255);" class="">8215 112 St NW</span></div><div class="">EDMONTON, ALBERTA</div><div class=""><span style="color: rgb(34, 34, 34); font-family: arial, sans-serif; font-size: 13px; font-variant-ligatures: normal; background-color: rgb(255, 255, 255);" class="">T6G 2C8</span></div><div class="">CANADA</div><div class=""><br class=""></div><div class="">Phone: 780-628-2072</div><div class="">Skype: andrei.chichak</div><div class=""><br class=""></div></div></span><br class="Apple-interchange-newline"></div></span><br class="Apple-interchange-newline"></div></span><br class="Apple-interchange-newline"></div></span><br class="Apple-interchange-newline"></div></span><br class="Apple-interchange-newline"></div></span><br class="Apple-interchange-newline"></div><br class="Apple-interchange-newline"><br class="Apple-interchange-newline">
</div>
<br class=""></body></html>