On 15.01.2021 16:18, Adrian Schmutzler wrote:
-----Original Message-----
From: openwrt-devel [mailto:openwrt-devel-boun...@lists.openwrt.org]
On Behalf Of Rafal Milecki
Sent: Freitag, 15. Januar 2021 10:44
To: openwrt-devel@lists.openwrt.org
Cc: Rafał Miłecki <ra...@milecki.pl>
Subject: [PATCH 2/2] bcm4908: build flashable & bootable firmware images

From: Rafał Miłecki <ra...@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 <ra...@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)

Sounds good, thanks!


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

Do you mean "files" as "directories" (I know every dir is a file ;) )? If
you talk about "asus,gt-ac5300", it's used by the:
cp -r $(COMPATIBLE)/* $@-bootfs/
line in the Build/bcm4908img.

As for naming, I followed what's used by the bcm63xx-cfe repo:
https://github.com/openwrt/bcm63xx-cfe

_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to