[ECOS] eCos application error- ASSERT FAIL : invalid priority

Rohit Pandita pandi008@umn.edu
Fri Aug 4 21:36:00 GMT 2006


Rohit Pandita wrote:
> Andrew Lunn wrote:
>> On Fri, Aug 04, 2006 at 01:51:57AM -0500, Rohit Pandita wrote:
>>     
>>> Hi all,
>>> Have a couple of questions,
>>>
>>> 1. While trying to execute/debug an eCos application in RAM I get ASSERT 
>>> FAIL: var_intr.h[2343]: void cyg_hal_interrupt_set_level() : Invalid 
>>> priority.
>>> Has it got anything to do with with eCos Kernel scheduler config? Any 
>>> solutions.
>>>     
>>
>> What priority are you passing? What priorities are valid?
>>   
> /The application is single threaded, I haven't assigned any 
> priorities. Does the kernel assign default priorities to some 
> processes on its own?/
>>> 2. My application requires I/O through both serial ports on the target 
>>> (Phy555). Is this permissible, given that RedBoot uses the serial ports 
>>> for CLI and debug/diagnostic purposes? If not, what changes would be 
>>> necessary.
>>>     
>>> You could use Ethernet for Redboot/gdb so leaving the second ethernet
>>> port free. Otherwise just don't use diag_printf and gdb and redboot
>>> will keep quiet when your application is running.
>>>     
>>> /The target doesn't support Ethernet, how to disable RedBoot console/ diag_printf, through some configuration changes?/    
>         Andrew
> /Attached below is the summary of process progress until ASSERT FAIL, 
> While backtracing I noticed that the trace shows random large values 
> for variables 'vector' and 'level', respectively.
> I appreciate your help.
>
> Regards,
> Rohit
> /
> (gdb) c
> Continuing.
>
> Breakpoint 1, hal_variant_IRQ_init () at 
> /scratch/ecos/ecos-2.0/packages/hal/powerpc/mpc5xx/current/src/var_intr.c:353
> 353       HAL_INTERRUPT_MASK(CYGNUM_HAL_INTERRUPT_SIU_IRQ0);
> Current language:  auto; currently c
> (gdb) s
> 354       HAL_INTERRUPT_MASK(CYGNUM_HAL_INTERRUPT_SIU_IRQ1);
> (gdb)
> 355       HAL_INTERRUPT_MASK(CYGNUM_HAL_INTERRUPT_SIU_IRQ2);
> (gdb)
> 356       HAL_INTERRUPT_MASK(CYGNUM_HAL_INTERRUPT_SIU_IRQ3);
> (gdb)
> 357       HAL_INTERRUPT_MASK(CYGNUM_HAL_INTERRUPT_SIU_IRQ4);
> (gdb)
> 358       HAL_INTERRUPT_MASK(CYGNUM_HAL_INTERRUPT_SIU_IRQ5);
> (gdb)
> 359       HAL_INTERRUPT_MASK(CYGNUM_HAL_INTERRUPT_SIU_IRQ6);
> (gdb)
> 360       HAL_INTERRUPT_MASK(CYGNUM_HAL_INTERRUPT_SIU_IRQ7);
> (gdb)
> 361       HAL_INTERRUPT_MASK(CYGNUM_HAL_INTERRUPT_SIU_LVL0);
> (gdb)
> 362       HAL_INTERRUPT_MASK(CYGNUM_HAL_INTERRUPT_SIU_LVL1);
> (gdb)
> 363       HAL_INTERRUPT_MASK(CYGNUM_HAL_INTERRUPT_SIU_LVL2);
> (gdb)
> 364       HAL_INTERRUPT_MASK(CYGNUM_HAL_INTERRUPT_SIU_LVL3);
> (gdb)
> 365       HAL_INTERRUPT_MASK(CYGNUM_HAL_INTERRUPT_SIU_LVL4);
> (gdb)
> 366       HAL_INTERRUPT_MASK(CYGNUM_HAL_INTERRUPT_SIU_LVL5);
> (gdb)
> 367       HAL_INTERRUPT_MASK(CYGNUM_HAL_INTERRUPT_SIU_LVL6);
> (gdb)
> 368       HAL_INTERRUPT_MASK(CYGNUM_HAL_INTERRUPT_SIU_LVL7);
> (gdb)
> 384       sci_arbiter.priority = CYGNUM_HAL_ISR_SOURCE_PRIORITY_QSCI;
> (gdb)
> 386       sci_arbiter.arbiter = hal_arbitration_isr_sci;
> (gdb)
> 388       hal_mpc5xx_install_arbitration_isr(&sci_arbiter);
> (gdb)
> 386       sci_arbiter.arbiter = hal_arbitration_isr_sci;
> (gdb)
> 385       sci_arbiter.data    = 0;
> (gdb)
> 386       sci_arbiter.arbiter = hal_arbitration_isr_sci;
> (gdb)
> 388       hal_mpc5xx_install_arbitration_isr(&sci_arbiter);
> (gdb)
> hal_mpc5xx_install_arbitration_isr (adata=0x7) at 
> /scratch/ecos/ecos-2.0/packages/hal/powerpc/mpc5xx/current/src/var_intr.c:288
> 288       CYG_ADDRWORD vector = 2*(1 + adata->priority);
> (gdb)
> 287     { // Find the SIU vector from the priority
> (gdb)
> 288       CYG_ADDRWORD vector = 2*(1 + adata->priority);
> (gdb)
> 290       if(vector < CYGNUM_HAL_INTERRUPT_SIU_LVL7)
> (gdb) step
> 292         HAL_INTERRUPT_ATTACH(vector, adata->arbiter, adata->data, 
> adata);
> (gdb)
> 293         HAL_INTERRUPT_UNMASK(vector);
> (gdb) s
> cyg_hal_interrupt_unmask (vector=2) at 
> /scratch/ecos/phy_ecos_install/include/cyg/hal/var_intr.h:983
> 983         switch (vector) {
>
> (gdb) print vector
> $1 = 2
> (gdb) print level
> No symbol "level" in current context.
>
> (gdb) s
> 989             HAL_READ_UINT32 (CYGARC_REG_IMM_SIMASK, simask);
> (gdb)
> 990             simask |= (((cyg_uint32) CYGARC_REG_IMM_SIMASK_IRM0)
> (gdb)
> 992             HAL_WRITE_UINT32 (CYGARC_REG_IMM_SIMASK, simask);
> (gdb)
> 1652    }
> (gdb)
> hal_variant_IRQ_init () at 
> /scratch/ecos/ecos-2.0/packages/hal/powerpc/mpc5xx/current/src/var_intr.c:389
> 389       HAL_INTERRUPT_SET_LEVEL(CYGNUM_HAL_INTERRUPT_IMB3_SCI0_RX, 
> CYGNUM_HAL_ISR_SOURCE_PRIORITY_QSCI);
> (gdb)
> cyg_hal_interrupt_set_level (vector=33, level=0) at 
> /scratch/ecos/phy_ecos_install/include/cyg/hal/var_intr.h:2335
> 2335        if(vector < CYGNUM_HAL_INTERRUPT_IMB3_QUADCA_CI1)
>
> *(gdb) print vector
> $2 = 33
> (gdb) print level
> $3 = 0
> *
> (gdb) s
> 2343            CYG_ASSERT( level >= CYGARC_IMB3_PRIORITY_HIGH, 
> "Invalid priority");
> (gdb)
> 0x00814e68      2344            CYG_ASSERT( level <= 
> CYGARC_IMB3_PRIORITY_LOW, "Invalid priority");
>
> (gdb) s
> cyg_assert_msg (psz_func=0x824a70 "cyg_hal_interrupt_set_level", 
> psz_file=0x8245c0 
> "/scratch/ecos/phy_ecos_install/include/cyg/hal/var_intr.h",
>     linenum=2343, psz_msg=0x824a8c "Invalid priority") at 
> /scratch/ecos/ecos-2.0/packages/infra/current/src/tcdiag.cxx:145
> 145         HAL_DISABLE_INTERRUPTS(old_ints);
> Current language:  auto; currently c++
> (gdb) s
> 601     __call_VV1(CYGNUM_CALL_IF_SET_CONSOLE_COMM, 
> __call_if_set_console_comm_t, int, int)
> (gdb)
> 657     __call_VV2(CYGNUM_CALL_IF_FLASH_CFG_OP, 
> __call_if_flash_cfg_op_fn_t, cyg_bool, int, struct cyg_fconfig *)
> (gdb)
> 601     __call_VV1(CYGNUM_CALL_IF_SET_CONSOLE_COMM, 
> __call_if_set_console_comm_t, int, int)
> (gdb)
> 657     __call_VV2(CYGNUM_CALL_IF_FLASH_CFG_OP, 
> __call_if_flash_cfg_op_fn_t, cyg_bool, int, struct cyg_fconfig *)
> (gdb)
> 159             fc.key = "info_console_force";
> (gdb)
> 657     __call_VV2(CYGNUM_CALL_IF_FLASH_CFG_OP, 
> __call_if_flash_cfg_op_fn_t, cyg_bool, int, struct cyg_fconfig *)
>
> /
> the stack trace using backtrace was following *********
> /(gdb) bt
> #0  cyg_assert_msg (psz_func=0x824a70 "cyg_hal_interrupt_set_level", 
> psz_file=0x8245c0 
> "/scratch/ecos/phy_ecos_install/include/cyg/hal/var_intr.h",
>     linenum=2343, psz_msg=0x824a8c "Invalid priority") at 
> /scratch/ecos/ecos-2.0/packages/infra/current/src/tcdiag.cxx:161
> #1  0x00814e88 in cyg_hal_interrupt_set_level (*vector=4294967293, 
> level=8537536*) at 
> /scratch/ecos/phy_ecos_install/include/cyg/hal/var_intr.h:2344
> #2  0x008139e8 in hal_variant_IRQ_init () at 
> /scratch/ecos/ecos-2.0/packages/hal/powerpc/mpc5xx/current/src/var_intr.c:389
> #3  0x0081333c in hal_IRQ_init () at 
> /scratch/ecos/ecos-2.0/packages/hal/powerpc/arch/current/src/hal_intr.c:66
>


-- 
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss



More information about the Ecos-discuss mailing list