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__
|