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