[PATCH 2/2] bcm4908: build flashable & bootable firmware images

Adrian Schmutzler mail at adrianschmutzler.de
Fri Jan 15 10:18:52 EST 2021


Hi,

some format nitpicking again and some other comments below:

> -----Original Message-----
> From: openwrt-devel [mailto:openwrt-devel-bounces at lists.openwrt.org]
> On Behalf Of Rafal Milecki
> Sent: Freitag, 15. Januar 2021 10:44
> To: openwrt-devel at lists.openwrt.org
> Cc: Rafał Miłecki <rafal at milecki.pl>
> Subject: [PATCH 2/2] bcm4908: build flashable & bootable firmware images
> 
> From: Rafał Miłecki <rafal at milecki.pl>
> 
> BCM4908 bootloader requires firmware with JFFS2 image containing:
> 1. cferam.000
> 2. 94908.dtb
> 3. vmlinux.lz
> 4. device custom files
> 
> cferam.000 can be obtained from the bcm63xx-cfe repository. It requires
> specifying directory path that is defined using COMPATIBLE variable.
> 
> For convenience directories with device custom files are named the same
> way.
> 
> Signed-off-by: Rafał Miłecki <rafal at milecki.pl>
> ---
>  target/linux/bcm4908/image/Makefile           | 19 +++++++++++++++++++
>  .../image/asus,gt-ac5300/rom/etc/image_ident  |  2 ++
>  .../asus,gt-ac5300/rom/etc/image_version      |  1 +
>  .../image/netgear,r8000p/etc/image_ident      |  4 ++++
>  .../image/netgear,r8000p/etc/image_version    |  1 +
>  5 files changed, 27 insertions(+)
>  create mode 100644 target/linux/bcm4908/image/asus,gt-
> ac5300/rom/etc/image_ident
>  create mode 100644 target/linux/bcm4908/image/asus,gt-
> ac5300/rom/etc/image_version
>  create mode 100644
> target/linux/bcm4908/image/netgear,r8000p/etc/image_ident
>  create mode 100644
> target/linux/bcm4908/image/netgear,r8000p/etc/image_version
> 
> diff --git a/target/linux/bcm4908/image/Makefile
> b/target/linux/bcm4908/image/Makefile
> index f5db38915d..eed4779d92 100644
> --- a/target/linux/bcm4908/image/Makefile
> +++ b/target/linux/bcm4908/image/Makefile
> @@ -13,6 +13,21 @@ define Build/bcm4908kernel
>  	mv $@.new $@
>  endef
> 
> +define Build/bcm4908img
> +	rm -fr $@-bootfs
> +	mkdir -p $@-bootfs
> +	cp -r $(COMPATIBLE)/* $@-bootfs/
> +	touch $@-bootfs/1-dummy
> +	cp $(DTS_DIR)/$(firstword $(DEVICE_DTS)).dtb $@-bootfs/94908.dtb
> +	cp $(KDIR)/bcm63xx-cfe/$(COMPATIBLE)/cferam.000 $@-bootfs/
> +	cp $(IMAGE_KERNEL) $@-bootfs/vmlinux.lz
> +
> +	$(STAGING_DIR_HOST)/bin/mkfs.jffs2 --pad --little-endian --squash-
> uids -v -e 128KiB -o $@-bootfs.jffs2 -d $@-bootfs -m none -n
> +	$(STAGING_DIR_HOST)/bin/bcm4908img create $@ -f $@-
> bootfs.jffs2 endef
> +
> +DEVICE_VARS += COMPATIBLE
> +
>  define Device/Default
>    KERNEL := kernel-bin | bcm4908lzma | bcm4908kernel
>    KERNEL_DEPENDS = $$(wildcard $(DTS_DIR)/$$(DEVICE_DTS).dts) @@ -
> 29,7 +44,9 @@ define Device/asus_gt-ac5300
>    DEVICE_VENDOR := Asus
>    DEVICE_MODEL := GT-AC5300
>    DEVICE_DTS := broadcom/bcm4908/bcm4908-asus-gt-ac5300
> +  COMPATIBLE := asus,gt-ac5300

Consider using just the SUPPORTED_DEVICES variable name here instead. Even if it's not used here for updating, it's essentially where the current compatible is stored on almost all of the other targets, and it's in DEVICE_VARS by default. (One can use $(firstword $(SUPPORTED_DEVICES)) to be sure in Build/bcm4908img then)

Apart from that (and independent of whether you change the name or not), we should define a default value for this in Device/Default:

SUPPORTED_DEVICES := $(subst _,$(comma),$(1))
or
COMPATIBLE := $(subst _,$(comma),$(1))

This will cover all current cases, and it can easily be overwritten by device-specific definitions where necessary.

>    IMAGES := bin
> +  IMAGE/bin := bcm4908img
>  endef
>  TARGET_DEVICES += asus_gt-ac5300
> 
> @@ -37,7 +54,9 @@ define Device/netgear_r8000p
>    DEVICE_VENDOR := Netgear
>    DEVICE_MODEL := R8000P
>    DEVICE_DTS := broadcom/bcm4908/bcm4906-netgear-r8000p
> +  COMPATIBLE := netgear,r8000p
>    IMAGES := bin
> +  IMAGE/bin := bcm4908img
>  endef
>  TARGET_DEVICES += netgear_r8000p
> 
> diff --git a/target/linux/bcm4908/image/asus,gt-
> ac5300/rom/etc/image_ident b/target/linux/bcm4908/image/asus,gt-
> ac5300/rom/etc/image_ident
> new file mode 100644
> index 0000000000..9e73fe74a7
> --- /dev/null
> +++ b/target/linux/bcm4908/image/asus,gt-ac5300/rom/etc/image_ident

Can you point me at where these files are picked up (in code)?

I wonder whether we can replace the commas here something less strange for file names (preferably underscores so we simply use DEVICE_NAME variable).

Best

Adrian

> @@ -0,0 +1,2 @@
> +@(#) $imageversion: HND1731918 $
> +@(#) $imageversion: HND1731918 $
> diff --git a/target/linux/bcm4908/image/asus,gt-
> ac5300/rom/etc/image_version b/target/linux/bcm4908/image/asus,gt-
> ac5300/rom/etc/image_version
> new file mode 100644
> index 0000000000..fd67746f78
> --- /dev/null
> +++ b/target/linux/bcm4908/image/asus,gt-ac5300/rom/etc/image_version
> @@ -0,0 +1 @@
> +HND1731918
> diff --git a/target/linux/bcm4908/image/netgear,r8000p/etc/image_ident
> b/target/linux/bcm4908/image/netgear,r8000p/etc/image_ident
> new file mode 100644
> index 0000000000..15cb69d1af
> --- /dev/null
> +++ b/target/linux/bcm4908/image/netgear,r8000p/etc/image_ident
> @@ -0,0 +1,4 @@
> +@(#) $imageversion: 5024HNDrc11R8000P2602103 $
> +@(#) $imageversion: 5024HNDrc11R8000P2602103 $
> +@(#) $changelist: Changelist:
> REL_502HND04rc11_BISON04T_REL_7_14_170_34Revision:   765096 $
> +@(#) $changelist: Changelist:
> REL_502HND04rc11_BISON04T_REL_7_14_170_34Revision:   765096 $
> diff --git a/target/linux/bcm4908/image/netgear,r8000p/etc/image_version
> b/target/linux/bcm4908/image/netgear,r8000p/etc/image_version
> new file mode 100644
> index 0000000000..f469dfed31
> --- /dev/null
> +++ b/target/linux/bcm4908/image/netgear,r8000p/etc/image_version
> @@ -0,0 +1 @@
> +5024HNDrc11R8000P2602103
> --
> 2.26.2
> 
> 
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: openpgp-digital-signature.asc
Type: application/pgp-signature
Size: 834 bytes
Desc: not available
URL: <http://lists.openwrt.org/pipermail/openwrt-devel/attachments/20210115/09519b2b/attachment.sig>


More information about the openwrt-devel mailing list