SmartAudio/lichee/brandy/u-boot-2014.07/include/sunxi_mbr.h

104 lines
4.6 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* (C) Copyright 2007-2013
* Allwinner Technology Co., Ltd. <www.allwinnertech.com>
* Jerry Wang <wangflord@allwinnertech.com>
*
* See file CREDITS for list of people who contributed to this
* project.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
* MA 02111-1307 USA
*/
#ifndef __SUNXI_MBR_H__
#define __SUNXI_MBR_H__
#define DOWNLOAD_MAP_NAME "dlinfo.fex"
#define SUNXI_MBR_NAME "sunxi_mbr.fex"
/* MBR */
#define SUNXI_MBR_SIZE (16 * 1024)
#define SUNXI_DL_SIZE (16 * 1024)
#define SUNXI_MBR_MAGIC "softw411"
#define SUNXI_MBR_MAX_PART_COUNT 120
#define SUNXI_MBR_COPY_NUM 4 //mbr的备份数量
#define SUNXI_MBR_RESERVED (SUNXI_MBR_SIZE - 32 - 4 - (SUNXI_MBR_MAX_PART_COUNT * sizeof(sunxi_partition))) //mbr保留的空间
#define SUNXI_DL_RESERVED (SUNXI_DL_SIZE - 32 - (SUNXI_MBR_MAX_PART_COUNT * sizeof(dl_one_part_info)))
#define SUNXI_LOCKED (0xAA)
#define SUNXI_UNLOCKED (0xA5)
/* 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]; //保留数据匹配分区信息128字节
}__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_RESERVED];
}__attribute__ ((packed)) sunxi_mbr_t;
typedef struct tag_one_part_info
{
unsigned char name[16]; //所烧写分区的主设备名
unsigned int addrhi; //所烧写分区的高地址,扇区单位
unsigned int addrlo; //所烧写分区的低地址,扇区单位
unsigned int lenhi; //所烧写分区的长度高32位扇区单位
unsigned int lenlo; //所烧写分区的长度低32位扇区单位
unsigned char dl_filename[16]; //所烧写分区的文件名称长度固定16字节
unsigned char vf_filename[16]; //所烧写分区的校验文件名称长度固定16字节
unsigned int encrypt; //所烧写分区的数据是否进行加密 0:加密 1不加密
unsigned int verify; //所烧写分区的数据是否进行校验 0:不校验 1校验
}__attribute__ ((packed)) dl_one_part_info;
//分区烧写信息
typedef struct tag_download_info
{
unsigned int crc32; //crc
unsigned int version; //版本号 0x00000101
unsigned char magic[8]; //"softw311"
unsigned int download_count; //需要烧写的分区个数
unsigned int stamp[3]; //对齐
dl_one_part_info one_part_info[SUNXI_MBR_MAX_PART_COUNT]; //烧写分区的信息
unsigned char res[SUNXI_DL_RESERVED];
}
__attribute__ ((packed)) sunxi_download_info;
#endif