41 lines
909 B
C
41 lines
909 B
C
#ifndef IAP_H
|
|
#define IAP_H
|
|
|
|
#define IAP_LOCATION 0x1fff1ff1
|
|
typedef void (*IAP)(uint32_t*, uint32_t*);
|
|
|
|
typedef enum {ERR_OK = 0, ERR_HW, ERR_FS, ERR_FILEHD, ERR_FILECHK, ERR_FLASHHD, ERR_FLASHCRC, ERR_FLASHPREP, ERR_FLASHERASE, ERR_FLASH} FLASH_RES;
|
|
|
|
typedef enum {
|
|
/* 0*/ CMD_SUCCESS = 0,
|
|
/* 1*/ INVALID_COMMAND,
|
|
/* 2*/ SRC_ADDR_ERROR,
|
|
/* 3*/ DST_ADDR_ERROR,
|
|
/* 4*/ SRC_ADDR_NOT_MAPPED,
|
|
/* 5*/ DST_ADDR_NOT_MAPPED,
|
|
/* 6*/ COUNT_ERROR,
|
|
/* 7*/ INVALID_SECTOR,
|
|
/* 8*/ SECTOR_NOT_BLANK,
|
|
/* 9*/ SECTOR_NOT_PREPARED_FOR_WRITE_OPERATION,
|
|
/*10*/ COMPARE_ERROR,
|
|
/*11*/ BUSY
|
|
} IAP_RES;
|
|
|
|
#define FW_MAGIC (0x44534E53)
|
|
|
|
typedef struct {
|
|
uint32_t magic;
|
|
uint32_t version;
|
|
uint32_t size;
|
|
uint32_t crc;
|
|
uint32_t crcc;
|
|
} sd2snes_fw_header;
|
|
|
|
uint32_t calc_flash_crc(uint32_t start, uint32_t end);
|
|
void test_iap(void);
|
|
FLASH_RES check_flash(void);
|
|
FLASH_RES flash_file(uint8_t* filename);
|
|
|
|
|
|
#endif
|