mirror of
https://github.com/hanwckf/immortalwrt-mt798x.git
synced 2025-01-09 02:43:53 +08:00
firmware-utils: mkdlinkfw: add kernel image offset
Some boards with JBOOT have partiton between bootloader and kernel image. This patch add possibility to change kernel partition start address. Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com>
This commit is contained in:
parent
5f40b519f3
commit
1f149fcad3
@ -114,6 +114,7 @@ define Build/mkdlinkfw
|
|||||||
-k $(IMAGE_KERNEL) \
|
-k $(IMAGE_KERNEL) \
|
||||||
-r $(IMAGE_ROOTFS) \
|
-r $(IMAGE_ROOTFS) \
|
||||||
-o $@ \
|
-o $@ \
|
||||||
|
$(if $(DLINK_IMAGE_OFFSET), -O $(DLINK_IMAGE_OFFSET)) \
|
||||||
-s $(DLINK_FIRMWARE_SIZE)
|
-s $(DLINK_FIRMWARE_SIZE)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
@ -122,6 +123,7 @@ define Build/mkdlinkfw-factory
|
|||||||
-m $(DLINK_ROM_ID) -f $(DLINK_FAMILY_MEMBER) \
|
-m $(DLINK_ROM_ID) -f $(DLINK_FAMILY_MEMBER) \
|
||||||
-F $@ \
|
-F $@ \
|
||||||
-o $@.new \
|
-o $@.new \
|
||||||
|
$(if $(DLINK_IMAGE_OFFSET), -O $(DLINK_IMAGE_OFFSET)) \
|
||||||
-s $(DLINK_FIRMWARE_SIZE)
|
-s $(DLINK_FIRMWARE_SIZE)
|
||||||
mv $@.new $@
|
mv $@.new $@
|
||||||
endef
|
endef
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
DEVICE_VARS += TPLINK_FLASHLAYOUT TPLINK_HWID TPLINK_HWREV TPLINK_HWREVADD TPLINK_HVERSION \
|
DEVICE_VARS += TPLINK_FLASHLAYOUT TPLINK_HWID TPLINK_HWREV TPLINK_HWREVADD TPLINK_HVERSION \
|
||||||
DLINK_ROM_ID DLINK_FAMILY_MEMBER DLINK_FIRMWARE_SIZE
|
DLINK_ROM_ID DLINK_FAMILY_MEMBER DLINK_FIRMWARE_SIZE DLINK_IMAGE_OFFSET
|
||||||
|
|
||||||
define Build/elecom-header
|
define Build/elecom-header
|
||||||
cp $@ $(KDIR)/v_0.0.0.bin
|
cp $@ $(KDIR)/v_0.0.0.bin
|
||||||
@ -60,6 +60,15 @@ define Device/alfa-network_tube-e4g
|
|||||||
endef
|
endef
|
||||||
TARGET_DEVICES += alfa-network_tube-e4g
|
TARGET_DEVICES += alfa-network_tube-e4g
|
||||||
|
|
||||||
|
define Device/amit_jboot
|
||||||
|
DLINK_IMAGE_OFFSET := 0x10000
|
||||||
|
KERNEL := $(KERNEL_DTB)
|
||||||
|
IMAGES += factory.bin
|
||||||
|
IMAGE/sysupgrade.bin := mkdlinkfw | pad-rootfs | append-metadata
|
||||||
|
IMAGE/factory.bin := mkdlinkfw | pad-rootfs | mkdlinkfw-factory
|
||||||
|
DEVICE_PACKAGES := jboot-tools kmod-usb2 kmod-usb-ohci
|
||||||
|
endef
|
||||||
|
|
||||||
define Device/Archer
|
define Device/Archer
|
||||||
TPLINK_HWREVADD := 0
|
TPLINK_HWREVADD := 0
|
||||||
TPLINK_HVERSION := 3
|
TPLINK_HVERSION := 3
|
||||||
@ -182,60 +191,46 @@ endef
|
|||||||
TARGET_DEVICES += dir-810l
|
TARGET_DEVICES += dir-810l
|
||||||
|
|
||||||
define Device/dlink_dwr-116-a1
|
define Device/dlink_dwr-116-a1
|
||||||
|
$(Device/amit_jboot)
|
||||||
DTS := DWR-116-A1
|
DTS := DWR-116-A1
|
||||||
DEVICE_TITLE := D-Link DWR-116 A1/A2
|
DEVICE_TITLE := D-Link DWR-116 A1/A2
|
||||||
DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci jboot-tools
|
|
||||||
DLINK_ROM_ID := DLK6E3803001
|
DLINK_ROM_ID := DLK6E3803001
|
||||||
DLINK_FAMILY_MEMBER := 0x6E38
|
DLINK_FAMILY_MEMBER := 0x6E38
|
||||||
DLINK_FIRMWARE_SIZE := 0x7E0000
|
DLINK_FIRMWARE_SIZE := 0x7E0000
|
||||||
KERNEL := $(KERNEL_DTB)
|
|
||||||
IMAGES += factory.bin
|
|
||||||
IMAGE/sysupgrade.bin := mkdlinkfw | pad-rootfs | append-metadata
|
|
||||||
IMAGE/factory.bin := mkdlinkfw | pad-rootfs | mkdlinkfw-factory
|
|
||||||
endef
|
endef
|
||||||
TARGET_DEVICES += dlink_dwr-116-a1
|
TARGET_DEVICES += dlink_dwr-116-a1
|
||||||
|
|
||||||
define Device/dlink_dwr-118-a1
|
define Device/dlink_dwr-118-a1
|
||||||
|
$(Device/amit_jboot)
|
||||||
DTS := DWR-118-A1
|
DTS := DWR-118-A1
|
||||||
DEVICE_TITLE := D-Link DWR-118 A1
|
DEVICE_TITLE := D-Link DWR-118 A1
|
||||||
DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci jboot-tools kmod-mt76x0e
|
DEVICE_PACKAGES += kmod-mt76x0e
|
||||||
DLINK_ROM_ID := DLK6E3811001
|
DLINK_ROM_ID := DLK6E3811001
|
||||||
DLINK_FAMILY_MEMBER := 0x6E38
|
DLINK_FAMILY_MEMBER := 0x6E38
|
||||||
DLINK_FIRMWARE_SIZE := 0xFE0000
|
DLINK_FIRMWARE_SIZE := 0xFE0000
|
||||||
KERNEL := $(KERNEL_DTB)
|
|
||||||
IMAGES += factory.bin
|
|
||||||
IMAGE/sysupgrade.bin := mkdlinkfw | pad-rootfs | append-metadata
|
|
||||||
IMAGE/factory.bin := mkdlinkfw | pad-rootfs | mkdlinkfw-factory
|
|
||||||
endef
|
endef
|
||||||
TARGET_DEVICES += dlink_dwr-118-a1
|
TARGET_DEVICES += dlink_dwr-118-a1
|
||||||
|
|
||||||
define Device/dlink_dwr-118-a2
|
define Device/dlink_dwr-118-a2
|
||||||
|
$(Device/amit_jboot)
|
||||||
DTS := DWR-118-A2
|
DTS := DWR-118-A2
|
||||||
DEVICE_TITLE := D-Link DWR-118 A2
|
DEVICE_TITLE := D-Link DWR-118 A2
|
||||||
DEVICE_PACKAGES := kmod-mt76x2 kmod-usb2 kmod-usb-ohci jboot-tools
|
DEVICE_PACKAGES += kmod-mt76x2
|
||||||
DLINK_ROM_ID := DLK6E3814001
|
DLINK_ROM_ID := DLK6E3814001
|
||||||
DLINK_FAMILY_MEMBER := 0x6E38
|
DLINK_FAMILY_MEMBER := 0x6E38
|
||||||
DLINK_FIRMWARE_SIZE := 0xFE0000
|
DLINK_FIRMWARE_SIZE := 0xFE0000
|
||||||
KERNEL := $(KERNEL_DTB)
|
|
||||||
IMAGES += factory.bin
|
|
||||||
IMAGE/sysupgrade.bin := mkdlinkfw | pad-rootfs | append-metadata
|
|
||||||
IMAGE/factory.bin := mkdlinkfw | pad-rootfs | mkdlinkfw-factory
|
|
||||||
endef
|
endef
|
||||||
TARGET_DEVICES += dlink_dwr-118-a2
|
TARGET_DEVICES += dlink_dwr-118-a2
|
||||||
|
|
||||||
define Device/dlink_dwr-921-c1
|
define Device/dlink_dwr-921-c1
|
||||||
|
$(Device/amit_jboot)
|
||||||
DTS := DWR-921-C1
|
DTS := DWR-921-C1
|
||||||
IMAGE_SIZE := $(ralink_default_fw_size_16M)
|
IMAGE_SIZE := $(ralink_default_fw_size_16M)
|
||||||
DEVICE_TITLE := D-Link DWR-921 C1
|
DEVICE_TITLE := D-Link DWR-921 C1
|
||||||
DLINK_ROM_ID := DLK6E2414001
|
DLINK_ROM_ID := DLK6E2414001
|
||||||
DLINK_FAMILY_MEMBER := 0x6E24
|
DLINK_FAMILY_MEMBER := 0x6E24
|
||||||
DLINK_FIRMWARE_SIZE := 0xFE0000
|
DLINK_FIRMWARE_SIZE := 0xFE0000
|
||||||
KERNEL := $(KERNEL_DTB)
|
DEVICE_PACKAGES += kmod-usb-net-qmi-wwan kmod-usb-serial-option uqmi
|
||||||
IMAGES += factory.bin
|
|
||||||
IMAGE/sysupgrade.bin := mkdlinkfw | pad-rootfs | append-metadata
|
|
||||||
IMAGE/factory.bin := mkdlinkfw | pad-rootfs | mkdlinkfw-factory
|
|
||||||
DEVICE_PACKAGES := jboot-tools \
|
|
||||||
kmod-usb2 kmod-usb-net-qmi-wwan kmod-usb-serial-option uqmi
|
|
||||||
endef
|
endef
|
||||||
TARGET_DEVICES += dlink_dwr-921-c1
|
TARGET_DEVICES += dlink_dwr-921-c1
|
||||||
|
|
||||||
@ -248,18 +243,14 @@ endef
|
|||||||
TARGET_DEVICES += dlink_dwr-921-c3
|
TARGET_DEVICES += dlink_dwr-921-c3
|
||||||
|
|
||||||
define Device/dlink_dwr-922-e2
|
define Device/dlink_dwr-922-e2
|
||||||
|
$(Device/amit_jboot)
|
||||||
DTS := DWR-922-E2
|
DTS := DWR-922-E2
|
||||||
IMAGE_SIZE := $(ralink_default_fw_size_16M)
|
IMAGE_SIZE := $(ralink_default_fw_size_16M)
|
||||||
DEVICE_TITLE := D-Link DWR-922 E2
|
DEVICE_TITLE := D-Link DWR-922 E2
|
||||||
DLINK_ROM_ID := DLK6E2414005
|
DLINK_ROM_ID := DLK6E2414005
|
||||||
DLINK_FAMILY_MEMBER := 0x6E24
|
DLINK_FAMILY_MEMBER := 0x6E24
|
||||||
DLINK_FIRMWARE_SIZE := 0xFE0000
|
DLINK_FIRMWARE_SIZE := 0xFE0000
|
||||||
KERNEL := $(KERNEL_DTB)
|
DEVICE_PACKAGES += kmod-usb-net-qmi-wwan kmod-usb-serial-option uqmi
|
||||||
IMAGES += factory.bin
|
|
||||||
IMAGE/sysupgrade.bin := mkdlinkfw | pad-rootfs | append-metadata
|
|
||||||
IMAGE/factory.bin := mkdlinkfw | pad-rootfs | mkdlinkfw-factory
|
|
||||||
DEVICE_PACKAGES := jboot-tools \
|
|
||||||
kmod-usb2 kmod-usb-net-qmi-wwan kmod-usb-serial-option uqmi
|
|
||||||
endef
|
endef
|
||||||
TARGET_DEVICES += dlink_dwr-922-e2
|
TARGET_DEVICES += dlink_dwr-922-e2
|
||||||
|
|
||||||
@ -430,16 +421,13 @@ endef
|
|||||||
TARGET_DEVICES += microwrt
|
TARGET_DEVICES += microwrt
|
||||||
|
|
||||||
define Device/lava_lr-25g001
|
define Device/lava_lr-25g001
|
||||||
|
$(Device/amit_jboot)
|
||||||
DTS := LR-25G001
|
DTS := LR-25G001
|
||||||
DEVICE_TITLE := LAVA LR-25G001
|
DEVICE_TITLE := LAVA LR-25G001
|
||||||
DLINK_ROM_ID := LVA6E3804001
|
DLINK_ROM_ID := LVA6E3804001
|
||||||
DLINK_FAMILY_MEMBER := 0x6E38
|
DLINK_FAMILY_MEMBER := 0x6E38
|
||||||
DLINK_FIRMWARE_SIZE := 0xFE0000
|
DLINK_FIRMWARE_SIZE := 0xFE0000
|
||||||
KERNEL := $(KERNEL_DTB)
|
DEVICE_PACKAGES += kmod-mt76x0e
|
||||||
IMAGES += factory.bin
|
|
||||||
IMAGE/sysupgrade.bin := mkdlinkfw | pad-rootfs | append-metadata
|
|
||||||
IMAGE/factory.bin := mkdlinkfw | pad-rootfs | mkdlinkfw-factory
|
|
||||||
DEVICE_PACKAGES := jboot-tools kmod-usb2 kmod-usb-ohci kmod-mt76x0e
|
|
||||||
endef
|
endef
|
||||||
TARGET_DEVICES += lava_lr-25g001
|
TARGET_DEVICES += lava_lr-25g001
|
||||||
|
|
||||||
|
@ -99,6 +99,7 @@ struct file_info image_info;
|
|||||||
char *ofname;
|
char *ofname;
|
||||||
char *progname;
|
char *progname;
|
||||||
uint32_t firmware_size;
|
uint32_t firmware_size;
|
||||||
|
uint32_t image_offset;
|
||||||
uint16_t family_member;
|
uint16_t family_member;
|
||||||
char *rom_id[12] = { 0 };
|
char *rom_id[12] = { 0 };
|
||||||
char image_type;
|
char image_type;
|
||||||
@ -403,7 +404,7 @@ int fill_sch2(struct sch2_header *header, char *kernel_ptr, char *rootfs_ptr)
|
|||||||
header->image_crc32 = crc32(0, (uint8_t *) kernel_ptr, kernel_info.file_size);
|
header->image_crc32 = crc32(0, (uint8_t *) kernel_ptr, kernel_info.file_size);
|
||||||
header->start_addr = RAM_ENTRY_ADDR;
|
header->start_addr = RAM_ENTRY_ADDR;
|
||||||
header->rootfs_addr =
|
header->rootfs_addr =
|
||||||
JBOOT_SIZE + STAG_SIZE + SCH2_SIZE + kernel_info.file_size;
|
image_offset + STAG_SIZE + SCH2_SIZE + kernel_info.file_size;
|
||||||
header->rootfs_len = rootfs_info.file_size;
|
header->rootfs_len = rootfs_info.file_size;
|
||||||
header->rootfs_crc32 = crc32(0, (uint8_t *) rootfs_ptr, rootfs_info.file_size);
|
header->rootfs_crc32 = crc32(0, (uint8_t *) rootfs_ptr, rootfs_info.file_size);
|
||||||
header->header_crc32 = 0;
|
header->header_crc32 = 0;
|
||||||
@ -446,9 +447,9 @@ int fill_auh(struct auh_header *header, uint32_t length)
|
|||||||
header->lpvs = AUH_LVPS;
|
header->lpvs = AUH_LVPS;
|
||||||
header->mbz = 0;
|
header->mbz = 0;
|
||||||
header->time_stamp = jboot_timestamp();
|
header->time_stamp = jboot_timestamp();
|
||||||
header->erase_start = JBOOT_SIZE;
|
header->erase_start = image_offset;
|
||||||
header->erase_length = firmware_size;
|
header->erase_length = firmware_size;
|
||||||
header->data_offset = JBOOT_SIZE;
|
header->data_offset = image_offset;
|
||||||
header->data_length = length;
|
header->data_length = length;
|
||||||
header->space4 = 0;
|
header->space4 = 0;
|
||||||
header->space5 = 0;
|
header->space5 = 0;
|
||||||
@ -603,11 +604,12 @@ int main(int argc, char *argv[])
|
|||||||
image_type = SYSUPGRADE;
|
image_type = SYSUPGRADE;
|
||||||
family_member = 0;
|
family_member = 0;
|
||||||
firmware_size = 0;
|
firmware_size = 0;
|
||||||
|
image_offset = JBOOT_SIZE;
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
int c;
|
int c;
|
||||||
|
|
||||||
c = getopt(argc, argv, "f:F:i:hk:m:o:r:s:");
|
c = getopt(argc, argv, "f:F:i:hk:m:o:O:r:s:");
|
||||||
if (c == -1)
|
if (c == -1)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -632,6 +634,9 @@ int main(int argc, char *argv[])
|
|||||||
case 'r':
|
case 'r':
|
||||||
rootfs_info.file_name = optarg;
|
rootfs_info.file_name = optarg;
|
||||||
break;
|
break;
|
||||||
|
case 'O':
|
||||||
|
sscanf(optarg, "0x%x", &image_offset);
|
||||||
|
break;
|
||||||
case 'o':
|
case 'o':
|
||||||
ofname = optarg;
|
ofname = optarg;
|
||||||
break;
|
break;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user