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>> 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

Reply via email to