<div dir="ltr"><div dir="ltr"><br><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Sep 17, 2019 at 2:21 PM Christian Mauderer <<a href="mailto:list@c-mauderer.de">list@c-mauderer.de</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On 17/09/2019 08:46, Vijay Kumar Banerjee wrote:<br>
> <br>
> <br>
> On Thu, Sep 12, 2019 at 2:37 PM Christian Mauderer<br>
> <<a href="mailto:christian.mauderer@embedded-brains.de" target="_blank">christian.mauderer@embedded-brains.de</a><br>
> <mailto:<a href="mailto:christian.mauderer@embedded-brains.de" target="_blank">christian.mauderer@embedded-brains.de</a>>> wrote:<br>
> <br>
> <br>
> <br>
>     On 12/09/2019 10:28, Vijay Kumar Banerjee wrote:<br>
>     ><br>
>     ><br>
>     ><br>
>     > On Wed, Sep 11, 2019 at 4:38 PM Christian Mauderer<br>
>     > <<a href="mailto:christian.mauderer@embedded-brains.de" target="_blank">christian.mauderer@embedded-brains.de</a><br>
>     <mailto:<a href="mailto:christian.mauderer@embedded-brains.de" target="_blank">christian.mauderer@embedded-brains.de</a>><br>
>     > <mailto:<a href="mailto:christian.mauderer@embedded-brains.de" target="_blank">christian.mauderer@embedded-brains.de</a><br>
>     <mailto:<a href="mailto:christian.mauderer@embedded-brains.de" target="_blank">christian.mauderer@embedded-brains.de</a>>>> wrote:<br>
>     ><br>
>     >     On 11/09/2019 10:48, Vijay Kumar Banerjee wrote:<br>
>     >     ><br>
>     >     >  Hi,<br>
>     >     ><br>
>     >     > Since adding I2C in BBB initialization seems like the right<br>
>     solution,<br>
>     >     > should we ask<br>
>     >     > in devel and user lists in a separate thread, to know if<br>
>     anyone is<br>
>     >     > opposed to this change?<br>
>     ><br>
>     >     Hello Vijay,<br>
>     ><br>
>     >     just send a patch. That will start the discussion if someone<br>
>     objects<br>
>     >     to it.<br>
>     ><br>
>     >     ><br>
>     >     > Where should I be looking for to add i2c in BBB initialization?<br>
>     ><br>
>     >     Please take a look at the dependencies. If there are any (like<br>
>     clocks or<br>
>     >     similar) you have to add it afterwards.<br>
>     ><br>
>     >     Take a look at some other BSPs where similar hardware (like<br>
>     I2C, SPI,<br>
>     >     some external chips, ...) is initialized. For example the<br>
>     mvme3100 uses<br>
>     >     a RTEMS_SYSINIT_ITEM to pick a random sample. But I think most<br>
>     BSPs use<br>
>     >     a special init function similar to the one in BBB.<br>
>     ><br>
>     > Hi,<br>
>     ><br>
>     > I tried a very similar approach and added RTEMS_SYSINIT_ITEM<br>
>     > :<br>
>     > ```<br>
>     > diff --git a/bsps/arm/beagle/start/bspstart.c<br>
>     > b/bsps/arm/beagle/start/bspstart.c<br>
>     > index 224f9ecf3b..35839e774b 100644<br>
>     > --- a/bsps/arm/beagle/start/bspstart.c<br>
>     > +++ b/bsps/arm/beagle/start/bspstart.c<br>
>     > @@ -17,6 +17,8 @@<br>
>     >  #include <bsp/irq-generic.h><br>
>     >  #include <bsp/fdt.h><br>
>     >  #include <bsp/linker-symbols.h><br>
>     > +#include <bsp/i2c.h><br>
>     > +#include <rtems/sysinit.h><br>
>     >  <br>
>     >  #include "bspdebug.h"<br>
>     >  <br>
>     > @@ -41,3 +43,15 @@ uint32_t bsp_fdt_map_intr(const uint32_t *intr,<br>
>     > size_t icells)<br>
>     >  {<br>
>     >    return intr[0];<br>
>     >  }<br>
>     > +<br>
>     > +static void bbb_i2c_0_initialize(void)<br>
>     > +{<br>
>     > +  bbb_register_i2c_0();<br>
>     > +}<br>
>     > +<br>
>     > +RTEMS_SYSINIT_ITEM(<br>
>     > +  bbb_i2c_0_initialize,<br>
>     > +  RTEMS_SYSINIT_BSP_PRE_DRIVERS,<br>
>     > +  RTEMS_SYSINIT_ORDER_MIDDLE<br>
>     > +);<br>
>     > ``` <br>
>     > This is successfully calling the `am335x_i2c_bus_register` but<br>
>     > the issue with this approach is that it's returning the following<br>
>     > internal error after `am335x_i2c_reset` call.<br>
>     > ```<br>
>     > _Terminate (the_source=the_source@entry=INTERNAL_ERROR_CORE,<br>
>     > the_error=the_error@entry=30)<br>
>     > ```<br>
>     ><br>
>     > Any hint on what might be the cause of the error?<br>
> <br>
>     Just a guess: Are you sure that "BSP_PRE_DRIVERS" is the right order?<br>
>     It's a driver so maybe somewhen during the drivers?<br>
> <br>
> I tried RTEMS_SYSINIT_DEVICE_DRIVERS, and eve RTEMS_SYSINIT_LAST,<br>
> but it doesn't seem to work. Maybe it needs to be called in a further<br>
> later stage.<br>
<br>
I think you have a debugger? Could you set a breakpoint to _Terminate<br>
and take a look at the back trace what caused the error?<br>
<br></blockquote><div>Hi,</div><div>I followed the error and figured out that the reason for the error was a call to</div><div>`rtems_task_wake_after` which was coming from the `udelay()` call in bbb-i2c</div><div>in function `am335x_i2c_reset`. For now, commenting out the udelay calls work</div><div>without error and I can also see the lvgl example working.</div><div><br></div><div>What is the use of udelay there? Can it be removed? if not, what's the better way</div><div>to make a delay at system initialization than `rtems_task_wake_after`?</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
> <br>
>     Does bbb_i2c_0_initialize has a type that is compatible with the sysinit<br>
>     items?<br>
> <br>
> yes, I checked this. the function is called and it's reaching<br>
> am335x_i2c_* calls<br>
> but it's getting stuck somewhere between i2c_reset and pinmux. Am I possibly<br>
> missing some other drivers that it depends on? <br>
> Can you please point me to the doc/note where the init sequence is properly <br>
> described. Also, if there's some other bsp that has initialized a driver<br>
> at init, please<br>
> point me to that for reference.  <br>
> <br>
>     ><br>
>     >     Best regards<br>
>     ><br>
>     >     Christian<br>
>     ><br>
> <br>
>     -- <br>
>     --------------------------------------------<br>
>     embedded brains GmbH<br>
>     Herr Christian Mauderer<br>
>     Dornierstr. 4<br>
>     D-82178 Puchheim<br>
>     Germany<br>
>     email: <a href="mailto:christian.mauderer@embedded-brains.de" target="_blank">christian.mauderer@embedded-brains.de</a><br>
>     <mailto:<a href="mailto:christian.mauderer@embedded-brains.de" target="_blank">christian.mauderer@embedded-brains.de</a>><br>
>     Phone: +49-89-18 94 741 - 18<br>
>     Fax:   +49-89-18 94 741 - 08<br>
>     PGP: Public key available on request.<br>
> <br>
>     Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.<br>
> <br>
> <br>
> _______________________________________________<br>
> devel mailing list<br>
> <a href="mailto:devel@rtems.org" target="_blank">devel@rtems.org</a><br>
> <a href="http://lists.rtems.org/mailman/listinfo/devel" rel="noreferrer" target="_blank">http://lists.rtems.org/mailman/listinfo/devel</a><br>
> <br>
</blockquote></div></div>