ticker hangs on bf537Stamp
Sebastian Huber
sebastian.huber at embedded-brains.de
Tue Oct 15 11:20:54 UTC 2013
Hello Kolja,
maybe the Blackfin exception processing is broken.
You can set a break point to _Thread_Delay_ended(). This function will be
called once the time specified at rtems_task_wake_after() elapsed. The next
_Thread_Dispatch() call (executed in the exception epilogue) must perform a
context switch to a non-idle task in the ticker example in this case.
On 2013-10-15 12:51, Kolja Waschk wrote:
> Hi,
>
> I'm evaluating RTEMS for a Blackfin ADSP-BF537 based custom board, similar to
> the BF537-STAMP with even less peripherals.
>
> The ticker example halts after printing one line from each started task,
> although I was able to verify (with gdb via JTAG) that rtems_clock_ticks() is
> indeed called at 100 Hz and ticks are incremented.
>
> Reducing the tick count argument to rtems_task_wake_after() in Test_task to "1"
> lets all tasks run until 35s are reached, but with larger values the test comes
> to an early halt.
>
> The following output of modified ticker with rtems_task_wake_after(ticks=1) and
> added output of rtems_clock_get_ticks_since_boot() (between asterisks) proves
> the incrementing tick count:
>
> ...
> TA3 *3297* - rtems_clock_get_tod - 09:00:32 12/31/1988
> TA1 *3298* - rtems_clock_get_tod - 09:00:32 12/31/1988
> TA2 *3298* - rtems_clock_get_tod - 09:00:32 12/31/1988
> TA3 *3299* - rtems_clock_get_tod - 09:00:32 12/31/1988
> TA1 *3300* - rtems_clock_get_tod - 09:00:32 12/31/1988
> ...
>
> But with original tasks.c the output is just as described in an earlier message
> here on the list regarding "bfin simulator problems":
> http://www.rtems.org/pipermail/rtems-users/2013-May/011544.html
>
> Does this sound familiar to anyone? The board is almost uninitialized except
> for PLL, SDRAM, Flash. RTC has no crystal connected but RTC is not important
> for ticker, is it? (If it is, how can I get rid of this dependency?)
>
> The rtems-python scripts for GDB told me that tasks soon become "ready" but I
> they actually don't execute. GDB shows the CPU is only looping
> _CPU_Thread_Idle_body, interrupted by clockISR, but no task switch ever occurs.
> E.g.:
>
> (gdb) rtems task 2
> Name: TA1
> State: ready
>
> The rtems wdticks output in this state is (to me) a little strange, but this
> may be also caused by script vs. architecture inconsistencies? The "WD Routine"
> points to nowhere. Maybe this gives a clue?
>
> (gdb) rtems wdticks
> #0
> State:being-inserted
> Intial Interval:0
> Delta Interval:1
> Start time:1
> Stop time:151060481
> WD Routine:0x9010001
> #1
> State:being-inserted
> Intial Interval:0
> Delta Interval:1
> Start time:1
> Stop time:151060481
> WD Routine:0x9010001
>
>
> Thanks in advance for any hints regarding this!
>
> Kolja
>
> _______________________________________________
> rtems-users mailing list
> rtems-users at rtems.org
> http://www.rtems.org/mailman/listinfo/rtems-users
--
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.huber at embedded-brains.de
PGP : Public key available on request.
Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.
More information about the users
mailing list