2016-11-04 17:42:26 +00:00
|
|
|
|
|
|
|
|
2016-11-04 07:51:40 +00:00
|
|
|
// структура описания заголовка раздела
|
2017-01-10 14:48:01 +00:00
|
|
|
#ifndef WIN32
|
2016-11-04 07:51:40 +00:00
|
|
|
struct __attribute__ ((__packed__)) pheader {
|
2017-01-10 14:48:01 +00:00
|
|
|
#else
|
|
|
|
#pragma pack(push,1)
|
|
|
|
struct pheader {
|
|
|
|
#endif
|
|
|
|
int32_t magic; // 0xa55aaa55
|
2016-11-04 07:51:40 +00:00
|
|
|
uint32_t hdsize; // размер заголовка
|
|
|
|
uint32_t hdversion;
|
|
|
|
uint8_t unlock[8];
|
|
|
|
uint32_t code; // тип раздела
|
|
|
|
uint32_t psize; // разме поля данных
|
|
|
|
uint8_t date[16];
|
|
|
|
uint8_t time[16]; // дата-время сборки прошивки
|
|
|
|
uint8_t version[32]; // версия пршоивки
|
|
|
|
uint16_t crc; // CRC заголовка
|
|
|
|
uint32_t blocksize; // размер блока CRC образа прошивки
|
|
|
|
};
|
2017-01-10 14:48:01 +00:00
|
|
|
#ifdef WIN32
|
|
|
|
#pragma pack(pop)
|
|
|
|
#endif
|
2016-11-04 07:51:40 +00:00
|
|
|
|
|
|
|
|
2016-08-03 04:57:28 +00:00
|
|
|
// Структура описания таблицы разделов
|
|
|
|
|
|
|
|
struct ptb_t{
|
|
|
|
unsigned char pname[20]; // буквенное имя раздела
|
2016-11-04 07:51:40 +00:00
|
|
|
struct pheader hd; // образ заголовка
|
|
|
|
uint16_t* csumblock; // блок контрольных сумм
|
|
|
|
uint8_t* pimage; // образ раздела
|
|
|
|
uint32_t offset; // смещение в файле до начала раздела
|
2016-11-04 10:40:24 +00:00
|
|
|
uint32_t zflag; // признак сжатого раздела
|
2016-08-03 04:57:28 +00:00
|
|
|
};
|
|
|
|
|
2016-11-04 17:42:26 +00:00
|
|
|
//******************************************************
|
|
|
|
//* Внешние массивы для хранения таблицы разделов
|
|
|
|
//******************************************************
|
|
|
|
extern struct ptb_t ptable[];
|
|
|
|
extern int npart; // число разделов в таблице
|
|
|
|
|
|
|
|
extern uint32_t errflag;
|
|
|
|
|
2016-11-04 07:51:40 +00:00
|
|
|
int findparts(FILE* in);
|
|
|
|
void find_pname(unsigned int id,unsigned char* pname);
|
|
|
|
void findfiles (char* fdir);
|
|
|
|
uint32_t psize(int n);
|