[brcm63xx] add imagetag support for BT Voyager 2500V, patch from Daniel Dickinson (#5364)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@16506 3c298f89-4303-0410-b956-a3cf2f4a3e73master
parent
72b6e528a2
commit
e951c62e47
|
@ -128,7 +128,7 @@ struct bcm_tag_bc221 {
|
||||||
unsigned char rootAddress[ADDRESS_LEN]; // 170-181: Address in memory of rootfs partition
|
unsigned char rootAddress[ADDRESS_LEN]; // 170-181: Address in memory of rootfs partition
|
||||||
unsigned char rootLength[IMAGE_LEN]; // 182-191: Size of rootfs partition
|
unsigned char rootLength[IMAGE_LEN]; // 182-191: Size of rootfs partition
|
||||||
unsigned char flashLayoutVer[4]; // 192-195: Version flash layout
|
unsigned char flashLayoutVer[4]; // 192-195: Version flash layout
|
||||||
unsigned char kernelCRC[4]; // 196-199: Guessed to be kernel CRC
|
unsigned char fskernelCRC[4]; // 196-199: Guessed to be kernel CRC
|
||||||
unsigned char reserved4[16]; // 200-215: Reserved area; unused at present
|
unsigned char reserved4[16]; // 200-215: Reserved area; unused at present
|
||||||
unsigned char imageCRC[4]; // 216-219: CRC32 of images
|
unsigned char imageCRC[4]; // 216-219: CRC32 of images
|
||||||
unsigned char reserved2[12]; // 220-231: Unused at present
|
unsigned char reserved2[12]; // 220-231: Unused at present
|
||||||
|
|
|
@ -101,7 +101,7 @@ define Image/Build
|
||||||
$(call Image/Build/CFE,$(1),96345GW2,6345,bc221,,bc221,-y 5)
|
$(call Image/Build/CFE,$(1),96345GW2,6345,bc221,,bc221,-y 5)
|
||||||
$(call Image/Build/CFE,$(1),96345GW2,6345,bc300,,bc300,)
|
$(call Image/Build/CFE,$(1),96345GW2,6345,bc300,,bc300,)
|
||||||
$(call Image/Build/CFE,$(1),96345GW2,6345,bc310,OpenWRT-$(REVISION),bc310,)
|
$(call Image/Build/CFE,$(1),96345GW2,6345,bc310,OpenWRT-$(REVISION),bc310,)
|
||||||
$(call Image/Build/CFE,$(1),96348GW,6348,bccfe,,bcfe,)
|
$(call Image/Build/CFE,$(1),96348GW,6348,bccfe,,bccfe,)
|
||||||
$(call Image/Build/CFE,$(1),96348GW,6348,bc221,,bc221,-y 5)
|
$(call Image/Build/CFE,$(1),96348GW,6348,bc221,,bc221,-y 5)
|
||||||
# BT Voyager V210_BTR
|
# BT Voyager V210_BTR
|
||||||
$(call Image/Build/CFE,$(1),V210_BB,6348,bc221,,btvgr,-y 5)
|
$(call Image/Build/CFE,$(1),V210_BB,6348,bc221,,btvgr,-y 5)
|
||||||
|
|
|
@ -135,11 +135,12 @@ int tagfile(const char *kernel, const char *rootfs, const char *bin,
|
||||||
union bcm_tag tag;
|
union bcm_tag tag;
|
||||||
struct kernelhdr khdr;
|
struct kernelhdr khdr;
|
||||||
FILE *kernelfile = NULL, *rootfsfile = NULL, *binfile;
|
FILE *kernelfile = NULL, *rootfsfile = NULL, *binfile;
|
||||||
size_t kerneloff, kernellen, rootfsoff, rootfslen, read, imagelen, rootfsoffpadlen;
|
size_t kerneloff, kernellen, rootfsoff, rootfslen, read, imagelen, rootfsoffpadlen, kernelfslen;
|
||||||
uint8_t readbuf[1024];
|
uint8_t readbuf[1024];
|
||||||
uint32_t imagecrc = IMAGETAG_CRC_START;
|
uint32_t imagecrc = IMAGETAG_CRC_START;
|
||||||
uint32_t kernelcrc = IMAGETAG_CRC_START;
|
uint32_t kernelcrc = IMAGETAG_CRC_START;
|
||||||
uint32_t rootfscrc = IMAGETAG_CRC_START;
|
uint32_t rootfscrc = IMAGETAG_CRC_START;
|
||||||
|
uint32_t kernelfscrc = IMAGETAG_CRC_START;
|
||||||
const uint32_t deadcode = htonl(DEADCODE);
|
const uint32_t deadcode = htonl(DEADCODE);
|
||||||
union int2char intchar;
|
union int2char intchar;
|
||||||
|
|
||||||
|
@ -230,7 +231,7 @@ int tagfile(const char *kernel, const char *rootfs, const char *bin,
|
||||||
/* Compute the crc32 of the entire image (deadC0de included) */
|
/* Compute the crc32 of the entire image (deadC0de included) */
|
||||||
imagecrc = compute_crc32(imagecrc, binfile, kerneloff - fwaddr, imagelen);
|
imagecrc = compute_crc32(imagecrc, binfile, kerneloff - fwaddr, imagelen);
|
||||||
/* Compute the crc32 of the kernel and padding between kernel and rootfs) */
|
/* Compute the crc32 of the kernel and padding between kernel and rootfs) */
|
||||||
kernelcrc = compute_crc32(kernelcrc, binfile, kerneloff - fwaddr, kernellen + rootfsoffpadlen);
|
kernelfscrc = compute_crc32(kernelfscrc, binfile, kerneloff - fwaddr, kernellen + rootfsoffpadlen + rootfslen + sizeof(deadcode));
|
||||||
} else if ( tagid && (strncmp(tagid, "bc310", TAGID_LEN) == 0) ) {
|
} else if ( tagid && (strncmp(tagid, "bc310", TAGID_LEN) == 0) ) {
|
||||||
/* Compute the crc32 of the entire image (deadC0de included) */
|
/* Compute the crc32 of the entire image (deadC0de included) */
|
||||||
imagecrc = compute_crc32(imagecrc, binfile, kerneloff - fwaddr, imagelen);
|
imagecrc = compute_crc32(imagecrc, binfile, kerneloff - fwaddr, imagelen);
|
||||||
|
@ -376,7 +377,7 @@ int tagfile(const char *kernel, const char *rootfs, const char *bin,
|
||||||
|
|
||||||
int2tag(tag.bc221.tagIdCRC, crc32(IMAGETAG_CRC_START, (uint8_t*)&(tag.bc221.tagId[0]), TAGID_LEN));
|
int2tag(tag.bc221.tagIdCRC, crc32(IMAGETAG_CRC_START, (uint8_t*)&(tag.bc221.tagId[0]), TAGID_LEN));
|
||||||
int2tag(tag.bc221.imageCRC, imagecrc);
|
int2tag(tag.bc221.imageCRC, imagecrc);
|
||||||
int2tag(tag.bc221.kernelCRC, kernelcrc);
|
int2tag(tag.bc221.fskernelCRC, kernelfscrc);
|
||||||
int2tag(tag.bc221.headerCRC, crc32(IMAGETAG_CRC_START, (uint8_t*)&tag, sizeof(tag) - 20));
|
int2tag(tag.bc221.headerCRC, crc32(IMAGETAG_CRC_START, (uint8_t*)&tag, sizeof(tag) - 20));
|
||||||
} else if ( tagid && (strcmp(tagid, "bc310") == 0)) {
|
} else if ( tagid && (strcmp(tagid, "bc310") == 0)) {
|
||||||
/* Build the tag */
|
/* Build the tag */
|
||||||
|
|
Loading…
Reference in New Issue