Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
 
 
 
 

183 lignes
4.2 KiB

  1. /*
  2. * File: ChaletPowerRelay.h
  3. * Author: JF
  4. *
  5. * Created on November 30, 2018, 7:33 PM
  6. */
  7. #ifndef BOOTLOADERINTERFACE_H
  8. #define BOOTLOADERINTERFACE_H
  9. #include "define.h"
  10. #define BOOTLOADER_FILE_HEADER_CODE (int)0xBAADBEEF
  11. #define BOOTLOADER_RECORD_HEADER_CODE (int)0xDEADBEEF
  12. #define BOOTLOADER_FLASH_FIRMWARE_VALIDATOR 0xA8
  13. #define BOOTLOADER_ENTER_UPLOAD_MODE_VALIDATOR 0x5A
  14. typedef struct
  15. {
  16. unsigned char BootloaderAction;
  17. unsigned char BootloaderActionValidator;
  18. }stBootloaderFlags_t;
  19. typedef struct
  20. {
  21. unsigned int Firmwareflags;
  22. unsigned int NbRecords;
  23. unsigned int FirmwareSize;
  24. unsigned int Versioncode;
  25. unsigned int DataCRC32;
  26. }stStoredBootloaderInfo;
  27. extern stBootloaderFlags_t mBootloaderFlags;
  28. stStoredBootloaderInfo mStoredBootloaderInfo;
  29. enum eBootloaderFlagsIndex
  30. {
  31. BOOTLOADER_FLAGS_ACTION_FLAG_INDEX = 0,
  32. BOOTLOADER_FLAGS_ACTION_VALIDATOR_INDEX,
  33. BOOTLOADER_FLAGS_MAX_INDEX = 12
  34. };
  35. enum eBootloaderActionFlagValues
  36. {
  37. BOOTLOADER_ACTION_JUMP_TO_APP_VALUE = 0,
  38. BOOTLOADER_ACTION_FLASH_FIRMWARE_VALUE = 1,
  39. BOOTLOADER_ACTION_ENTER_UPDATE_MODE_VALUE = 2,
  40. BOOTLOADER_ACTION_MAX_VALUE
  41. };
  42. enum eBootloaderStates
  43. {
  44. BOOTLOADER_STANDBY_STATE,
  45. BOOTLOADER_ACTIVE_STATE,
  46. BOOTLOADER_ERASE_FLASH_STATE,
  47. BOOTLOADER_RECEIVING_FIRMWARE_STATE,
  48. BOOTLOADER_SENDING_FIRMWARE_COPY_STATE,
  49. BOOTLOADER_PRINTING_FIRMWARE_STATE,
  50. BOOTLOADER_MAX_STATE
  51. };
  52. enum eBootloaderStateMachineEvents
  53. {
  54. BOOTLOADER_TICK_EVENT,
  55. BOOTLOADER_NEW_CMD_EVENT,
  56. BOOTLOADER_TIMEOUT_EVENT,
  57. BOOTLOADER_MAX_EVENT
  58. };
  59. enum eBootloaderFlashEraseStates
  60. {
  61. BOOTLOADER_FLASH_ERASE_SECTOR_STATE,
  62. BOOTLOADER_FLASH_ERASE_WAIT_FOR_SECTOR_DONE,
  63. BOOTLOADER_FLASH_ERASE_CHECKBACK_STATE,
  64. BOOTLOADER_FLASH_ERASE_FINISHED_STATE,
  65. BOOTLOADER_FLASH_ERASE_ERROR_STATE,
  66. BOOTLOADER_FLASH_ERASE_MAX_STATE
  67. };
  68. enum eBootloaderFlashEraseResults
  69. {
  70. BOOTLOADER_FLASH_ERASE_RUNNING_RES,
  71. BOOTLOADER_FLASH_ERASE_FINISHED_RES,
  72. BOOTLOADER_FLASH_ERASE_ERROR_RES,
  73. BOOTLOADER_FLASH_ERASE_ABORT_RES,
  74. BOOTLOADER_FLASH_ERASE_MAX_RES
  75. };
  76. enum eBootloaderFlahsEraseSMEvents
  77. {
  78. BOOTLOADER_FLASH_ERASE_SM_TICK_EVENT,
  79. BOOTLOADER_FLASH_ERASE_SM_ABORT_EVENT,
  80. BOOTLOADER_FLASH_ERASE_SM_MAX_EVENT
  81. };
  82. enum eBootloaderFlashWriteStates
  83. {
  84. BOOTLOADER_FLASH_WRITE_STANDBY_STATE,
  85. BOOTLOADER_FLASH_WRITE_BUFFER_STATE,
  86. BOOTLOADER_FLASH_WRITE_WAIT_FOR_BYTE_DONE,
  87. BOOTLOADER_FLASH_WRITE_CHECKBACK_STATE,
  88. BOOTLOADER_FLASH_WRITE_FINISHED_STATE,
  89. BOOTLOADER_FLASH_WRITE_ERROR_STATE,
  90. BOOTLOADER_FLASH_WRITE_MAX_STATE
  91. };
  92. enum eBootloaderFlashWriteResults
  93. {
  94. BOOTLOADER_FLASH_WRITING_RES,
  95. BOOTLOADER_FLASH_WRITE_FINISHED_RES,
  96. BOOTLOADER_FLASH_WRITE_ERROR_RES,
  97. BOOTLOADER_FLASH_WRITE_ABORT_RES,
  98. BOOTLOADER_FLASH_WRITE_MAX_RES
  99. };
  100. enum eBootloaderFlahsWriteSMEvents
  101. {
  102. BOOTLOADER_FLASH_WRITE_SM_TICK_EVENT,
  103. BOOTLOADER_FLASH_WRITE_SM_NEW_BUFFER_EVENT,
  104. BOOTLOADER_FLASH_WRITE_SM_ABORT_EVENT,
  105. BOOTLOADER_FLASH_WRITE_SM_MAX_EVENT
  106. };
  107. enum eBootloaderStateMachineCmds
  108. {
  109. BOOTLOADER_SM_ACTIVATE_CMD,
  110. BOOTLOADER_SM_ABORT_CMD,
  111. BOOTLOADER_SM_ERASE_FLASH_CMD,
  112. BOOTLOADER_SM_INIT_UPLOAD_CMD,
  113. BOOTLOADER_SM_NEW_DATA_CHUNK_CMD,
  114. BOOTLOADER_SM_UPLOAD_FINISHED_CMD,
  115. BOOTLOADER_SM_EXECUTE_UPGRAGE_CMD,
  116. BOOTLOADER_SM_INVALID_CRC_CMD,
  117. BOOTLOADER_SM_CHECK_FLASH_CMD,
  118. BOOTLOADER_SM_GET_FIRMWARE_DATA_CMD
  119. };
  120. extern unsigned char BootloaderBuffer[300];
  121. int BootloaderInterfaceInit();
  122. void BootloaderExecuteCmd(char Cmd,bool CRCValid);
  123. void BootloaderCRCError(char Cmd, int RxCRC, int ExpectedCRC);
  124. void BootloaderInterfaceTick();
  125. void BootloaderInterfaceStateMachine(int Event, int Param);
  126. void BootloaderResetStateMachine();
  127. void BootloaderActivateBootloader();
  128. void BootloaderDeactivateBootloader();
  129. int BootloaderFlashEraseStateMachine(int event);
  130. int ResetBootloaderFlashEraseStateMachine();
  131. int BootloaderFlashWriteStateMachine(int event);
  132. int ResetBootloaderFlashWriteStateMachine();
  133. int BootloaderCheckFlashBootloaderData();
  134. int BootloaderPrintFlashData();
  135. int BootloaderBytesToInt(unsigned char *Bytes);
  136. int BootloaderIntToBytes(unsigned char *Buf, unsigned int Input);
  137. #endif /* BOOTLOADERINTERFACE_H */