gfabootlmast.h 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. // gfabootlmast.h :
  2. //
  3. #if !defined(AGD_GFABOOTLMAST_H__9BEF8C2B_D667_41C2_A0F0_6F1CC86DCF36__INCLUDED_)
  4. #define AGD_GFABOOTLMAST_H__9BEF8C2B_D667_41C2_A0F0_6F1CC86DCF36__INCLUDED_
  5. #include <stdio.h>
  6. #include <string.h>
  7. #include <stdint.h>
  8. #include <stdbool.h>
  9. #include <sys/time.h>
  10. #include <gfamininetmst.h>
  11. #ifdef __cplusplus
  12. extern "C" {
  13. #endif // __cplusplus
  14. /////////////////////////////////////////////////////////////////////////////
  15. // gfabootlmast.h - Declarations:
  16. typedef void *HGFABLM;
  17. /////////////////////////////////////////////////////////////////////////////
  18. #define GFA_APP_MAX_IMG_MATERIAL_NUM_LENGTH 16 // including the zero terminator
  19. #define GFA_APP_MAX_IMG_SERIAL_NUM_LENGTH 16 // including the zero terminator
  20. #define GFA_APP_MAX_IMG_NAME_BUILD_LENGTH 24 // including the zero terminator
  21. #define GFA_APP_IMG_HEADER_PREFIX_0 ((uint32_t)0xFF01FF02)
  22. #define GFA_APP_IMG_HEADER_PREFIX_1 ((uint32_t)0xFF03FF04)
  23. ////////////////////////////////////////////////////////////////////////////////////
  24. #define GFA_APP_BOOTLOADER_START_ADDRESS ((uint32_t)0x00000000)
  25. #define GFA_BOOTLOADER_FLASH_PAGE_SIZE ((uint32_t)1024)
  26. #define GFA_BOOTLOADER_MIN_SEND_DATA_BLOCK_SIZE 4
  27. #define GFA_BOOTLOADER_MAX_SEND_DATA_BLOCK_SIZE 76
  28. #define GFA_BOOTLOADER_DEF_SEND_DATA_BLOCK_SIZE GFA_BOOTLOADER_MAX_SEND_DATA_BLOCK_SIZE
  29. #define GFA_BOOTLOADER_EXEC_WAIT_TIME 250
  30. ////////////////////////////////////////////////////////////////////////////////////
  31. typedef struct _GFA_APP_IMG_HEADER
  32. {
  33. const uint32_t nPrefix0;
  34. const uint32_t nPrefix1;
  35. const uint32_t nImgLength;
  36. const uint32_t nImgCRC32;
  37. const uint32_t nReserved[4];
  38. union
  39. {
  40. struct
  41. {
  42. const char * const pszImgMaterialNum;
  43. const char * const pszImgNameBuild;
  44. }app;
  45. struct
  46. {
  47. const char szImgMaterialNum[GFA_APP_MAX_IMG_MATERIAL_NUM_LENGTH];
  48. const char szImgNameBuild[GFA_APP_MAX_IMG_NAME_BUILD_LENGTH];
  49. }bl;
  50. };
  51. }GFA_APP_IMG_HEADER, *LPGFA_APP_IMG_HEADER;
  52. typedef const GFA_APP_IMG_HEADER *LPCGFA_APP_IMG_HEADER;
  53. /////////////////////////////////////////////////////////////////////////////
  54. typedef enum _GfaBlmDlProgressStatus
  55. {
  56. GBDPS_Error,
  57. GBDPS_StartEraseFlash,
  58. GBDPS_EndEraseFlash,
  59. GBDPS_StartUploadBlocks,
  60. GBDPS_UploadBlock,
  61. GBDPS_EndUploadBlocks
  62. }GfaBlmDlProgressStatus;
  63. /////////////////////////////////////////////////////////////////////////////
  64. typedef struct _GFA_BLM_DL_PROGRESS_PARAMS
  65. {
  66. int nCtx;
  67. int nErrorCode;
  68. uint32_t nCbBlock;
  69. uint32_t nBlockNr;
  70. uint32_t nCbTotal;
  71. uint32_t nCbSent;
  72. uint32_t nFlashStartAddr;
  73. uint32_t nCntFlashPages;
  74. uint8_t nNodeAddr;
  75. void *pParam;
  76. }GFA_BLM_DL_PROGRESS_PARAMS, *LPGFA_BLM_DL_PROGRESS_PARAMS;
  77. typedef const GFA_BLM_DL_PROGRESS_PARAMS *LPCGFA_BLM_DL_PROGRESS_PARAMS;
  78. typedef void (*PFN_GFA_BLM_DL_PROGRESS)(const char *pszFile, int nLine, LPGFA_BLM_DL_PROGRESS_PARAMS pDlProgress);
  79. /////////////////////////////////////////////////////////////////////////////
  80. typedef struct _GFA_BLM_CFG_PARAMS
  81. {
  82. GFA_MININET_MST_CFG_PARAMS mmcp;
  83. PFN_GFA_BLM_DL_PROGRESS pfnDlProgress;
  84. void *pUserParam;
  85. }GFA_BLM_CFG_PARAMS, *LPGFA_BLM_CFG_PARAMS;
  86. typedef const GFA_BLM_CFG_PARAMS *LPCGFA_BLM_CFG_PARAMS;
  87. /////////////////////////////////////////////////////////////////////////////
  88. typedef enum _GFA_BLM_EXEC_CONTEXT
  89. {
  90. GfaBlmCtx_Err = -1,
  91. GfaBlmCtx_Boot,
  92. GfaBlmCtx_App,
  93. GfaBlmCtx_ModB
  94. }GFA_BLM_EXEC_CONTEXT, *LPGFA_BLM_EXEC_CONTEXT;
  95. /////////////////////////////////////////////////////////////////////////////
  96. typedef struct _GFA_IMG_INFO
  97. {
  98. uint32_t nImgLength;
  99. uint32_t nImgCRC32;
  100. char szImgMaterialNum[GFA_APP_MAX_IMG_MATERIAL_NUM_LENGTH];
  101. char szImgNameBuild[GFA_APP_MAX_IMG_NAME_BUILD_LENGTH];
  102. }GFA_IMG_INFO, *LPGFA_IMG_INFO;
  103. typedef const GFA_IMG_INFO *LPCGFA_IMG_INFO;
  104. typedef struct _GFA_BL_APP_IMG_INFO
  105. {
  106. GFA_IMG_INFO bl;
  107. GFA_IMG_INFO app;
  108. }GFA_BL_APP_IMG_INFO, *LPGFA_BL_APP_IMG_INFO;
  109. typedef const GFA_BL_APP_IMG_INFO *LPCGFA_BL_APP_IMG_INFO;
  110. /////////////////////////////////////////////////////////////////////////////
  111. /////////////////////////////////////////////////////////////////////////////
  112. /////////////////////////////////////////////////////////////////////////////
  113. HGFABLM GfaBlmOpen(LPCGFA_BLM_CFG_PARAMS pblmcfg);
  114. void GfaBlmClose(HGFABLM hBlm);
  115. /////////////////////////////////////////////////////////////////////////////
  116. int GfaBlmResetSlaveIndex(HGFABLM hBlm, uint8_t nNodeAddr);
  117. GFA_BLM_EXEC_CONTEXT GfaBlmGetExecutionContext(HGFABLM hBlm, uint8_t nNodeAddr);
  118. /////////////////////////////////////////////////////////////////////////////
  119. // GfA commands
  120. int GfaBlmBootloaderExecute(HGFABLM hBlm, uint8_t nNodeAddr, uint32_t *pnImgCRC32, uint32_t nTimeoutMS);
  121. int GfaBlmBootloaderSetBaudrate(HGFABLM hBlm, uint8_t nNodeAddr, uint32_t nBaudrate);
  122. int GfaBlmBootloaderDump(HGFABLM hBlm, uint8_t nNodeAddr, uint32_t nAddress, uint32_t nCntDwords, void *pBuffer, size_t nCbBuffer);
  123. int GfaBlmGetImgInfo(HGFABLM hBlm, uint8_t nNodeAddr, uint32_t nDumpAddr, bool bCtxIsApp, LPGFA_IMG_INFO pii);
  124. int GfaBlmGetInfoBD(HGFABLM hBlm, uint8_t nNodeAddr, uint32_t nAppBaseAddr, LPGFA_BL_APP_IMG_INFO paii);
  125. int GfaBlmGetInfoBI(HGFABLM hBlm, uint8_t nNodeAddr, LPGFA_BL_APP_IMG_INFO paii);
  126. int GfaBlmReadMaterialAndSerialID(HGFABLM hBlm, uint8_t nNodeAddr, char *pszMaterial, size_t nCbMaterial, char *pszSerial, size_t nCbSerial);
  127. int GfaBlmWriteMaterialAndSerialID(HGFABLM hBlm, uint8_t nNodeAddr, const char *pszMaterial, const char *pszSerial);
  128. int GfaBlmMininetPing(HGFABLM hBlm, uint8_t nNodeAddr);
  129. /////////////////////////////////////////////////////////////////////////////
  130. // TI commands
  131. int GfaBlmBUCmdReset(HGFABLM hBlm, uint8_t nNodeAddr, uint32_t nInitialBaudrate);
  132. int GfaBlmBUCmdPing(HGFABLM hBlm, uint8_t nNodeAddr);
  133. int GfaBlmBUCmdGetStatus(HGFABLM hBlm, uint8_t nNodeAddr, uint8_t *pbStatus);
  134. ssize_t GfaBlmBUCmdPollData(HGFABLM hBlm, uint8_t nNodeAddr, void *pData, size_t nCbData, uint32_t nTimeoutMS);
  135. int GfaBlmBUCmdDownload(HGFABLM hBlm, uint8_t nNodeAddr, uint32_t nFlashStartAddr, uint32_t nCbData, uint32_t nTimeoutMS);
  136. int GfaBlmBUCmdSendDataBlock(HGFABLM hBlm, uint8_t nNodeAddr, const void *pDataBlock, size_t nCbDataBlock);
  137. int GfaBlmBUCmdSendData(HGFABLM hBlm, uint8_t nNodeAddr, const void *pData, size_t nCbData, size_t nCbBlock);
  138. int GfaBlmBUCmdSendDataFile(HGFABLM hBlm, uint8_t nNodeAddr, const char *pszFilename, uint32_t nFlashStartAddr, size_t nCbBlock, uint32_t nTimeoutMS);
  139. /////////////////////////////////////////////////////////////////////////////
  140. int GfaBlmGetDeviceBaudrate(HGFABLM hBlm, uint32_t *pnBaudrate);
  141. int GfaBlmSetDeviceBaudrate(HGFABLM hBlm, uint32_t nBaudrate);
  142. int GfaBlmSetVerbosity(HGFABLM hBlm, int nVerbosity);
  143. HGFAMINEMST GfaBlmGetMininetMasterHandle(HGFABLM hBlm);
  144. uint8_t GfaBlmDataCheckSum(const void *pData, size_t nCbData);
  145. size_t GfaBlmBuildCmdDataPacket(const char *pszCmd, uint8_t tiCmd, const void *pCmdData, size_t nCbCmdData, void *pPacket, size_t nCbPacket, bool bAddLenAndCheck);
  146. const char* GfaBlmStrError(int nErrorCode);
  147. /////////////////////////////////////////////////////////////////////////////
  148. #ifdef __cplusplus
  149. }
  150. #endif // __cplusplus
  151. #endif // !defined(AGD_GFABOOTLMAST_H__9BEF8C2B_D667_41C2_A0F0_6F1CC86DCF36__INCLUDED_)