apm821xx: increase WNDR4700's dtb+kernel partition to 3.5 MiB
This patch cleans and reworks the WNDR4700 dts to increase the now combined dtb+kernel partition to 3.5 MiB. This has become necessary due to the switch to GCC 7.3 and the ever increasing kernel binary size. The dtb+kernel partition was combined in order to finally fix the problem with out-of-sync device-trees. From now on, the kernel and device-tree will always be updated together. Upgrade Note: Existing installations will have to use the TFTP firmware recovery option in order to install the update. Affected users are advised to make a backup of their existing configuration prior to running sysupgrade: <https://openwrt.org/docs/guide-user/installation/generic.backup#backup_openwrt_configuration> Due to the repartitioning of the NAND, the generated backup should be placed on either the internal HDD, an attached USB-Stick or on another PC (externally). To manually trigger the firmware recovery, the reset button has to be pressed (and hold) during boot. U-boot will enter the "Upgrade Mode" and starts a tftpserver listening on 192.168.1.1 for a tftp client from one of the four LAN/Ethernet ports to connect and upload the new system: (enable tftp binary mode!). openwrt-apm821xx-nand-netgear_wndr4700-squashfs-factory.img Cc: Hauke Mehrtens <hauke@hauke-m.de> Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
This commit is contained in:
parent
e2b35f91b3
commit
c555b524c7
2 changed files with 33 additions and 23 deletions
|
@ -160,75 +160,79 @@
|
|||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
partition0,0@0x00000000 {
|
||||
partition0,0@0 {
|
||||
label = "NAND 128MiB 3,3V 8-bit";
|
||||
reg = <0x00000000 0x08000000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition0,1@0x00000000 {
|
||||
partition0,1@0 {
|
||||
label = "uboot";
|
||||
reg = <0x00000000 0x00180000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition0,2@0x00180000 {
|
||||
partition0,2@180000 {
|
||||
label = "device-tree";
|
||||
reg = <0x00180000 0x00020000>;
|
||||
};
|
||||
|
||||
partition0,3@0x001a0000 {
|
||||
partition0,3@180000 {
|
||||
label = "kernel";
|
||||
reg = <0x001a0000 0x001e0000>;
|
||||
reg = <0x00180000 0x00380000>;
|
||||
/*
|
||||
* will also contain a fake/empty
|
||||
* rootfs to fool Netgear's uboot
|
||||
* rootfs integrety checks.
|
||||
* device-tree is @ 0x00180000 - 0x001fffff
|
||||
* kernel starts from 0x200000.
|
||||
* this is coded into netgear's u-boot.
|
||||
*
|
||||
* this partition will also contain a
|
||||
* fake/empty rootfs at the end to fool
|
||||
* Netgear's uboot rootfs integrety checks.
|
||||
*/
|
||||
};
|
||||
|
||||
partition0,4@0x00380000 {
|
||||
partition0,4@500000 {
|
||||
label = "ubi";
|
||||
reg = <0x00380000 0x01660000>;
|
||||
reg = <0x00500000 0x014e0000>;
|
||||
};
|
||||
|
||||
partition0,5@0x019e0000 {
|
||||
partition0,5@19e0000 {
|
||||
label = "config";
|
||||
reg = <0x019e0000 0x00080000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition0,6@0x01a60000 {
|
||||
partition0,6@1a60000 {
|
||||
label = "pot";
|
||||
reg = <0x01a60000 0x00080000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition0,7@0x01ae0000 {
|
||||
partition0,7@1ae0000 {
|
||||
label = "traffic_meter";
|
||||
reg = <0x01ae0000 0x00300000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition0,8@0x01de0000 {
|
||||
partition0,8@1de0000 {
|
||||
label = "language";
|
||||
reg = <0x01de0000 0x001c0000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition0,9@0x01fa0000 {
|
||||
partition0,9@1fa0000 {
|
||||
label = "ecos";
|
||||
reg = <0x01fa0000 0x06020000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition0,10@0x07fc0000 {
|
||||
partition0,10@7fc0000 {
|
||||
label = "wifi_data";
|
||||
reg = <0x07fc0000 0x00040000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition0,11@0x00180000 {
|
||||
partition0,11@180000 {
|
||||
label = "firmware";
|
||||
reg = <0x00180000 0x01860000>;
|
||||
read-only;
|
||||
|
|
|
@ -21,6 +21,11 @@ define Build/dtb
|
|||
$(call Image/BuildDTB,../dts/$(DEVICE_DTS).dts,$@.dtb,,--space $(DTB_SIZE))
|
||||
endef
|
||||
|
||||
define Build/prepend-dtb
|
||||
cat "$@.dtb.uimage" "$@" > "$@.new"
|
||||
mv "$@.new" "$@"
|
||||
endef
|
||||
|
||||
define Build/export-dtb
|
||||
cp $(IMAGE_KERNEL).dtb $@
|
||||
endef
|
||||
|
@ -115,8 +120,7 @@ define Build/create-uImage-dtb
|
|||
-$(STAGING_DIR_HOST)/bin/mkimage -A $(LINUX_KARCH) \
|
||||
-O linux -T kernel -C none \
|
||||
-n '$(call toupper,$(LINUX_KARCH)) $(VERSION_DIST) Linux-$(LINUX_VERSION)' \
|
||||
-d $(IMAGE_KERNEL).dtb $@.new
|
||||
@mv $@.new $@
|
||||
-d "$@.dtb" "$@.dtb.uimage"
|
||||
endef
|
||||
|
||||
define Build/MuImage-initramfs
|
||||
|
@ -163,11 +167,13 @@ define Device/netgear_wndr4700
|
|||
DTB_SIZE := 131008
|
||||
IMAGE_SIZE := 24960k
|
||||
IMAGES := factory.img sysupgrade.tar kernel.dtb
|
||||
KERNEL_SIZE := 1920k
|
||||
KERNEL := dtb | kernel-bin | lzma | uImage lzma | pad-offset $$(BLOCKSIZE) 64 | \
|
||||
append-uImage-fakeroot-hdr
|
||||
KERNEL_SIZE := 3584k
|
||||
# append a fake/empty rootfs to fool netgear's uboot
|
||||
# CHECK_DNI_FIRMWARE_ROOTFS_INTEGRITY in do_chk_dniimg()
|
||||
KERNEL := kernel-bin | lzma | uImage lzma | pad-offset $$(BLOCKSIZE) 64 | \
|
||||
append-uImage-fakeroot-hdr | dtb | create-uImage-dtb | prepend-dtb
|
||||
KERNEL_INITRAMFS := kernel-bin | gzip | dtb | MuImage-initramfs gzip
|
||||
IMAGE/factory.img := create-uImage-dtb | append-kernel | pad-to 2M | append-ubi | \
|
||||
IMAGE/factory.img := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-ubi | \
|
||||
netgear-dni | check-size $$$$(IMAGE_SIZE)
|
||||
IMAGE/sysupgrade.tar := sysupgrade-tar | append-metadata
|
||||
IMAGE/kernel.dtb := export-dtb | uImage none
|
||||
|
|
Loading…
Reference in a new issue