fw.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #pragma once
  2. #include "common.h"
  3. /*
  4. * Firmware chunk header.
  5. */
  6. #define FW_MAGIC 0x7a07fbd6
  7. struct fw_header {
  8. uint32_t magic; /* Magic number */
  9. uint16_t type; /* Content type */
  10. uint16_t flags; /* Content flags */
  11. uint32_t len; /* Content length (excluding header) */
  12. uint32_t addr; /* Address or similar */
  13. };
  14. enum fw_data_type {
  15. FDT_END, /* End of stream */
  16. FDT_DATA, /* FPGA firmware ata to be flashed */
  17. FDT_TARGET, /* Subsystem string (must match) */
  18. FDT_NOTE, /* Version: XXXXX or similar */
  19. FDT_ESP_OTA, /* ESP32 OTA image */
  20. FDT_FPGA_INIT /* FPGA bitstream for update */
  21. };
  22. enum fw_data_flags {
  23. FDF_OPTIONAL = 0x0001 /* Ignore if chunk data type unknown */
  24. };
  25. /*
  26. * Additional error codes
  27. */
  28. #define FWUPDATE_ERR_ERASE_FAILED (-7)
  29. #define FWUPDATE_ERR_PROGRAM_FAILED (-8)
  30. #define FWUPDATE_ERR_WRITE_PROTECT (-9)
  31. #define FWUPDATE_ERR_NOT_READY (-10)
  32. #define FWUPDATE_ERR_DETECT (-11)
  33. #define FWUPDATE_ERR_DEVICE_MISMATCH (-12)
  34. #define FWUPDATE_ERR_IN_PROGRESS (-13)
  35. extern_c int firmware_update(read_func_t read_func, token_t token);
  36. extern_c esp_err_t esp_update(read_func_t read_func, token_t token, size_t size);