Skip to content

Commit

Permalink
8DXL can download image
Browse files Browse the repository at this point in the history
size is wrong because DXL have 3 container

Signed-off-by: Frank Li <Frank.Li@nxp.com>
  • Loading branch information
nxpfrankli committed Jan 27, 2020
1 parent 69475a9 commit 247629e
Show file tree
Hide file tree
Showing 6 changed files with 12 additions and 8 deletions.
2 changes: 1 addition & 1 deletion libuuu/config.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ Config::Config()
{
push_back(ConfigItem("SDPS:", "MX8QXP", NULL, NXP_VID, 0x012F, 0x0002));
push_back(ConfigItem("SDPS:", "MX8QM", "MX8QXP", NXP_VID, 0x0129, 0x0002));
push_back(ConfigItem("SDPS:", "MX8DXL", "MX8QXP", NXP_VID, 0x0147));
push_back(ConfigItem("SDPS:", "MX8DXL", "MX8DXL", NXP_VID, 0x0147));
push_back(ConfigItem("SDPS:", "MX28", NULL, FSL_VID, 0x004f));
push_back(ConfigItem("SDPS:", "MX815", NULL, NXP_VID, 0x013E));
push_back(ConfigItem("SDPS:", "MX865", "MX815", NXP_VID, 0x0146));
Expand Down
1 change: 1 addition & 0 deletions libuuu/hidreport.h
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@
#define ROM_INFO_SPL_JUMP 0x800
#define ROM_INFO_HID_EP1 0x1000
#define ROM_INFO_AUTO_SCAN_UBOOT_POS 0x2000
#define ROM_INO_3CONTAINER 0x4000

#pragma once

Expand Down
11 changes: 7 additions & 4 deletions libuuu/rominfo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ ROM_INFO g_RomInfo[] =
{ "MX7ULP", 0x2f018000, ROM_INFO_HID | ROM_INFO_HID_MX6 | ROM_INFO_HID_SKIP_DCD },
{ "MXRT106X", 0x1000, ROM_INFO_HID | ROM_INFO_HID_MX6 | ROM_INFO_HID_SKIP_DCD },
{ "MX8QXP", 0x0, ROM_INFO_HID | ROM_INFO_HID_NO_CMD | ROM_INFO_HID_UID_STRING },
{ "MX8DXL", 0x0, ROM_INFO_HID | ROM_INFO_HID_NO_CMD | ROM_INFO_HID_UID_STRING | ROM_INO_3CONTAINER },
{ "MX28", 0x0, ROM_INFO_HID},
{ "MX815", 0x0, ROM_INFO_HID | ROM_INFO_HID_NO_CMD | ROM_INFO_HID_UID_STRING | ROM_INFO_HID_EP1 | ROM_INFO_HID_PACK_SIZE_1020 },
{ "SPL", 0x0, ROM_INFO_HID | ROM_INFO_HID_MX6 | ROM_INFO_SPL_JUMP | ROM_INFO_HID_SDP_NO_MAX_PER_TRANS},
Expand Down Expand Up @@ -122,20 +123,22 @@ inline uint32_t round_up(uint32_t x, uint32_t align)
return (x + mask) & ~mask;
}

size_t GetContainerActualSize(shared_ptr<FileBuffer> p, size_t offset)
size_t GetContainerActualSize(shared_ptr<FileBuffer> p, size_t offset, int numofcontainer)
{
struct rom_container *hdr;

hdr = (struct rom_container *)(p->data() + offset + CONTAINER_HDR_ALIGNMENT);
int cindex = numofcontainer - 1;

hdr = (struct rom_container *)(p->data() + offset + cindex * CONTAINER_HDR_ALIGNMENT);
if (hdr->tag != CONTAINER_TAG)
return p->size() - offset;

struct rom_bootimg *image;
image = (struct rom_bootimg *)(p->data() + offset + CONTAINER_HDR_ALIGNMENT
image = (struct rom_bootimg *)(p->data() + offset + cindex * CONTAINER_HDR_ALIGNMENT
+ sizeof(struct rom_container)
+ sizeof(struct rom_bootimg) * (hdr->num_images - 1));

uint32_t sz = image->size + image->offset + CONTAINER_HDR_ALIGNMENT;
uint32_t sz = image->size + image->offset + cindex * CONTAINER_HDR_ALIGNMENT;

sz = round_up(sz, CONTAINER_HDR_ALIGNMENT);

Expand Down
2 changes: 1 addition & 1 deletion libuuu/rominfo.h
Original file line number Diff line number Diff line change
Expand Up @@ -59,5 +59,5 @@ struct ROM_INFO
ROM_INFO * search_rom_info(const char *s);
ROM_INFO * search_rom_info(ConfigItem *item);

size_t GetContainerActualSize(shared_ptr<FileBuffer> p, size_t offset = 0);
size_t GetContainerActualSize(shared_ptr<FileBuffer> p, size_t offset, int numofcontainer );
size_t GetFlashHeaderSize(shared_ptr<FileBuffer> p, size_t offset = 0);
2 changes: 1 addition & 1 deletion libuuu/sdp.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -235,7 +235,7 @@ int SDPWriteCmd::run(CmdCtx*ctx)
}
else
{
offset += GetContainerActualSize(fbuff, offset);
offset += GetContainerActualSize(fbuff, offset, rom->flags & ROM_INO_3CONTAINER? 3: 2);
}

if (offset >= fbuff->size())
Expand Down
2 changes: 1 addition & 1 deletion libuuu/sdps.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ int SDPSCmd::run(CmdCtx *pro)
return -1;
}

size_t sz = GetContainerActualSize(p, offset);
size_t sz = GetContainerActualSize(p, offset, rom->flags & ROM_INO_3CONTAINER ? 3 : 2);

if (!(rom->flags & ROM_INFO_HID_NO_CMD))
{
Expand Down

0 comments on commit 247629e

Please sign in to comment.