mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-21 14:37:57 +00:00
ramips: support dual image feature on ALFA Network boards
New U-Boot version for MediaTek MT76x8/MT762x based ALFA Network boards includes support for a 'dual image' feature. Users can enable it using U-Boot environment variable 'dual_image' ('1' -> enabled). When 'dual image' feature is enabled, U-Boot will modify DTB and divide the original 'firmware' flash area into two, equal in size and aligned to 64 KB partitions: 'firmware' and 'backup'. U-Boot will also adjust size of 'firmware' area to match installed flash chip size. U-Boot will load kernel from active partition which is marked with env variable 'bootactive' ('1' -> first partition, '2' -> second partition) and rename both partitions accordingly ('firmware' <-> 'backup'). There are 3 additional env variables used to control 'dual image' mode: - bootlimit - maximum number of unsuccessful boot tries (default: '3') - bootcount - current number of boot tries - bootchanged - flag which informs that active partition was changed; if it is set and 'bootcount' reaches 'bootlimit' value, U-Boot will start web-based recovery which then updates both partitions with provided image Signed-off-by: Piotr Dymacz <pepe2k@gmail.com>
This commit is contained in:
parent
b20b997c68
commit
bc173ddd83
13
target/linux/ramips/mt7620/base-files/etc/init.d/bootcount
Executable file
13
target/linux/ramips/mt7620/base-files/etc/init.d/bootcount
Executable file
@ -0,0 +1,13 @@
|
||||
#!/bin/sh /etc/rc.common
|
||||
|
||||
START=99
|
||||
|
||||
boot() {
|
||||
case $(board_name) in
|
||||
alfa-network,ac1200rm|\
|
||||
alfa-network,tube-e4g)
|
||||
[ -n "$(fw_printenv bootcount bootchanged 2>/dev/null)" ] &&\
|
||||
echo -e "bootcount\nbootchanged\n" | /usr/sbin/fw_setenv -s -
|
||||
;;
|
||||
esac
|
||||
}
|
@ -5,6 +5,9 @@
|
||||
PART_NAME=firmware
|
||||
REQUIRE_IMAGE_METADATA=1
|
||||
|
||||
RAMFS_COPY_BIN='fw_printenv fw_setenv'
|
||||
RAMFS_COPY_DATA='/etc/fw_env.config /var/lock/fw_printenv.lock'
|
||||
|
||||
platform_check_image() {
|
||||
return 0
|
||||
}
|
||||
@ -13,6 +16,19 @@ platform_do_upgrade() {
|
||||
local board=$(board_name)
|
||||
|
||||
case "$board" in
|
||||
alfa-network,ac1200rm|\
|
||||
alfa-network,tube-e4g)
|
||||
[ "$(fw_printenv -n dual_image 2>/dev/null)" = "1" ] &&\
|
||||
[ -n "$(find_mtd_part backup)" ] && {
|
||||
PART_NAME=backup
|
||||
if [ "$(fw_printenv -n bootactive 2>/dev/null)" = "1" ]; then
|
||||
fw_setenv bootactive 2 || exit 1
|
||||
else
|
||||
fw_setenv bootactive 1 || exit 1
|
||||
fi
|
||||
}
|
||||
default_do_upgrade "$1"
|
||||
;;
|
||||
*)
|
||||
default_do_upgrade "$1"
|
||||
;;
|
||||
|
@ -4,6 +4,10 @@ START=99
|
||||
|
||||
boot() {
|
||||
case $(board_name) in
|
||||
alfa-network,awusfree1)
|
||||
[ -n "$(fw_printenv bootcount bootchanged 2>/dev/null)" ] &&\
|
||||
echo -e "bootcount\nbootchanged\n" | /usr/sbin/fw_setenv -s -
|
||||
;;
|
||||
xiaomi,miwifi-nano)
|
||||
fw_setenv flag_boot_success 1
|
||||
;;
|
||||
|
@ -5,6 +5,9 @@
|
||||
PART_NAME=firmware
|
||||
REQUIRE_IMAGE_METADATA=1
|
||||
|
||||
RAMFS_COPY_BIN='fw_printenv fw_setenv'
|
||||
RAMFS_COPY_DATA='/etc/fw_env.config /var/lock/fw_printenv.lock'
|
||||
|
||||
platform_check_image() {
|
||||
return 0
|
||||
}
|
||||
@ -13,6 +16,18 @@ platform_do_upgrade() {
|
||||
local board=$(board_name)
|
||||
|
||||
case "$board" in
|
||||
alfa-network,awusfree1)
|
||||
[ "$(fw_printenv -n dual_image 2>/dev/null)" = "1" ] &&\
|
||||
[ -n "$(find_mtd_part backup)" ] && {
|
||||
PART_NAME=backup
|
||||
if [ "$(fw_printenv -n bootactive 2>/dev/null)" = "1" ]; then
|
||||
fw_setenv bootactive 2 || exit 1
|
||||
else
|
||||
fw_setenv bootactive 1 || exit 1
|
||||
fi
|
||||
}
|
||||
default_do_upgrade "$1"
|
||||
;;
|
||||
tplink,archer-c50-v4)
|
||||
MTD_ARGS="-t romfile"
|
||||
default_do_upgrade "$1"
|
||||
|
Loading…
Reference in New Issue
Block a user