[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