Device Tree Blob for Beaglebone Black?

Christian Mauderer list at c-mauderer.de
Mon Feb 24 18:54:05 UTC 2020


On 24/02/2020 19:43, Alan Cudmore wrote:
> It looks like the mkimage command difference fixed the crash.
> 
> The original BSP README:
> https://git.rtems.org/rtems/tree/bsps/arm/beagle/README
> $ mkimage -A arm -O rtems -T kernel -a 0x80000000 -e 0x80000000 -n
> RTEMS -d $exe.bin.gz rtems-app.img
> 
> The docs.rtems.org beagle BSP readme:
> https://git.rtems.org/rtems-docs/tree/user/bsps/arm/beagle.rst
> mkimage -A arm -O linux -T kernel -a 0x80000000 -e 0x80000000 -n RTEMS
> -d app.bin.gz rtems-app.img

I think that the README is heavily outdated. Is there some information
left in it that isn't in the User Manual (docs.rtems.org)? If no: Would
you like to send a patch that removes it?

> 
> Thanks for the help! Next is trying to get the ethernet to communicate
> with a host!
> 
> Alan
> 
> On Mon, Feb 24, 2020 at 12:08 PM Vijay Kumar Banerjee
> <vijaykumar9597 at gmail.com> wrote:
>>
>>
>>
>>
>> On Mon, Feb 24, 2020 at 8:16 PM Alan Cudmore <alan.cudmore at gmail.com> wrote:
>>>
>>> Hi Vijay,
>>> My uEnv.txt was very similar, but I did not have the "fdt addr
>>> 0x88000000" command. But that did not seem to help. I still get a
>>> fatal exception when trying to run the usb01 and ping01 programs.
>>>
>>> Do you think the u-boot version matters?
>>> I am using the following:
>>> - MLO and u-boot.img from a buildroot linux build. ( u-boot 2018.1)
>>
>> I don't think it's making much difference. I'm currently running u-boot 2018.11
>>>
>>> - RTEMS kernel master from about a week ago ( samples like unlimited
>>> and ticker work )
>>> - rtems-libbsd 5-freebsd-12 branch
>>
>> I haven't tested with 5-freebsd-12 branch but it runs fine on master branch.
>>>
>>> - The am335x-boneblack.dtb compiled from the suggested commit from the
>>> FreeBSD github repository.
>>>
>> This one is fine.
>>>
>>> I don't have a debugger, so I looked up the PC address from the register dump.
>>> For the ping01 sample the PC indicates that it is in the fdt_ro_probe_ function.
>>> For the usb01, it seems to crash in an termios program.
>>>
>>> ## Transferring control to RTEMS (at address 80000000) ...
>>>
>>> RTEMS Beagleboard: am335x-based
>>>         ARM Debug: 0x4b141000
>>> *** LIBBSD PING 1 TEST ***
>>>
>>> *** FATAL ***
>>> fatal source: 9 (RTEMS_FATAL_SOURCE_EXCEPTION)
>>>
>>> R0   = 0x00000000 R8  = 0x00000000
>>> R1   = 0x0000feed R9  = 0x00000000
>>> R2   = 0x00000007 R10 = 0x00000064
>>> R3   = 0x006e6573 R11 = 0x802520a0
>>> R4   = 0x00000007 R12 = 0x01010101
>>> R5   = 0xfffffff7 SP  = 0x8027589c
>>> R6   = 0x80150dac LR  = 0x8011b1d0
>>> R7   = 0x00000000 PC  = 0x8011a11c
>>> CPSR = 0x00000113 VEC = 0x00000004
>>> RTEMS version: 5.0.0.588646279951ff696f3893a4c2e79aa1ba67fccf
>>> RTEMS tools: 7.5.0 20191114 (RTEMS 5, RSB 5 (57011908b007), Newlib d14714c69)
>>> executing thread ID: 0x08a010001
>>> executing thread name: UI1
>>>
>>> One more question:
>>> I am converting the images using the following commands:
>>> arm-rtems5-objcopy $1.exe -O binary $1.bin
>>> gzip -9 $1.bin
>>> mkimage -A arm -O rtems -T kernel -a 0x80000000 -e 0x80000000 -n RTEMS
>>> -d $1.bin.gz $1-app.img
>>>
>> Mine is similar with a slight change in OS option:
>>
>> arm-rtems5-objcopy $executable -O binary $TMPDIR/${base}.bin
>> gzip -9 $TMPDIR/${base}.bin
>> mkimage -A arm -O linux -T kernel -a 0x80000000 -e 0x80000000 -n RTEMS -d $TMPDIR/${base}.bin.gz $TMPDIR/$app
>>
>>> Are the 0x8000.0000 addresses correct in the mkimage command? It seems
>>> that the RTEMS executable considers the start of RAM to be 0x8000.0000
>>>
>> Yes, the start address is correct.
>>>
>>> It might be good to have an image I can try.
>>>
>> I'll send that to you offlist shortly :)
>>>
>>> Thanks for the help!
>>> Alan
>>>
>>> On Mon, Feb 24, 2020 at 12:57 AM Vijay Kumar Banerjee
>>> <vijaykumar9597 at gmail.com> wrote:
>>>>
>>>>
>>>>
>>>> On Sun, Feb 23, 2020 at 11:46 PM Alan Cudmore <alan.cudmore at gmail.com> wrote:
>>>>>
>>>>> Hi Christian,
>>>>> Thanks for the quick response. I followed the instructions in the
>>>>> docs.rtems.org manual and generated the dtb from the FreeBSD commit
>>>>> that Vijay suggested. It still resulted in an exception in the same
>>>>> function.
>>>>>
>>>>> Do you know if a specific commit of rtems-libbsd is required to work
>>>>> with that dtb?
>>>>> I tried master, and then the "5-freebsd-12" branch.
>>>>>
>>>>> Thanks,
>>>>> Alan
>>>>>
>>>> Hi Alan,
>>>>
>>>> I checked with the usb01 and ping01 tests running on libbsd master
>>>> and the dtb from the commit mentioned by Christian. I can't reproduce
>>>> the error and it seems to run as expected. I'm not sure where the
>>>> error might be coming from. Below I'm pasting the contents of my uEnv.txt
>>>> If the error isn't in the uEnv, I can send you my sd card image(offlist) so that you
>>>> can try that on your board and that might give some hint on what was going
>>>> wrong.
>>>>
>>>> ```
>>>> setenv bootdelay 5
>>>> uenvcmd=run boot
>>>> boot=fatload mmc 0 0x80800000 rtems-app.img ; fatload mmc 0 0x88000000 am335x-boneblack.dtb ; fdt addr 0x88000000; bootm 0x80800000 - 0x88000000
>>>> ```
>>>>
>>>> Best regards,
>>>> Vijay
>>>>>
>>>>> On Sun, Feb 23, 2020 at 11:32 AM Christian Mauderer <list at c-mauderer.de> wrote:
>>>>>>
>>>>>> On 23/02/2020 17:07, Alan Cudmore wrote:
>>>>>>> I have been trying to bring up RTEMS with rtems-libbsd on the
>>>>>>> beaglebone black (latest master).
>>>>>>>
>>>>>>> I can run the regular RTEMS samples on the board, and a couple of the
>>>>>>> rtems-libbsd testsuite examples run as well.
>>>>>>>
>>>>>>> The samples such as ping01 and usb01 get a fatal exception in the
>>>>>>> function fdt_ro_probe_ , leading me to believe that maybe I am not
>>>>>>> using the correct device tree blob.
>>>>>>>
>>>>>>> I'm using the instructions here:
>>>>>>> https://git.rtems.org/rtems-docs/tree/user/bsps/arm/beagle.rst
>>>>>>>
>>>>>>> And I have am loading am335x-boneblack.dtb that I copied from a linux
>>>>>>> u-boot build. The instructions talk about getting the one from the
>>>>>>> FreeBSD repository, but there are many other files included in that
>>>>>>> dts source.
>>>>>>>
>>>>>>> What dtb is normally used for the Beaglebone black RTEMS libbsd testing?
>>>>>>>
>>>>>>> Is the dtb needed for the non-libbsd BSP?
>>>>>>>
>>>>>>> Also, is the ethernet supported on the RTEMS beagle BSP, or do I need
>>>>>>> libbsd to get ethernet?
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Alan
>>>>>>
>>>>>> Hello Alan,
>>>>>>
>>>>>> I recommend to use the FreeBSD device trees. libbsd is FreeBSD based and
>>>>>> therefore works best with them. Normally I would suggest to use the
>>>>>> version matching the FreeBSD commit used in libbsd. But unfortunately in
>>>>>> the last commit that doesn't seem to work. Vijay had some problems with
>>>>>> it and noted that the version from FreeBSD commit
>>>>>> 19a6ceb89dbacf74697d493e48c388767126d418 works fine.
>>>>>>
>>>>>> Regarding Ethernet support: As far as I know there is no support for the
>>>>>> legacy stack. But the one in libbsd worked fine the last time I tested
>>>>>> it (which was when I ported it). If you really want to use the legacy
>>>>>> stack please note that it is still an IPv4 only one and therefore it is
>>>>>> quite limited nowadays.
>>>>>>
>>>>>> Best regards
>>>>>>
>>>>>> Christian
>>>>> _______________________________________________
>>>>> devel mailing list
>>>>> devel at rtems.org
>>>>> http://lists.rtems.org/mailman/listinfo/devel
> 


More information about the devel mailing list