iap.h 981 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #ifndef IAP_H
  2. #define IAP_H
  3. #define IAP_LOCATION 0x1fff1ff1
  4. typedef void ( *IAP )( uint32_t *, uint32_t * );
  5. 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;
  6. typedef enum
  7. {
  8. /* 0*/ CMD_SUCCESS = 0,
  9. /* 1*/ INVALID_COMMAND,
  10. /* 2*/ SRC_ADDR_ERROR,
  11. /* 3*/ DST_ADDR_ERROR,
  12. /* 4*/ SRC_ADDR_NOT_MAPPED,
  13. /* 5*/ DST_ADDR_NOT_MAPPED,
  14. /* 6*/ COUNT_ERROR,
  15. /* 7*/ INVALID_SECTOR,
  16. /* 8*/ SECTOR_NOT_BLANK,
  17. /* 9*/ SECTOR_NOT_PREPARED_FOR_WRITE_OPERATION,
  18. /*10*/ COMPARE_ERROR,
  19. /*11*/ BUSY
  20. } IAP_RES;
  21. #define FW_MAGIC (0x44534E53)
  22. typedef struct
  23. {
  24. uint32_t magic;
  25. uint32_t version;
  26. uint32_t size;
  27. uint32_t crc;
  28. uint32_t crcc;
  29. } sd2snes_fw_header;
  30. uint32_t calc_flash_crc( uint32_t start, uint32_t end );
  31. void test_iap( void );
  32. FLASH_RES check_flash( void );
  33. FLASH_RES flash_file( uint8_t *filename );
  34. #endif