mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-21 06:33:41 +00:00
d5035f0d26
Use a similar upgrade method for sysupgrade.bin, like factory.bin, for Senao boards with the tar.gz OEM upgrade platform, and 'failsafe' image which is loaded on checksum failure. This is inspired by the OEM upgrade script /etc/fwupgrade.sh and the existing platforms for dual-boot Senao boards. Previously, if the real kernel was damaged or missing the only way to recover was with UART serial console, because the OKLI lzma-loader is programmed to halt. uboot did not detect cases where kernel or rootfs is damaged and boots OKLI instead of the failsafe image, because the checksums stored in uboot environment did not include the real kernel and rootfs space. Now, the stored checksums include the space for both the lzma-loader, kernel, and rootfs. Therefore, these boards are now practically unbrickable. Also, the factory.bin and sysupgrade.bin are now the same, except for image metadata. This allows for flashing OEM image directly from openwrt as well as flashing openwrt image directly from OEM. Make 'loader' partition writable so that it can be updated during a sysupgrade. tested with ENS202EXT v1 EAP1200H EAP350 v1 EAP600 ECB350 v1 ECB600 ENH202 v1 Signed-off-by: Michael Pratt <mcpratt@pm.me>
85 lines
1.4 KiB
Plaintext
85 lines
1.4 KiB
Plaintext
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
|
|
|
#include <dt-bindings/mtd/partitions/uimage.h>
|
|
|
|
/ {
|
|
virtual_flash {
|
|
compatible = "mtd-concat";
|
|
|
|
devices = <&fwconcat0 &fwconcat1>;
|
|
|
|
partitions {
|
|
compatible = "fixed-partitions";
|
|
#address-cells = <1>;
|
|
#size-cells = <1>;
|
|
|
|
partition@0 {
|
|
compatible = "openwrt,uimage", "denx,uimage";
|
|
openwrt,ih-magic = <0x73714f4b>;
|
|
label = "firmware";
|
|
reg = <0x0 0x0>;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
&spi {
|
|
status = "okay";
|
|
|
|
flash@0 {
|
|
compatible = "jedec,spi-nor";
|
|
reg = <0>;
|
|
spi-max-frequency = <20000000>;
|
|
|
|
partitions {
|
|
compatible = "fixed-partitions";
|
|
#address-cells = <1>;
|
|
#size-cells = <1>;
|
|
|
|
partition@0 {
|
|
label = "u-boot";
|
|
reg = <0x0 0x40000>;
|
|
read-only;
|
|
};
|
|
|
|
partition@40000 {
|
|
label = "u-boot-env";
|
|
reg = <0x40000 0x10000>;
|
|
};
|
|
|
|
partition@50000 {
|
|
label = "custom";
|
|
reg = <0x50000 0x50000>;
|
|
read-only;
|
|
};
|
|
|
|
partition@a0000 {
|
|
label = "loader";
|
|
reg = <0xa0000 0x1000>;
|
|
};
|
|
|
|
fwconcat1: partition@a1000 {
|
|
label = "fwconcat1";
|
|
reg = <0xa1000 0xff000>;
|
|
};
|
|
|
|
fwconcat0: partition@1a0000 {
|
|
label = "fwconcat0";
|
|
reg = <0x1a0000 0x4d0000>;
|
|
};
|
|
|
|
partition@670000 {
|
|
label = "failsafe";
|
|
reg = <0x670000 0x180000>;
|
|
read-only;
|
|
};
|
|
|
|
art: partition@7f0000 {
|
|
label = "art";
|
|
reg = <0x7f0000 0x10000>;
|
|
read-only;
|
|
};
|
|
};
|
|
};
|
|
};
|