52 lines
1.2 KiB
C
52 lines
1.2 KiB
C
#include "amt630h.h"
|
|
#include "sysinfo.h"
|
|
#include "crc32.h"
|
|
|
|
extern int SpiReadSysInfo(SysInfo *info);
|
|
extern void SpiWriteSysInfo(SysInfo *info);
|
|
extern int EmmcReadSysInfo(SysInfo *info);
|
|
extern void EmmcWriteSysInfo(SysInfo *info);
|
|
|
|
static SysInfo sysinfo = {0};
|
|
|
|
SysInfo *GetSysInfo(void)
|
|
{
|
|
return &sysinfo;
|
|
}
|
|
|
|
void SetDefaultSysInfo(void)
|
|
{
|
|
#if DEVICE_TYPE_SELECT != EMMC_FLASH
|
|
sysinfo.update_media_type = UPDATE_MEDIA_SD;
|
|
#else
|
|
sysinfo.update_media_type = UPDATE_MEDIA_USB;
|
|
sysinfo.loader_offset = LOADERB_OFFSET;
|
|
sysinfo.loader_size = LOADER_MAX_SIZE;
|
|
sysinfo.image_offset = IMAGEB_OFFSET;
|
|
#endif
|
|
sysinfo.image_offset = IMAGE_OFFSET;
|
|
sysinfo.update_status = UPDATE_STATUS_START;
|
|
sysinfo.stepldr_offset = STEPLDRB_OFFSET;
|
|
sysinfo.stepldr_size = STEPLDR_MAX_SIZE;
|
|
}
|
|
|
|
int ReadSysInfo(void)
|
|
{
|
|
#if DEVICE_TYPE_SELECT != EMMC_FLASH
|
|
return SpiReadSysInfo(&sysinfo);
|
|
#else
|
|
return EmmcReadSysInfo(&sysinfo);
|
|
#endif
|
|
}
|
|
|
|
void SaveSysInfo(SysInfo *info)
|
|
{
|
|
if (!info)
|
|
info = &sysinfo;
|
|
info->checksum = xcrc32((unsigned char*)info, sizeof(SysInfo) - 4, 0xffffffff);
|
|
#if DEVICE_TYPE_SELECT != EMMC_FLASH
|
|
SpiWriteSysInfo(info);
|
|
#else
|
|
EmmcWriteSysInfo(info);
|
|
#endif
|
|
} |