|
|
Wiki > Main > ChinaChip (compare)
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Difference: ChinaChip (r15 vs. r14)ChinaChipInformationChinaChip is a company who's software is commonly used by several Chinese DAP manufacturers. Their firmware is based on the µCosII BSP provided by Ingenic. Firmwares can be recognized by the following strings in it:
File formatMain firmware (package)
//--------------------------------------
//--- 010 Editor v2.1.3 Binary Template
//
// File: HXF template
// Author: mcuelenaere
// Revision: 0.1
// Purpose:
//--------------------------------------
typedef struct
{
CHAR Main_Header[20];
UINT Size;
UINT Checksum;
UINT Unk;
CHAR Other_Header[32];
} HEADER;
typedef struct
{
UINT NameSize;
if(NameSize>0)
{
CHAR Name[NameSize];
CHAR Padding;
UINT ContentSize;
if(ContentSize>0)
UCHAR Content[ContentSize];
}
} BLOCK;
HEADER header;
while(!FEof())
BLOCK block;
There are several HXF tools in SVN (utils/jz4740_tools/). The checksum is calculated like this:
local uint chksum = ReadUInt(0x18); /* actual checksum */
local uint chk = 0; /* calculated checksum */
FSeek(0x40);
while(!FEof())
{
chk += ReadUInt(FTell());
FSeek(FTell()+4);
}
*.dl file
//--------------------------------------
//--- 010 Editor v2.1.3 Binary Template
//
// File: DLTemplate
// Author: mcuelenaere
// Revision: 0.1
// Purpose:
//--------------------------------------
typedef struct
{
CHAR Name[4];
DWORD Type;
DWORD Offset;
DWORD Size;
UCHAR Date[16];
} HEADER;
typedef struct
{
UINT String_Offset;
UINT Padding;
UINT Unk;
UINT Symbol;
} SYMBOL;
typedef struct
{
while(ReadByte(FTell())!=0 || ReadByte(FTell()+1) == 0)
UCHAR Val;
FSeek(FTell()+1);
} STRING;
typedef struct
{
UINT symbol_total;
UINT padding[3];
local int i;
for(i=0;i<symbol_total;i++)
SYMBOL symbols;
for(i=0;i<symbol_total;i++)
STRING strings;
} HEADER1;
HEADER headers;
while(headers.Name[0] != 0)
HEADER headers;
FSeek(headers[1].Offset);
HEADER1 Import;
FSeek(headers[2].Offset);
HEADER1 Export;
ccpmp.bin CCPMP.bin (China Chip Portable Media Player) contains the firmware's main code. The bootloader who loads and starts this code gives three (unknown atm) argumens: $a0, $a1 & $a2. The format is like this: UINT Unk; /* Start address? */ UINT End_Addr; UCHAR Code[End_Addr-8]; UCHAR Padding[0x500000-End_Addr-8]; /* Filled with 0xFF */ IHFS file system formatIHFS is a file system format used by ChinaChip players. It is basically a header, a file table and concatenated file contents, so it is only suitable as a read-only file system. The file system is divided into 512-byte sectors and is laid out as follows:
C source code for splitting an IHFS image is in utils/jz4740_tools/IHFSsplit.c (SVN). HXF firmware file formatHXF most probably stands for "华芯飞", which is the Chinese name of ChinaChip Ltd. It is the file format used in firmware distribution. This file format is just a header followed by concatenated file entries, so we can say it's an archive format.
C source code for splitting an HXF firmware file is in utils/jz4740_tools/HXFsplit.c (SVN). ChinaChip DAP's
Used chipsetsThese chipsets are used by some China Chip players: External links
r17 - 30 Nov 2010 - 01:16:29 - MaurusCuelenaere
Revision r15 - 02 Feb 2009 - 16:03 - MaurusCuelenaereRevision r14 - 08 Jan 2009 - 13:26 - MaurusCuelenaere Copyright © by the contributing authors.
|