95 lines
3.8 KiB
C
95 lines
3.8 KiB
C
/*
|
||
****************************************************************************************************
|
||
* MELIS
|
||
* the Easy Portable/Player Develop Kits
|
||
* SDMMC Module
|
||
*
|
||
* (c) Copyright 2011-2014, All winners Co,Ld.
|
||
* All Rights Reserved
|
||
*
|
||
* File : mbr.h
|
||
* By : james.deng
|
||
* Version : 1.0.0
|
||
* Date : 2011-11-28
|
||
* Descript:
|
||
* Update : <date> <author> <version> <notes>
|
||
* 2011-11-28 james.deng 1.0.0 build the file.
|
||
****************************************************************************************************
|
||
*/
|
||
|
||
#ifndef __MBR_H__
|
||
#define __MBR_H__
|
||
|
||
// #include <mod_defs.h>
|
||
|
||
#define MAX_PART_COUNT 8 // max part count
|
||
#define MBR_COPY_NUM 4 // mbr backup count
|
||
|
||
#define MBR_START_ADDRESS 0x0 // mbr start address
|
||
#define MBR_SIZE 1024 // mbr size
|
||
#define MBR_RESERVED (MBR_SIZE - 20 - (MAX_PART_COUNT * 64)) // mbr reserved space
|
||
|
||
// part information
|
||
typedef struct tag_PARTITION
|
||
{
|
||
__u32 addrhi; // start address high 32 bit
|
||
__u32 addrlo; // start address low 32 bit
|
||
__u32 lenhi; // size high 32 bit
|
||
__u32 lenlo; // size low 32 bit
|
||
__u8 classname[12]; // major device name
|
||
__u8 name[12]; // minor device name
|
||
__u8 res[24]; // reserved
|
||
} PARTITION; // 64 bytes Ӧ<>ô<EFBFBD><C3B4><EFBFBD> pack
|
||
|
||
// mbr information
|
||
typedef struct tag_MBR
|
||
{
|
||
__u32 crc32; // crc, from byte 4 to mbr tail
|
||
__u32 version; // version
|
||
__u8 magic[8]; // magic number
|
||
__u8 copy; // mbr backup count
|
||
__u8 index; // current part no
|
||
__u16 PartCount; // part counter
|
||
PARTITION array[MAX_PART_COUNT]; // part info
|
||
__u8 res[MBR_RESERVED]; // reserved space
|
||
} MBR;
|
||
|
||
#define SUNXI_MBR_SIZE (16 * 1024)
|
||
#define SUNXI_MBR_MAX_PART_COUNT 120
|
||
/* partition information */
|
||
typedef struct sunxi_partition_t
|
||
{
|
||
unsigned int addrhi;
|
||
unsigned int addrlo;
|
||
unsigned int lenhi;
|
||
unsigned int lenlo;
|
||
unsigned char classname[16];
|
||
unsigned char name[16];
|
||
unsigned int user_type;
|
||
unsigned int keydata;
|
||
unsigned int ro;
|
||
unsigned int sig_verify;
|
||
unsigned int sig_erase;
|
||
unsigned int sig_value[4];
|
||
unsigned int sig_pubkey;
|
||
unsigned int sig_pbumode;
|
||
unsigned char reserved2[36];
|
||
}__attribute__ ((packed))sunxi_partition;
|
||
|
||
/* mbr information */
|
||
typedef struct sunxi_mbr
|
||
{
|
||
unsigned int crc32; // crc 1k - 4
|
||
unsigned int version; // 版本信息, 0x00000100
|
||
unsigned char magic[8]; //"softw311"
|
||
unsigned int copy; //分数
|
||
unsigned int index; //第几个MBR备份
|
||
unsigned int PartCount; //分区个数
|
||
unsigned int stamp[1]; //对齐
|
||
sunxi_partition array[SUNXI_MBR_MAX_PART_COUNT]; //
|
||
unsigned int lockflag;
|
||
unsigned char res[(SUNXI_MBR_SIZE - 32 - 4 - (SUNXI_MBR_MAX_PART_COUNT * sizeof(sunxi_partition)))];
|
||
}__attribute__ ((packed)) sunxi_mbr_t;
|
||
|
||
#endif // __MBR_H__
|