On 02/04/2019 16:28, Catalin Demergian wrote:
I did more tests. it seems not the same type of error happens every time. I got the _Configuration_Scheduler_priority_dflt  a few times, but also the 'enabled interrupts when they suppposed to be disabled' happened as well

RTEMS_INLINE_ROUTINE void _Scheduler_priority_Ready_queue_enqueue(
  Chain_Node                     *node,
  Scheduler_priority_Ready_queue *ready_queue,
  Priority_bit_map_Control       *bit_map
)
{
  Chain_Control *ready_chain = ready_queue->ready_chain;
  //_Assert(_ISR_Get_level() != 0);
  if(_ISR_Get_level() == 0)
    gIntrErrs++;

  cnt_before = _Chain_Node_count_unprotected(ready_chain);
  _Chain_Append_unprotected( ready_chain, node );
  cnt_after = _Chain_Node_count_unprotected(ready_chain);

  if(cnt_after != cnt_before + 1)
gIntrErrs++;

  _Priority_bit_map_Add( bit_map, &ready_queue->Priority_map );
}

.. and I modified the cpuuse command to display gIntrErrs

What do you get if you use separate counters for these errors?

I still believe that you use some interrupts with a too high priority. What happens if you apply the attached patch?

--
Sebastian Huber, embedded brains GmbH

Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone   : +49 89 189 47 41-16
Fax     : +49 89 189 47 41-09
E-Mail  : sebastian.hu...@embedded-brains.de
PGP     : Public key available on request.

Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.

>From 80538af274c1e96279e839d4f864c64ce16358b8 Mon Sep 17 00:00:00 2001
From: Sebastian Huber <sebastian.hu...@embedded-brains.de>
Date: Wed, 3 Apr 2019 07:25:15 +0200
Subject: [PATCH] Disable the highest priority interrupts

---
 cpukit/score/cpu/arm/include/rtems/score/cpu.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/cpukit/score/cpu/arm/include/rtems/score/cpu.h b/cpukit/score/cpu/arm/include/rtems/score/cpu.h
index a537a4a4b6..aaf6f28b00 100644
--- a/cpukit/score/cpu/arm/include/rtems/score/cpu.h
+++ b/cpukit/score/cpu/arm/include/rtems/score/cpu.h
@@ -305,7 +305,7 @@ static inline uint32_t arm_interrupt_disable( void )
     : [arm_switch_reg] "=&r" (arm_switch_reg), [level] "=&r" (level)
   );
 #elif defined(ARM_MULTILIB_ARCH_V7M)
-  uint32_t basepri = 0x80;
+  uint32_t basepri = 0x1;
 
   __asm__ volatile (
     "mrs %[level], basepri\n"
-- 
2.16.4

_______________________________________________
users mailing list
users@rtems.org
http://lists.rtems.org/mailman/listinfo/users

Reply via email to