[PATCH] bsp/imxrt: Enforce alignment for devicetree

Joel Sherrill joel at rtems.org
Wed Feb 16 15:04:09 UTC 2022


On Wed, Feb 16, 2022 at 3:22 AM Christian Mauderer
<christian.mauderer at embedded-brains.de> wrote:
>
> A device tree binary has to be 8 byte aligned in memory. This is checked
> since RTEMS commit 34052ef78cf8724dee73e9279b2c6bff8cfed234 "libfdt: Add
> FDT alignment check to fdt_check_header()".
> ---
>  bsps/arm/imxrt/dts/imxrt1050-evkb.c   | 2 +-
>  bsps/arm/imxrt/dts/imxrt1050-evkb.dts | 2 +-
>  bsps/arm/imxrt/include/bsp.h          | 2 +-
>  3 files changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/bsps/arm/imxrt/dts/imxrt1050-evkb.c b/bsps/arm/imxrt/dts/imxrt1050-evkb.c
> index 301e790c6b..ecae160a8e 100644
> --- a/bsps/arm/imxrt/dts/imxrt1050-evkb.c
> +++ b/bsps/arm/imxrt/dts/imxrt1050-evkb.c
> @@ -6,7 +6,7 @@
>
>  #include <sys/types.h>
>
> -const unsigned char imxrt_dtb[] = {
> +const unsigned char imxrt_dtb[] __attribute__(( __aligned__(8) )) = {
>    0xd0, 0x0d, 0xfe, 0xed, 0x00, 0x00, 0x3f, 0xf6, 0x00, 0x00, 0x00, 0x38,
>    0x00, 0x00, 0x3b, 0xf8, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x11,
>    0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xbe,
> diff --git a/bsps/arm/imxrt/dts/imxrt1050-evkb.dts b/bsps/arm/imxrt/dts/imxrt1050-evkb.dts
> index 9310371428..dae7e8939f 100644
> --- a/bsps/arm/imxrt/dts/imxrt1050-evkb.dts
> +++ b/bsps/arm/imxrt/dts/imxrt1050-evkb.dts
> @@ -31,7 +31,7 @@
>   *     export BSP_DIR="${RTEMS_SRC_DIR}/bsps/arm/imxrt/"
>   *     arm-rtems6-cpp -P -x assembler-with-cpp -I "${BSP_DIR}/include/" -include "${BSP_DIR}/dts/imxrt1050-evkb.dts" /dev/null | \
>   *         dtc -O dtb -o "${BSP_DIR}/dts/imxrt1050-evkb.dtb" -b 0 -p 64
> - *     rtems-bin2c -C -N imxrt_dtb "${BSP_DIR}/dts/imxrt1050-evkb.dtb" "${BSP_DIR}/dts/imxrt1050-evkb.c"
> + *     rtems-bin2c -A 8 -C -N imxrt_dtb "${BSP_DIR}/dts/imxrt1050-evkb.dtb" "${BSP_DIR}/dts/imxrt1050-evkb.c"
>   */
>
>  /dts-v1/;
> diff --git a/bsps/arm/imxrt/include/bsp.h b/bsps/arm/imxrt/include/bsp.h
> index d7e37628e5..9f3b913a17 100644
> --- a/bsps/arm/imxrt/include/bsp.h
> +++ b/bsps/arm/imxrt/include/bsp.h
> @@ -57,7 +57,7 @@ extern "C" {
>  #define BSP_FEATURE_IRQ_EXTENSION
>
>  #define BSP_FDT_IS_SUPPORTED
> -extern const unsigned char imxrt_dtb[];
> +extern const unsigned char imxrt_dtb[] __attribute__(( __aligned__(8) ));

Why not use RTEMS_ALIGNED?

And is it assumed that if the user wants to provide a different
device tree, they will follow the same naming? Otherwise, why
are symbols in the public facing bsp.h.

>  extern const size_t imxrt_dtb_size;
>
>  void *imx_get_reg_of_node(const void *fdt, int node);
> --
> 2.31.1
>
> _______________________________________________
> devel mailing list
> devel at rtems.org
> http://lists.rtems.org/mailman/listinfo/devel


More information about the devel mailing list