<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, Jul 27, 2019 at 5:49 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">Hello Vijay,<br>
<br>
sorry for the long delay between posting and review. It was a busy week.<br>
<br>
Would that replace part of the documentation you did in the beagle BSP?<br>
In that case it might could be good to remove it from there and put up a<br>
reference.<br>
<br>
@all: Could one of our native English speakers please proof-read that too?<br>
<br></blockquote><div>Hi, I have posted the v3 of the patch with the corrections you noted, please </div><div>have a look:</div><div><a href="https://lists.rtems.org/pipermail/devel/2019-July/026943.html">https://lists.rtems.org/pipermail/devel/2019-July/026943.html</a> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
On 23/07/2019 06:41, Vijay Kumar Banerjee wrote:<br>
> ---<br>
>  user/exe/device-tree.rst | 100 +++++++++++++++++++++++++++++++++++++++<br>
>  user/exe/index.rst       |   1 +<br>
>  2 files changed, 101 insertions(+)<br>
>  create mode 100644 user/exe/device-tree.rst<br>
> <br>
> diff --git a/user/exe/device-tree.rst b/user/exe/device-tree.rst<br>
> new file mode 100644<br>
> index 0000000..fcbcfd7<br>
> --- /dev/null<br>
> +++ b/user/exe/device-tree.rst<br>
> @@ -0,0 +1,100 @@<br>
> +.. SPDX-License-Identifier: CC-BY-SA-4.0<br>
> +<br>
> +.. Copyright (C) 2018 Vijay Kumar Banerjee <<a href="mailto:vijaykumar9597@gmail.com" target="_blank">vijaykumar9597@gmail.com</a>><br>
<br>
Wrong year. Except you started with that last year.<br>
<br>
> +<br>
> +Device Tree<br>
> +===========<br>
> +.. index:: Device Tree<br>
> +<br>
> +A Device Tree is a data structure that is used to describe properties of<br>
> +non-discoverable hardware instead of hardcoding them on the Kernel. The device<br>
> +tree data is generally stored in a `.dts` or a Device Tree Source (DTS) file.<br>
> +This file is then compiled into a binary format called Device Tree Blob (DTB)<br>
> +with `.dtb` extension. RTEMS preferably uses DTB built from the FreeBSD source<br>
> +tree matching the libbsd HEAD commit hash.<br>
<br>
If RTEMS is used together with libbsd the DTB should be build from the<br>
FreeBSD source tree matching the commit that is used for `freebsd-org`<br>
in libbsd.<br>
<br>
> +<br>
> +Building the DTB<br>
> +----------------<br>
> +<br>
> +A single device tree source (DTS) file can be built using the `dtc` tool in<br>
> +libfdt using the following command :<br>
> +<br>
> +.. code-block:: none<br>
> +<br>
> +    dtc -I dts -O dtb -o my-devicetree.dtb my-devicetree.dts<br>
> +<br>
<br>
Maybe already mention the -@ option here if someone wants to use overlays.<br>
<br>
> +For building the DTS from the FreeBSD source, the `make_dtb.sh` script<br>
> +from `freebsd/sys/tools/fdt` must be used as most of the DTS files in FreeBSD<br>
> +have included `.dtsi` files from their source tree. An example is given below as<br>
> +a reference of how to build the device tree from the FreeBSD source.<br>
> +<br>
> +`NOTE : The following example uses FreeBSD master branch from github mirror as<br>
<br>
I think there shouldn't be a space between NOTE and the colon, should there?<br>
<br>
> +an example. It is advised to always use the source from the commit matching the<br>
> +libBSD HEAD.`<br>
<br>
... matching `freebsd_org` in libbsd.<br>
<br>
> +<br>
> +.. code-block:: shell<br>
> +   :linenos:<br>
> +<br>
> +     #We're using the script from freebsd/sys/tools/make_dtb.sh<br>
> +     #Target device: Beaglebone Black.<br>
> +     #Architecture: Arm.<br>
> +     #DTS source name: am335x-boneblack.dts<br>
> +<br>
> +     #The make_dtb.sh script uses environment variable MACHINE<br>
> +     export MACHINE='arm'<br>
> +<br>
> +     SCRIPT_DIR=$HOME/freebsd/sys/tools/fdt<br>
> +<br>
> +     #The arguments to the script are<br>
> +     # $1 -> Build Tree (This is the path to freebsd/sys/ directory)<br>
> +     # $2 -> DTS source file<br>
> +     # $3 -> output path of the DTB file<br>
> +<br>
> +     ${SCRIPT_DIR}/make_dtb.sh ${SCRIPT_DIR}/../../ \<br>
> +     ${SCRIPT_DIR}/../../gnu/dts/arm/am335x-boneblack.dts \<br>
> +     $(pwd)<br>
> +<br>
> +Using Device Tree Overlay<br>
> +-------------------------<br>
> +<br>
> +Device tree overlay is used either to add properties or devices to the existing<br>
> +device tree. Adding any property to DTS using an overlay will override the<br>
> +current values in the DTB. The Overlays enable us to modify the device tree<br>
> +using a small maintainable plugin without having to edit the whole Base Tree.<br>
> +<br>
> +There are two ways of applying an overlay on top of the built dtb.<br>
> +<br>
> +#. Use fdtoverlay from libfdt<br>
> +<br>
> +#. Add the overlay in the root partition of the SDcard and apply it using u-boot<br>
<br>
"U-Boot" - they use big letters on their home page:<br>
<a href="http://www.denx.de/wiki/U-Boot" rel="noreferrer" target="_blank">http://www.denx.de/wiki/U-Boot</a>. Please also fix that in the rest of the<br>
text below.<br>
<br>
> +   from the uEnv.txt file.<br>
<br>
uEnv.txt isn't a must. I think it's a Beagle convention (and maybe for<br>
some other boards too). Just stop after "apply it using U-Boot"<br>
<br>
> +<br>
> +The fdtoverlay command can be used as follows:<br>
> +<br>
> +.. code-block:: none<br>
> +<br>
> +    fdtoverlay -i my-base-tree.dtb -o output-tree.dtb my-overlay.dtbo<br>
> +<br>
> +To apply it from u-boot during system initialization we have to add the device<br>
> +tree overlay file in the root directory of the SDcard and use uEnv.txt to load<br>
> +and apply the overlay.<br>
<br>
Again: SD card (by the way: There should be a space between SD and card<br>
as far as I know) and uEnv.txt is for Beagle.<br>
<br>
> +<br>
> +Below is a sample script that can be used as a reference to write the uEnv.txt<br>
> +properly so that it applies all the overlays (.dtbo):<br>
> +<br>
> +.. code-block:: shell<br>
> +    :linenos:<br>
> +<br>
> +    overlays="fdt addr 0x88000000"<br>
> +    app=rtems-app.img<br>
> +    DTB_INSTALL_NAME=my-basetree.dtb<br>
> +<br>
> +    for f in "$(pwd)"/*.dtbo<br>
> +    do<br>
> +        name=`basename "${f}"`<br>
> +        overlays="${overlays}; fatload mmc 0 0x88100000 ${name}; fdt resize 0x1000; fdt apply 0x88100000"<br>
> +    done<br>
> +    echo "setenv bootdelay 5<br>
> +    uenvcmd=run boot<br>
> +    boot=fatload mmc 0 0x80800000 $app ; fatload mmc 0 0x88000000 ${DTB_INSTALL_NAME} ; ${overlays} ; bootm 0x80800000 - 0x88000000" >uEnv.txt<br>
<br>
I would suggest to only show the U-Boot commands (in multiple lines)<br>
that are used to apply an overlay and not the script to generate a<br>
uEnv.txt. Would most likely be more useful if someone tries to adapt it<br>
to another board.<br>
<br>
> +<br>
> diff --git a/user/exe/index.rst b/user/exe/index.rst<br>
> index 3e9b571..e22420a 100644<br>
> --- a/user/exe/index.rst<br>
> +++ b/user/exe/index.rst<br>
> @@ -21,3 +21,4 @@ execiutable, and creating and dynamically loading code.<br>
>     initialization<br>
>     debugging<br>
>     loader<br>
> +   device-tree<br>
> <br>
</blockquote></div></div>