| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188 |
- // gfabootlmast.h :
- //
- #if !defined(AGD_GFABOOTLMAST_H__9BEF8C2B_D667_41C2_A0F0_6F1CC86DCF36__INCLUDED_)
- #define AGD_GFABOOTLMAST_H__9BEF8C2B_D667_41C2_A0F0_6F1CC86DCF36__INCLUDED_
- #include <stdio.h>
- #include <string.h>
- #include <stdint.h>
- #include <stdbool.h>
- #include <sys/time.h>
- #include <gfamininetmst.h>
- #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_)
|