libpit: describe more parts of pit header
The unknown string is "COM_TAR2" in all devices I have access to. The last unknown 4 bytes might be some sort of version, in old devices it is 0000, in Galaxy S6 0003, in Galaxy S7 and S8 0004 and in Galaxy S9 and tab S6 lite 0005. The CPU/bootloader string looks something like: * LSI5410 - Seen in Exynos 5420, 5433 devices (and perhaps others) * LSI7420 - Seen in Exynos 7420, 8890, 8895 devices (and perhaps others) * LSI7880 - Seen in a5y17lte (exynos 7880) * LSI9610 - Seen in gta4xl (exynos 9611) * LSI9810 - Seen in star2lte (exynos 9810) * Mx - Seen in Galaxy S3 (device codename is m0/m3) * MSM8916 - Seen in MSM8916 devices * MSM8960 - Seen in jflte (and probably in others, jflte has a APQ8064AB CPU)first-package-hack
parent
31745c287a
commit
e51c9119f1
|
@ -207,16 +207,11 @@ void Interface::PrintDeviceDetectionFailed(void)
|
|||
|
||||
void Interface::PrintPit(const PitData *pitData)
|
||||
{
|
||||
Interface::Print("--- PIT Header ---\n");
|
||||
Interface::Print("Entry Count: %d\n", pitData->GetEntryCount());
|
||||
|
||||
Interface::Print("Unknown 1: %d\n", pitData->GetUnknown1());
|
||||
Interface::Print("Unknown 2: %d\n", pitData->GetUnknown2());
|
||||
Interface::Print("Unknown 3: %d\n", pitData->GetUnknown3());
|
||||
Interface::Print("Unknown 4: %d\n", pitData->GetUnknown4());
|
||||
Interface::Print("Unknown 5: %d\n", pitData->GetUnknown5());
|
||||
Interface::Print("Unknown 6: %d\n", pitData->GetUnknown6());
|
||||
Interface::Print("Unknown 7: %d\n", pitData->GetUnknown7());
|
||||
Interface::Print("Unknown 8: %d\n", pitData->GetUnknown8());
|
||||
Interface::Print("Unknown string: %s\n", pitData->GetComTar2());
|
||||
Interface::Print("CPU/bootloader tag: %s\n", pitData->GetCpuBlId());
|
||||
Interface::Print("Version(?): 0x%04x\n", pitData->GetUnknown());
|
||||
|
||||
for (unsigned int i = 0; i < pitData->GetEntryCount(); i++)
|
||||
{
|
||||
|
|
|
@ -66,17 +66,10 @@ PitData::PitData()
|
|||
{
|
||||
entryCount = 0;
|
||||
|
||||
unknown1 = 0;
|
||||
unknown2 = 0;
|
||||
com_tar2[0] = '\0';
|
||||
cpu_bl_id[0] = '\0';
|
||||
|
||||
unknown3 = 0;
|
||||
unknown4 = 0;
|
||||
|
||||
unknown5 = 0;
|
||||
unknown6 = 0;
|
||||
|
||||
unknown7 = 0;
|
||||
unknown8 = 0;
|
||||
unknown_version = 0;
|
||||
}
|
||||
|
||||
PitData::~PitData()
|
||||
|
@ -98,17 +91,14 @@ bool PitData::Unpack(const unsigned char *data)
|
|||
|
||||
entries.resize(entryCount);
|
||||
|
||||
unknown1 = PitData::UnpackInteger(data, 8);
|
||||
unknown2 = PitData::UnpackInteger(data, 12);
|
||||
if (!memcpy(com_tar2, &data[8], 8))
|
||||
return (false);
|
||||
com_tar2[8]='\0';
|
||||
if (!memcpy(cpu_bl_id, &data[16], 8))
|
||||
return (false);
|
||||
cpu_bl_id[8]='\0';
|
||||
|
||||
unknown3 = PitData::UnpackShort(data, 16);
|
||||
unknown4 = PitData::UnpackShort(data, 18);
|
||||
|
||||
unknown5 = PitData::UnpackShort(data, 20);
|
||||
unknown6 = PitData::UnpackShort(data, 22);
|
||||
|
||||
unknown7 = PitData::UnpackShort(data, 24);
|
||||
unknown8 = PitData::UnpackShort(data, 26);
|
||||
unknown_version = PitData::UnpackShort(data, 24);
|
||||
|
||||
unsigned int integerValue;
|
||||
unsigned int entryOffset;
|
||||
|
@ -160,17 +150,10 @@ void PitData::Pack(unsigned char *data) const
|
|||
|
||||
PitData::PackInteger(data, 4, entryCount);
|
||||
|
||||
PitData::PackInteger(data, 8, unknown1);
|
||||
PitData::PackInteger(data, 12, unknown2);
|
||||
memcpy(&data[8], com_tar2, 8);
|
||||
memcpy(&data[16], cpu_bl_id, 8);
|
||||
|
||||
PitData::PackShort(data, 16, unknown3);
|
||||
PitData::PackShort(data, 18, unknown4);
|
||||
|
||||
PitData::PackShort(data, 20, unknown5);
|
||||
PitData::PackShort(data, 22, unknown6);
|
||||
|
||||
PitData::PackShort(data, 24, unknown7);
|
||||
PitData::PackShort(data, 26, unknown8);
|
||||
PitData::PackShort(data, 24, unknown_version);
|
||||
|
||||
int entryOffset;
|
||||
|
||||
|
@ -201,9 +184,10 @@ void PitData::Pack(unsigned char *data) const
|
|||
|
||||
bool PitData::Matches(const PitData *otherPitData) const
|
||||
{
|
||||
if (entryCount == otherPitData->entryCount && unknown1 == otherPitData->unknown1 && unknown2 == otherPitData->unknown2
|
||||
&& unknown3 == otherPitData->unknown3 && unknown4 == otherPitData->unknown4 && unknown5 == otherPitData->unknown5
|
||||
&& unknown6 == otherPitData->unknown6 && unknown7 == otherPitData->unknown7 && unknown8 == otherPitData->unknown8)
|
||||
if (entryCount == otherPitData->entryCount &&
|
||||
(strncmp(com_tar2, otherPitData->com_tar2, 8) == 0) &&
|
||||
(strncmp(cpu_bl_id, otherPitData->cpu_bl_id, 8) == 0) &&
|
||||
unknown_version == otherPitData->unknown_version)
|
||||
{
|
||||
for (unsigned int i = 0; i < entryCount; i++)
|
||||
{
|
||||
|
@ -223,17 +207,11 @@ void PitData::Clear(void)
|
|||
{
|
||||
entryCount = 0;
|
||||
|
||||
unknown1 = 0;
|
||||
unknown2 = 0;
|
||||
com_tar2[0] = '\0';
|
||||
|
||||
unknown3 = 0;
|
||||
unknown4 = 0;
|
||||
cpu_bl_id[0] = '\0';
|
||||
|
||||
unknown5 = 0;
|
||||
unknown6 = 0;
|
||||
|
||||
unknown7 = 0;
|
||||
unknown8 = 0;
|
||||
unknown_version = 0;
|
||||
|
||||
for (unsigned int i = 0; i < entries.size(); i++)
|
||||
delete entries[i];
|
||||
|
|
|
@ -68,8 +68,8 @@ namespace libpit
|
|||
enum
|
||||
{
|
||||
kAttributeWrite = 1,
|
||||
kAttributeSTL = 1 << 1/*,
|
||||
kAttributeBML = 1 << 2*/ // ???
|
||||
kAttributeSTL = 1 << 1
|
||||
/* kAttributeBML = 1 << 2 */ // ???
|
||||
};
|
||||
|
||||
enum
|
||||
|
@ -261,18 +261,12 @@ namespace libpit
|
|||
|
||||
private:
|
||||
|
||||
unsigned int entryCount; // 0x04
|
||||
unsigned int unknown1; // 0x08
|
||||
unsigned int unknown2; // 0x0C
|
||||
unsigned int entryCount; // 0x04
|
||||
char com_tar2[8+1]; // 0x08
|
||||
|
||||
unsigned short unknown3; // 0x10
|
||||
unsigned short unknown4; // 0x12
|
||||
char cpu_bl_id[8+1]; // 0x10
|
||||
|
||||
unsigned short unknown5; // 0x14
|
||||
unsigned short unknown6; // 0x16
|
||||
|
||||
unsigned short unknown7; // 0x18
|
||||
unsigned short unknown8; // 0x1A
|
||||
unsigned short unknown_version; // 0x18
|
||||
|
||||
// Entries start at 0x1C
|
||||
std::vector<PitEntry *> entries;
|
||||
|
@ -371,44 +365,19 @@ namespace libpit
|
|||
return paddedSize;
|
||||
}
|
||||
|
||||
unsigned int GetUnknown1(void) const
|
||||
const char * GetComTar2(void) const
|
||||
{
|
||||
return unknown1;
|
||||
return com_tar2;
|
||||
}
|
||||
|
||||
unsigned int GetUnknown2(void) const
|
||||
const char * GetCpuBlId(void) const
|
||||
{
|
||||
return unknown2;
|
||||
return cpu_bl_id;
|
||||
}
|
||||
|
||||
unsigned short GetUnknown3(void) const
|
||||
unsigned int GetUnknown(void) const
|
||||
{
|
||||
return unknown3;
|
||||
}
|
||||
|
||||
unsigned short GetUnknown4(void) const
|
||||
{
|
||||
return unknown4;
|
||||
}
|
||||
|
||||
unsigned short GetUnknown5(void) const
|
||||
{
|
||||
return unknown5;
|
||||
}
|
||||
|
||||
unsigned short GetUnknown6(void) const
|
||||
{
|
||||
return unknown6;
|
||||
}
|
||||
|
||||
unsigned short GetUnknown7(void) const
|
||||
{
|
||||
return unknown7;
|
||||
}
|
||||
|
||||
unsigned short GetUnknown8(void) const
|
||||
{
|
||||
return unknown8;
|
||||
return unknown_version;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue