iap.h 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #ifndef __IAP_H__
  2. #define __IAP_H__
  3. #include <stdint.h> // standard types definitions
  4. enum eIAP_COMMANDS
  5. {
  6. IAP_PREPARE = 50, // Prepare sector(s) for write operation
  7. IAP_COPY_RAM2FLASH, // Copy RAM to Flash
  8. IAP_ERASE, // Erase sector(s)
  9. IAP_BLANK_CHECK, // Blank check sector(s)
  10. IAP_READ_PART_ID, // Read chip part ID
  11. IAP_READ_BOOT_VER, // Read chip boot code version
  12. IAP_COMPARE, // Compare memory areas
  13. IAP_REINVOKE_ISP, // Reinvoke ISP
  14. IAP_READ_UID, // Read unique ID
  15. IAP_ERASE_PAGE, // Erase page(s)
  16. IAP_READ_MISR=70,
  17. IAP_READ_MISR_EX=73,
  18. };
  19. struct sIAP
  20. {
  21. uint32_t cmd; // Command
  22. uint32_t par[4]; // Parameters
  23. uint32_t stat; // Status
  24. uint32_t res[4]; // Result
  25. };
  26. #define REINVOKE_AUTO 0
  27. #define REINVOKE_UART 1
  28. // Pointer to ROM IAP entry functions
  29. #define IAP_ENTRY_LOCATION 0x0F001FF1
  30. // IAP Call
  31. typedef void (*IAP_Entry) (uint32_t *cmd, uint32_t *stat);
  32. #define IAP_Call ((IAP_Entry) IAP_ENTRY_LOCATION)
  33. #endif // __IAP_H__