Optimization issue in RISC-V BSP
Denis Obrezkov
denisobrezkov at gmail.com
Mon Jul 31 09:56:43 UTC 2017
2017-07-31 1:08 GMT+02:00 Hesham Almatary <heshamelmatary at gmail.com>:
> On Mon, Jul 31, 2017 at 5:03 AM, Denis Obrezkov <denisobrezkov at gmail.com>
> wrote:
> > 2017-07-30 20:40 GMT+02:00 Joel Sherrill <joel at rtems.org>:
> >>
> >>
> >>
> >> On Jul 30, 2017 12:19 PM, "Denis Obrezkov" <denisobrezkov at gmail.com>
> >> wrote:
> >>
> >> 2017-07-30 3:10 GMT+02:00 Joel Sherrill <joel at rtems.org>:
> >>>
> >>>
> >>>
> >>> On Jul 29, 2017 8:02 PM, "Denis Obrezkov" <denisobrezkov at gmail.com>
> >>> wrote:
> >>>
> >>>
> >>>
> >>> 2017-07-30 2:34 GMT+02:00 Joel Sherrill <joel at rtems.org>:
> >>>>
> >>>>
> >>>> Sorry to top post but this thread is very deep to answer on a phone.
> >>>>
> >>>> Try looking at the same code on the erc32 bsp and see how it is done.
> >>>>
> >>>> Also you could disable the atexit() call and see how.much further you
> >>>> get.
> >>>>
> >>>>
> >>> Ok, I will look at erc32 bsp.
> >>> I have removed atexit call, now I can proceed further, till the
> while(1)
> >>> loop in the low ticker test.
> >>> But the Dummy Clock doesn't tick.
> >>> So, I again get the output:
> >>> *** LOW MEMORY CLOCK TICK TEST ***
> >>> TA1 - rtems_clock_get_tod - 09:00:00 12/31/1988
> >>> TA2 - rtems_clock_get_tod - 09:00:00 12/31/1988
> >>> TA3 - rtems_clock_get_tod - 09:00:00 12/31/1988
> >>>
> >>>
> >>> Low ticker has its Init task become the idle task. Your clock driver
> >>> simulator thread is likely never running.
> >>>
> >>> Try turning that option off in the test
> >>>
> >>>
> >>>
> >>> --
> >>> Regards, Denis Obrezkov
> >>>
> >>>
> >>
> >> I tried it, but I had an error
> >> ../../../../../hifive1/lib/include/rtems/confdefs.h:3586:2: error:
> #error
> >> "CONFIGURATION ERROR: No initialization tasks or threads configured!!"
> >> #error "CONFIGURATION ERROR: No initialization tasks or threads
> >> configured!!"
> >>
> >>
> >> You have to configure an Init task.
> >>
> >>
> >>
> >>
> >> --
> >> Regards, Denis Obrezkov
> >>
> >>
> > Yes, I understand that, but I can't find proper configuration options.
> >
> #define CONFIGURE_INIT
>
> There might be other #ifdefs needed as well like:
>
> #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
>
> Have a look at the existing hello and ticker examples (not low ticker).
> >
> >
> > --
> > Regards, Denis Obrezkov
> >
> > _______________________________________________
> > devel mailing list
> > devel at rtems.org
> > http://lists.rtems.org/mailman/listinfo/devel
>
>
>
> --
> Hesham
>
I was trying to implement interrupt-driven clock driver. In bspstart.c I
added bsp_interrupt_initialize() and
added an interrupt initialization code
static void FE310_clock_driver_support_install_isr(
rtems_isr_entry Clock_isr
)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
sc = rtems_interrupt_handler_install(
1,
"Clock",
RTEMS_INTERRUPT_UNIQUE,
(rtems_interrupt_handler) Clock_isr,
NULL
);
if ( sc != RTEMS_SUCCESSFUL ) {
rtems_fatal_error_occurred(0xdeadbeef);
}
}
Also, I added a call in IRQ handler:
bsp_interrupt_handler_table[1].handler(bsp_interrupt_handler_table[1].arg);
This way I was able to generate one tick and get an exception on the second
with -O0 and
I wasn't able to generate any interrupts with -Os option with the same code.
With -O0 code behaves differently, I think I am missing something.
--
Regards, Denis Obrezkov
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/devel/attachments/20170731/cc90a805/attachment-0002.html>
More information about the devel
mailing list