Hi James,

For our setup (on an imx6 system), I use GDB to download the u-boot image (with my FDT)  I want into memory (load this one last so it has the execution address), and the RTEMS image (load first) , and then call the u-boot image which starts my RTEMS image with the FDT in place.

That way no SD card required and all running in the memory.

regards,

Ian Caddy


On 31/12/2020 4:39 am, James Fitzsimons wrote:
Hi Christian,

Thanks very much for this suggestion. I gave it a shot this morning and although it's not working yet, I can at least see the PC register is pointing to the right location in memory now which is a step in the right direction.

I'll keep investigating as not having to copy to an SD card would make the workflow a bit more convenient.

Cheers,
James

On Tue, 29 Dec 2020 at 22:20, Christian Mauderer <o...@c-mauderer.de <mailto:o...@c-mauderer.de>> wrote:

    On 29/12/2020 05:43, Chris Johns wrote:
    > On 29/12/20 3:24 pm, James Fitzsimons wrote:
    >> Hi Chris,
    >>
    >> Thanks very much for your reply and advice.
    >>
    >> On Tue, 29 Dec 2020 at 11:58, Chris Johns <chr...@rtems.org
    <mailto:chr...@rtems.org>
    >> <mailto:chr...@rtems.org <mailto:chr...@rtems.org>>> wrote:
    >>
    >>      > I'm using TI Code Composer Studio to load the RTEMS
    application image via
    >>      XDS100
    >>      > V3.0 debugger. If I reset the program counter and step
    through the startup
    >>      code
    >>      > I see it error on the bsp_fdt_get() call.
    >>
    >>      Is this a crash or is an error reported? We should report
    an error and not
    >>      crash.
    >>
    >>
    >> Neither - the processor continues running, just not executing
    anything useful.
    >>
    >>      > My IDE isn't copying an fdt image to the expected
    location the way uboot
    >>      would,
    >>      > and so this makes sense. My question is how do other
    people get around
    >>      this problem?
    >>      >
    >>      > Has anyone else used a similar setup and solved this issue?
    >>
    >>      I have not hit this issue but I saw this as a problem with
    the approach taken of
    >>      loading an FDT via the bootloader. It would have been nice
    to have a way to
    >>      integrate an FDT into the IMFS (or executable) rather than
    an external load.
    >>
    >>
    >> Agreed - this would make it much easier to debug things. Even
    just having this
    >> as an option
    >> to support debugging would be useful.
    >>
    >>
    >>      Another approach is to boot using uboot and have it load
    the FDT and RTEMS
    >>      executable then jump to it. If you can connect via JTAG,
    reset the processor,
    >>      set a hardware break point on the entry point to RTEMS,
    and start the processor
    >>      running from reset it should trigger when uboot jumps to
    RTEMS. The entry point
    >>      is at a fixed address. When the breakpoint is hit delete
    it and then you can set
    >>      further break points in your application.
    >>
    >>
    >> Thanks for this suggestion - I've managed to get this working
    pretty much as you
    >> described.
    >> I build the SD card image and boot from that, then connect via
    JTAG, reset and
    >> break on Init().
    >> It's a pretty clunky process, but at least I have actual on
    device debugging
    >> working now instead of
    >> having to rely on printf debugging.
    >
    > Excellent and thanks for reporting it back to us. Yes it is
    clunky however
    > anything else would need time spent adding IMFS support or
    directly linked in
    > support and no one has done that.

    The imxrt BSP uses an FDT that is build into the binary. It should be
    possible to use a similar approach on custom applications for the
    BBB.
    To do that in an application I would expect that you have to do the
    following (I did not test it but it should work):

    1. Convert the dtb that you want to use to a c file:

    rtems-bin2c -C -N bbb_dtb path/to/your.dtb bbb_dtb.c

    2. Compile that bbb_dtb.c in your application.

    3. Add the following to your application (for example where you
    define
    the Init task):

    ---------
    #include <bsp/fdt.h>

    extern const unsigned char bbb_dtb[];

    void bsp_fdt_copy(const void *src)
    {
            /* Do nothing */
    }

    const void *bsp_fdt_get(void)
    {
       return bbb_dtb;
    }
    ----------

    Be aware of the licensing: The FDTs for BBB that I know are all
    GPL. So
    linking it in as a blob will most likely put your application
    under the
    terms of GPL.

    The licensing is also the reason why I would have problems adding
    an FDT
    blob and an option to link it in directly to the RTEMS repository. If
    you have a FDT that is not GPL please let me know.

    Best regards

    Christian


_______________________________________________
users mailing list
users@rtems.org
http://lists.rtems.org/mailman/listinfo/users
_______________________________________________
users mailing list
users@rtems.org
http://lists.rtems.org/mailman/listinfo/users

Reply via email to