// gfabootlmast.h : // #if !defined(AGD_GFABOOTLMAST_H__9BEF8C2B_D667_41C2_A0F0_6F1CC86DCF36__INCLUDED_) #define AGD_GFABOOTLMAST_H__9BEF8C2B_D667_41C2_A0F0_6F1CC86DCF36__INCLUDED_ #include #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif // __cplusplus ///////////////////////////////////////////////////////////////////////////// // gfabootlmast.h - Declarations: typedef void *HGFABLM; ///////////////////////////////////////////////////////////////////////////// #define GFA_APP_MAX_IMG_MATERIAL_NUM_LENGTH 16 // including the zero terminator #define GFA_APP_MAX_IMG_SERIAL_NUM_LENGTH 16 // including the zero terminator #define GFA_APP_MAX_IMG_NAME_BUILD_LENGTH 24 // including the zero terminator #define GFA_APP_IMG_HEADER_PREFIX_0 ((uint32_t)0xFF01FF02) #define GFA_APP_IMG_HEADER_PREFIX_1 ((uint32_t)0xFF03FF04) //////////////////////////////////////////////////////////////////////////////////// #define GFA_APP_BOOTLOADER_START_ADDRESS ((uint32_t)0x00000000) #define GFA_BOOTLOADER_FLASH_PAGE_SIZE ((uint32_t)1024) #define GFA_BOOTLOADER_MIN_SEND_DATA_BLOCK_SIZE 4 #define GFA_BOOTLOADER_MAX_SEND_DATA_BLOCK_SIZE 76 #define GFA_BOOTLOADER_DEF_SEND_DATA_BLOCK_SIZE GFA_BOOTLOADER_MAX_SEND_DATA_BLOCK_SIZE #define GFA_BOOTLOADER_EXEC_WAIT_TIME 250 //////////////////////////////////////////////////////////////////////////////////// typedef struct _GFA_APP_IMG_HEADER { const uint32_t nPrefix0; const uint32_t nPrefix1; const uint32_t nImgLength; const uint32_t nImgCRC32; const uint32_t nReserved[4]; union { struct { const char * const pszImgMaterialNum; const char * const pszImgNameBuild; }app; struct { const char szImgMaterialNum[GFA_APP_MAX_IMG_MATERIAL_NUM_LENGTH]; const char szImgNameBuild[GFA_APP_MAX_IMG_NAME_BUILD_LENGTH]; }bl; }; }GFA_APP_IMG_HEADER, *LPGFA_APP_IMG_HEADER; typedef const GFA_APP_IMG_HEADER *LPCGFA_APP_IMG_HEADER; ///////////////////////////////////////////////////////////////////////////// typedef enum _GfaBlmDlProgressStatus { GBDPS_Error, GBDPS_StartEraseFlash, GBDPS_EndEraseFlash, GBDPS_StartUploadBlocks, GBDPS_UploadBlock, GBDPS_EndUploadBlocks }GfaBlmDlProgressStatus; ///////////////////////////////////////////////////////////////////////////// typedef struct _GFA_BLM_DL_PROGRESS_PARAMS { int nCtx; int nErrorCode; uint32_t nCbBlock; uint32_t nBlockNr; uint32_t nCbTotal; uint32_t nCbSent; uint32_t nFlashStartAddr; uint32_t nCntFlashPages; uint8_t nNodeAddr; void *pParam; }GFA_BLM_DL_PROGRESS_PARAMS, *LPGFA_BLM_DL_PROGRESS_PARAMS; typedef const GFA_BLM_DL_PROGRESS_PARAMS *LPCGFA_BLM_DL_PROGRESS_PARAMS; typedef void (*PFN_GFA_BLM_DL_PROGRESS)(const char *pszFile, int nLine, LPGFA_BLM_DL_PROGRESS_PARAMS pDlProgress); ///////////////////////////////////////////////////////////////////////////// typedef struct _GFA_BLM_CFG_PARAMS { GFA_MININET_MST_CFG_PARAMS mmcp; PFN_GFA_BLM_DL_PROGRESS pfnDlProgress; void *pUserParam; }GFA_BLM_CFG_PARAMS, *LPGFA_BLM_CFG_PARAMS; typedef const GFA_BLM_CFG_PARAMS *LPCGFA_BLM_CFG_PARAMS; ///////////////////////////////////////////////////////////////////////////// typedef enum _GFA_BLM_EXEC_CONTEXT { GfaBlmCtx_Err = -1, GfaBlmCtx_Boot, GfaBlmCtx_App, GfaBlmCtx_ModB }GFA_BLM_EXEC_CONTEXT, *LPGFA_BLM_EXEC_CONTEXT; ///////////////////////////////////////////////////////////////////////////// typedef struct _GFA_IMG_INFO { uint32_t nImgLength; uint32_t nImgCRC32; char szImgMaterialNum[GFA_APP_MAX_IMG_MATERIAL_NUM_LENGTH]; char szImgNameBuild[GFA_APP_MAX_IMG_NAME_BUILD_LENGTH]; }GFA_IMG_INFO, *LPGFA_IMG_INFO; typedef const GFA_IMG_INFO *LPCGFA_IMG_INFO; typedef struct _GFA_BL_APP_IMG_INFO { GFA_IMG_INFO bl; GFA_IMG_INFO app; }GFA_BL_APP_IMG_INFO, *LPGFA_BL_APP_IMG_INFO; typedef const GFA_BL_APP_IMG_INFO *LPCGFA_BL_APP_IMG_INFO; ///////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////// HGFABLM GfaBlmOpen(LPCGFA_BLM_CFG_PARAMS pblmcfg); void GfaBlmClose(HGFABLM hBlm); ///////////////////////////////////////////////////////////////////////////// int GfaBlmResetSlaveIndex(HGFABLM hBlm, uint8_t nNodeAddr); GFA_BLM_EXEC_CONTEXT GfaBlmGetExecutionContext(HGFABLM hBlm, uint8_t nNodeAddr); ///////////////////////////////////////////////////////////////////////////// // GfA commands int GfaBlmBootloaderExecute(HGFABLM hBlm, uint8_t nNodeAddr, uint32_t *pnImgCRC32, uint32_t nTimeoutMS); int GfaBlmBootloaderSetBaudrate(HGFABLM hBlm, uint8_t nNodeAddr, uint32_t nBaudrate); int GfaBlmBootloaderDump(HGFABLM hBlm, uint8_t nNodeAddr, uint32_t nAddress, uint32_t nCntDwords, void *pBuffer, size_t nCbBuffer); int GfaBlmGetImgInfo(HGFABLM hBlm, uint8_t nNodeAddr, uint32_t nDumpAddr, bool bCtxIsApp, LPGFA_IMG_INFO pii); int GfaBlmGetInfoBD(HGFABLM hBlm, uint8_t nNodeAddr, uint32_t nAppBaseAddr, LPGFA_BL_APP_IMG_INFO paii); int GfaBlmGetInfoBI(HGFABLM hBlm, uint8_t nNodeAddr, LPGFA_BL_APP_IMG_INFO paii); int GfaBlmReadMaterialAndSerialID(HGFABLM hBlm, uint8_t nNodeAddr, char *pszMaterial, size_t nCbMaterial, char *pszSerial, size_t nCbSerial); int GfaBlmWriteMaterialAndSerialID(HGFABLM hBlm, uint8_t nNodeAddr, const char *pszMaterial, const char *pszSerial); int GfaBlmMininetPing(HGFABLM hBlm, uint8_t nNodeAddr); ///////////////////////////////////////////////////////////////////////////// // TI commands int GfaBlmBUCmdReset(HGFABLM hBlm, uint8_t nNodeAddr, uint32_t nInitialBaudrate); int GfaBlmBUCmdPing(HGFABLM hBlm, uint8_t nNodeAddr); int GfaBlmBUCmdGetStatus(HGFABLM hBlm, uint8_t nNodeAddr, uint8_t *pbStatus); ssize_t GfaBlmBUCmdPollData(HGFABLM hBlm, uint8_t nNodeAddr, void *pData, size_t nCbData, uint32_t nTimeoutMS); int GfaBlmBUCmdDownload(HGFABLM hBlm, uint8_t nNodeAddr, uint32_t nFlashStartAddr, uint32_t nCbData, uint32_t nTimeoutMS); int GfaBlmBUCmdSendDataBlock(HGFABLM hBlm, uint8_t nNodeAddr, const void *pDataBlock, size_t nCbDataBlock); int GfaBlmBUCmdSendData(HGFABLM hBlm, uint8_t nNodeAddr, const void *pData, size_t nCbData, size_t nCbBlock); int GfaBlmBUCmdSendDataFile(HGFABLM hBlm, uint8_t nNodeAddr, const char *pszFilename, uint32_t nFlashStartAddr, size_t nCbBlock, uint32_t nTimeoutMS); ///////////////////////////////////////////////////////////////////////////// int GfaBlmGetDeviceBaudrate(HGFABLM hBlm, uint32_t *pnBaudrate); int GfaBlmSetDeviceBaudrate(HGFABLM hBlm, uint32_t nBaudrate); int GfaBlmSetVerbosity(HGFABLM hBlm, int nVerbosity); HGFAMINEMST GfaBlmGetMininetMasterHandle(HGFABLM hBlm); uint8_t GfaBlmDataCheckSum(const void *pData, size_t nCbData); size_t GfaBlmBuildCmdDataPacket(const char *pszCmd, uint8_t tiCmd, const void *pCmdData, size_t nCbCmdData, void *pPacket, size_t nCbPacket, bool bAddLenAndCheck); const char* GfaBlmStrError(int nErrorCode); ///////////////////////////////////////////////////////////////////////////// #ifdef __cplusplus } #endif // __cplusplus #endif // !defined(AGD_GFABOOTLMAST_H__9BEF8C2B_D667_41C2_A0F0_6F1CC86DCF36__INCLUDED_)