diff --git a/F2838x CM EtherCAT Slave.c b/F2838x CM EtherCAT Slave.c new file mode 100644 index 0000000..d7a7a3a --- /dev/null +++ b/F2838x CM EtherCAT Slave.c @@ -0,0 +1,215 @@ +/* +* This source file is part of the EtherCAT Slave Stack Code licensed by Beckhoff Automation GmbH & Co KG, 33415 Verl, Germany. +* The corresponding license agreement applies. This hint shall not be removed. +*/ + +/** +\addtogroup F2838xCMEtherCATSlave F2838x CM EtherCAT Slave +@{ +*/ + +/** +\file F2838x CM EtherCAT Slave.c +\brief Implementation + Created with SSC Tool application parser 1.6.4.0 +\version 0.0.0.1 +*/ + + +/*----------------------------------------------------------------------------------------- +------ +------ Includes +------ +-----------------------------------------------------------------------------------------*/ +#include "ecat_def.h" + +#include "applInterface.h" + +#define _F2838X_CM_ETHER_CAT_SLAVE_ 1 +#include "F2838x CM EtherCAT Slave.h" +#undef _F2838X_CM_ETHER_CAT_SLAVE_ +/*-------------------------------------------------------------------------------------- +------ +------ local types and defines +------ +--------------------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------------------- +------ +------ local variables and constants +------ +-----------------------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------------------- +------ +------ application specific functions +------ +-----------------------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------------------- +------ +------ generic functions +------ +-----------------------------------------------------------------------------------------*/ + +///////////////////////////////////////////////////////////////////////////////////////// +/** + \brief The function is called when an error state was acknowledged by the master + +*//////////////////////////////////////////////////////////////////////////////////////// + +void APPL_AckErrorInd(UINT16 stateTrans) +{ + +} + +///////////////////////////////////////////////////////////////////////////////////////// +/** + \return AL Status Code (see ecatslv.h ALSTATUSCODE_....) + + \brief The function is called in the state transition from INIT to PREOP when + all general settings were checked to start the mailbox handler. This function + informs the application about the state transition, the application can refuse + the state transition when returning an AL Status error code. + The return code NOERROR_INWORK can be used, if the application cannot confirm + the state transition immediately, in that case this function will be called cyclically + until a value unequal NOERROR_INWORK is returned + +*//////////////////////////////////////////////////////////////////////////////////////// + +UINT16 APPL_StartMailboxHandler(void) +{ + return ALSTATUSCODE_NOERROR; +} + +///////////////////////////////////////////////////////////////////////////////////////// +/** + \return 0, NOERROR_INWORK + + \brief The function is called in the state transition from PREEOP to INIT + to stop the mailbox handler. This functions informs the application + about the state transition, the application cannot refuse + the state transition. + +*//////////////////////////////////////////////////////////////////////////////////////// + +UINT16 APPL_StopMailboxHandler(void) +{ + return ALSTATUSCODE_NOERROR; +} + + + + +#if EXPLICIT_DEVICE_ID +///////////////////////////////////////////////////////////////////////////////////////// +/** + \return The Explicit Device ID of the EtherCAT slave + + \brief Read the Explicit Device ID (from an external ID switch) +*//////////////////////////////////////////////////////////////////////////////////////// +UINT16 APPL_GetDeviceID() +{ +#if _WIN32 + #pragma message ("Warning: Implement explicit Device ID latching") +#else + #warning "Implement explicit Device ID latching" +#endif + /* Explicit Device 5 is expected by Explicit Device ID conformance tests*/ + return 0x5; +} +#endif + + + +///////////////////////////////////////////////////////////////////////////////////////// +/** +\param index index of the requested object. +\param subindex subindex of the requested object. +\param objSize size of the requested object data, calculated with OBJ_GetObjectLength +\param pData Pointer to the buffer where the data can be copied to +\param bCompleteAccess Indicates if a complete read of all subindices of the + object shall be done or not + + \return result of the read operation (0 (success) or an abort code (ABORTIDX_.... defined in + sdosrv.h)) + *//////////////////////////////////////////////////////////////////////////////////////// +UINT8 mySdoRead(UINT16 index, UINT8 subindex, UINT32 dataSize, UINT16 MBXMEM * pData, UINT8 bCompleteAccess) { +#if _WIN32 +#pragma message ("Warning: Implement CoE read callback") +#else + #warning "Implement CoE read callback" +#endif + return 0; +} + + +///////////////////////////////////////////////////////////////////////////////////////// +/** +\param index index of the requested object. +\param subindex subindex of the requested object. +\param objSize size of the requested object data, calculated with OBJ_GetObjectLength +\param pData Pointer to the buffer where the data can be copied to +\param bCompleteAccess Indicates if a complete read of all subindices of the + object shall be done or not + + \return result of the read operation (0 (success) or an abort code (ABORTIDX_.... defined in + sdosrv.h)) + *//////////////////////////////////////////////////////////////////////////////////////// +UINT8 mySdoWrite(UINT16 index, UINT8 subindex, UINT32 dataSize, UINT16 MBXMEM * pData, UINT8 bCompleteAccess) { +#if _WIN32 +#pragma message ("Warning: Implement CoE write callback") +#else + #warning "Implement CoE write callback" +#endif + return 0; +} +#if USE_DEFAULT_MAIN +///////////////////////////////////////////////////////////////////////////////////////// +/** + + \brief This is the main function + +*//////////////////////////////////////////////////////////////////////////////////////// +#if _PIC24 && EL9800_HW +int main(void) +#elif _WIN32 +int main(int argc, char* argv[]) +#else +void main(void) +#endif +{ + /* initialize the Hardware and the EtherCAT Slave Controller */ +#if FC1100_HW +#if _WIN32 + u16FcInstance = 0; + if (argc > 1) + { + u16FcInstance = atoi(argv[1]); + } +#endif + if(HW_Init()) + { + HW_Release(); + return; + } +#else + HW_Init(); +#endif + MainInit(); + + bRunApplication = TRUE; + do + { + MainLoop(); + + } while (bRunApplication == TRUE); + + HW_Release(); +#if _PIC24 + return 0; +#endif +} +#endif //#if USE_DEFAULT_MAIN +/** @} */ + diff --git a/F2838x CM EtherCAT Slave.h b/F2838x CM EtherCAT Slave.h new file mode 100644 index 0000000..e9cfb95 --- /dev/null +++ b/F2838x CM EtherCAT Slave.h @@ -0,0 +1,70 @@ +/* +* This source file is part of the EtherCAT Slave Stack Code licensed by Beckhoff Automation GmbH & Co KG, 33415 Verl, Germany. +* The corresponding license agreement applies. This hint shall not be removed. +*/ + +/** + * \addtogroup F2838xCMEtherCATSlave F2838x CM EtherCAT Slave + * @{ + */ + +/** +\file F2838x CM EtherCAT Slave.h +\brief F2838x CM EtherCAT Slave function prototypes and defines + +\version 1.0.0.11 + */ + + + #ifndef _F2838X_CM_ETHER_CAT_SLAVE_H_ +#define _F2838X_CM_ETHER_CAT_SLAVE_H_ + + +/*----------------------------------------------------------------------------------------- +------ +------ Includes +------ +-----------------------------------------------------------------------------------------*/ +#include "ecat_def.h" + +#include "ecatappl.h" + +/*----------------------------------------------------------------------------------------- +------ +------ Defines and Types +------ +-----------------------------------------------------------------------------------------*/ + +#endif //_F2838X_CM_ETHER_CAT_SLAVE_H_ + +//include custom application object dictionary +#include "F2838x CM EtherCAT SlaveObjects.h" + + +#if defined(_F2838X_CM_ETHER_CAT_SLAVE_) && (_F2838X_CM_ETHER_CAT_SLAVE_ == 1) + #define PROTO +#else + #define PROTO extern +#endif + + +PROTO void APPL_Application(void); +#if EXPLICIT_DEVICE_ID +PROTO UINT16 APPL_GetDeviceID(void); +#endif + +PROTO void APPL_AckErrorInd(UINT16 stateTrans); +PROTO UINT16 APPL_StartMailboxHandler(void); +PROTO UINT16 APPL_StopMailboxHandler(void); +PROTO UINT16 APPL_StartInputHandler(UINT16 *pIntMask); +PROTO UINT16 APPL_StopInputHandler(void); +PROTO UINT16 APPL_StartOutputHandler(void); +PROTO UINT16 APPL_StopOutputHandler(void); + +PROTO UINT16 APPL_GenerateMapping(UINT16 *pInputSize,UINT16 *pOutputSize); +PROTO void APPL_InputMapping(UINT16* pData); +PROTO void APPL_OutputMapping(UINT16* pData); + +#undef PROTO +/** @}*/ + diff --git a/F2838x CM EtherCAT Slave.xlsx b/F2838x CM EtherCAT Slave.xlsx new file mode 100644 index 0000000..b1d2129 Binary files /dev/null and b/F2838x CM EtherCAT Slave.xlsx differ diff --git a/F2838x CM EtherCAT Slave402.esp b/F2838x CM EtherCAT Slave402.esp new file mode 100644 index 0000000..649ba09 Binary files /dev/null and b/F2838x CM EtherCAT Slave402.esp differ diff --git a/F2838x CM EtherCAT SlaveObjects.h b/F2838x CM EtherCAT SlaveObjects.h new file mode 100644 index 0000000..d273e13 --- /dev/null +++ b/F2838x CM EtherCAT SlaveObjects.h @@ -0,0 +1,495 @@ +/* +* This source file is part of the EtherCAT Slave Stack Code licensed by Beckhoff Automation GmbH & Co KG, 33415 Verl, Germany. +* The corresponding license agreement applies. This hint shall not be removed. +*/ + +/** +* \addtogroup F2838xCMEtherCATSlave F2838x CM EtherCAT Slave +* @{ +*/ + +/** +\file F2838x CM EtherCAT SlaveObjects +\author ET9300Utilities.ApplicationHandler (Version 1.6.4.0) | EthercatSSC@beckhoff.com + +\brief F2838x CM EtherCAT Slave specific objects
+\brief NOTE : This file will be overwritten if a new object dictionary is generated!
+*/ + +#if defined(_F2838X_CM_ETHER_CAT_SLAVE_) && (_F2838X_CM_ETHER_CAT_SLAVE_ == 1) +#define PROTO +#else +#define PROTO extern +#endif +/****************************************************************************** +* Object 0x1600 : OutputMapping +******************************************************************************/ +/** +* \addtogroup 0x1600 0x1600 | OutputMapping +* @{ +* \brief Object 0x1600 (OutputMapping) definition +*/ +#ifdef _OBJD_ +/** +* \brief Object entry descriptions
+*
+* SubIndex 0
+* SubIndex 1 - map 0x7000 SIO 32bit
+* SubIndex 2 - map 0x7001 SIO 8bit
+* SubIndex 3 - 8bit padding
+*/ +OBJCONST TSDOINFOENTRYDESC OBJMEM asEntryDesc0x1600[] = { +{ DEFTYPE_UNSIGNED8 , 0x8 , ACCESS_READ }, +{ DEFTYPE_UNSIGNED32 , 0x20 , ACCESS_READ }, /* Subindex1 - map 0x7000 SIO 32bit */ +{ DEFTYPE_UNSIGNED32 , 0x20 , ACCESS_READ }, /* Subindex2 - map 0x7001 SIO 8bit */ +{ DEFTYPE_UNSIGNED32 , 0x20 , ACCESS_READ }}; /* Subindex3 - 8bit padding */ + +/** +* \brief Object/Entry names +*/ +OBJCONST UCHAR OBJMEM aName0x1600[] = "OutputMapping\000" +"SubIndex 001\000" +"SubIndex 002\000" +"SubIndex 003\000\377"; +#endif //#ifdef _OBJD_ + +#ifndef _F2838X_CM_ETHER_CAT_SLAVE_OBJECTS_H_ +/** +* \brief Object structure +*/ +typedef struct OBJ_STRUCT_PACKED_START { +UINT16 u16SubIndex0; +UINT32 SI1; /* Subindex1 - map 0x7000 SIO 32bit */ +UINT32 SI2; /* Subindex2 - map 0x7001 SIO 8bit */ +UINT32 SI3; /* Subindex3 - 8bit padding */ +} OBJ_STRUCT_PACKED_END +TOBJ1600; +#endif //#ifndef _F2838X_CM_ETHER_CAT_SLAVE_OBJECTS_H_ + +/** +* \brief Object variable +*/ +PROTO TOBJ1600 OutputMapping0x1600 +#if defined(_F2838X_CM_ETHER_CAT_SLAVE_) && (_F2838X_CM_ETHER_CAT_SLAVE_ == 1) +={3,0x70000020,0x70010008,0x00000008} +#endif +; +/** @}*/ + + + +/****************************************************************************** +* Object 0x1A00 : InputMapping +******************************************************************************/ +/** +* \addtogroup 0x1A00 0x1A00 | InputMapping +* @{ +* \brief Object 0x1A00 (InputMapping) definition +*/ +#ifdef _OBJD_ +/** +* \brief Object entry descriptions
+*
+* SubIndex 0
+* SubIndex 1 - map SI 0bit
+* SubIndex 2 - 8bit padding
+* SubIndex 3 - map 0x6001 SIO 16bit
+*/ +OBJCONST TSDOINFOENTRYDESC OBJMEM asEntryDesc0x1A00[] = { +{ DEFTYPE_UNSIGNED8 , 0x8 , ACCESS_READ }, +{ DEFTYPE_UNSIGNED32 , 0x20 , ACCESS_READ }, /* Subindex1 - map SI 0bit */ +{ DEFTYPE_UNSIGNED32 , 0x20 , ACCESS_READ }, /* Subindex2 - 8bit padding */ +{ DEFTYPE_UNSIGNED32 , 0x20 , ACCESS_READ }}; /* Subindex3 - map 0x6001 SIO 16bit */ + +/** +* \brief Object/Entry names +*/ +OBJCONST UCHAR OBJMEM aName0x1A00[] = "InputMapping\000" +"SubIndex 001\000" +"SubIndex 002\000" +"SubIndex 003\000\377"; +#endif //#ifdef _OBJD_ + +#ifndef _F2838X_CM_ETHER_CAT_SLAVE_OBJECTS_H_ +/** +* \brief Object structure +*/ +typedef struct OBJ_STRUCT_PACKED_START { +UINT16 u16SubIndex0; +UINT32 SI1; /* Subindex1 - map SI 0bit */ +UINT32 SI2; /* Subindex2 - 8bit padding */ +UINT32 SI3; /* Subindex3 - map 0x6001 SIO 16bit */ +} OBJ_STRUCT_PACKED_END +TOBJ1A00; +#endif //#ifndef _F2838X_CM_ETHER_CAT_SLAVE_OBJECTS_H_ + +/** +* \brief Object variable +*/ +PROTO TOBJ1A00 InputMapping0x1A00 +#if defined(_F2838X_CM_ETHER_CAT_SLAVE_) && (_F2838X_CM_ETHER_CAT_SLAVE_ == 1) +={3,0x60000008,0x00000008,0x60010010} +#endif +; +/** @}*/ + + + +/****************************************************************************** +* Object 0x1C12 : Obj0x1C12 +******************************************************************************/ +/** +* \addtogroup 0x1C12 0x1C12 | Obj0x1C12 +* @{ +* \brief Object 0x1C12 (Obj0x1C12) definition +*/ +#ifdef _OBJD_ +/** +* \brief Entry descriptions
+* +* Subindex 0
+* Subindex 1 - n (the same entry description is used)
+*/ +OBJCONST TSDOINFOENTRYDESC OBJMEM asEntryDesc0x1C12[] = { +{ DEFTYPE_UNSIGNED8 , 0x8 , ACCESS_READ }, +{ DEFTYPE_UNSIGNED16 , 0x10 , ACCESS_READ }}; + +/** +* \brief Object name definition
+* For Subindex 1 to n the syntax 'Subindex XXX' is used +*/ +OBJCONST UCHAR OBJMEM aName0x1C12[] = "Obj0x1C12\000\377"; +#endif //#ifdef _OBJD_ + +#ifndef _F2838X_CM_ETHER_CAT_SLAVE_OBJECTS_H_ +/** +* \brief Object structure +*/ +typedef struct OBJ_STRUCT_PACKED_START { +UINT16 u16SubIndex0; /**< \brief Subindex 0 */ +UINT16 aEntries[1]; /**< \brief Subindex 1 - 1 */ +} OBJ_STRUCT_PACKED_END +TOBJ1C12; +#endif //#ifndef _F2838X_CM_ETHER_CAT_SLAVE_OBJECTS_H_ + +/** +* \brief Object variable +*/ +//PROTO TOBJ1C12 sRxPDOassign +//#if defined(_F2838X_CM_ETHER_CAT_SLAVE_) && (_F2838X_CM_ETHER_CAT_SLAVE_ == 1) +//={1,{0x1A00}} +//#endif +; +/** @}*/ + + + +/****************************************************************************** +* Object 0x1C13 : Obj0x1C13 +******************************************************************************/ +/** +* \addtogroup 0x1C13 0x1C13 | Obj0x1C13 +* @{ +* \brief Object 0x1C13 (Obj0x1C13) definition +*/ +#ifdef _OBJD_ +/** +* \brief Entry descriptions
+* +* Subindex 0
+* Subindex 1 - n (the same entry description is used)
+*/ +OBJCONST TSDOINFOENTRYDESC OBJMEM asEntryDesc0x1C13[] = { +{ DEFTYPE_UNSIGNED8 , 0x8 , ACCESS_READ }, +{ DEFTYPE_UNSIGNED16 , 0x10 , ACCESS_READ }}; + +/** +* \brief Object name definition
+* For Subindex 1 to n the syntax 'Subindex XXX' is used +*/ +OBJCONST UCHAR OBJMEM aName0x1C13[] = "Obj0x1C13\000\377"; +#endif //#ifdef _OBJD_ + +#ifndef _F2838X_CM_ETHER_CAT_SLAVE_OBJECTS_H_ +/** +* \brief Object structure +*/ +typedef struct OBJ_STRUCT_PACKED_START { +UINT16 u16SubIndex0; /**< \brief Subindex 0 */ +UINT16 aEntries[1]; /**< \brief Subindex 1 - 1 */ +} OBJ_STRUCT_PACKED_END +TOBJ1C13; +#endif //#ifndef _F2838X_CM_ETHER_CAT_SLAVE_OBJECTS_H_ + +/** +* \brief Object variable +*/ +//PROTO TOBJ1C13 sTxPDOassign +//#if defined(_F2838X_CM_ETHER_CAT_SLAVE_) && (_F2838X_CM_ETHER_CAT_SLAVE_ == 1) +//={1,{0x1600}} +//#endif +; +/** @}*/ + + + +/****************************************************************************** +* Object 0x6000 : DummyInput1 +******************************************************************************/ +/** +* \addtogroup 0x6000 0x6000 | DummyInput1 +* @{ +* \brief Object 0x6000 (DummyInput1) definition +*/ +#ifdef _OBJD_ +/** +* \brief Entry description +*/ +OBJCONST TSDOINFOENTRYDESC OBJMEM sEntryDesc0x6000 = { DEFTYPE_UNSIGNED8 , 0x08 , ACCESS_READ }; +/** +* \brief Object name +*/ +OBJCONST UCHAR OBJMEM aName0x6000[] = "DummyInput1\000\377"; +#endif //#ifdef _OBJD_ + +/** +* \brief Object variable +*/ +PROTO UINT8 DummyInput10x6000; +/** @}*/ + + + +/****************************************************************************** +* Object 0x6001 : DummyInput2 +******************************************************************************/ +/** +* \addtogroup 0x6001 0x6001 | DummyInput2 +* @{ +* \brief Object 0x6001 (DummyInput2) definition +*/ +#ifdef _OBJD_ +/** +* \brief Entry description +*/ +OBJCONST TSDOINFOENTRYDESC OBJMEM sEntryDesc0x6001 = { DEFTYPE_UNSIGNED16 , 0x10 , ACCESS_READ }; +/** +* \brief Object name +*/ +OBJCONST UCHAR OBJMEM aName0x6001[] = "DummyInput2\000\377"; +#endif //#ifdef _OBJD_ + +/** +* \brief Object variable +*/ +PROTO UINT16 DummyInput20x6001; +/** @}*/ + + + +/****************************************************************************** +* Object 0x7000 : DummyOutput1 +******************************************************************************/ +/** +* \addtogroup 0x7000 0x7000 | DummyOutput1 +* @{ +* \brief Object 0x7000 (DummyOutput1) definition +*/ +#ifdef _OBJD_ +/** +* \brief Entry description +*/ +OBJCONST TSDOINFOENTRYDESC OBJMEM sEntryDesc0x7000 = { DEFTYPE_UNSIGNED32 , 0x20 , ACCESS_READWRITE }; +/** +* \brief Object name +*/ +OBJCONST UCHAR OBJMEM aName0x7000[] = "DummyOutput1\000\377"; +#endif //#ifdef _OBJD_ + +/** +* \brief Object variable +*/ +PROTO UINT32 DummyOutput10x7000; +/** @}*/ + + + +/****************************************************************************** +* Object 0x7001 : DummyPutput2 +******************************************************************************/ +/** +* \addtogroup 0x7001 0x7001 | DummyPutput2 +* @{ +* \brief Object 0x7001 (DummyPutput2) definition +*/ +#ifdef _OBJD_ +/** +* \brief Entry description +*/ +OBJCONST TSDOINFOENTRYDESC OBJMEM sEntryDesc0x7001 = { DEFTYPE_UNSIGNED16 , 0x10 , ACCESS_READWRITE }; +/** +* \brief Object name +*/ +OBJCONST UCHAR OBJMEM aName0x7001[] = "DummyPutput2\000\377"; +#endif //#ifdef _OBJD_ + +/** +* \brief Object variable +*/ +PROTO UINT16 DummyPutput20x7001; +/** @}*/ + + + +/****************************************************************************** +* Object 0x9000 : Var1 +******************************************************************************/ +/** +* \addtogroup 0x9000 0x9000 | Var1 +* @{ +* \brief Object 0x9000 (Var1) definition +*/ +#ifdef _OBJD_ +/** +* \brief Entry description +*/ +OBJCONST TSDOINFOENTRYDESC OBJMEM sEntryDesc0x9000 = { DEFTYPE_UNSIGNED16 , 0x10 , ACCESS_READ }; +/** +* \brief Object name +*/ +OBJCONST UCHAR OBJMEM aName0x9000[] = "Var1\000\377"; +#endif //#ifdef _OBJD_ + +/** +* \brief Object variable +*/ +PROTO UINT16 Var10x9000 +#if defined(_F2838X_CM_ETHER_CAT_SLAVE_) && (_F2838X_CM_ETHER_CAT_SLAVE_ == 1) += 0xAABB +#endif +; +/** @}*/ + + + +/****************************************************************************** +* Object 0x9001 : Var2 +******************************************************************************/ +/** +* \addtogroup 0x9001 0x9001 | Var2 +* @{ +* \brief Object 0x9001 (Var2) definition +*/ +#ifdef _OBJD_ +/** +* \brief Entry description +*/ +OBJCONST TSDOINFOENTRYDESC OBJMEM sEntryDesc0x9001 = { DEFTYPE_UNSIGNED16 , 0x10 , ACCESS_READ }; +/** +* \brief Object name +*/ +OBJCONST UCHAR OBJMEM aName0x9001[] = "Var2\000\377"; +#endif //#ifdef _OBJD_ + +/** +* \brief Object variable +*/ +PROTO UINT16 Var20x9001 +#if defined(_F2838X_CM_ETHER_CAT_SLAVE_) && (_F2838X_CM_ETHER_CAT_SLAVE_ == 1) += 0xBBAA +#endif +; +/** @}*/ + + + +/****************************************************************************** +* Object 0xF000 : Obj0xF000 +******************************************************************************/ +/** +* \addtogroup 0xF000 0xF000 | Obj0xF000 +* @{ +* \brief Object 0xF000 (Obj0xF000) definition +*/ +#ifdef _OBJD_ +/** +* \brief Object entry descriptions
+*
+* SubIndex 0
+* SubIndex 1 - Value_1
+* SubIndex 2 - Value_2
+*/ +OBJCONST TSDOINFOENTRYDESC OBJMEM asEntryDesc0xF000[] = { +{ DEFTYPE_UNSIGNED8 , 0x8 , ACCESS_READWRITE }, +{ DEFTYPE_UNSIGNED16 , 0x10 , ACCESS_READWRITE }, /* Subindex1 - Value_1 */ +{ DEFTYPE_UNSIGNED16 , 0x10 , ACCESS_READWRITE }}; /* Subindex2 - Value_2 */ + +/** +* \brief Object/Entry names +*/ +OBJCONST UCHAR OBJMEM aName0xF000[] = "Obj0xF000\000" +"Value_1\000" +"Value_2\000\377"; +#endif //#ifdef _OBJD_ + +#ifndef _F2838X_CM_ETHER_CAT_SLAVE_OBJECTS_H_ +/** +* \brief Object structure +*/ +typedef struct OBJ_STRUCT_PACKED_START { +UINT16 u16SubIndex0; +UINT16 Value_1; /* Subindex1 - Value_1 */ +UINT16 Value_2; /* Subindex2 - Value_2 */ +} OBJ_STRUCT_PACKED_END +TOBJF000; +#endif //#ifndef _F2838X_CM_ETHER_CAT_SLAVE_OBJECTS_H_ + +/** +* \brief Object variable +*/ +PROTO TOBJF000 Obj0xF000 +#if defined(_F2838X_CM_ETHER_CAT_SLAVE_) && (_F2838X_CM_ETHER_CAT_SLAVE_ == 1) +={2,0,0} +#endif +; +/** @}*/ + + + + + +PROTO UINT8 mySdoRead(UINT16 index, UINT8 subindex, UINT32 dataSize, UINT16 MBXMEM * pData, UINT8 bCompleteAccess); +PROTO UINT8 mySdoWrite(UINT16 index, UINT8 subindex, UINT32 dataSize, UINT16 MBXMEM * pData, UINT8 bCompleteAccess); + + +#ifdef _OBJD_ +TOBJECT OBJMEM ApplicationObjDic[] = { +/* Object 0x1600 */ +{NULL , NULL , 0x1600 , {DEFTYPE_PDOMAPPING , 3 | (OBJCODE_REC << 8)} , asEntryDesc0x1600 , aName0x1600 , &OutputMapping0x1600 , NULL , NULL , 0x0000 }, +/* Object 0x1A00 */ +{NULL , NULL , 0x1A00 , {DEFTYPE_PDOMAPPING , 3 | (OBJCODE_REC << 8)} , asEntryDesc0x1A00 , aName0x1A00 , &InputMapping0x1A00 , NULL , NULL , 0x0000 }, +/* Object 0x1C12 */ +{NULL , NULL , 0x1C12 , {DEFTYPE_UNSIGNED16 , 1 | (OBJCODE_ARR << 8)} , asEntryDesc0x1C12 , aName0x1C12 , &sRxPDOassign , NULL , NULL , 0x0000 }, +/* Object 0x1C13 */ +{NULL , NULL , 0x1C13 , {DEFTYPE_UNSIGNED16 , 1 | (OBJCODE_ARR << 8)} , asEntryDesc0x1C13 , aName0x1C13 , &sTxPDOassign , NULL , NULL , 0x0000 }, +/* Object 0x6000 */ +{NULL , NULL , 0x6000 , {DEFTYPE_UNSIGNED8 , 0 | (OBJCODE_VAR << 8)} , &sEntryDesc0x6000 , aName0x6000 , &DummyInput10x6000 , NULL , NULL , 0x0000 }, +/* Object 0x6001 */ +{NULL , NULL , 0x6001 , {DEFTYPE_UNSIGNED16 , 0 | (OBJCODE_VAR << 8)} , &sEntryDesc0x6001 , aName0x6001 , &DummyInput20x6001 , NULL , NULL , 0x0000 }, +/* Object 0x7000 */ +{NULL , NULL , 0x7000 , {DEFTYPE_UNSIGNED32 , 0 | (OBJCODE_VAR << 8)} , &sEntryDesc0x7000 , aName0x7000 , &DummyOutput10x7000 , NULL , NULL , 0x0000 }, +/* Object 0x7001 */ +{NULL , NULL , 0x7001 , {DEFTYPE_UNSIGNED16 , 0 | (OBJCODE_VAR << 8)} , &sEntryDesc0x7001 , aName0x7001 , &DummyPutput20x7001 , NULL , NULL , 0x0000 }, +/* Object 0x9000 */ +{NULL , NULL , 0x9000 , {DEFTYPE_UNSIGNED16 , 0 | (OBJCODE_VAR << 8)} , &sEntryDesc0x9000 , aName0x9000 , &Var10x9000 , mySdoRead , NULL , 0x0000 }, +/* Object 0x9001 */ +{NULL , NULL , 0x9001 , {DEFTYPE_UNSIGNED16 , 0 | (OBJCODE_VAR << 8)} , &sEntryDesc0x9001 , aName0x9001 , &Var20x9001 , NULL , mySdoWrite , 0x0000 }, +/* Object 0xF000 */ +{NULL , NULL , 0xF000 , {DEFTYPE_RECORD , 2 | (OBJCODE_REC << 8)} , asEntryDesc0xF000 , aName0xF000 , &Obj0xF000 , NULL , NULL , 0x0000 }, +{NULL,NULL, 0xFFFF, {0, 0}, NULL, NULL, NULL, NULL}}; +#endif //#ifdef _OBJD_ + +#undef PROTO + +/** @}*/ +#define _F2838X_CM_ETHER_CAT_SLAVE_OBJECTS_H_ diff --git a/RAM/ccsObjs.opt b/RAM/ccsObjs.opt index 4c96b39..acc8330 100644 --- a/RAM/ccsObjs.opt +++ b/RAM/ccsObjs.opt @@ -1,15 +1,19 @@ +"./F2838x CM EtherCAT Slave.obj" "./cia402appl.obj" "./coeappl.obj" "./ecatappl.obj" "./ecatcoe.obj" +"./ecatfoe.obj" "./ecatslv.obj" "./ethercat_slave_cm_hal.obj" "./f2838x_cm_hw.obj" "./f2838x_cm_system.obj" +"./foeappl.obj" "./mailbox.obj" "./objdef.obj" "./sdoserv.obj" "./startup_cm.obj" +"./tiescfoe.obj" "./device/cm.obj" "../2838x_RAM_lnk_ecat_cm.cmd" "C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/ccs/Debug/driverlib_cm.lib" diff --git a/RAM/cia402appl.d b/RAM/cia402appl.d deleted file mode 100644 index e6a9163..0000000 --- a/RAM/cia402appl.d +++ /dev/null @@ -1,117 +0,0 @@ -# FIXED - -cia402appl.obj: ../cia402appl.c -cia402appl.obj: ../ecat_def.h -cia402appl.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/stdlib.h -cia402appl.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_ti_config.h -cia402appl.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/linkage.h -cia402appl.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/cdefs.h -cia402appl.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/string.h -cia402appl.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/xlocale/_string.h -cia402appl.obj: ../f2838x_cm_system.h -cia402appl.obj: ../applInterface.h -cia402appl.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/stdlib.h -cia402appl.obj: ../esc.h -cia402appl.obj: ../ecatslv.h -cia402appl.obj: ../esc.h -cia402appl.obj: ../f2838x_cm_hw.h -cia402appl.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/stdint.h -cia402appl.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_stdint40.h -cia402appl.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/stdint.h -cia402appl.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/_types.h -cia402appl.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/machine/_types.h -cia402appl.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/machine/_stdint.h -cia402appl.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/_stdint.h -cia402appl.obj: ../esc.h -cia402appl.obj: ../objdef.h -cia402appl.obj: ../sdoserv.h -cia402appl.obj: ../ecatcoe.h -cia402appl.obj: ../mailbox.h -cia402appl.obj: ../ecatappl.h -cia402appl.obj: ../coeappl.h -cia402appl.obj: ../objdef.h -cia402appl.obj: ../sdoserv.h -cia402appl.obj: ../ecatcoe.h -cia402appl.obj: ../mailbox.h -cia402appl.obj: ../cia402appl.h -cia402appl.obj: ../objdef.h -cia402appl.obj: ../sdoserv.h -cia402appl.obj: ../ecatcoe.h -cia402appl.obj: ../mailbox.h - -../cia402appl.c: - -../ecat_def.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/stdlib.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_ti_config.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/linkage.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/cdefs.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/string.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/xlocale/_string.h: - -../f2838x_cm_system.h: - -../applInterface.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/stdlib.h: - -../esc.h: - -../ecatslv.h: - -../esc.h: - -../f2838x_cm_hw.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/stdint.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_stdint40.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/stdint.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/_types.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/machine/_types.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/machine/_stdint.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/_stdint.h: - -../esc.h: - -../objdef.h: - -../sdoserv.h: - -../ecatcoe.h: - -../mailbox.h: - -../ecatappl.h: - -../coeappl.h: - -../objdef.h: - -../sdoserv.h: - -../ecatcoe.h: - -../mailbox.h: - -../cia402appl.h: - -../objdef.h: - -../sdoserv.h: - -../ecatcoe.h: - -../mailbox.h: - diff --git a/RAM/coeappl.d b/RAM/coeappl.d deleted file mode 100644 index 7cc25ae..0000000 --- a/RAM/coeappl.d +++ /dev/null @@ -1,93 +0,0 @@ -# FIXED - -coeappl.obj: ../coeappl.c -coeappl.obj: ../ecat_def.h -coeappl.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/stdlib.h -coeappl.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_ti_config.h -coeappl.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/linkage.h -coeappl.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/cdefs.h -coeappl.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/string.h -coeappl.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/xlocale/_string.h -coeappl.obj: ../f2838x_cm_system.h -coeappl.obj: ../ecatslv.h -coeappl.obj: ../esc.h -coeappl.obj: ../f2838x_cm_hw.h -coeappl.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/stdint.h -coeappl.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_stdint40.h -coeappl.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/stdint.h -coeappl.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/_types.h -coeappl.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/machine/_types.h -coeappl.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/machine/_stdint.h -coeappl.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/_stdint.h -coeappl.obj: ../esc.h -coeappl.obj: ../coeappl.h -coeappl.obj: ../objdef.h -coeappl.obj: ../sdoserv.h -coeappl.obj: ../ecatcoe.h -coeappl.obj: ../mailbox.h -coeappl.obj: ../cia402appl.h -coeappl.obj: ../objdef.h -coeappl.obj: ../sdoserv.h -coeappl.obj: ../ecatcoe.h -coeappl.obj: ../mailbox.h - -../coeappl.c: - -../ecat_def.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/stdlib.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_ti_config.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/linkage.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/cdefs.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/string.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/xlocale/_string.h: - -../f2838x_cm_system.h: - -../ecatslv.h: - -../esc.h: - -../f2838x_cm_hw.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/stdint.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_stdint40.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/stdint.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/_types.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/machine/_types.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/machine/_stdint.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/_stdint.h: - -../esc.h: - -../coeappl.h: - -../objdef.h: - -../sdoserv.h: - -../ecatcoe.h: - -../mailbox.h: - -../cia402appl.h: - -../objdef.h: - -../sdoserv.h: - -../ecatcoe.h: - -../mailbox.h: - diff --git a/RAM/device/cm.d b/RAM/device/cm.d deleted file mode 100644 index 0ae6086..0000000 --- a/RAM/device/cm.d +++ /dev/null @@ -1,201 +0,0 @@ -# FIXED - -device/cm.obj: ../device/cm.c -device/cm.obj: ../device/cm.h -device/cm.obj: C:/ti/c2000/C2000Ware_5_01_00_00/device_support/f2838x/common/include/driverlib_cm.h -device/cm.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_memmap.h -device/cm.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/aes.h -device/cm.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/stdbool.h -device/cm.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_ti_config.h -device/cm.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/linkage.h -device/cm.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/stdint.h -device/cm.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_stdint40.h -device/cm.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/stdint.h -device/cm.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/cdefs.h -device/cm.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/_types.h -device/cm.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/machine/_types.h -device/cm.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/machine/_stdint.h -device/cm.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/_stdint.h -device/cm.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/debug.h -device/cm.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/interrupt.h -device/cm.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/cpu.h -device/cm.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_ints.h -device/cm.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_nvic.h -device/cm.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_types.h -device/cm.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_aes.h -device/cm.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_aes_ss.h -device/cm.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/can.h -device/cm.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_can.h -device/cm.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/sysctl.h -device/cm.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_nmi.h -device/cm.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_sysctl.h -device/cm.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_wwd.h -device/cm.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/cmmpu.h -device/cm.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_cmmpu.h -device/cm.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/cputimer.h -device/cm.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_cputimer.h -device/cm.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/dcsm.h -device/cm.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_dcsm.h -device/cm.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/escss.h -device/cm.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_esc_ss.h -device/cm.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/ethernet.h -device/cm.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_emac.h -device/cm.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_emac_ss.h -device/cm.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/platform_port.h -device/cm.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/flash.h -device/cm.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_flash.h -device/cm.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/ipc.h -device/cm.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_ipc.h -device/cm.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/gcrc.h -device/cm.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_gcrc.h -device/cm.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/gpio.h -device/cm.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_gpio.h -device/cm.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/i2c.h -device/cm.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_i2c.h -device/cm.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/mcan.h -device/cm.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_mcanss.h -device/cm.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_types_mcan.h -device/cm.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/memcfg.h -device/cm.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_memcfg.h -device/cm.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/mpu.h -device/cm.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/ssi.h -device/cm.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_ssi.h -device/cm.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/systick.h -device/cm.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/uart.h -device/cm.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_uart.h -device/cm.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/udma.h -device/cm.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_udma.h -device/cm.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/usb.h - -../device/cm.c: - -../device/cm.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/device_support/f2838x/common/include/driverlib_cm.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_memmap.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/aes.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/stdbool.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_ti_config.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/linkage.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/stdint.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_stdint40.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/stdint.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/cdefs.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/_types.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/machine/_types.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/machine/_stdint.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/_stdint.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/debug.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/interrupt.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/cpu.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_ints.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_nvic.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_types.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_aes.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_aes_ss.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/can.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_can.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/sysctl.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_nmi.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_sysctl.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_wwd.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/cmmpu.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_cmmpu.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/cputimer.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_cputimer.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/dcsm.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_dcsm.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/escss.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_esc_ss.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/ethernet.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_emac.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_emac_ss.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/platform_port.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/flash.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_flash.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/ipc.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_ipc.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/gcrc.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_gcrc.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/gpio.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_gpio.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/i2c.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_i2c.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/mcan.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_mcanss.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_types_mcan.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/memcfg.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_memcfg.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/mpu.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/ssi.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_ssi.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/systick.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/uart.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_uart.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/udma.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_udma.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/usb.h: - diff --git a/RAM/ecatappl.d b/RAM/ecatappl.d deleted file mode 100644 index f1ca73b..0000000 --- a/RAM/ecatappl.d +++ /dev/null @@ -1,126 +0,0 @@ -# FIXED - -ecatappl.obj: ../ecatappl.c -ecatappl.obj: ../ecatslv.h -ecatappl.obj: ../ecat_def.h -ecatappl.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/stdlib.h -ecatappl.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_ti_config.h -ecatappl.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/linkage.h -ecatappl.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/cdefs.h -ecatappl.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/string.h -ecatappl.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/xlocale/_string.h -ecatappl.obj: ../f2838x_cm_system.h -ecatappl.obj: ../esc.h -ecatappl.obj: ../f2838x_cm_hw.h -ecatappl.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/stdint.h -ecatappl.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_stdint40.h -ecatappl.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/stdint.h -ecatappl.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/_types.h -ecatappl.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/machine/_types.h -ecatappl.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/machine/_stdint.h -ecatappl.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/_stdint.h -ecatappl.obj: ../esc.h -ecatappl.obj: ../ecatappl.h -ecatappl.obj: ../coeappl.h -ecatappl.obj: ../objdef.h -ecatappl.obj: ../sdoserv.h -ecatappl.obj: ../ecatcoe.h -ecatappl.obj: ../mailbox.h -ecatappl.obj: ../applInterface.h -ecatappl.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/stdlib.h -ecatappl.obj: ../esc.h -ecatappl.obj: ../ecatslv.h -ecatappl.obj: ../esc.h -ecatappl.obj: ../objdef.h -ecatappl.obj: ../sdoserv.h -ecatappl.obj: ../ecatcoe.h -ecatappl.obj: ../mailbox.h -ecatappl.obj: ../ecatappl.h -ecatappl.obj: ../cia402appl.h -ecatappl.obj: ../objdef.h -ecatappl.obj: ../sdoserv.h -ecatappl.obj: ../ecatcoe.h -ecatappl.obj: ../mailbox.h - -../ecatappl.c: - -../ecatslv.h: - -../ecat_def.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/stdlib.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_ti_config.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/linkage.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/cdefs.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/string.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/xlocale/_string.h: - -../f2838x_cm_system.h: - -../esc.h: - -../f2838x_cm_hw.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/stdint.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_stdint40.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/stdint.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/_types.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/machine/_types.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/machine/_stdint.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/_stdint.h: - -../esc.h: - -../ecatappl.h: - -../coeappl.h: - -../objdef.h: - -../sdoserv.h: - -../ecatcoe.h: - -../mailbox.h: - -../applInterface.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/stdlib.h: - -../esc.h: - -../ecatslv.h: - -../esc.h: - -../objdef.h: - -../sdoserv.h: - -../ecatcoe.h: - -../mailbox.h: - -../ecatappl.h: - -../cia402appl.h: - -../objdef.h: - -../sdoserv.h: - -../ecatcoe.h: - -../mailbox.h: - diff --git a/RAM/ecatcoe.d b/RAM/ecatcoe.d deleted file mode 100644 index ec4bae2..0000000 --- a/RAM/ecatcoe.d +++ /dev/null @@ -1,45 +0,0 @@ -# FIXED - -ecatcoe.obj: ../ecatcoe.c -ecatcoe.obj: ../ecat_def.h -ecatcoe.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/stdlib.h -ecatcoe.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_ti_config.h -ecatcoe.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/linkage.h -ecatcoe.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/cdefs.h -ecatcoe.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/string.h -ecatcoe.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/xlocale/_string.h -ecatcoe.obj: ../f2838x_cm_system.h -ecatcoe.obj: ../sdoserv.h -ecatcoe.obj: ../ecatcoe.h -ecatcoe.obj: ../mailbox.h -ecatcoe.obj: ../ecatcoe.h -ecatcoe.obj: ../mailbox.h - -../ecatcoe.c: - -../ecat_def.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/stdlib.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_ti_config.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/linkage.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/cdefs.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/string.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/xlocale/_string.h: - -../f2838x_cm_system.h: - -../sdoserv.h: - -../ecatcoe.h: - -../mailbox.h: - -../ecatcoe.h: - -../mailbox.h: - diff --git a/RAM/ecatslv.d b/RAM/ecatslv.d deleted file mode 100644 index 9843011..0000000 --- a/RAM/ecatslv.d +++ /dev/null @@ -1,102 +0,0 @@ -# FIXED - -ecatslv.obj: ../ecatslv.c -ecatslv.obj: ../ecatslv.h -ecatslv.obj: ../ecat_def.h -ecatslv.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/stdlib.h -ecatslv.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_ti_config.h -ecatslv.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/linkage.h -ecatslv.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/cdefs.h -ecatslv.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/string.h -ecatslv.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/xlocale/_string.h -ecatslv.obj: ../f2838x_cm_system.h -ecatslv.obj: ../esc.h -ecatslv.obj: ../f2838x_cm_hw.h -ecatslv.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/stdint.h -ecatslv.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_stdint40.h -ecatslv.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/stdint.h -ecatslv.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/_types.h -ecatslv.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/machine/_types.h -ecatslv.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/machine/_stdint.h -ecatslv.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/_stdint.h -ecatslv.obj: ../esc.h -ecatslv.obj: ../ecatappl.h -ecatslv.obj: ../mailbox.h -ecatslv.obj: ../ecatcoe.h -ecatslv.obj: ../mailbox.h -ecatslv.obj: ../objdef.h -ecatslv.obj: ../sdoserv.h -ecatslv.obj: ../ecatcoe.h -ecatslv.obj: ../mailbox.h -ecatslv.obj: ../cia402appl.h -ecatslv.obj: ../objdef.h -ecatslv.obj: ../sdoserv.h -ecatslv.obj: ../ecatcoe.h -ecatslv.obj: ../mailbox.h - -../ecatslv.c: - -../ecatslv.h: - -../ecat_def.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/stdlib.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_ti_config.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/linkage.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/cdefs.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/string.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/xlocale/_string.h: - -../f2838x_cm_system.h: - -../esc.h: - -../f2838x_cm_hw.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/stdint.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_stdint40.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/stdint.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/_types.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/machine/_types.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/machine/_stdint.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/_stdint.h: - -../esc.h: - -../ecatappl.h: - -../mailbox.h: - -../ecatcoe.h: - -../mailbox.h: - -../objdef.h: - -../sdoserv.h: - -../ecatcoe.h: - -../mailbox.h: - -../cia402appl.h: - -../objdef.h: - -../sdoserv.h: - -../ecatcoe.h: - -../mailbox.h: - diff --git a/RAM/ethercat_slave_cm_hal.d b/RAM/ethercat_slave_cm_hal.d deleted file mode 100644 index 1ca22a7..0000000 --- a/RAM/ethercat_slave_cm_hal.d +++ /dev/null @@ -1,219 +0,0 @@ -# FIXED - -ethercat_slave_cm_hal.obj: ../ethercat_slave_cm_hal.c -ethercat_slave_cm_hal.obj: C:/ti/c2000/C2000Ware_5_01_00_00/libraries/communications/Ethercat/f2838x/include/ethercat_slave_cm_hal.h -ethercat_slave_cm_hal.obj: C:/workspace_v12/f2838x_cm_cia402_solution/device/cm.h -ethercat_slave_cm_hal.obj: C:/ti/c2000/C2000Ware_5_01_00_00/device_support/f2838x/common/include/driverlib_cm.h -ethercat_slave_cm_hal.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_memmap.h -ethercat_slave_cm_hal.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/aes.h -ethercat_slave_cm_hal.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/stdbool.h -ethercat_slave_cm_hal.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_ti_config.h -ethercat_slave_cm_hal.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/linkage.h -ethercat_slave_cm_hal.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/stdint.h -ethercat_slave_cm_hal.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_stdint40.h -ethercat_slave_cm_hal.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/stdint.h -ethercat_slave_cm_hal.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/cdefs.h -ethercat_slave_cm_hal.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/_types.h -ethercat_slave_cm_hal.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/machine/_types.h -ethercat_slave_cm_hal.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/machine/_stdint.h -ethercat_slave_cm_hal.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/_stdint.h -ethercat_slave_cm_hal.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/debug.h -ethercat_slave_cm_hal.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/interrupt.h -ethercat_slave_cm_hal.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/cpu.h -ethercat_slave_cm_hal.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_ints.h -ethercat_slave_cm_hal.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_nvic.h -ethercat_slave_cm_hal.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_types.h -ethercat_slave_cm_hal.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_aes.h -ethercat_slave_cm_hal.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_aes_ss.h -ethercat_slave_cm_hal.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/can.h -ethercat_slave_cm_hal.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_can.h -ethercat_slave_cm_hal.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/sysctl.h -ethercat_slave_cm_hal.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_nmi.h -ethercat_slave_cm_hal.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_sysctl.h -ethercat_slave_cm_hal.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_wwd.h -ethercat_slave_cm_hal.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/cmmpu.h -ethercat_slave_cm_hal.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_cmmpu.h -ethercat_slave_cm_hal.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/cputimer.h -ethercat_slave_cm_hal.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_cputimer.h -ethercat_slave_cm_hal.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/dcsm.h -ethercat_slave_cm_hal.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_dcsm.h -ethercat_slave_cm_hal.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/escss.h -ethercat_slave_cm_hal.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_esc_ss.h -ethercat_slave_cm_hal.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/ethernet.h -ethercat_slave_cm_hal.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_emac.h -ethercat_slave_cm_hal.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_emac_ss.h -ethercat_slave_cm_hal.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/platform_port.h -ethercat_slave_cm_hal.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/flash.h -ethercat_slave_cm_hal.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_flash.h -ethercat_slave_cm_hal.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/ipc.h -ethercat_slave_cm_hal.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_ipc.h -ethercat_slave_cm_hal.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/gcrc.h -ethercat_slave_cm_hal.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_gcrc.h -ethercat_slave_cm_hal.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/gpio.h -ethercat_slave_cm_hal.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_gpio.h -ethercat_slave_cm_hal.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/i2c.h -ethercat_slave_cm_hal.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_i2c.h -ethercat_slave_cm_hal.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/mcan.h -ethercat_slave_cm_hal.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_mcanss.h -ethercat_slave_cm_hal.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_types_mcan.h -ethercat_slave_cm_hal.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/memcfg.h -ethercat_slave_cm_hal.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_memcfg.h -ethercat_slave_cm_hal.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/mpu.h -ethercat_slave_cm_hal.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/ssi.h -ethercat_slave_cm_hal.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_ssi.h -ethercat_slave_cm_hal.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/systick.h -ethercat_slave_cm_hal.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/uart.h -ethercat_slave_cm_hal.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_uart.h -ethercat_slave_cm_hal.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/udma.h -ethercat_slave_cm_hal.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_udma.h -ethercat_slave_cm_hal.obj: C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/usb.h -ethercat_slave_cm_hal.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/string.h -ethercat_slave_cm_hal.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/xlocale/_string.h -ethercat_slave_cm_hal.obj: C:/workspace_v12/f2838x_cm_cia402_solution/ecat_def.h -ethercat_slave_cm_hal.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/stdlib.h -ethercat_slave_cm_hal.obj: C:/workspace_v12/f2838x_cm_cia402_solution/f2838x_cm_system.h - -../ethercat_slave_cm_hal.c: - -C:/ti/c2000/C2000Ware_5_01_00_00/libraries/communications/Ethercat/f2838x/include/ethercat_slave_cm_hal.h: - -C:/workspace_v12/f2838x_cm_cia402_solution/device/cm.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/device_support/f2838x/common/include/driverlib_cm.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_memmap.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/aes.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/stdbool.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_ti_config.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/linkage.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/stdint.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_stdint40.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/stdint.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/cdefs.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/_types.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/machine/_types.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/machine/_stdint.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/_stdint.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/debug.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/interrupt.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/cpu.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_ints.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_nvic.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_types.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_aes.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_aes_ss.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/can.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_can.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/sysctl.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_nmi.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_sysctl.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_wwd.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/cmmpu.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_cmmpu.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/cputimer.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_cputimer.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/dcsm.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_dcsm.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/escss.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_esc_ss.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/ethernet.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_emac.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_emac_ss.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/platform_port.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/flash.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_flash.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/ipc.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_ipc.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/gcrc.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_gcrc.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/gpio.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_gpio.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/i2c.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_i2c.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/mcan.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_mcanss.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_types_mcan.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/memcfg.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_memcfg.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/mpu.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/ssi.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_ssi.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/systick.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/uart.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_uart.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/udma.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/inc/hw_udma.h: - -C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/usb.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/string.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/xlocale/_string.h: - -C:/workspace_v12/f2838x_cm_cia402_solution/ecat_def.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/stdlib.h: - -C:/workspace_v12/f2838x_cm_cia402_solution/f2838x_cm_system.h: - diff --git a/RAM/f2838x_cm_cia402_solution.map b/RAM/f2838x_cm_cia402_solution.map index 84eff75..a2837a7 100644 --- a/RAM/f2838x_cm_cia402_solution.map +++ b/RAM/f2838x_cm_cia402_solution.map @@ -1,10 +1,10 @@ ****************************************************************************** TI ARM Linker PC v20.2.7 ****************************************************************************** ->> Linked Thu Feb 1 16:31:28 2024 +>> Linked Fri Feb 2 11:17:49 2024 OUTPUT FILE NAME: -ENTRY POINT SYMBOL: "_c_int00_noargs" address: 20004999 +ENTRY POINT SYMBOL: "_c_int00_noargs" address: 20004301 MEMORY CONFIGURATION @@ -25,11 +25,11 @@ MEMORY CONFIGURATION CMBANK0_SECTOR11 00274000 00004000 00000000 00004000 RWIX CMBANK0_SECTOR12 00278000 00004000 00000000 00004000 RWIX CMBANK0_SECTOR13 0027c000 00004000 00000000 00004000 RWIX - C1RAM 1fffc000 00001fff 00001ff8 00000007 RWIX + C1RAM 1fffc000 00001fff 00001ffb 00000004 RWIX C0RAM 1fffe000 00001fff 00001ffe 00000001 RWIX BOOT_RSVD 20000000 00000800 00000000 00000800 RWIX S0RAM_RESETISR 20000800 00000008 00000006 00000002 RWIX - S0_S1_S2RAM 20000808 0000b7f7 000047fe 00006ff9 RWIX + S0_S1_S2RAM 20000808 0000b7f7 000041fc 000075fb RWIX S3RAM 2000c000 00003fff 00000000 00003fff RWIX E0RAM 20010000 00003fff 00000000 00003fff RWIX CPU1TOCMMSGRAM0 20080000 00000400 00000000 00000400 RWIX @@ -48,25 +48,25 @@ SEGMENT ALLOCATION MAP run origin load origin length init length attrs members ---------- ----------- ---------- ----------- ----- ------- -1fffc000 1fffc000 000008e0 000008e0 r-x - 1fffc000 1fffc000 000008da 000008da r-- .const - 1fffc8dc 1fffc8dc 00000004 00000004 r-x .text.1 -1fffc8e0 1fffc8e0 00000e58 00000000 rw- - 1fffc8e0 1fffc8e0 0000086e 00000000 rw- .data - 1fffd150 1fffd150 000003e6 00000000 rw- .bss - 1fffd538 1fffd538 00000200 00000000 rw- .stack -1fffd738 1fffd738 000008c6 000008c6 r-x - 1fffd738 1fffd738 000008c6 000008c6 r-x .text.2 +1fffc000 1fffc000 00000938 00000938 r-x + 1fffc000 1fffc000 00000934 00000934 r-- .const + 1fffc934 1fffc934 00000004 00000004 r-x .text.1 +1fffc938 1fffc938 00000e58 00000000 rw- + 1fffc938 1fffc938 0000086e 00000000 rw- .data + 1fffd1a8 1fffd1a8 000003e7 00000000 rw- .bss + 1fffd590 1fffd590 00000200 00000000 rw- .stack +1fffd790 1fffd790 0000086e 0000086e r-x + 1fffd790 1fffd790 0000086e 0000086e r-x .text.2 1fffe000 1fffe000 00001000 00000000 rw- 1fffe000 1fffe000 00001000 00000000 rw- .sysmem 1ffff000 1ffff000 00000ffe 00000ffe r-x 1ffff000 1ffff000 00000ffe 00000ffe r-x .text.3 -20000800 20000800 00004808 00004808 r-x +20000800 20000800 00004208 00004208 r-x 20000800 20000800 00000006 00000006 r-x .resetisr 20000808 20000808 000003f8 000003f8 r-x .text.4 20000c00 20000c00 00000140 00000140 r-- .vtable - 20000d40 20000d40 00003f5e 00003f5e r-x .text.5 - 20004ca0 20004ca0 00000368 00000368 r-- .cinit + 20000d40 20000d40 00003954 00003954 r-x .text.5 + 20004698 20004698 00000370 00000370 r-- .cinit SECTION ALLOCATION MAP @@ -74,96 +74,101 @@ SECTION ALLOCATION MAP output attributes/ section page origin length input sections -------- ---- ---------- ---------- ---------------- -.const 0 1fffc000 000008da - 1fffc000 00000100 coeappl.obj (.const:.string:aName0x1C32) - 1fffc100 000000ff coeappl.obj (.const:.string:aName0x1C33) - 1fffc1ff 00000001 --HOLE-- [fill = 0] - 1fffc200 000000c6 coeappl.obj (.const:asEntryDesc0x1C3x) - 1fffc2c6 00000002 --HOLE-- [fill = 0] - 1fffc2c8 00000078 sdoserv.obj (.const:cAbortCode) - 1fffc340 00000046 cia402appl.obj (.const:.string:aName0x60C2) - 1fffc386 00000042 cia402appl.obj (.const:.string:aName0xF000) - 1fffc3c8 00000040 cia402appl.obj (.const:.string:aName0x607D) - 1fffc408 0000003f coeappl.obj (.const:.string:aName0x10F1) - 1fffc447 00000039 coeappl.obj (.const:.string:aName0x1018) - 1fffc480 00000024 cia402appl.obj (.const:asEntryDesc0x1600) - 1fffc4a4 00000024 cia402appl.obj (.const:asEntryDesc0x1A00) - 1fffc4c8 00000020 objdef.obj (.const:cBitMask) - 1fffc4e8 0000001e cia402appl.obj (.const:.string:aName0x605C) - 1fffc506 0000001e coeappl.obj (.const:asEntryDesc0x1018) - 1fffc524 0000001d cia402appl.obj (.const:.string:aName0xF030) - 1fffc541 0000001b cia402appl.obj (.const:.string:aName0x6061) - 1fffc55c 00000018 cia402appl.obj (.const:asEntryDesc0x1601) - 1fffc574 00000018 cia402appl.obj (.const:asEntryDesc0x1602) - 1fffc58c 00000018 cia402appl.obj (.const:asEntryDesc0x1A01) - 1fffc5a4 00000018 cia402appl.obj (.const:asEntryDesc0x1A02) - 1fffc5bc 00000016 cia402appl.obj (.const:.string:aName0x605A) - 1fffc5d2 00000016 cia402appl.obj (.const:.string:aName0x6064) - 1fffc5e8 00000016 cia402appl.obj (.const:.string:aName0x606C) - 1fffc5fe 00000016 cia402appl.obj (.const:.string:aName0x6085) - 1fffc614 00000016 cia402appl.obj (.const:.string:aName0x6502) - 1fffc62a 00000015 cia402appl.obj (.const:.string:aName0x605B) - 1fffc63f 00000015 cia402appl.obj (.const:.string:aName0xF050) - 1fffc654 00000014 cia402appl.obj (.const:.string:aName0x605E) - 1fffc668 00000014 cia402appl.obj (.const:.string:aName0x6077) - 1fffc67c 00000014 cia402appl.obj (.const:.string:aName0xF010) - 1fffc690 00000013 coeappl.obj (.const:.string:aName0x10F8) - 1fffc6a3 00000013 cia402appl.obj (.const:.string:aName0x6060) - 1fffc6b6 00000012 coeappl.obj (.const:.string:aName0x1C00) - 1fffc6c8 00000012 coeappl.obj (.const:asEntryDesc0x10F1) - 1fffc6da 00000012 cia402appl.obj (.const:asEntryDesc0x607D) - 1fffc6ec 00000012 cia402appl.obj (.const:asEntryDesc0x60C2) - 1fffc6fe 00000012 cia402appl.obj (.const:asEntryDesc0xF000) - 1fffc710 00000012 cia402appl.obj (.const:asEntryDesc0xF010) - 1fffc722 00000012 cia402appl.obj (.const:asEntryDesc0xF030) - 1fffc734 00000012 cia402appl.obj (.const:asEntryDesc0xF050) - 1fffc746 00000011 coeappl.obj (.const:.string:aName0x1009) - 1fffc757 00000011 coeappl.obj (.const:.string:aName0x100A) - 1fffc768 00000010 cia402appl.obj (.const:.string:aName0x1600) - 1fffc778 00000010 cia402appl.obj (.const:.string:aName0x1A00) - 1fffc788 00000010 cia402appl.obj (.const:.string:aName0x607A) - 1fffc798 00000010 cia402appl.obj (.const:.string:aName0x60FF) - 1fffc7a8 0000000f coeappl.obj (.const:.string:aName0x1001) - 1fffc7b7 0000000d cia402appl.obj (.const:.string:aName0x1C12) - 1fffc7c4 0000000d cia402appl.obj (.const:.string:aName0x1C13) - 1fffc7d1 0000000d cia402appl.obj (.const:.string:aName0x6040) - 1fffc7de 0000000c coeappl.obj (.const:.string:aName0x1000) - 1fffc7ea 0000000c coeappl.obj (.const:.string:aName0x1008) - 1fffc7f6 0000000c cia402appl.obj (.const:.string:aName0x1601) - 1fffc802 0000000c cia402appl.obj (.const:.string:aName0x1602) - 1fffc80e 0000000c cia402appl.obj (.const:.string:aName0x1A01) - 1fffc81a 0000000c cia402appl.obj (.const:.string:aName0x1A02) - 1fffc826 0000000c cia402appl.obj (.const:.string:aName0x6041) - 1fffc832 0000000c coeappl.obj (.const:asEntryDesc0x1C00) - 1fffc83e 0000000c cia402appl.obj (.const:asPDOAssignEntryDesc) - 1fffc84a 0000000b cia402appl.obj (.const:.string:aName0x603F) - 1fffc855 00000001 --HOLE-- [fill = 0] - 1fffc856 00000006 coeappl.obj (.const:sEntryDesc0x1000) - 1fffc85c 00000006 coeappl.obj (.const:sEntryDesc0x1001) - 1fffc862 00000006 coeappl.obj (.const:sEntryDesc0x1008) - 1fffc868 00000006 coeappl.obj (.const:sEntryDesc0x1009) - 1fffc86e 00000006 coeappl.obj (.const:sEntryDesc0x100A) - 1fffc874 00000006 coeappl.obj (.const:sEntryDesc0x10F8) - 1fffc87a 00000006 cia402appl.obj (.const:sEntryDesc0x603F) - 1fffc880 00000006 cia402appl.obj (.const:sEntryDesc0x6040) - 1fffc886 00000006 cia402appl.obj (.const:sEntryDesc0x6041) - 1fffc88c 00000006 cia402appl.obj (.const:sEntryDesc0x605A) - 1fffc892 00000006 cia402appl.obj (.const:sEntryDesc0x605B) - 1fffc898 00000006 cia402appl.obj (.const:sEntryDesc0x605C) - 1fffc89e 00000006 cia402appl.obj (.const:sEntryDesc0x605E) - 1fffc8a4 00000006 cia402appl.obj (.const:sEntryDesc0x6060) - 1fffc8aa 00000006 cia402appl.obj (.const:sEntryDesc0x6061) - 1fffc8b0 00000006 cia402appl.obj (.const:sEntryDesc0x6064) - 1fffc8b6 00000006 cia402appl.obj (.const:sEntryDesc0x606C) - 1fffc8bc 00000006 cia402appl.obj (.const:sEntryDesc0x6077) - 1fffc8c2 00000006 cia402appl.obj (.const:sEntryDesc0x607A) - 1fffc8c8 00000006 cia402appl.obj (.const:sEntryDesc0x6085) - 1fffc8ce 00000006 cia402appl.obj (.const:sEntryDesc0x60FF) - 1fffc8d4 00000006 cia402appl.obj (.const:sEntryDesc0x6502) +.const 0 1fffc000 00000934 + 1fffc000 00000108 coeappl.obj (.const:.string:aName0x1C32) + 1fffc108 00000107 coeappl.obj (.const:.string:aName0x1C33) + 1fffc20f 00000001 --HOLE-- [fill = 0] + 1fffc210 000000c6 coeappl.obj (.const:asEntryDesc0x1C3x) + 1fffc2d6 00000002 --HOLE-- [fill = 0] + 1fffc2d8 00000078 sdoserv.obj (.const:cAbortCode) + 1fffc350 00000055 cia402appl.obj (.const:.string:aName0x60C2) + 1fffc3a5 00000047 coeappl.obj (.const:.string:aName0x1018) + 1fffc3ec 00000042 cia402appl.obj (.const:.string:aName0xF000) + 1fffc42e 00000040 cia402appl.obj (.const:.string:aName0x607D) + 1fffc46e 0000003f coeappl.obj (.const:.string:aName0x10F1) + 1fffc4ad 00000001 --HOLE-- [fill = 0] + 1fffc4ae 00000024 cia402appl.obj (.const:asEntryDesc0x1600) + 1fffc4d2 00000024 cia402appl.obj (.const:asEntryDesc0x1A00) + 1fffc4f6 00000020 objdef.obj (.const:cBitMask) + 1fffc516 0000001e coeappl.obj (.const:.string:aName0x1009) + 1fffc534 0000001e coeappl.obj (.const:.string:aName0x100A) + 1fffc552 0000001e cia402appl.obj (.const:.string:aName0x605C) + 1fffc570 0000001e coeappl.obj (.const:asEntryDesc0x1018) + 1fffc58e 0000001d cia402appl.obj (.const:.string:aName0xF030) + 1fffc5ab 0000001b cia402appl.obj (.const:.string:aName0x605E) + 1fffc5c6 0000001b cia402appl.obj (.const:.string:aName0x6061) + 1fffc5e1 00000018 cia402appl.obj (.const:.string:aName0x6085) + 1fffc5f9 00000001 --HOLE-- [fill = 0] + 1fffc5fa 00000018 cia402appl.obj (.const:asEntryDesc0x1601) + 1fffc612 00000018 cia402appl.obj (.const:asEntryDesc0x1602) + 1fffc62a 00000018 cia402appl.obj (.const:asEntryDesc0x1A01) + 1fffc642 00000018 cia402appl.obj (.const:asEntryDesc0x1A02) + 1fffc65a 00000017 cia402appl.obj (.const:.string:aName0x605A) + 1fffc671 00000016 cia402appl.obj (.const:.string:aName0x6064) + 1fffc687 00000016 cia402appl.obj (.const:.string:aName0x606C) + 1fffc69d 00000016 cia402appl.obj (.const:.string:aName0x6502) + 1fffc6b3 00000015 cia402appl.obj (.const:.string:aName0x605B) + 1fffc6c8 00000015 cia402appl.obj (.const:.string:aName0xF050) + 1fffc6dd 00000014 cia402appl.obj (.const:.string:aName0x6077) + 1fffc6f1 00000014 cia402appl.obj (.const:.string:aName0xF010) + 1fffc705 00000013 coeappl.obj (.const:.string:aName0x10F8) + 1fffc718 00000013 cia402appl.obj (.const:.string:aName0x6060) + 1fffc72b 00000012 coeappl.obj (.const:.string:aName0x1C00) + 1fffc73d 00000001 --HOLE-- [fill = 0] + 1fffc73e 00000012 coeappl.obj (.const:asEntryDesc0x10F1) + 1fffc750 00000012 cia402appl.obj (.const:asEntryDesc0x607D) + 1fffc762 00000012 cia402appl.obj (.const:asEntryDesc0x60C2) + 1fffc774 00000012 cia402appl.obj (.const:asEntryDesc0xF000) + 1fffc786 00000012 cia402appl.obj (.const:asEntryDesc0xF010) + 1fffc798 00000012 cia402appl.obj (.const:asEntryDesc0xF030) + 1fffc7aa 00000012 cia402appl.obj (.const:asEntryDesc0xF050) + 1fffc7bc 00000010 cia402appl.obj (.const:.string:aName0x1600) + 1fffc7cc 00000010 cia402appl.obj (.const:.string:aName0x1A00) + 1fffc7dc 00000010 cia402appl.obj (.const:.string:aName0x607A) + 1fffc7ec 00000010 cia402appl.obj (.const:.string:aName0x60FF) + 1fffc7fc 0000000f coeappl.obj (.const:.string:aName0x1001) + 1fffc80b 0000000d cia402appl.obj (.const:.string:aName0x1C12) + 1fffc818 0000000d cia402appl.obj (.const:.string:aName0x1C13) + 1fffc825 0000000d cia402appl.obj (.const:.string:aName0x6040) + 1fffc832 0000000c coeappl.obj (.const:.string:aName0x1000) + 1fffc83e 0000000c coeappl.obj (.const:.string:aName0x1008) + 1fffc84a 0000000c cia402appl.obj (.const:.string:aName0x1601) + 1fffc856 0000000c cia402appl.obj (.const:.string:aName0x1602) + 1fffc862 0000000c cia402appl.obj (.const:.string:aName0x1A01) + 1fffc86e 0000000c cia402appl.obj (.const:.string:aName0x1A02) + 1fffc87a 0000000c cia402appl.obj (.const:.string:aName0x6041) + 1fffc886 0000000c coeappl.obj (.const:asEntryDesc0x1C00) + 1fffc892 0000000c cia402appl.obj (.const:asPDOAssignEntryDesc) + 1fffc89e 0000000b cia402appl.obj (.const:.string:aName0x603F) + 1fffc8a9 00000001 --HOLE-- [fill = 0] + 1fffc8aa 00000006 coeappl.obj (.const:sEntryDesc0x1000) + 1fffc8b0 00000006 coeappl.obj (.const:sEntryDesc0x1001) + 1fffc8b6 00000006 coeappl.obj (.const:sEntryDesc0x1008) + 1fffc8bc 00000006 coeappl.obj (.const:sEntryDesc0x1009) + 1fffc8c2 00000006 coeappl.obj (.const:sEntryDesc0x100A) + 1fffc8c8 00000006 coeappl.obj (.const:sEntryDesc0x10F8) + 1fffc8ce 00000006 cia402appl.obj (.const:sEntryDesc0x603F) + 1fffc8d4 00000006 cia402appl.obj (.const:sEntryDesc0x6040) + 1fffc8da 00000006 cia402appl.obj (.const:sEntryDesc0x6041) + 1fffc8e0 00000006 cia402appl.obj (.const:sEntryDesc0x605A) + 1fffc8e6 00000006 cia402appl.obj (.const:sEntryDesc0x605B) + 1fffc8ec 00000006 cia402appl.obj (.const:sEntryDesc0x605C) + 1fffc8f2 00000006 cia402appl.obj (.const:sEntryDesc0x605E) + 1fffc8f8 00000006 cia402appl.obj (.const:sEntryDesc0x6060) + 1fffc8fe 00000006 cia402appl.obj (.const:sEntryDesc0x6061) + 1fffc904 00000006 cia402appl.obj (.const:sEntryDesc0x6064) + 1fffc90a 00000006 cia402appl.obj (.const:sEntryDesc0x606C) + 1fffc910 00000006 cia402appl.obj (.const:sEntryDesc0x6077) + 1fffc916 00000006 cia402appl.obj (.const:sEntryDesc0x607A) + 1fffc91c 00000006 cia402appl.obj (.const:sEntryDesc0x6085) + 1fffc922 00000006 cia402appl.obj (.const:sEntryDesc0x60FF) + 1fffc928 00000006 cia402appl.obj (.const:sEntryDesc0x6502) + 1fffc92e 00000002 --HOLE-- [fill = 0] + 1fffc930 00000004 cia402appl.obj (.const:.string) -.stack 0 1fffd538 00000200 UNINITIALIZED - 1fffd538 00000004 rtsv7M4_T_le_eabi.lib : boot_cortex_m.c.obj (.stack) - 1fffd53c 000001fc --HOLE-- +.stack 0 1fffd590 00000200 UNINITIALIZED + 1fffd590 00000004 rtsv7M4_T_le_eabi.lib : boot_cortex_m.c.obj (.stack) + 1fffd594 000001fc --HOLE-- .resetisr * 0 20000800 00000006 @@ -172,399 +177,399 @@ section page origin length input sections .vtable 0 20000c00 00000140 20000c00 00000140 startup_cm.obj (.vtable:retain) -.cinit 0 20004ca0 00000368 - 20004ca0 00000340 (.cinit..data.load) [load image, compression = lzss] - 20004fe0 0000000c (__TI_handler_table) - 20004fec 00000004 --HOLE-- [fill = 0] - 20004ff0 00000008 (.cinit..bss.load) [load image, compression = zero_init] - 20004ff8 00000010 (__TI_cinit_table) +.cinit 0 20004698 00000370 + 20004698 00000347 (.cinit..data.load) [load image, compression = lzss] + 200049df 00000001 --HOLE-- [fill = 0] + 200049e0 0000000c (__TI_handler_table) + 200049ec 00000004 --HOLE-- [fill = 0] + 200049f0 00000008 (.cinit..bss.load) [load image, compression = zero_init] + 200049f8 00000010 (__TI_cinit_table) .sysmem 0 1fffe000 00001000 UNINITIALIZED 1fffe000 00000010 rtsv7M4_T_le_eabi.lib : memory.c.obj (.sysmem) 1fffe010 00000ff0 --HOLE-- -.data 0 1fffc8e0 0000086e UNINITIALIZED - 1fffc8e0 000003e8 cia402appl.obj (.data:DefCiA402AxisObjDic) - 1fffccc8 000001e0 coeappl.obj (.data:GenObjDic) - 1fffcea8 00000118 cia402appl.obj (.data:ApplicationObjDic) - 1fffcfc0 000000b0 cia402appl.obj (.data:DefCiA402ObjectValues) - 1fffd070 00000019 coeappl.obj (.data:acDevicename) - 1fffd089 00000014 coeappl.obj (.data:acHardwareversion) - 1fffd09d 00000014 coeappl.obj (.data:acSoftwareversion) - 1fffd0b1 00000001 sdoserv.obj (.data) - 1fffd0b2 00000006 cia402appl.obj (.data:sModulardeviceprofile) - 1fffd0b8 00000014 coeappl.obj (.data) - 1fffd0cc 00000014 coeappl.obj (.data:sIdentity) - 1fffd0e0 0000000d objdef.obj (.data:aSubindexDesc) - 1fffd0ed 00000002 ecatslv.obj (.data) - 1fffd0ef 00000001 --HOLE-- - 1fffd0f0 0000000c cia402appl.obj (.data:sConfiguredModuleIdentList) - 1fffd0fc 0000000c cia402appl.obj (.data:sDetectedModuleIdentList) - 1fffd108 0000000c objdef.obj (.data:sErrorSettings) - 1fffd114 0000000c cia402appl.obj (.data:sModuleProfileInfo) - 1fffd120 0000000a ecatappl.obj (.data) - 1fffd12a 00000002 --HOLE-- - 1fffd12c 00000008 rtsv7M4_T_le_eabi.lib : _lock.c.obj (.data:$O1$$) - 1fffd134 00000008 : memory.c.obj (.data:$O1$$) - 1fffd13c 00000006 cia402appl.obj (.data:sRxPDOassign) - 1fffd142 00000006 coeappl.obj (.data:sSyncmanagertype) - 1fffd148 00000006 cia402appl.obj (.data:sTxPDOassign) +.data 0 1fffc938 0000086e UNINITIALIZED + 1fffc938 000003e8 cia402appl.obj (.data:DefCiA402AxisObjDic) + 1fffcd20 000001e0 coeappl.obj (.data:GenObjDic) + 1fffcf00 00000118 cia402appl.obj (.data:ApplicationObjDic) + 1fffd018 000000b0 cia402appl.obj (.data:DefCiA402ObjectValues) + 1fffd0c8 00000019 coeappl.obj (.data:acDevicename) + 1fffd0e1 00000014 coeappl.obj (.data:acHardwareversion) + 1fffd0f5 00000014 coeappl.obj (.data:acSoftwareversion) + 1fffd109 00000001 --HOLE-- + 1fffd10a 00000006 cia402appl.obj (.data:sModulardeviceprofile) + 1fffd110 00000014 coeappl.obj (.data) + 1fffd124 00000014 coeappl.obj (.data:sIdentity) + 1fffd138 0000000d objdef.obj (.data:aSubindexDesc) + 1fffd145 00000002 ecatslv.obj (.data) + 1fffd147 00000001 --HOLE-- + 1fffd148 0000000c cia402appl.obj (.data:sConfiguredModuleIdentList) + 1fffd154 0000000c cia402appl.obj (.data:sDetectedModuleIdentList) + 1fffd160 0000000c objdef.obj (.data:sErrorSettings) + 1fffd16c 0000000c cia402appl.obj (.data:sModuleProfileInfo) + 1fffd178 0000000a ecatappl.obj (.data) + 1fffd182 00000002 --HOLE-- + 1fffd184 00000008 rtsv7M4_T_le_eabi.lib : _lock.c.obj (.data:$O1$$) + 1fffd18c 00000008 : memory.c.obj (.data:$O1$$) + 1fffd194 00000006 cia402appl.obj (.data:sRxPDOassign) + 1fffd19a 00000006 coeappl.obj (.data:sSyncmanagertype) + 1fffd1a0 00000006 cia402appl.obj (.data:sTxPDOassign) -.bss 0 1fffd150 000003e6 UNINITIALIZED - 1fffd150 000001a0 (.common:LocalAxes) - 1fffd2f0 00000044 (.common:aPdInputData) - 1fffd334 00000044 (.common:aPdOutputData) - 1fffd378 00000044 (.common:sSyncManInPar) - 1fffd3bc 00000044 (.common:sSyncManOutPar) - 1fffd400 00000034 (.common:sMbxReceiveQueue) - 1fffd434 00000034 (.common:sMbxSendQueue) - 1fffd468 00000010 (.common:aSdoInfoHeader) - 1fffd478 00000008 (.common:SyncManInfo) - 1fffd480 00000004 (.common:nSdoSegBytesToHandle) - 1fffd484 00000004 (.common:nSdoSegCompleteSize) - 1fffd488 00000004 (.common:pAPPL_MainLoop) - 1fffd48c 00000004 (.common:pCoeSendStored) - 1fffd490 00000004 (.common:pSdoInfoObjEntry) - 1fffd494 00000004 (.common:pSdoPendFunc) - 1fffd498 00000004 (.common:pSdoResStored) - 1fffd49c 00000004 (.common:pSdoSegData) - 1fffd4a0 00000004 (.common:pSdoSegObjEntry) - 1fffd4a4 00000004 (.common:pStoreData) - 1fffd4a8 00000004 (.common:psReadMbx) - 1fffd4ac 00000004 (.common:psRepeatMbx) - 1fffd4b0 00000004 (.common:psStoreMbx) - 1fffd4b4 00000004 (.common:psWriteMbx) - 1fffd4b8 00000004 (.common:u32CheckForDcOverrunCnt) - 1fffd4bc 00000004 (.common:u32CycleTimeStartValue) - 1fffd4c0 00000004 (.common:u32LastDc32Value) - 1fffd4c4 00000004 (.common:u32MinCycleTimeStartValue) - 1fffd4c8 00000004 (.common:u32MinCycleTimeValue) - 1fffd4cc 00000004 (.common:u32StoreDataSize) - 1fffd4d0 00000004 (.common:u32SystemTimeReadFailure) - 1fffd4d4 00000002 (.common:EcatWdValue) - 1fffd4d6 00000002 (.common:EsmTimeoutCounter) - 1fffd4d8 00000002 (.common:LatchInputSync0Counter) - 1fffd4da 00000002 (.common:LatchInputSync0Value) - 1fffd4dc 00000002 (.common:Sync0WdCounter) - 1fffd4de 00000002 (.common:Sync0WdValue) - 1fffd4e0 00000002 (.common:Sync1WdCounter) - 1fffd4e2 00000002 (.common:Sync1WdValue) - 1fffd4e4 00000002 (.common:i16WaitForPllRunningCnt) - 1fffd4e6 00000002 (.common:i16WaitForPllRunningTimeout) - 1fffd4e8 00000002 (.common:nEcatStateTrans) - 1fffd4ea 00000002 (.common:nEscAddrInputData) - 1fffd4ec 00000002 (.common:nEscAddrOutputData) - 1fffd4ee 00000002 (.common:nMaxEscAddress) - 1fffd4f0 00000002 (.common:nPdInputSize) - 1fffd4f2 00000002 (.common:nPdOutputSize) - 1fffd4f4 00000002 (.common:nSdoInfoFragmentsLeft) - 1fffd4f6 00000002 (.common:nSdoInfoIndex) - 1fffd4f8 00000002 (.common:nSdoSegIndex) - 1fffd4fa 00000002 (.common:sCycleDiag) - 1fffd4fc 00000002 (.common:u16ALEventMask) - 1fffd4fe 00000002 (.common:u16EscAddrReceiveMbx) - 1fffd500 00000002 (.common:u16EscAddrSendMbx) - 1fffd502 00000002 (.common:u16LocalErrorCode) - 1fffd504 00000002 (.common:u16ReceiveMbxSize) - 1fffd506 00000002 (.common:u16SendMbxSize) - 1fffd508 00000002 (.common:u16SmSync0Counter) - 1fffd50a 00000002 (.common:u16SmSync0Value) - 1fffd50c 00000002 (.common:u16StoreIndex) - 1fffd50e 00000001 (.common:b32BitDc) - 1fffd50f 00000001 (.common:b3BufferMode) - 1fffd510 00000001 (.common:bApplEsmPending) - 1fffd511 00000001 (.common:bDcRunning) - 1fffd512 00000001 (.common:bDcSyncActive) - 1fffd513 00000001 (.common:bEcatFirstOutputsReceived) - 1fffd514 00000001 (.common:bEcatInputUpdateRunning) - 1fffd515 00000001 (.common:bEcatOutputUpdateRunning) - 1fffd516 00000001 (.common:bEcatWaitForAlControlRes) - 1fffd517 00000001 (.common:bEscIntEnabled) - 1fffd518 00000001 (.common:bEtherCATErrorLed) - 1fffd519 00000001 (.common:bEtherCATRunLed) - 1fffd51a 00000001 (.common:bExplicitDevIdRequested) - 1fffd51b 00000001 (.common:bLocalErrorFlag) - 1fffd51c 00000001 (.common:bMbxRepeatToggle) - 1fffd51d 00000001 (.common:bMbxRunning) - 1fffd51e 00000001 (.common:bMinCycleTimeMeasurementStarted) - 1fffd51f 00000001 (.common:bNoMbxMemoryAvailable) - 1fffd520 00000001 (.common:bReceiveMbxIsLocked) - 1fffd521 00000001 (.common:bRunApplication) - 1fffd522 00000001 (.common:bSdoSegAccess) - 1fffd523 00000001 (.common:bSdoSegFollows) - 1fffd524 00000001 (.common:bSdoSegLastToggle) - 1fffd525 00000001 (.common:bSendMbxIsFull) - 1fffd526 00000001 (.common:bSmSyncSequenceValid) - 1fffd527 00000001 (.common:bStoreCompleteAccess) - 1fffd528 00000001 (.common:bSyncSetByUser) - 1fffd529 00000001 (.common:bWdTrigger) - 1fffd52a 00000001 (.common:nAlStatus) - 1fffd52b 00000001 (.common:nMaxSyncMan) - 1fffd52c 00000001 (.common:nSdoSegService) - 1fffd52d 00000001 (.common:nSdoSegSubindex) - 1fffd52e 00000001 (.common:u8EcatErrorLed) - 1fffd52f 00000001 (.common:u8EcatRunLed) - 1fffd530 00000001 (.common:u8MailboxSendReqStored) - 1fffd531 00000001 (.common:u8MbxReadCounter) - 1fffd532 00000001 (.common:u8MbxWriteCounter) - 1fffd533 00000001 (.common:u8PendingSdo) - 1fffd534 00000001 (.common:u8StoreSubindex) - 1fffd535 00000001 (.common:u8dummy) +.bss 0 1fffd1a8 000003e7 UNINITIALIZED + 1fffd1a8 000001a0 (.common:LocalAxes) + 1fffd348 00000044 (.common:aPdInputData) + 1fffd38c 00000044 (.common:aPdOutputData) + 1fffd3d0 00000044 (.common:sSyncManInPar) + 1fffd414 00000044 (.common:sSyncManOutPar) + 1fffd458 00000034 (.common:sMbxReceiveQueue) + 1fffd48c 00000034 (.common:sMbxSendQueue) + 1fffd4c0 00000010 (.common:aSdoInfoHeader) + 1fffd4d0 00000008 (.common:SyncManInfo) + 1fffd4d8 00000004 (.common:pAPPL_CoeReadInd) + 1fffd4dc 00000004 (.common:pAPPL_CoeWriteInd) + 1fffd4e0 00000004 (.common:pAPPL_FoeError) + 1fffd4e4 00000004 (.common:pAPPL_FoeRead) + 1fffd4e8 00000004 (.common:pAPPL_FoeReadData) + 1fffd4ec 00000004 (.common:pAPPL_FoeWrite) + 1fffd4f0 00000004 (.common:pAPPL_FoeWriteData) + 1fffd4f4 00000004 (.common:pAPPL_MainLoop) + 1fffd4f8 00000004 (.common:pCoeSendStored) + 1fffd4fc 00000004 (.common:pFoeSendStored) + 1fffd500 00000004 (.common:pSdoInfoObjEntry) + 1fffd504 00000004 (.common:psReadMbx) + 1fffd508 00000004 (.common:psRepeatMbx) + 1fffd50c 00000004 (.common:psStoreMbx) + 1fffd510 00000004 (.common:psWriteMbx) + 1fffd514 00000004 (.common:u32CheckForDcOverrunCnt) + 1fffd518 00000004 (.common:u32CycleTimeStartValue) + 1fffd51c 00000004 (.common:u32FileOffset) + 1fffd520 00000004 (.common:u32LastDc32Value) + 1fffd524 00000004 (.common:u32LastFileOffset) + 1fffd528 00000004 (.common:u32MinCycleTimeStartValue) + 1fffd52c 00000004 (.common:u32MinCycleTimeValue) + 1fffd530 00000004 (.common:u32PacketNo) + 1fffd534 00000004 (.common:u32SystemTimeReadFailure) + 1fffd538 00000002 (.common:EcatWdValue) + 1fffd53a 00000002 (.common:EsmTimeoutCounter) + 1fffd53c 00000002 (.common:LatchInputSync0Counter) + 1fffd53e 00000002 (.common:LatchInputSync0Value) + 1fffd540 00000002 (.common:Sync0WdCounter) + 1fffd542 00000002 (.common:Sync0WdValue) + 1fffd544 00000002 (.common:Sync1WdCounter) + 1fffd546 00000002 (.common:Sync1WdValue) + 1fffd548 00000002 (.common:i16WaitForPllRunningCnt) + 1fffd54a 00000002 (.common:i16WaitForPllRunningTimeout) + 1fffd54c 00000002 (.common:nEcatStateTrans) + 1fffd54e 00000002 (.common:nEscAddrInputData) + 1fffd550 00000002 (.common:nEscAddrOutputData) + 1fffd552 00000002 (.common:nMaxEscAddress) + 1fffd554 00000002 (.common:nPdInputSize) + 1fffd556 00000002 (.common:nPdOutputSize) + 1fffd558 00000002 (.common:nSdoInfoIndex) + 1fffd55a 00000002 (.common:sCycleDiag) + 1fffd55c 00000002 (.common:u16ALEventMask) + 1fffd55e 00000002 (.common:u16EscAddrReceiveMbx) + 1fffd560 00000002 (.common:u16EscAddrSendMbx) + 1fffd562 00000002 (.common:u16FileAccessState) + 1fffd564 00000002 (.common:u16FoeMaxSendBlockSize) + 1fffd566 00000002 (.common:u16LocalErrorCode) + 1fffd568 00000002 (.common:u16ReceiveMbxSize) + 1fffd56a 00000002 (.common:u16SendMbxSize) + 1fffd56c 00000002 (.common:u16SmSync0Counter) + 1fffd56e 00000002 (.common:u16SmSync0Value) + 1fffd570 00000001 (.common:b32BitDc) + 1fffd571 00000001 (.common:b3BufferMode) + 1fffd572 00000001 (.common:bApplEsmPending) + 1fffd573 00000001 (.common:bDcRunning) + 1fffd574 00000001 (.common:bDcSyncActive) + 1fffd575 00000001 (.common:bEcatFirstOutputsReceived) + 1fffd576 00000001 (.common:bEcatInputUpdateRunning) + 1fffd577 00000001 (.common:bEcatOutputUpdateRunning) + 1fffd578 00000001 (.common:bEcatWaitForAlControlRes) + 1fffd579 00000001 (.common:bEscIntEnabled) + 1fffd57a 00000001 (.common:bEtherCATErrorLed) + 1fffd57b 00000001 (.common:bEtherCATRunLed) + 1fffd57c 00000001 (.common:bMbxRepeatToggle) + 1fffd57d 00000001 (.common:bMbxRunning) + 1fffd57e 00000001 (.common:bMinCycleTimeMeasurementStarted) + 1fffd57f 00000001 (.common:bNoMbxMemoryAvailable) + 1fffd580 00000001 (.common:bReceiveMbxIsLocked) + 1fffd581 00000001 (.common:bRunApplication) + 1fffd582 00000001 (.common:bSendMbxIsFull) + 1fffd583 00000001 (.common:bSmSyncSequenceValid) + 1fffd584 00000001 (.common:bSyncSetByUser) + 1fffd585 00000001 (.common:bWdTrigger) + 1fffd586 00000001 (.common:nAlStatus) + 1fffd587 00000001 (.common:nMaxSyncMan) + 1fffd588 00000001 (.common:u8EcatErrorLed) + 1fffd589 00000001 (.common:u8EcatRunLed) + 1fffd58a 00000001 (.common:u8LocalErrorState) + 1fffd58b 00000001 (.common:u8MailboxSendReqStored) + 1fffd58c 00000001 (.common:u8MbxReadCounter) + 1fffd58d 00000001 (.common:u8MbxWriteCounter) + 1fffd58e 00000001 (.common:u8dummy) __llvm_prf_cnts * 0 1fffc000 00000000 UNINITIALIZED -.text.1 0 1fffc8dc 00000004 - 1fffc8dc 00000004 cia402appl.obj (.text:APPL_GetDeviceID) +.text.1 0 1fffc934 00000004 + 1fffc934 00000004 F2838x CM EtherCAT Slave.obj (.text:APPL_StartMailboxHandler) -.text.2 0 1fffd738 000008c6 - 1fffd738 000004ac ecatslv.obj (.text:StartInputHandler) - 1fffdbe4 0000037a objdef.obj (.text:OBJ_Read) - 1fffdf5e 0000009c objdef.obj (.text:OBJ_GetObjectList) - 1fffdffa 00000004 cia402appl.obj (.text:APPL_StartMailboxHandler) +.text.2 0 1fffd790 0000086e + 1fffd790 000004ca ecatslv.obj (.text:StartInputHandler) + 1fffdc5a 000002ea objdef.obj (.text:OBJ_Read) + 1fffdf44 000000ba objdef.obj (.text:CheckSyncTypeValue) .text.3 0 1ffff000 00000ffe - 1ffff000 0000046e objdef.obj (.text:OBJ_Write) - 1ffff46e 0000043c sdoserv.obj (.text:SDOS_SdoInd) - 1ffff8aa 0000041e ecatslv.obj (.text:AL_ControlInd) - 1ffffcc8 000002c4 cia402appl.obj (.text:CiA402_Init) - 1fffff8c 00000070 driverlib_cm.lib : sysctl.obj (.text:SysCtl_resetPeripheral) - 1ffffffc 00000002 cia402appl.obj (.text:APPL_AckErrorInd) + 1ffff000 0000041e ecatslv.obj (.text:AL_ControlInd) + 1ffff41e 000003ac objdef.obj (.text:OBJ_Write) + 1ffff7ca 000002c4 cia402appl.obj (.text:CiA402_Init) + 1ffffa8e 00000236 ecatfoe.obj (.text:FOE_ServiceInd) + 1ffffcc4 00000232 cia402appl.obj (.text:APPL_GenerateMapping) + 1ffffef6 00000002 F2838x CM EtherCAT Slave.obj (.text:APPL_AckErrorInd) + 1ffffef8 00000100 rtsv7M4_T_le_eabi.lib : memory.c.obj (.text:aligned_alloc) + 1ffffff8 00000004 cia402appl.obj (.text:APPL_StartOutputHandler) + 1ffffffc 00000002 coeappl.obj (.text:COE_Main) .text.4 0 20000808 000003f8 - 20000808 00000298 sdoserv.obj (.text:SDOS_SdoInfoInd) - 20000aa0 00000140 ecatappl.obj (.text:PDI_Isr) - 20000be0 00000020 cia402appl.obj (.text:APPL_Application) + 20000808 00000232 sdoserv.obj (.text:SDOS_SdoInfoInd) + 20000a3a 000001c0 ecatappl.obj (.text:ECAT_SetLedIndication) + 20000bfa 00000004 cia402appl.obj (.text:APPL_StopInputHandler) + 20000bfe 00000002 ethercat_slave_cm_hal.obj (.text:ESC_releaseHW) -.text.5 0 20000d40 00003f5e - 20000d40 00000232 cia402appl.obj (.text:APPL_GenerateMapping) - 20000f72 00000228 sdoserv.obj (.text:SdoDownloadSegmentInd) - 2000119a 00000208 ecatslv.obj (.text:CheckSmSettings) - 200013a2 000001fc cia402appl.obj (.text:CiA402_StateMachine) - 2000159e 000001d2 ecatslv.obj (.text:AL_ControlRes) - 20001770 000001c0 ecatappl.obj (.text:ECAT_SetLedIndication) - 20001930 000001b6 rtsv7M4_T_le_eabi.lib : fd_add_t2.asm.obj (.text) - 20001ae6 00000170 cia402appl.obj (.text:Write0xF030) - 20001c56 0000013a ecatslv.obj (.text:ECAT_Init) - 20001d90 0000011a ecatappl.obj (.text:Sync0_Isr) - 20001eaa 0000010c ecatslv.obj (.text:ECAT_Main) - 20001fb6 00000002 ethercat_slave_cm_hal.obj (.text:ESC_releaseHW) - 20001fb8 00000100 rtsv7M4_T_le_eabi.lib : memory.c.obj (.text:aligned_alloc) - 200020b8 000000fe ecatslv.obj (.text:StopInputHandler) - 200021b6 000000fc cia402appl.obj (.text:CiA402_Application) - 200022b2 000000fc cia402appl.obj (.text:CiA402_DummyMotionControl) - 200023ae 000000fc mailbox.obj (.text:MBX_CheckAndCopyMailbox) - 200024aa 000000fc rtsv7M4_T_le_eabi.lib : fd_mul_t2.asm.obj (.text) - 200025a6 000000f8 coeappl.obj (.text:COE_ObjInit) - 2000269e 000000f8 objdef.obj (.text:OBJ_GetEntryOffset) - 20002796 000000f6 ecatslv.obj (.text:DC_CheckWatchdog) - 2000288c 000000f6 mailbox.obj (.text:MBX_StopMailboxHandler) - 20002982 000000f2 ethercat_slave_cm_hal.obj (.text:ESC_initHW) - 20002a74 000000f0 sdoserv.obj (.text:SdoUploadSegmentInd) - 20002b64 000000ea sdoserv.obj (.text:SDOS_SdoRes) - 20002c4e 00000002 rtsv7M4_T_le_eabi.lib : _lock.c.obj (.text:_nop) - 20002c50 000000e4 : memory.c.obj (.text:free) - 20002d34 000000e2 ecatappl.obj (.text:MainLoop) - 20002e16 000000d8 mailbox.obj (.text:MBX_Init) - 20002eee 000000ca cia402appl.obj (.text:APPL_StartInputHandler) - 20002fb8 000000bc objdef.obj (.text:OBJ_GetDesc) - 20003074 000000ba objdef.obj (.text:CheckSyncTypeValue) - 2000312e 000000ba objdef.obj (.text:OBJ_GetObjectLength) - 200031e8 000000b8 sdoserv.obj (.text:SODS_ClearPendingResponse) - 200032a0 000000b6 coeappl.obj (.text:COE_Main) - 20003356 000000b6 sdoserv.obj (.text:SdoRes) - 2000340c 000000aa mailbox.obj (.text:MBX_CopyToSendMailbox) - 200034b6 000000a2 mailbox.obj (.text:MBX_StartMailboxHandler) - 20003558 000000a2 ecatappl.obj (.text:PDO_OutputMapping) - 200035fa 000000a2 ecatslv.obj (.text:SetALStatus) - 2000369c 0000009c rtsv7M4_T_le_eabi.lib : memcpy_t2.asm.obj (.text) - 20003738 00000096 cia402appl.obj (.text:APPL_OutputMapping) - 200037ce 0000008e cia402appl.obj (.text:APPL_InputMapping) - 2000385c 0000008e ecatappl.obj (.text:ECAT_CheckTimer) - 200038ea 00000086 mailbox.obj (.text:MBX_MailboxReadInd) - 20003970 00000086 ecatappl.obj (.text:PDO_InputMapping) - 200039f6 00000084 mailbox.obj (.text:MBX_MailboxSendReq) - 20003a7a 00000002 startup_cm.obj (.text:defaultISR) - 20003a7c 00000080 driverlib_cm.lib : interrupt.obj (.text:Interrupt_enable) - 20003afc 0000007e ecatappl.obj (.text:MainInit) - 20003b7a 0000007a ecatslv.obj (.text:CheckIfEcatError) - 20003bf4 0000007a rtsv7M4_T_le_eabi.lib : fs_mul_t2.asm.obj (.text) - 20003c6e 0000007a : memset_t2.asm.obj (.text) - 20003ce8 00000076 cm.obj (.text:CM_enableAllPeripherals) - 20003d5e 00000076 coeappl.obj (.text:COE_SyncTimeStamp) - 20003dd4 00000070 rtsv7M4_T_le_eabi.lib : memory.c.obj (.text:split) - 20003e44 00000068 : copy_decompress_lzss.c.obj (.text:decompress:lzss:__TI_decompress_lzss) - 20003eac 00000064 coeappl.obj (.text:COE_AddObjectToDic) - 20003f10 00000062 mailbox.obj (.text:MBX_MailboxRepeatReq) - 20003f72 00000060 ecatslv.obj (.text:StartOutputHandler) - 20003fd2 00000060 rtsv7M4_T_le_eabi.lib : fs_cmp_t2.asm.obj (.text:__aeabi_cfcmple) - 20004032 0000005e objdef.obj (.text:OBJ_GetNoOfObjects) - 20004090 0000005c cia402appl.obj (.text:CiA402_DeallocateAxis) - 200040ec 0000005c driverlib_cm.lib : escss.obj (.text:ESCSS_configureSync0Connections) - 20004148 0000005c : escss.obj (.text:ESCSS_configureSync1Connections) - 200041a4 0000005c : interrupt.obj (.text:Interrupt_registerHandler) - 20004200 0000005c mailbox.obj (.text:MBX_MailboxWriteInd) - 2000425c 00000050 ecatappl.obj (.text:HandleCycleTimeMeasurement) - 200042ac 0000004e coeappl.obj (.text:Read0x10F8) - 200042fa 00000048 mailbox.obj (.text:MBX_Main) - 20004342 00000002 startup_cm.obj (.text:faultISR) - 20004344 00000048 driverlib_cm.lib : sysctl.obj (.text:SysCtl_enablePeripheral) - 2000438c 00000048 rtsv7M4_T_le_eabi.lib : fd_toi_t2.asm.obj (.text) - 200043d4 00000046 coeappl.obj (.text:COE_UpdateSyncErrorStatus) - 2000441a 00000044 ecatappl.obj (.text:Sync1_Isr) - 2000445e 00000002 startup_cm.obj (.text:nmiISR) - 20004460 00000044 rtsv7M4_T_le_eabi.lib : autoinit.c.obj (.text:__TI_auto_init_nobinit_nopinit:__TI_auto_init_nobinit_nopinit) - 200044a4 00000044 cia402appl.obj (.text:main) - 200044e8 00000042 ecatcoe.obj (.text:COE_ContinueInd) - 2000452a 0000003e ecatappl.obj (.text:ECAT_Application) - 20004568 0000003c coeappl.obj (.text:COE_RemoveDicEntry) - 200045a4 0000003a driverlib_cm.lib : escss.obj (.text:ESCSS_configureEEPROMSize) - 200045de 0000003a objdef.obj (.text:OBJ_CopyNumberToString) - 20004618 0000003a objdef.obj (.text:OBJ_GetEntryDesc) - 20004652 00000038 rtsv7M4_T_le_eabi.lib : fs_tod_t2.asm.obj (.text) - 2000468a 00000038 : fs_toi_t2.asm.obj (.text) - 200046c2 00000036 : strncpy.c.obj (.text:strncpy) - 200046f8 00000034 ecatappl.obj (.text:GetSystemTimeDelay) - 2000472c 00000032 ethercat_slave_cm_hal.obj (.text:ESC_setLed) - 2000475e 0000002e ecatslv.obj (.text:DisableSyncManChannel) - 2000478c 0000002e ecatslv.obj (.text:EnableSyncManChannel) - 200047ba 0000002e rtsv7M4_T_le_eabi.lib : i_tofd_t2.asm.obj (.text) - 200047e8 0000002c coeappl.obj (.text:COE_ObjDictionaryInit) - 20004814 0000002c mailbox.obj (.text:PutInMbxQueue) - 20004840 00000028 cm.obj (.text:CM_init) - 20004868 00000028 ecatcoe.obj (.text:COE_ServiceInd) - 20004890 00000028 ethercat_slave_cm_hal.obj (.text:ESC_loadedCheckEEPROM) - 200048b8 00000028 rtsv7M4_T_le_eabi.lib : memory.c.obj (.text:free_list_insert) - 200048e0 00000026 mailbox.obj (.text:GetOutOfMbxQueue) - 20004906 00000026 ecatslv.obj (.text:UpdateEEPROMLoadedState) - 2000492c 00000024 coeappl.obj (.text:AddObjectsToObjDictionary) - 20004950 00000024 cia402appl.obj (.text:CiA402_LocalError) - 20004974 00000024 driverlib_cm.lib : escss.obj (.text:ESCSS_isConfigurationLockEnabled) - 20004998 00000024 rtsv7M4_T_le_eabi.lib : boot_cortex_m.c.obj (.text:_c_int00_noargs:_c_int00_noargs) - 200049bc 00000024 : u_tofs_t2.asm.obj (.text) - 200049e0 00000020 coeappl.obj (.text:COE_ClearObjDictionary) - 20004a00 0000001e ethercat_slave_cm_hal.obj (.text:ESC_clearTimer) - 20004a1e 0000001c ecatslv.obj (.text:GetSyncMan) - 20004a3a 0000001c ecatslv.obj (.text:ResetALEventMask) - 20004a56 0000001c ecatslv.obj (.text:SetALEventMask) - 20004a72 0000001c rtsv7M4_T_le_eabi.lib : copy_zero_init.c.obj (.text:decompress:ZI:__TI_zero_init_nomemset:__TI_zero_init_nomemset) - 20004a8e 00000002 --HOLE-- [fill = 0] - 20004a90 0000001c : memory.c.obj (.text:free_list_remove) - 20004aac 0000001a ethercat_slave_cm_hal.obj (.text:ESC_applicationLayerHandler) - 20004ac6 0000001a ethercat_slave_cm_hal.obj (.text:ESC_applicationSync0Handler) - 20004ae0 0000001a ethercat_slave_cm_hal.obj (.text:ESC_applicationSync1Handler) - 20004afa 0000001a objdef.obj (.text:OBJ_GetObjectHandle) - 20004b14 00000018 ecatcoe.obj (.text:COE_Init) - 20004b2c 00000018 ecatslv.obj (.text:StopOutputHandler) - 20004b44 00000014 rtsv7M4_T_le_eabi.lib : strlen.c.obj (.text:strlen) - 20004b58 00000012 mailbox.obj (.text:MailboxServiceInd) - 20004b6a 00000010 ethercat_slave_cm_hal.obj (.text:ESC_writeBlockISR) - 20004b7a 0000000e ecatslv.obj (.text:BackToInitTransition) - 20004b88 0000000e ethercat_slave_cm_hal.obj (.text:ESC_getTimer) - 20004b96 0000000e rtsv7M4_T_le_eabi.lib : copy_decompress_none.c.obj (.text:decompress:none:__TI_decompress_none) - 20004ba4 0000000c coeappl.obj (.text:COE_GetObjectDictionary) - 20004bb0 0000000c cia402appl.obj (.text:CiA402_TransitionAction) - 20004bbc 0000000c ethercat_slave_cm_hal.obj (.text:ESC_readBlock) - 20004bc8 0000000c ethercat_slave_cm_hal.obj (.text:ESC_readBlockISR) - 20004bd4 0000000c ethercat_slave_cm_hal.obj (.text:ESC_readByte) - 20004be0 0000000c ethercat_slave_cm_hal.obj (.text:ESC_readDWord) - 20004bec 0000000c ethercat_slave_cm_hal.obj (.text:ESC_readWord) - 20004bf8 0000000c ethercat_slave_cm_hal.obj (.text:ESC_writeBlock) - 20004c04 0000000c ethercat_slave_cm_hal.obj (.text:ESC_writeByte) - 20004c10 0000000c ethercat_slave_cm_hal.obj (.text:ESC_writeDWord) - 20004c1c 0000000c ethercat_slave_cm_hal.obj (.text:ESC_writeWord) - 20004c28 0000000a ethercat_slave_cm_hal.obj (.text:ESC_readByteISR) - 20004c32 0000000a ethercat_slave_cm_hal.obj (.text:ESC_readDWordISR) - 20004c3c 0000000a ethercat_slave_cm_hal.obj (.text:ESC_readWordISR) - 20004c46 0000000a ethercat_slave_cm_hal.obj (.text:ESC_timerIncPerMilliSec) - 20004c50 0000000a ethercat_slave_cm_hal.obj (.text:ESC_writeByteISR) - 20004c5a 0000000a ethercat_slave_cm_hal.obj (.text:ESC_writeDWordISR) - 20004c64 0000000a ethercat_slave_cm_hal.obj (.text:ESC_writeWordISR) - 20004c6e 00000008 ethercat_slave_cm_hal.obj (.text:ESC_resetESC) - 20004c76 00000008 rtsv7M4_T_le_eabi.lib : memory.c.obj (.text:malloc) - 20004c7e 00000004 cia402appl.obj (.text:APPL_StartOutputHandler) - 20004c82 00000004 cia402appl.obj (.text:APPL_StopInputHandler) - 20004c86 00000004 cia402appl.obj (.text:APPL_StopMailboxHandler) - 20004c8a 00000004 cia402appl.obj (.text:APPL_StopOutputHandler) - 20004c8e 00000004 f2838x_cm_system.obj (.text:F2838XCM_strcpy) - 20004c92 00000004 objdef.obj (.text:OBJ_GetObjDesc) - 20004c96 00000004 rtsv7M4_T_le_eabi.lib : pre_init.c.obj (.text:_system_pre_init) - 20004c9a 00000004 : exit.c.obj (.text:abort:abort) +.text.5 0 20000d40 00003954 + 20000d40 00000208 ecatslv.obj (.text:CheckSmSettings) + 20000f48 00000204 ecatslv.obj (.text:AL_ControlRes) + 2000114c 000001fc cia402appl.obj (.text:CiA402_StateMachine) + 20001348 000001b6 rtsv7M4_T_le_eabi.lib : fd_add_t2.asm.obj (.text) + 200014fe 0000017a ecatappl.obj (.text:PDI_Isr) + 20001678 0000015c sdoserv.obj (.text:SDOS_SdoInd) + 200017d4 00000152 cia402appl.obj (.text:Write0xF030) + 20001926 00000130 ecatslv.obj (.text:ECAT_Init) + 20001a56 00000130 ecatappl.obj (.text:Sync0_Isr) + 20001b86 00000118 ecatslv.obj (.text:ECAT_Main) + 20001c9e 0000010e objdef.obj (.text:OBJ_GetEntryOffset) + 20001dac 000000fe ecatslv.obj (.text:StopInputHandler) + 20001eaa 000000fc cia402appl.obj (.text:CiA402_Application) + 20001fa6 000000fc cia402appl.obj (.text:CiA402_DummyMotionControl) + 200020a2 000000fc mailbox.obj (.text:MBX_CheckAndCopyMailbox) + 2000219e 000000fc rtsv7M4_T_le_eabi.lib : fd_mul_t2.asm.obj (.text) + 2000229a 000000f6 ecatslv.obj (.text:DC_CheckWatchdog) + 20002390 000000f6 mailbox.obj (.text:MBX_StopMailboxHandler) + 20002486 000000f2 ethercat_slave_cm_hal.obj (.text:ESC_initHW) + 20002578 000000f2 mailbox.obj (.text:MBX_CopyToSendMailbox) + 2000266a 000000f0 ecatappl.obj (.text:MainLoop) + 2000275a 00000002 rtsv7M4_T_le_eabi.lib : _lock.c.obj (.text:_nop) + 2000275c 000000e4 : memory.c.obj (.text:free) + 20002840 000000d8 mailbox.obj (.text:MBX_Init) + 20002918 000000ca cia402appl.obj (.text:APPL_StartInputHandler) + 200029e2 000000c4 ecatappl.obj (.text:MainInit) + 20002aa6 000000bc objdef.obj (.text:OBJ_GetDesc) + 20002b62 000000ae mailbox.obj (.text:MBX_StartMailboxHandler) + 20002c10 000000ae sdoserv.obj (.text:SdoRes) + 20002cbe 000000a6 coeappl.obj (.text:COE_ObjInit) + 20002d64 000000a4 mailbox.obj (.text:MBX_MailboxReadInd) + 20002e08 000000a2 ecatappl.obj (.text:PDO_OutputMapping) + 20002eaa 0000009c objdef.obj (.text:OBJ_GetObjectList) + 20002f46 0000009c rtsv7M4_T_le_eabi.lib : memcpy_t2.asm.obj (.text) + 20002fe2 00000096 cia402appl.obj (.text:APPL_OutputMapping) + 20003078 0000008e cia402appl.obj (.text:APPL_InputMapping) + 20003106 0000008e ecatappl.obj (.text:ECAT_CheckTimer) + 20003194 00000086 ecatappl.obj (.text:PDO_InputMapping) + 2000321a 00000084 mailbox.obj (.text:MBX_MailboxSendReq) + 2000329e 00000002 startup_cm.obj (.text:defaultISR) + 200032a0 00000080 driverlib_cm.lib : interrupt.obj (.text:Interrupt_enable) + 20003320 0000007a ecatslv.obj (.text:CheckIfEcatError) + 2000339a 0000007a rtsv7M4_T_le_eabi.lib : fs_mul_t2.asm.obj (.text) + 20003414 0000007a : memset_t2.asm.obj (.text) + 2000348e 00000076 cm.obj (.text:CM_enableAllPeripherals) + 20003504 00000076 coeappl.obj (.text:COE_SyncTimeStamp) + 2000357a 00000072 ecatslv.obj (.text:StartOutputHandler) + 200035ec 00000070 driverlib_cm.lib : sysctl.obj (.text:SysCtl_resetPeripheral) + 2000365c 00000070 rtsv7M4_T_le_eabi.lib : memory.c.obj (.text:split) + 200036cc 0000006e ecatslv.obj (.text:SetALStatus) + 2000373a 00000068 rtsv7M4_T_le_eabi.lib : copy_decompress_lzss.c.obj (.text:decompress:lzss:__TI_decompress_lzss) + 200037a2 00000064 coeappl.obj (.text:COE_AddObjectToDic) + 20003806 00000062 mailbox.obj (.text:MBX_MailboxRepeatReq) + 20003868 00000060 rtsv7M4_T_le_eabi.lib : fs_cmp_t2.asm.obj (.text:__aeabi_cfcmple) + 200038c8 0000005e objdef.obj (.text:OBJ_GetNoOfObjects) + 20003926 0000005c cia402appl.obj (.text:CiA402_DeallocateAxis) + 20003982 00000002 startup_cm.obj (.text:faultISR) + 20003984 0000005c driverlib_cm.lib : escss.obj (.text:ESCSS_configureSync0Connections) + 200039e0 0000005c : escss.obj (.text:ESCSS_configureSync1Connections) + 20003a3c 0000005c : interrupt.obj (.text:Interrupt_registerHandler) + 20003a98 0000005c mailbox.obj (.text:MBX_MailboxWriteInd) + 20003af4 00000058 objdef.obj (.text:OBJ_GetObjectLength) + 20003b4c 00000052 ecatappl.obj (.text:Sync1_Isr) + 20003b9e 00000050 ecatappl.obj (.text:HandleCycleTimeMeasurement) + 20003bee 00000050 cia402appl.obj (.text:main) + 20003c3e 0000004e coeappl.obj (.text:Read0x10F8) + 20003c8c 00000048 mailbox.obj (.text:MBX_Main) + 20003cd4 00000048 driverlib_cm.lib : sysctl.obj (.text:SysCtl_enablePeripheral) + 20003d1c 00000048 rtsv7M4_T_le_eabi.lib : fd_toi_t2.asm.obj (.text) + 20003d64 00000046 coeappl.obj (.text:COE_UpdateSyncErrorStatus) + 20003daa 00000044 ecatcoe.obj (.text:COE_ContinueInd) + 20003dee 00000002 startup_cm.obj (.text:nmiISR) + 20003df0 00000044 rtsv7M4_T_le_eabi.lib : autoinit.c.obj (.text:__TI_auto_init_nobinit_nopinit:__TI_auto_init_nobinit_nopinit) + 20003e34 0000003e foeappl.obj (.text:FOE_Data) + 20003e72 0000003c coeappl.obj (.text:COE_RemoveDicEntry) + 20003eae 0000003a driverlib_cm.lib : escss.obj (.text:ESCSS_configureEEPROMSize) + 20003ee8 0000003a objdef.obj (.text:OBJ_CopyNumberToString) + 20003f22 0000003a objdef.obj (.text:OBJ_GetEntryDesc) + 20003f5c 00000038 rtsv7M4_T_le_eabi.lib : fs_tod_t2.asm.obj (.text) + 20003f94 00000038 : fs_toi_t2.asm.obj (.text) + 20003fcc 00000036 : strncpy.c.obj (.text:strncpy) + 20004002 00000034 ecatappl.obj (.text:GetSystemTimeDelay) + 20004036 00000032 ecatappl.obj (.text:ECAT_Application) + 20004068 00000032 ethercat_slave_cm_hal.obj (.text:ESC_setLed) + 2000409a 0000002e ecatslv.obj (.text:DisableSyncManChannel) + 200040c8 0000002e ecatslv.obj (.text:EnableSyncManChannel) + 200040f6 0000002e rtsv7M4_T_le_eabi.lib : i_tofd_t2.asm.obj (.text) + 20004124 0000002c coeappl.obj (.text:COE_ObjDictionaryInit) + 20004150 0000002c mailbox.obj (.text:PutInMbxQueue) + 2000417c 00000028 cm.obj (.text:CM_init) + 200041a4 00000028 ecatcoe.obj (.text:COE_ServiceInd) + 200041cc 00000028 ethercat_slave_cm_hal.obj (.text:ESC_loadedCheckEEPROM) + 200041f4 00000028 foeappl.obj (.text:FOE_Ack) + 2000421c 00000028 foeappl.obj (.text:FOE_Read) + 20004244 00000028 rtsv7M4_T_le_eabi.lib : memory.c.obj (.text:free_list_insert) + 2000426c 00000026 mailbox.obj (.text:GetOutOfMbxQueue) + 20004292 00000026 ecatslv.obj (.text:UpdateEEPROMLoadedState) + 200042b8 00000024 coeappl.obj (.text:AddObjectsToObjDictionary) + 200042dc 00000024 driverlib_cm.lib : escss.obj (.text:ESCSS_isConfigurationLockEnabled) + 20004300 00000024 rtsv7M4_T_le_eabi.lib : boot_cortex_m.c.obj (.text:_c_int00_noargs:_c_int00_noargs) + 20004324 00000024 : u_tofs_t2.asm.obj (.text) + 20004348 00000022 ecatfoe.obj (.text:FOE_Init) + 2000436a 00000020 cia402appl.obj (.text:APPL_Application) + 2000438a 00000020 coeappl.obj (.text:COE_ClearObjDictionary) + 200043aa 0000001e ethercat_slave_cm_hal.obj (.text:ESC_clearTimer) + 200043c8 0000001e foeappl.obj (.text:FOE_Write) + 200043e6 0000001c ecatfoe.obj (.text:FOE_ContinueInd) + 20004402 0000001c ecatslv.obj (.text:GetSyncMan) + 2000441e 0000001c mailbox.obj (.text:MailboxServiceInd) + 2000443a 0000001c ecatslv.obj (.text:ResetALEventMask) + 20004456 0000001c ecatslv.obj (.text:SetALEventMask) + 20004472 0000001c rtsv7M4_T_le_eabi.lib : copy_zero_init.c.obj (.text:decompress:ZI:__TI_zero_init_nomemset:__TI_zero_init_nomemset) + 2000448e 00000002 --HOLE-- [fill = 0] + 20004490 0000001c : memory.c.obj (.text:free_list_remove) + 200044ac 0000001a ethercat_slave_cm_hal.obj (.text:ESC_applicationLayerHandler) + 200044c6 0000001a ethercat_slave_cm_hal.obj (.text:ESC_applicationSync0Handler) + 200044e0 0000001a ethercat_slave_cm_hal.obj (.text:ESC_applicationSync1Handler) + 200044fa 0000001a objdef.obj (.text:OBJ_GetObjectHandle) + 20004514 00000018 ecatslv.obj (.text:StopOutputHandler) + 2000452c 00000014 rtsv7M4_T_le_eabi.lib : strlen.c.obj (.text:strlen) + 20004540 00000012 foeappl.obj (.text:FOE_Error) + 20004552 00000010 ethercat_slave_cm_hal.obj (.text:ESC_writeBlockISR) + 20004562 0000000e ecatslv.obj (.text:BackToInitTransition) + 20004570 0000000e ecatcoe.obj (.text:COE_Init) + 2000457e 0000000e ethercat_slave_cm_hal.obj (.text:ESC_getTimer) + 2000458c 0000000e rtsv7M4_T_le_eabi.lib : copy_decompress_none.c.obj (.text:decompress:none:__TI_decompress_none) + 2000459a 0000000c coeappl.obj (.text:COE_GetObjectDictionary) + 200045a6 0000000c cia402appl.obj (.text:CiA402_TransitionAction) + 200045b2 0000000c ethercat_slave_cm_hal.obj (.text:ESC_readBlock) + 200045be 0000000c ethercat_slave_cm_hal.obj (.text:ESC_readBlockISR) + 200045ca 0000000c ethercat_slave_cm_hal.obj (.text:ESC_readByte) + 200045d6 0000000c ethercat_slave_cm_hal.obj (.text:ESC_readDWord) + 200045e2 0000000c ethercat_slave_cm_hal.obj (.text:ESC_readWord) + 200045ee 0000000c ethercat_slave_cm_hal.obj (.text:ESC_writeBlock) + 200045fa 0000000c ethercat_slave_cm_hal.obj (.text:ESC_writeByte) + 20004606 0000000c ethercat_slave_cm_hal.obj (.text:ESC_writeDWord) + 20004612 0000000c ethercat_slave_cm_hal.obj (.text:ESC_writeWord) + 2000461e 0000000a ethercat_slave_cm_hal.obj (.text:ESC_readByteISR) + 20004628 0000000a ethercat_slave_cm_hal.obj (.text:ESC_readDWordISR) + 20004632 0000000a ethercat_slave_cm_hal.obj (.text:ESC_readWordISR) + 2000463c 0000000a ethercat_slave_cm_hal.obj (.text:ESC_timerIncPerMilliSec) + 20004646 0000000a ethercat_slave_cm_hal.obj (.text:ESC_writeByteISR) + 20004650 0000000a ethercat_slave_cm_hal.obj (.text:ESC_writeDWordISR) + 2000465a 0000000a ethercat_slave_cm_hal.obj (.text:ESC_writeWordISR) + 20004664 00000008 ethercat_slave_cm_hal.obj (.text:ESC_resetESC) + 2000466c 00000008 foeappl.obj (.text:FOE_Busy) + 20004674 00000008 rtsv7M4_T_le_eabi.lib : memory.c.obj (.text:malloc) + 2000467c 00000004 F2838x CM EtherCAT Slave.obj (.text:APPL_StopMailboxHandler) + 20004680 00000004 cia402appl.obj (.text:APPL_StopOutputHandler) + 20004684 00000004 f2838x_cm_system.obj (.text:F2838XCM_strcpy) + 20004688 00000004 objdef.obj (.text:OBJ_GetObjDesc) + 2000468c 00000004 rtsv7M4_T_le_eabi.lib : pre_init.c.obj (.text:_system_pre_init) + 20004690 00000004 : exit.c.obj (.text:abort:abort) MODULE SUMMARY - Module code ro data rw data - ------ ---- ------- ------- + Module code ro data rw data + ------ ---- ------- ------- .\ - cia402appl.obj 3410 1075 1926 - ecatslv.obj 4950 0 69 - objdef.obj 3228 32 164 - sdoserv.obj 3140 120 69 - coeappl.obj 980 1035 599 - ecatappl.obj 2102 0 170 - mailbox.obj 1674 0 136 - ethercat_slave_cm_hal.obj 658 0 0 - startup_cm.obj 12 320 0 - ecatcoe.obj 130 0 4 - f2838x_cm_system.obj 4 0 0 - +--+----------------------------+-------+---------+---------+ - Total: 20288 2582 3137 - + cia402appl.obj 3342 1104 1926 + ecatslv.obj 4998 0 68 + objdef.obj 2814 32 164 + ecatappl.obj 2268 0 198 + coeappl.obj 718 1091 599 + mailbox.obj 1798 0 136 + sdoserv.obj 1084 120 22 + ethercat_slave_cm_hal.obj 658 0 0 + ecatfoe.obj 628 0 20 + startup_cm.obj 12 320 0 + foeappl.obj 198 0 0 + ecatcoe.obj 122 0 4 + F2838x CM EtherCAT Slave.obj 10 0 0 + f2838x_cm_system.obj 4 0 0 + +--+------------------------------+-------+---------+---------+ + Total: 18654 2667 3137 + .\device\ - cm.obj 158 0 0 - +--+----------------------------+-------+---------+---------+ - Total: 158 0 0 - + cm.obj 158 0 0 + +--+------------------------------+-------+---------+---------+ + Total: 158 0 0 + C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/ccs/Debug/driverlib_cm.lib - escss.obj 278 0 0 - interrupt.obj 220 0 0 - sysctl.obj 184 0 0 - +--+----------------------------+-------+---------+---------+ - Total: 682 0 0 - + escss.obj 278 0 0 + interrupt.obj 220 0 0 + sysctl.obj 184 0 0 + +--+------------------------------+-------+---------+---------+ + Total: 682 0 0 + C:\ti\ccs1240\ccs\tools\compiler\ti-cgt-arm_20.2.7.LTS\lib\rtsv7M4_T_le_eabi.lib - memory.c.obj 672 0 8 - fd_add_t2.asm.obj 438 0 0 - fd_mul_t2.asm.obj 252 0 0 - memcpy_t2.asm.obj 156 0 0 - fs_mul_t2.asm.obj 122 0 0 - memset_t2.asm.obj 122 0 0 - copy_decompress_lzss.c.obj 104 0 0 - fs_cmp_t2.asm.obj 96 0 0 - fd_toi_t2.asm.obj 72 0 0 - autoinit.c.obj 68 0 0 - fs_tod_t2.asm.obj 56 0 0 - fs_toi_t2.asm.obj 56 0 0 - strncpy.c.obj 54 0 0 - i_tofd_t2.asm.obj 46 0 0 - boot_cortex_m.c.obj 36 0 0 - u_tofs_t2.asm.obj 36 0 0 - copy_zero_init.c.obj 28 0 0 - strlen.c.obj 20 0 0 - copy_decompress_none.c.obj 14 0 0 - _lock.c.obj 2 0 8 - exit.c.obj 4 0 0 - pre_init.c.obj 4 0 0 - +--+----------------------------+-------+---------+---------+ - Total: 2458 0 16 - - Heap: 0 0 4096 - Stack: 0 0 512 - Linker Generated: 0 868 0 - +--+----------------------------+-------+---------+---------+ - Grand Total: 23586 3450 7761 + memory.c.obj 672 0 8 + fd_add_t2.asm.obj 438 0 0 + fd_mul_t2.asm.obj 252 0 0 + memcpy_t2.asm.obj 156 0 0 + fs_mul_t2.asm.obj 122 0 0 + memset_t2.asm.obj 122 0 0 + copy_decompress_lzss.c.obj 104 0 0 + fs_cmp_t2.asm.obj 96 0 0 + fd_toi_t2.asm.obj 72 0 0 + autoinit.c.obj 68 0 0 + fs_tod_t2.asm.obj 56 0 0 + fs_toi_t2.asm.obj 56 0 0 + strncpy.c.obj 54 0 0 + i_tofd_t2.asm.obj 46 0 0 + boot_cortex_m.c.obj 36 0 0 + u_tofs_t2.asm.obj 36 0 0 + copy_zero_init.c.obj 28 0 0 + strlen.c.obj 20 0 0 + copy_decompress_none.c.obj 14 0 0 + _lock.c.obj 2 0 8 + exit.c.obj 4 0 0 + pre_init.c.obj 4 0 0 + +--+------------------------------+-------+---------+---------+ + Total: 2458 0 16 + + Heap: 0 0 4096 + Stack: 0 0 512 + Linker Generated: 0 875 0 + +--+------------------------------+-------+---------+---------+ + Grand Total: 21952 3542 7761 LINKER GENERATED COPY TABLES -__TI_cinit_table @ 20004ff8 records: 2, size/record: 8, table size: 16 - .data: load addr=20004ca0, load size=00000340 bytes, run addr=1fffc8e0, run size=0000086e bytes, compression=lzss - .bss: load addr=20004ff0, load size=00000008 bytes, run addr=1fffd150, run size=000003e6 bytes, compression=zero_init +__TI_cinit_table @ 200049f8 records: 2, size/record: 8, table size: 16 + .data: load addr=20004698, load size=00000347 bytes, run addr=1fffc938, run size=0000086e bytes, compression=lzss + .bss: load addr=200049f0, load size=00000008 bytes, run addr=1fffd1a8, run size=000003e7 bytes, compression=zero_init LINKER GENERATED HANDLER TABLE -__TI_handler_table @ 20004fe0 records: 3, size/record: 4, table size: 12 +__TI_handler_table @ 200049e0 records: 3, size/record: 4, table size: 12 index: 0, handler: __TI_decompress_lzss index: 1, handler: __TI_decompress_none index: 2, handler: __TI_zero_init @@ -574,404 +579,402 @@ GLOBAL SYMBOLS: SORTED ALPHABETICALLY BY Name address name ------- ---- -1ffff8ab AL_ControlInd -2000159f AL_ControlRes -1ffffffd APPL_AckErrorInd -20000be1 APPL_Application -20000d41 APPL_GenerateMapping -1fffc8dd APPL_GetDeviceID -200037cf APPL_InputMapping -20003739 APPL_OutputMapping -20002eef APPL_StartInputHandler -1fffdffb APPL_StartMailboxHandler -20004c7f APPL_StartOutputHandler -20004c83 APPL_StopInputHandler -20004c87 APPL_StopMailboxHandler -20004c8b APPL_StopOutputHandler -2000492d AddObjectsToObjDictionary -1fffcea8 ApplicationObjDic -20004b7b BackToInitTransition -20004c9b C$$EXIT -20003ce9 CM_enableAllPeripherals -20004841 CM_init -20003ead COE_AddObjectToDic -200049e1 COE_ClearObjDictionary -200044e9 COE_ContinueInd -20004ba5 COE_GetObjectDictionary -20004b15 COE_Init -200032a1 COE_Main -200047e9 COE_ObjDictionaryInit -200025a7 COE_ObjInit -20004569 COE_RemoveDicEntry -20004869 COE_ServiceInd -20003d5f COE_SyncTimeStamp -200043d5 COE_UpdateSyncErrorStatus -20003b7b CheckIfEcatError -2000119b CheckSmSettings -20003075 CheckSyncTypeValue -200021b7 CiA402_Application -20004091 CiA402_DeallocateAxis -200022b3 CiA402_DummyMotionControl -1ffffcc9 CiA402_Init -20004951 CiA402_LocalError -200013a3 CiA402_StateMachine -20004bb1 CiA402_TransitionAction -20002797 DC_CheckWatchdog -1fffc8e0 DefCiA402AxisObjDic -1fffcfc0 DefCiA402ObjectValues -2000475f DisableSyncManChannel -2000452b ECAT_Application -2000385d ECAT_CheckTimer -20001c57 ECAT_Init -20001eab ECAT_Main -20001771 ECAT_SetLedIndication -200045a5 ESCSS_configureEEPROMSize -200040ed ESCSS_configureSync0Connections -20004149 ESCSS_configureSync1Connections -20004aad ESC_applicationLayerHandler -20004ac7 ESC_applicationSync0Handler -20004ae1 ESC_applicationSync1Handler -20004a01 ESC_clearTimer -20004b89 ESC_getTimer -20002983 ESC_initHW -20004891 ESC_loadedCheckEEPROM -20004bbd ESC_readBlock -20004bc9 ESC_readBlockISR -20004bd5 ESC_readByte -20004c29 ESC_readByteISR -20004be1 ESC_readDWord -20004c33 ESC_readDWordISR -20004bed ESC_readWord -20004c3d ESC_readWordISR -20001fb7 ESC_releaseHW -20004c6f ESC_resetESC -2000472d ESC_setLed -20004c47 ESC_timerIncPerMilliSec -20004bf9 ESC_writeBlock -20004b6b ESC_writeBlockISR -20004c05 ESC_writeByte -20004c51 ESC_writeByteISR -20004c11 ESC_writeDWord -20004c5b ESC_writeDWordISR -20004c1d ESC_writeWord -20004c65 ESC_writeWordISR -1fffd4d4 EcatWdValue -1fffd0ee EepromLoaded -2000478d EnableSyncManChannel -1fffd4d6 EsmTimeoutCounter -20004c8f F2838XCM_strcpy -1fffccc8 GenObjDic -200048e1 GetOutOfMbxQueue -20004a1f GetSyncMan -200046f9 GetSystemTimeDelay -2000425d HandleCycleTimeMeasurement -20003a7d Interrupt_enable -200041a5 Interrupt_registerHandler -1fffd4d8 LatchInputSync0Counter -1fffd4da LatchInputSync0Value -1fffd150 LocalAxes -200023af MBX_CheckAndCopyMailbox -2000340d MBX_CopyToSendMailbox -20002e17 MBX_Init -200038eb MBX_MailboxReadInd -20003f11 MBX_MailboxRepeatReq -200039f7 MBX_MailboxSendReq -20004201 MBX_MailboxWriteInd -200042fb MBX_Main -200034b7 MBX_StartMailboxHandler -2000288d MBX_StopMailboxHandler -20004b59 MailboxServiceInd -20003afd MainInit -20002d35 MainLoop -200045df OBJ_CopyNumberToString -20002fb9 OBJ_GetDesc -20004619 OBJ_GetEntryDesc -2000269f OBJ_GetEntryOffset -20004033 OBJ_GetNoOfObjects -20004c93 OBJ_GetObjDesc -20004afb OBJ_GetObjectHandle -2000312f OBJ_GetObjectLength -1fffdf5f OBJ_GetObjectList -1fffdbe5 OBJ_Read -1ffff001 OBJ_Write -1fffd0c8 ObjDicList -20000aa1 PDI_Isr -20003971 PDO_InputMapping -20003559 PDO_OutputMapping -20004815 PutInMbxQueue -200042ad Read0x10F8 -20004a3b ResetALEventMask -1ffff46f SDOS_SdoInd +1ffff001 AL_ControlInd +20000f49 AL_ControlRes +1ffffef7 APPL_AckErrorInd +2000436b APPL_Application +1ffffcc5 APPL_GenerateMapping +20003079 APPL_InputMapping +20002fe3 APPL_OutputMapping +20002919 APPL_StartInputHandler +1fffc935 APPL_StartMailboxHandler +1ffffff9 APPL_StartOutputHandler +20000bfb APPL_StopInputHandler +2000467d APPL_StopMailboxHandler +20004681 APPL_StopOutputHandler +200042b9 AddObjectsToObjDictionary +1fffcf00 ApplicationObjDic +20004563 BackToInitTransition +20004691 C$$EXIT +2000348f CM_enableAllPeripherals +2000417d CM_init +200037a3 COE_AddObjectToDic +2000438b COE_ClearObjDictionary +20003dab COE_ContinueInd +2000459b COE_GetObjectDictionary +20004571 COE_Init +1ffffffd COE_Main +20004125 COE_ObjDictionaryInit +20002cbf COE_ObjInit +20003e73 COE_RemoveDicEntry +200041a5 COE_ServiceInd +20003505 COE_SyncTimeStamp +20003d65 COE_UpdateSyncErrorStatus +20003321 CheckIfEcatError +20000d41 CheckSmSettings +1fffdf45 CheckSyncTypeValue +20001eab CiA402_Application +20003927 CiA402_DeallocateAxis +20001fa7 CiA402_DummyMotionControl +1ffff7cb CiA402_Init +2000114d CiA402_StateMachine +200045a7 CiA402_TransitionAction +2000229b DC_CheckWatchdog +UNDEFED DebugP_log +1fffc938 DefCiA402AxisObjDic +1fffd018 DefCiA402ObjectValues +2000409b DisableSyncManChannel +20004037 ECAT_Application +20003107 ECAT_CheckTimer +20001927 ECAT_Init +20001b87 ECAT_Main +20000a3b ECAT_SetLedIndication +20003eaf ESCSS_configureEEPROMSize +20003985 ESCSS_configureSync0Connections +200039e1 ESCSS_configureSync1Connections +200044ad ESC_applicationLayerHandler +200044c7 ESC_applicationSync0Handler +200044e1 ESC_applicationSync1Handler +200043ab ESC_clearTimer +2000457f ESC_getTimer +20002487 ESC_initHW +200041cd ESC_loadedCheckEEPROM +200045b3 ESC_readBlock +200045bf ESC_readBlockISR +200045cb ESC_readByte +2000461f ESC_readByteISR +200045d7 ESC_readDWord +20004629 ESC_readDWordISR +200045e3 ESC_readWord +20004633 ESC_readWordISR +20000bff ESC_releaseHW +20004665 ESC_resetESC +20004069 ESC_setLed +2000463d ESC_timerIncPerMilliSec +200045ef ESC_writeBlock +20004553 ESC_writeBlockISR +200045fb ESC_writeByte +20004647 ESC_writeByteISR +20004607 ESC_writeDWord +20004651 ESC_writeDWordISR +20004613 ESC_writeWord +2000465b ESC_writeWordISR +1fffd538 EcatWdValue +1fffd146 EepromLoaded +200040c9 EnableSyncManChannel +1fffd53a EsmTimeoutCounter +20004685 F2838XCM_strcpy +200041f5 FOE_Ack +2000466d FOE_Busy +200043e7 FOE_ContinueInd +20003e35 FOE_Data +20004541 FOE_Error +20004349 FOE_Init +2000421d FOE_Read +1ffffa8f FOE_ServiceInd +200043c9 FOE_Write +1fffcd20 GenObjDic +2000426d GetOutOfMbxQueue +20004403 GetSyncMan +20004003 GetSystemTimeDelay +20003b9f HandleCycleTimeMeasurement +200032a1 Interrupt_enable +20003a3d Interrupt_registerHandler +1fffd53c LatchInputSync0Counter +1fffd53e LatchInputSync0Value +1fffd1a8 LocalAxes +200020a3 MBX_CheckAndCopyMailbox +20002579 MBX_CopyToSendMailbox +20002841 MBX_Init +20002d65 MBX_MailboxReadInd +20003807 MBX_MailboxRepeatReq +2000321b MBX_MailboxSendReq +20003a99 MBX_MailboxWriteInd +20003c8d MBX_Main +20002b63 MBX_StartMailboxHandler +20002391 MBX_StopMailboxHandler +2000441f MailboxServiceInd +200029e3 MainInit +2000266b MainLoop +20003ee9 OBJ_CopyNumberToString +20002aa7 OBJ_GetDesc +20003f23 OBJ_GetEntryDesc +20001c9f OBJ_GetEntryOffset +200038c9 OBJ_GetNoOfObjects +20004689 OBJ_GetObjDesc +200044fb OBJ_GetObjectHandle +20003af5 OBJ_GetObjectLength +20002eab OBJ_GetObjectList +1fffdc5b OBJ_Read +1ffff41f OBJ_Write +1fffd120 ObjDicList +200014ff PDI_Isr +20003195 PDO_InputMapping +20002e09 PDO_OutputMapping +20004151 PutInMbxQueue +20003c3f Read0x10F8 +2000443b ResetALEventMask +20001679 SDOS_SdoInd 20000809 SDOS_SdoInfoInd -20002b65 SDOS_SdoRes -1fffd0ed SMActivate -200031e9 SODS_ClearPendingResponse -20003357 SdoRes -20004a57 SetALEventMask -200035fb SetALStatus -1fffd739 StartInputHandler -20003f73 StartOutputHandler -200020b9 StopInputHandler -20004b2d StopOutputHandler -1fffd4dc Sync0WdCounter -1fffd4de Sync0WdValue -20001d91 Sync0_Isr -1fffd4e0 Sync1WdCounter -1fffd4e2 Sync1WdValue -2000441b Sync1_Isr -1fffd478 SyncManInfo -20004345 SysCtl_enablePeripheral -1fffff8d SysCtl_resetPeripheral -20004907 UpdateEEPROMLoadedState -20001ae7 Write0xF030 -1fffd738 __STACK_END +1fffd145 SMActivate +20002c11 SdoRes +20004457 SetALEventMask +200036cd SetALStatus +1fffd791 StartInputHandler +2000357b StartOutputHandler +20001dad StopInputHandler +20004515 StopOutputHandler +1fffd540 Sync0WdCounter +1fffd542 Sync0WdValue +20001a57 Sync0_Isr +1fffd544 Sync1WdCounter +1fffd546 Sync1WdValue +20003b4d Sync1_Isr +1fffd4d0 SyncManInfo +20003cd5 SysCtl_enablePeripheral +200035ed SysCtl_resetPeripheral +20004293 UpdateEEPROMLoadedState +200017d5 Write0xF030 +1fffd790 __STACK_END 00000200 __STACK_SIZE 00001000 __SYSMEM_SIZE -20004ff8 __TI_CINIT_Base -20005008 __TI_CINIT_Limit -20004fe0 __TI_Handler_Table_Base -20004fec __TI_Handler_Table_Limit -20004461 __TI_auto_init_nobinit_nopinit -20003e45 __TI_decompress_lzss -20004b97 __TI_decompress_none +200049f8 __TI_CINIT_Base +20004a08 __TI_CINIT_Limit +200049e0 __TI_Handler_Table_Base +200049ec __TI_Handler_Table_Limit +20003df1 __TI_auto_init_nobinit_nopinit +2000373b __TI_decompress_lzss +2000458d __TI_decompress_none ffffffff __TI_pprof_out_hndl ffffffff __TI_prof_data_size ffffffff __TI_prof_data_start -20004ca0 __TI_static_base__ -20004a73 __TI_zero_init_nomemset -20003fd3 __aeabi_cfcmpeq -20003fd3 __aeabi_cfcmple -2000438d __aeabi_d2iz -2000193b __aeabi_dadd -200024ab __aeabi_dmul -20001931 __aeabi_dsub -20004653 __aeabi_f2d -2000468b __aeabi_f2iz -20003bf5 __aeabi_fmul -200047bb __aeabi_i2d -20003c6f __aeabi_memclr -20003c6f __aeabi_memclr4 -20003c6f __aeabi_memclr8 -2000369d __aeabi_memcpy -2000369d __aeabi_memcpy4 -2000369d __aeabi_memcpy8 -20003c71 __aeabi_memset -20003c71 __aeabi_memset4 -20003c71 __aeabi_memset8 -200049bd __aeabi_ui2f +20004698 __TI_static_base__ +20004473 __TI_zero_init_nomemset +20003869 __aeabi_cfcmpeq +20003869 __aeabi_cfcmple +20003d1d __aeabi_d2iz +20001353 __aeabi_dadd +2000219f __aeabi_dmul +20001349 __aeabi_dsub +20003f5d __aeabi_f2d +20003f95 __aeabi_f2iz +2000339b __aeabi_fmul +200040f7 __aeabi_i2d +20003415 __aeabi_memclr +20003415 __aeabi_memclr4 +20003415 __aeabi_memclr8 +20002f47 __aeabi_memcpy +20002f47 __aeabi_memcpy4 +20002f47 __aeabi_memcpy8 +20003417 __aeabi_memset +20003417 __aeabi_memset4 +20003417 __aeabi_memset8 +20004325 __aeabi_ui2f ffffffff __binit__ ffffffff __c_args__ UNDEFED __mpu_init -1fffd538 __stack +1fffd590 __stack 1fffc000 __start___llvm_prf_cnts 1fffc000 __stop___llvm_prf_cnts -20004999 _c_int00_noargs -1fffd12c _lock -20002c4f _nop +20004301 _c_int00_noargs +1fffd184 _lock +2000275b _nop 1fffe000 _sys_memory UNDEFED _system_post_cinit -20004c97 _system_pre_init -1fffd130 _unlock -1fffc7de aName0x1000 -1fffc7a8 aName0x1001 -1fffc7ea aName0x1008 -1fffc746 aName0x1009 -1fffc757 aName0x100A -1fffc447 aName0x1018 -1fffc408 aName0x10F1 -1fffc690 aName0x10F8 -1fffc768 aName0x1600 -1fffc7f6 aName0x1601 -1fffc802 aName0x1602 -1fffc778 aName0x1A00 -1fffc80e aName0x1A01 -1fffc81a aName0x1A02 -1fffc6b6 aName0x1C00 -1fffc7b7 aName0x1C12 -1fffc7c4 aName0x1C13 +2000468d _system_pre_init +1fffd188 _unlock +1fffc832 aName0x1000 +1fffc7fc aName0x1001 +1fffc83e aName0x1008 +1fffc516 aName0x1009 +1fffc534 aName0x100A +1fffc3a5 aName0x1018 +1fffc46e aName0x10F1 +1fffc705 aName0x10F8 +1fffc7bc aName0x1600 +1fffc84a aName0x1601 +1fffc856 aName0x1602 +1fffc7cc aName0x1A00 +1fffc862 aName0x1A01 +1fffc86e aName0x1A02 +1fffc72b aName0x1C00 +1fffc80b aName0x1C12 +1fffc818 aName0x1C13 1fffc000 aName0x1C32 -1fffc100 aName0x1C33 -1fffc84a aName0x603F -1fffc7d1 aName0x6040 -1fffc826 aName0x6041 -1fffc5bc aName0x605A -1fffc62a aName0x605B -1fffc4e8 aName0x605C -1fffc654 aName0x605E -1fffc6a3 aName0x6060 -1fffc541 aName0x6061 -1fffc5d2 aName0x6064 -1fffc5e8 aName0x606C -1fffc668 aName0x6077 -1fffc788 aName0x607A -1fffc3c8 aName0x607D -1fffc5fe aName0x6085 -1fffc340 aName0x60C2 -1fffc798 aName0x60FF -1fffc614 aName0x6502 -1fffc386 aName0xF000 -1fffc67c aName0xF010 -1fffc524 aName0xF030 -1fffc63f aName0xF050 -1fffd2f0 aPdInputData -1fffd334 aPdOutputData -1fffd468 aSdoInfoHeader -1fffd0e0 aSubindexDesc -20004c9b abort -1fffd070 acDevicename -1fffd089 acHardwareversion -1fffd09d acSoftwareversion -20001fb9 aligned_alloc -1fffc506 asEntryDesc0x1018 -1fffc6c8 asEntryDesc0x10F1 -1fffc480 asEntryDesc0x1600 -1fffc55c asEntryDesc0x1601 -1fffc574 asEntryDesc0x1602 -1fffc4a4 asEntryDesc0x1A00 -1fffc58c asEntryDesc0x1A01 -1fffc5a4 asEntryDesc0x1A02 -1fffc832 asEntryDesc0x1C00 -1fffc200 asEntryDesc0x1C3x -1fffc6da asEntryDesc0x607D -1fffc6ec asEntryDesc0x60C2 -1fffc6fe asEntryDesc0xF000 -1fffc710 asEntryDesc0xF010 -1fffc722 asEntryDesc0xF030 -1fffc734 asEntryDesc0xF050 -1fffc83e asPDOAssignEntryDesc -1fffd50e b32BitDc -1fffd50f b3BufferMode -1fffd510 bApplEsmPending -1fffd511 bDcRunning -1fffd512 bDcSyncActive -1fffd513 bEcatFirstOutputsReceived -1fffd514 bEcatInputUpdateRunning -1fffd515 bEcatOutputUpdateRunning -1fffd516 bEcatWaitForAlControlRes -1fffd517 bEscIntEnabled -1fffd518 bEtherCATErrorLed -1fffd519 bEtherCATRunLed -1fffd51a bExplicitDevIdRequested -1fffd120 bInitFinished -1fffd51b bLocalErrorFlag -1fffd51c bMbxRepeatToggle -1fffd51d bMbxRunning -1fffd51e bMinCycleTimeMeasurementStarted -1fffd51f bNoMbxMemoryAvailable -1fffd520 bReceiveMbxIsLocked -1fffd521 bRunApplication -1fffd0b1 bSdoInWork -1fffd522 bSdoSegAccess -1fffd523 bSdoSegFollows -1fffd524 bSdoSegLastToggle -1fffd525 bSendMbxIsFull -1fffd526 bSmSyncSequenceValid -1fffd527 bStoreCompleteAccess -1fffd528 bSyncSetByUser -1fffd529 bWdTrigger +1fffc108 aName0x1C33 +1fffc89e aName0x603F +1fffc825 aName0x6040 +1fffc87a aName0x6041 +1fffc65a aName0x605A +1fffc6b3 aName0x605B +1fffc552 aName0x605C +1fffc5ab aName0x605E +1fffc718 aName0x6060 +1fffc5c6 aName0x6061 +1fffc671 aName0x6064 +1fffc687 aName0x606C +1fffc6dd aName0x6077 +1fffc7dc aName0x607A +1fffc42e aName0x607D +1fffc5e1 aName0x6085 +1fffc350 aName0x60C2 +1fffc7ec aName0x60FF +1fffc69d aName0x6502 +1fffc3ec aName0xF000 +1fffc6f1 aName0xF010 +1fffc58e aName0xF030 +1fffc6c8 aName0xF050 +1fffd348 aPdInputData +1fffd38c aPdOutputData +1fffd4c0 aSdoInfoHeader +1fffd138 aSubindexDesc +20004691 abort +1fffd0c8 acDevicename +1fffd0e1 acHardwareversion +1fffd0f5 acSoftwareversion +1ffffef9 aligned_alloc +1fffc570 asEntryDesc0x1018 +1fffc73e asEntryDesc0x10F1 +1fffc4ae asEntryDesc0x1600 +1fffc5fa asEntryDesc0x1601 +1fffc612 asEntryDesc0x1602 +1fffc4d2 asEntryDesc0x1A00 +1fffc62a asEntryDesc0x1A01 +1fffc642 asEntryDesc0x1A02 +1fffc886 asEntryDesc0x1C00 +1fffc210 asEntryDesc0x1C3x +1fffc750 asEntryDesc0x607D +1fffc762 asEntryDesc0x60C2 +1fffc774 asEntryDesc0xF000 +1fffc786 asEntryDesc0xF010 +1fffc798 asEntryDesc0xF030 +1fffc7aa asEntryDesc0xF050 +1fffc892 asPDOAssignEntryDesc +1fffd570 b32BitDc +1fffd571 b3BufferMode +1fffd572 bApplEsmPending +1fffd573 bDcRunning +1fffd574 bDcSyncActive +1fffd575 bEcatFirstOutputsReceived +1fffd576 bEcatInputUpdateRunning +1fffd577 bEcatOutputUpdateRunning +1fffd578 bEcatWaitForAlControlRes +1fffd579 bEscIntEnabled +1fffd57a bEtherCATErrorLed +1fffd57b bEtherCATRunLed +1fffd178 bInitFinished +1fffd57c bMbxRepeatToggle +1fffd57d bMbxRunning +1fffd57e bMinCycleTimeMeasurementStarted +1fffd57f bNoMbxMemoryAvailable +1fffd580 bReceiveMbxIsLocked +1fffd581 bRunApplication +1fffd582 bSendMbxIsFull +1fffd583 bSmSyncSequenceValid +1fffd584 bSyncSetByUser +1fffd585 bWdTrigger ffffffff binit -1fffc2c8 cAbortCode -1fffc4c8 cBitMask -20002c51 free -1fffd4e4 i16WaitForPllRunningCnt -1fffd4e6 i16WaitForPllRunningTimeout -200044a5 main -20004c77 malloc -20001fb9 memalign -2000369d memcpy -20003c77 memset -1fffd52a nAlStatus -1fffd4e8 nEcatStateTrans -1fffd4ea nEscAddrInputData -1fffd4ec nEscAddrOutputData -1fffd4ee nMaxEscAddress -1fffd52b nMaxSyncMan -1fffd4f0 nPdInputSize -1fffd4f2 nPdOutputSize -1fffd4f4 nSdoInfoFragmentsLeft -1fffd4f6 nSdoInfoIndex -1fffd480 nSdoSegBytesToHandle -1fffd484 nSdoSegCompleteSize -1fffd4f8 nSdoSegIndex -1fffd52c nSdoSegService -1fffd52d nSdoSegSubindex -1fffd488 pAPPL_MainLoop -1fffd48c pCoeSendStored -1fffd490 pSdoInfoObjEntry -1fffd494 pSdoPendFunc -1fffd498 pSdoResStored -1fffd49c pSdoSegData -1fffd4a0 pSdoSegObjEntry -1fffd4a4 pStoreData -1fffd4a8 psReadMbx -1fffd4ac psRepeatMbx -1fffd4b0 psStoreMbx -1fffd4b4 psWriteMbx -1fffd0f0 sConfiguredModuleIdentList -1fffd4fa sCycleDiag -1fffd0fc sDetectedModuleIdentList -1fffc856 sEntryDesc0x1000 -1fffc85c sEntryDesc0x1001 -1fffc862 sEntryDesc0x1008 -1fffc868 sEntryDesc0x1009 -1fffc86e sEntryDesc0x100A -1fffc874 sEntryDesc0x10F8 -1fffc87a sEntryDesc0x603F -1fffc880 sEntryDesc0x6040 -1fffc886 sEntryDesc0x6041 -1fffc88c sEntryDesc0x605A -1fffc892 sEntryDesc0x605B -1fffc898 sEntryDesc0x605C -1fffc89e sEntryDesc0x605E -1fffc8a4 sEntryDesc0x6060 -1fffc8aa sEntryDesc0x6061 -1fffc8b0 sEntryDesc0x6064 -1fffc8b6 sEntryDesc0x606C -1fffc8bc sEntryDesc0x6077 -1fffc8c2 sEntryDesc0x607A -1fffc8c8 sEntryDesc0x6085 -1fffc8ce sEntryDesc0x60FF -1fffc8d4 sEntryDesc0x6502 -1fffd108 sErrorSettings -1fffd0cc sIdentity -1fffd400 sMbxReceiveQueue -1fffd434 sMbxSendQueue -1fffd0b2 sModulardeviceprofile -1fffd114 sModuleProfileInfo -1fffd13c sRxPDOassign -1fffd378 sSyncManInPar -1fffd3bc sSyncManOutPar -1fffd142 sSyncmanagertype -1fffd148 sTxPDOassign -20004b45 strlen -200046c3 strncpy -1fffd4fc u16ALEventMask -1fffd0c4 u16ErrorRegister -1fffd4fe u16EscAddrReceiveMbx -1fffd500 u16EscAddrSendMbx -1fffd502 u16LocalErrorCode -1fffd504 u16ReceiveMbxSize -1fffd506 u16SendMbxSize -1fffd508 u16SmSync0Counter -1fffd50a u16SmSync0Value -1fffd50c u16StoreIndex -1fffd4b8 u32CheckForDcOverrunCnt -1fffd4bc u32CycleTimeStartValue -1fffd0c0 u32Devicetype -1fffd4c0 u32LastDc32Value -1fffd4c4 u32MinCycleTimeStartValue -1fffd4c8 u32MinCycleTimeValue -1fffd4cc u32StoreDataSize -1fffd4d0 u32SystemTimeReadFailure -1fffd0b8 u64Timestamp -1fffd52e u8EcatErrorLed -1fffd52f u8EcatRunLed -1fffd530 u8MailboxSendReqStored -1fffd531 u8MbxReadCounter -1fffd532 u8MbxWriteCounter -1fffd533 u8PendingSdo -1fffd534 u8StoreSubindex -1fffd535 u8dummy +1fffc2d8 cAbortCode +1fffc4f6 cBitMask +2000275d free +1fffd548 i16WaitForPllRunningCnt +1fffd54a i16WaitForPllRunningTimeout +20003bef main +20004675 malloc +1ffffef9 memalign +20002f47 memcpy +2000341d memset +1fffd586 nAlStatus +1fffd54c nEcatStateTrans +1fffd54e nEscAddrInputData +1fffd550 nEscAddrOutputData +1fffd552 nMaxEscAddress +1fffd587 nMaxSyncMan +1fffd554 nPdInputSize +1fffd556 nPdOutputSize +1fffd558 nSdoInfoIndex +1fffd4d8 pAPPL_CoeReadInd +1fffd4dc pAPPL_CoeWriteInd +1fffd4e0 pAPPL_FoeError +1fffd4e4 pAPPL_FoeRead +1fffd4e8 pAPPL_FoeReadData +1fffd4ec pAPPL_FoeWrite +1fffd4f0 pAPPL_FoeWriteData +1fffd4f4 pAPPL_MainLoop +1fffd4f8 pCoeSendStored +1fffd4fc pFoeSendStored +1fffd500 pSdoInfoObjEntry +1fffd504 psReadMbx +1fffd508 psRepeatMbx +1fffd50c psStoreMbx +1fffd510 psWriteMbx +1fffd148 sConfiguredModuleIdentList +1fffd55a sCycleDiag +1fffd154 sDetectedModuleIdentList +1fffc8aa sEntryDesc0x1000 +1fffc8b0 sEntryDesc0x1001 +1fffc8b6 sEntryDesc0x1008 +1fffc8bc sEntryDesc0x1009 +1fffc8c2 sEntryDesc0x100A +1fffc8c8 sEntryDesc0x10F8 +1fffc8ce sEntryDesc0x603F +1fffc8d4 sEntryDesc0x6040 +1fffc8da sEntryDesc0x6041 +1fffc8e0 sEntryDesc0x605A +1fffc8e6 sEntryDesc0x605B +1fffc8ec sEntryDesc0x605C +1fffc8f2 sEntryDesc0x605E +1fffc8f8 sEntryDesc0x6060 +1fffc8fe sEntryDesc0x6061 +1fffc904 sEntryDesc0x6064 +1fffc90a sEntryDesc0x606C +1fffc910 sEntryDesc0x6077 +1fffc916 sEntryDesc0x607A +1fffc91c sEntryDesc0x6085 +1fffc922 sEntryDesc0x60FF +1fffc928 sEntryDesc0x6502 +1fffd160 sErrorSettings +1fffd124 sIdentity +1fffd458 sMbxReceiveQueue +1fffd48c sMbxSendQueue +1fffd10a sModulardeviceprofile +1fffd16c sModuleProfileInfo +1fffd194 sRxPDOassign +1fffd3d0 sSyncManInPar +1fffd414 sSyncManOutPar +1fffd19a sSyncmanagertype +1fffd1a0 sTxPDOassign +2000452d strlen +20003fcd strncpy +1fffd55c u16ALEventMask +1fffd11c u16ErrorRegister +1fffd55e u16EscAddrReceiveMbx +1fffd560 u16EscAddrSendMbx +1fffd562 u16FileAccessState +1fffd564 u16FoeMaxSendBlockSize +1fffd566 u16LocalErrorCode +1fffd568 u16ReceiveMbxSize +1fffd56a u16SendMbxSize +1fffd56c u16SmSync0Counter +1fffd56e u16SmSync0Value +1fffd514 u32CheckForDcOverrunCnt +1fffd518 u32CycleTimeStartValue +1fffd118 u32Devicetype +1fffd51c u32FileOffset +1fffd520 u32LastDc32Value +1fffd524 u32LastFileOffset +1fffd528 u32MinCycleTimeStartValue +1fffd52c u32MinCycleTimeValue +1fffd530 u32PacketNo +1fffd534 u32SystemTimeReadFailure +1fffd110 u64Timestamp +1fffd588 u8EcatErrorLed +1fffd589 u8EcatRunLed +1fffd58a u8LocalErrorState +1fffd58b u8MailboxSendReqStored +1fffd58c u8MbxReadCounter +1fffd58d u8MbxWriteCounter +1fffd58e u8dummy 20000c00 vectorTableRAM @@ -984,399 +987,397 @@ address name 1fffc000 __start___llvm_prf_cnts 1fffc000 __stop___llvm_prf_cnts 1fffc000 aName0x1C32 -1fffc100 aName0x1C33 -1fffc200 asEntryDesc0x1C3x -1fffc2c8 cAbortCode -1fffc340 aName0x60C2 -1fffc386 aName0xF000 -1fffc3c8 aName0x607D -1fffc408 aName0x10F1 -1fffc447 aName0x1018 -1fffc480 asEntryDesc0x1600 -1fffc4a4 asEntryDesc0x1A00 -1fffc4c8 cBitMask -1fffc4e8 aName0x605C -1fffc506 asEntryDesc0x1018 -1fffc524 aName0xF030 -1fffc541 aName0x6061 -1fffc55c asEntryDesc0x1601 -1fffc574 asEntryDesc0x1602 -1fffc58c asEntryDesc0x1A01 -1fffc5a4 asEntryDesc0x1A02 -1fffc5bc aName0x605A -1fffc5d2 aName0x6064 -1fffc5e8 aName0x606C -1fffc5fe aName0x6085 -1fffc614 aName0x6502 -1fffc62a aName0x605B -1fffc63f aName0xF050 -1fffc654 aName0x605E -1fffc668 aName0x6077 -1fffc67c aName0xF010 -1fffc690 aName0x10F8 -1fffc6a3 aName0x6060 -1fffc6b6 aName0x1C00 -1fffc6c8 asEntryDesc0x10F1 -1fffc6da asEntryDesc0x607D -1fffc6ec asEntryDesc0x60C2 -1fffc6fe asEntryDesc0xF000 -1fffc710 asEntryDesc0xF010 -1fffc722 asEntryDesc0xF030 -1fffc734 asEntryDesc0xF050 -1fffc746 aName0x1009 -1fffc757 aName0x100A -1fffc768 aName0x1600 -1fffc778 aName0x1A00 -1fffc788 aName0x607A -1fffc798 aName0x60FF -1fffc7a8 aName0x1001 -1fffc7b7 aName0x1C12 -1fffc7c4 aName0x1C13 -1fffc7d1 aName0x6040 -1fffc7de aName0x1000 -1fffc7ea aName0x1008 -1fffc7f6 aName0x1601 -1fffc802 aName0x1602 -1fffc80e aName0x1A01 -1fffc81a aName0x1A02 -1fffc826 aName0x6041 -1fffc832 asEntryDesc0x1C00 -1fffc83e asPDOAssignEntryDesc -1fffc84a aName0x603F -1fffc856 sEntryDesc0x1000 -1fffc85c sEntryDesc0x1001 -1fffc862 sEntryDesc0x1008 -1fffc868 sEntryDesc0x1009 -1fffc86e sEntryDesc0x100A -1fffc874 sEntryDesc0x10F8 -1fffc87a sEntryDesc0x603F -1fffc880 sEntryDesc0x6040 -1fffc886 sEntryDesc0x6041 -1fffc88c sEntryDesc0x605A -1fffc892 sEntryDesc0x605B -1fffc898 sEntryDesc0x605C -1fffc89e sEntryDesc0x605E -1fffc8a4 sEntryDesc0x6060 -1fffc8aa sEntryDesc0x6061 -1fffc8b0 sEntryDesc0x6064 -1fffc8b6 sEntryDesc0x606C -1fffc8bc sEntryDesc0x6077 -1fffc8c2 sEntryDesc0x607A -1fffc8c8 sEntryDesc0x6085 -1fffc8ce sEntryDesc0x60FF -1fffc8d4 sEntryDesc0x6502 -1fffc8dd APPL_GetDeviceID -1fffc8e0 DefCiA402AxisObjDic -1fffccc8 GenObjDic -1fffcea8 ApplicationObjDic -1fffcfc0 DefCiA402ObjectValues -1fffd070 acDevicename -1fffd089 acHardwareversion -1fffd09d acSoftwareversion -1fffd0b1 bSdoInWork -1fffd0b2 sModulardeviceprofile -1fffd0b8 u64Timestamp -1fffd0c0 u32Devicetype -1fffd0c4 u16ErrorRegister -1fffd0c8 ObjDicList -1fffd0cc sIdentity -1fffd0e0 aSubindexDesc -1fffd0ed SMActivate -1fffd0ee EepromLoaded -1fffd0f0 sConfiguredModuleIdentList -1fffd0fc sDetectedModuleIdentList -1fffd108 sErrorSettings -1fffd114 sModuleProfileInfo -1fffd120 bInitFinished -1fffd12c _lock -1fffd130 _unlock -1fffd13c sRxPDOassign -1fffd142 sSyncmanagertype -1fffd148 sTxPDOassign -1fffd150 LocalAxes -1fffd2f0 aPdInputData -1fffd334 aPdOutputData -1fffd378 sSyncManInPar -1fffd3bc sSyncManOutPar -1fffd400 sMbxReceiveQueue -1fffd434 sMbxSendQueue -1fffd468 aSdoInfoHeader -1fffd478 SyncManInfo -1fffd480 nSdoSegBytesToHandle -1fffd484 nSdoSegCompleteSize -1fffd488 pAPPL_MainLoop -1fffd48c pCoeSendStored -1fffd490 pSdoInfoObjEntry -1fffd494 pSdoPendFunc -1fffd498 pSdoResStored -1fffd49c pSdoSegData -1fffd4a0 pSdoSegObjEntry -1fffd4a4 pStoreData -1fffd4a8 psReadMbx -1fffd4ac psRepeatMbx -1fffd4b0 psStoreMbx -1fffd4b4 psWriteMbx -1fffd4b8 u32CheckForDcOverrunCnt -1fffd4bc u32CycleTimeStartValue -1fffd4c0 u32LastDc32Value -1fffd4c4 u32MinCycleTimeStartValue -1fffd4c8 u32MinCycleTimeValue -1fffd4cc u32StoreDataSize -1fffd4d0 u32SystemTimeReadFailure -1fffd4d4 EcatWdValue -1fffd4d6 EsmTimeoutCounter -1fffd4d8 LatchInputSync0Counter -1fffd4da LatchInputSync0Value -1fffd4dc Sync0WdCounter -1fffd4de Sync0WdValue -1fffd4e0 Sync1WdCounter -1fffd4e2 Sync1WdValue -1fffd4e4 i16WaitForPllRunningCnt -1fffd4e6 i16WaitForPllRunningTimeout -1fffd4e8 nEcatStateTrans -1fffd4ea nEscAddrInputData -1fffd4ec nEscAddrOutputData -1fffd4ee nMaxEscAddress -1fffd4f0 nPdInputSize -1fffd4f2 nPdOutputSize -1fffd4f4 nSdoInfoFragmentsLeft -1fffd4f6 nSdoInfoIndex -1fffd4f8 nSdoSegIndex -1fffd4fa sCycleDiag -1fffd4fc u16ALEventMask -1fffd4fe u16EscAddrReceiveMbx -1fffd500 u16EscAddrSendMbx -1fffd502 u16LocalErrorCode -1fffd504 u16ReceiveMbxSize -1fffd506 u16SendMbxSize -1fffd508 u16SmSync0Counter -1fffd50a u16SmSync0Value -1fffd50c u16StoreIndex -1fffd50e b32BitDc -1fffd50f b3BufferMode -1fffd510 bApplEsmPending -1fffd511 bDcRunning -1fffd512 bDcSyncActive -1fffd513 bEcatFirstOutputsReceived -1fffd514 bEcatInputUpdateRunning -1fffd515 bEcatOutputUpdateRunning -1fffd516 bEcatWaitForAlControlRes -1fffd517 bEscIntEnabled -1fffd518 bEtherCATErrorLed -1fffd519 bEtherCATRunLed -1fffd51a bExplicitDevIdRequested -1fffd51b bLocalErrorFlag -1fffd51c bMbxRepeatToggle -1fffd51d bMbxRunning -1fffd51e bMinCycleTimeMeasurementStarted -1fffd51f bNoMbxMemoryAvailable -1fffd520 bReceiveMbxIsLocked -1fffd521 bRunApplication -1fffd522 bSdoSegAccess -1fffd523 bSdoSegFollows -1fffd524 bSdoSegLastToggle -1fffd525 bSendMbxIsFull -1fffd526 bSmSyncSequenceValid -1fffd527 bStoreCompleteAccess -1fffd528 bSyncSetByUser -1fffd529 bWdTrigger -1fffd52a nAlStatus -1fffd52b nMaxSyncMan -1fffd52c nSdoSegService -1fffd52d nSdoSegSubindex -1fffd52e u8EcatErrorLed -1fffd52f u8EcatRunLed -1fffd530 u8MailboxSendReqStored -1fffd531 u8MbxReadCounter -1fffd532 u8MbxWriteCounter -1fffd533 u8PendingSdo -1fffd534 u8StoreSubindex -1fffd535 u8dummy -1fffd538 __stack -1fffd738 __STACK_END -1fffd739 StartInputHandler -1fffdbe5 OBJ_Read -1fffdf5f OBJ_GetObjectList -1fffdffb APPL_StartMailboxHandler +1fffc108 aName0x1C33 +1fffc210 asEntryDesc0x1C3x +1fffc2d8 cAbortCode +1fffc350 aName0x60C2 +1fffc3a5 aName0x1018 +1fffc3ec aName0xF000 +1fffc42e aName0x607D +1fffc46e aName0x10F1 +1fffc4ae asEntryDesc0x1600 +1fffc4d2 asEntryDesc0x1A00 +1fffc4f6 cBitMask +1fffc516 aName0x1009 +1fffc534 aName0x100A +1fffc552 aName0x605C +1fffc570 asEntryDesc0x1018 +1fffc58e aName0xF030 +1fffc5ab aName0x605E +1fffc5c6 aName0x6061 +1fffc5e1 aName0x6085 +1fffc5fa asEntryDesc0x1601 +1fffc612 asEntryDesc0x1602 +1fffc62a asEntryDesc0x1A01 +1fffc642 asEntryDesc0x1A02 +1fffc65a aName0x605A +1fffc671 aName0x6064 +1fffc687 aName0x606C +1fffc69d aName0x6502 +1fffc6b3 aName0x605B +1fffc6c8 aName0xF050 +1fffc6dd aName0x6077 +1fffc6f1 aName0xF010 +1fffc705 aName0x10F8 +1fffc718 aName0x6060 +1fffc72b aName0x1C00 +1fffc73e asEntryDesc0x10F1 +1fffc750 asEntryDesc0x607D +1fffc762 asEntryDesc0x60C2 +1fffc774 asEntryDesc0xF000 +1fffc786 asEntryDesc0xF010 +1fffc798 asEntryDesc0xF030 +1fffc7aa asEntryDesc0xF050 +1fffc7bc aName0x1600 +1fffc7cc aName0x1A00 +1fffc7dc aName0x607A +1fffc7ec aName0x60FF +1fffc7fc aName0x1001 +1fffc80b aName0x1C12 +1fffc818 aName0x1C13 +1fffc825 aName0x6040 +1fffc832 aName0x1000 +1fffc83e aName0x1008 +1fffc84a aName0x1601 +1fffc856 aName0x1602 +1fffc862 aName0x1A01 +1fffc86e aName0x1A02 +1fffc87a aName0x6041 +1fffc886 asEntryDesc0x1C00 +1fffc892 asPDOAssignEntryDesc +1fffc89e aName0x603F +1fffc8aa sEntryDesc0x1000 +1fffc8b0 sEntryDesc0x1001 +1fffc8b6 sEntryDesc0x1008 +1fffc8bc sEntryDesc0x1009 +1fffc8c2 sEntryDesc0x100A +1fffc8c8 sEntryDesc0x10F8 +1fffc8ce sEntryDesc0x603F +1fffc8d4 sEntryDesc0x6040 +1fffc8da sEntryDesc0x6041 +1fffc8e0 sEntryDesc0x605A +1fffc8e6 sEntryDesc0x605B +1fffc8ec sEntryDesc0x605C +1fffc8f2 sEntryDesc0x605E +1fffc8f8 sEntryDesc0x6060 +1fffc8fe sEntryDesc0x6061 +1fffc904 sEntryDesc0x6064 +1fffc90a sEntryDesc0x606C +1fffc910 sEntryDesc0x6077 +1fffc916 sEntryDesc0x607A +1fffc91c sEntryDesc0x6085 +1fffc922 sEntryDesc0x60FF +1fffc928 sEntryDesc0x6502 +1fffc935 APPL_StartMailboxHandler +1fffc938 DefCiA402AxisObjDic +1fffcd20 GenObjDic +1fffcf00 ApplicationObjDic +1fffd018 DefCiA402ObjectValues +1fffd0c8 acDevicename +1fffd0e1 acHardwareversion +1fffd0f5 acSoftwareversion +1fffd10a sModulardeviceprofile +1fffd110 u64Timestamp +1fffd118 u32Devicetype +1fffd11c u16ErrorRegister +1fffd120 ObjDicList +1fffd124 sIdentity +1fffd138 aSubindexDesc +1fffd145 SMActivate +1fffd146 EepromLoaded +1fffd148 sConfiguredModuleIdentList +1fffd154 sDetectedModuleIdentList +1fffd160 sErrorSettings +1fffd16c sModuleProfileInfo +1fffd178 bInitFinished +1fffd184 _lock +1fffd188 _unlock +1fffd194 sRxPDOassign +1fffd19a sSyncmanagertype +1fffd1a0 sTxPDOassign +1fffd1a8 LocalAxes +1fffd348 aPdInputData +1fffd38c aPdOutputData +1fffd3d0 sSyncManInPar +1fffd414 sSyncManOutPar +1fffd458 sMbxReceiveQueue +1fffd48c sMbxSendQueue +1fffd4c0 aSdoInfoHeader +1fffd4d0 SyncManInfo +1fffd4d8 pAPPL_CoeReadInd +1fffd4dc pAPPL_CoeWriteInd +1fffd4e0 pAPPL_FoeError +1fffd4e4 pAPPL_FoeRead +1fffd4e8 pAPPL_FoeReadData +1fffd4ec pAPPL_FoeWrite +1fffd4f0 pAPPL_FoeWriteData +1fffd4f4 pAPPL_MainLoop +1fffd4f8 pCoeSendStored +1fffd4fc pFoeSendStored +1fffd500 pSdoInfoObjEntry +1fffd504 psReadMbx +1fffd508 psRepeatMbx +1fffd50c psStoreMbx +1fffd510 psWriteMbx +1fffd514 u32CheckForDcOverrunCnt +1fffd518 u32CycleTimeStartValue +1fffd51c u32FileOffset +1fffd520 u32LastDc32Value +1fffd524 u32LastFileOffset +1fffd528 u32MinCycleTimeStartValue +1fffd52c u32MinCycleTimeValue +1fffd530 u32PacketNo +1fffd534 u32SystemTimeReadFailure +1fffd538 EcatWdValue +1fffd53a EsmTimeoutCounter +1fffd53c LatchInputSync0Counter +1fffd53e LatchInputSync0Value +1fffd540 Sync0WdCounter +1fffd542 Sync0WdValue +1fffd544 Sync1WdCounter +1fffd546 Sync1WdValue +1fffd548 i16WaitForPllRunningCnt +1fffd54a i16WaitForPllRunningTimeout +1fffd54c nEcatStateTrans +1fffd54e nEscAddrInputData +1fffd550 nEscAddrOutputData +1fffd552 nMaxEscAddress +1fffd554 nPdInputSize +1fffd556 nPdOutputSize +1fffd558 nSdoInfoIndex +1fffd55a sCycleDiag +1fffd55c u16ALEventMask +1fffd55e u16EscAddrReceiveMbx +1fffd560 u16EscAddrSendMbx +1fffd562 u16FileAccessState +1fffd564 u16FoeMaxSendBlockSize +1fffd566 u16LocalErrorCode +1fffd568 u16ReceiveMbxSize +1fffd56a u16SendMbxSize +1fffd56c u16SmSync0Counter +1fffd56e u16SmSync0Value +1fffd570 b32BitDc +1fffd571 b3BufferMode +1fffd572 bApplEsmPending +1fffd573 bDcRunning +1fffd574 bDcSyncActive +1fffd575 bEcatFirstOutputsReceived +1fffd576 bEcatInputUpdateRunning +1fffd577 bEcatOutputUpdateRunning +1fffd578 bEcatWaitForAlControlRes +1fffd579 bEscIntEnabled +1fffd57a bEtherCATErrorLed +1fffd57b bEtherCATRunLed +1fffd57c bMbxRepeatToggle +1fffd57d bMbxRunning +1fffd57e bMinCycleTimeMeasurementStarted +1fffd57f bNoMbxMemoryAvailable +1fffd580 bReceiveMbxIsLocked +1fffd581 bRunApplication +1fffd582 bSendMbxIsFull +1fffd583 bSmSyncSequenceValid +1fffd584 bSyncSetByUser +1fffd585 bWdTrigger +1fffd586 nAlStatus +1fffd587 nMaxSyncMan +1fffd588 u8EcatErrorLed +1fffd589 u8EcatRunLed +1fffd58a u8LocalErrorState +1fffd58b u8MailboxSendReqStored +1fffd58c u8MbxReadCounter +1fffd58d u8MbxWriteCounter +1fffd58e u8dummy +1fffd590 __stack +1fffd790 __STACK_END +1fffd791 StartInputHandler +1fffdc5b OBJ_Read +1fffdf45 CheckSyncTypeValue 1fffe000 _sys_memory -1ffff001 OBJ_Write -1ffff46f SDOS_SdoInd -1ffff8ab AL_ControlInd -1ffffcc9 CiA402_Init -1fffff8d SysCtl_resetPeripheral -1ffffffd APPL_AckErrorInd +1ffff001 AL_ControlInd +1ffff41f OBJ_Write +1ffff7cb CiA402_Init +1ffffa8f FOE_ServiceInd +1ffffcc5 APPL_GenerateMapping +1ffffef7 APPL_AckErrorInd +1ffffef9 aligned_alloc +1ffffef9 memalign +1ffffff9 APPL_StartOutputHandler +1ffffffd COE_Main 20000809 SDOS_SdoInfoInd -20000aa1 PDI_Isr -20000be1 APPL_Application +20000a3b ECAT_SetLedIndication +20000bfb APPL_StopInputHandler +20000bff ESC_releaseHW 20000c00 vectorTableRAM -20000d41 APPL_GenerateMapping -2000119b CheckSmSettings -200013a3 CiA402_StateMachine -2000159f AL_ControlRes -20001771 ECAT_SetLedIndication -20001931 __aeabi_dsub -2000193b __aeabi_dadd -20001ae7 Write0xF030 -20001c57 ECAT_Init -20001d91 Sync0_Isr -20001eab ECAT_Main -20001fb7 ESC_releaseHW -20001fb9 aligned_alloc -20001fb9 memalign -200020b9 StopInputHandler -200021b7 CiA402_Application -200022b3 CiA402_DummyMotionControl -200023af MBX_CheckAndCopyMailbox -200024ab __aeabi_dmul -200025a7 COE_ObjInit -2000269f OBJ_GetEntryOffset -20002797 DC_CheckWatchdog -2000288d MBX_StopMailboxHandler -20002983 ESC_initHW -20002b65 SDOS_SdoRes -20002c4f _nop -20002c51 free -20002d35 MainLoop -20002e17 MBX_Init -20002eef APPL_StartInputHandler -20002fb9 OBJ_GetDesc -20003075 CheckSyncTypeValue -2000312f OBJ_GetObjectLength -200031e9 SODS_ClearPendingResponse -200032a1 COE_Main -20003357 SdoRes -2000340d MBX_CopyToSendMailbox -200034b7 MBX_StartMailboxHandler -20003559 PDO_OutputMapping -200035fb SetALStatus -2000369d __aeabi_memcpy -2000369d __aeabi_memcpy4 -2000369d __aeabi_memcpy8 -2000369d memcpy -20003739 APPL_OutputMapping -200037cf APPL_InputMapping -2000385d ECAT_CheckTimer -200038eb MBX_MailboxReadInd -20003971 PDO_InputMapping -200039f7 MBX_MailboxSendReq -20003a7d Interrupt_enable -20003afd MainInit -20003b7b CheckIfEcatError -20003bf5 __aeabi_fmul -20003c6f __aeabi_memclr -20003c6f __aeabi_memclr4 -20003c6f __aeabi_memclr8 -20003c71 __aeabi_memset -20003c71 __aeabi_memset4 -20003c71 __aeabi_memset8 -20003c77 memset -20003ce9 CM_enableAllPeripherals -20003d5f COE_SyncTimeStamp -20003e45 __TI_decompress_lzss -20003ead COE_AddObjectToDic -20003f11 MBX_MailboxRepeatReq -20003f73 StartOutputHandler -20003fd3 __aeabi_cfcmpeq -20003fd3 __aeabi_cfcmple -20004033 OBJ_GetNoOfObjects -20004091 CiA402_DeallocateAxis -200040ed ESCSS_configureSync0Connections -20004149 ESCSS_configureSync1Connections -200041a5 Interrupt_registerHandler -20004201 MBX_MailboxWriteInd -2000425d HandleCycleTimeMeasurement -200042ad Read0x10F8 -200042fb MBX_Main -20004345 SysCtl_enablePeripheral -2000438d __aeabi_d2iz -200043d5 COE_UpdateSyncErrorStatus -2000441b Sync1_Isr -20004461 __TI_auto_init_nobinit_nopinit -200044a5 main -200044e9 COE_ContinueInd -2000452b ECAT_Application -20004569 COE_RemoveDicEntry -200045a5 ESCSS_configureEEPROMSize -200045df OBJ_CopyNumberToString -20004619 OBJ_GetEntryDesc -20004653 __aeabi_f2d -2000468b __aeabi_f2iz -200046c3 strncpy -200046f9 GetSystemTimeDelay -2000472d ESC_setLed -2000475f DisableSyncManChannel -2000478d EnableSyncManChannel -200047bb __aeabi_i2d -200047e9 COE_ObjDictionaryInit -20004815 PutInMbxQueue -20004841 CM_init -20004869 COE_ServiceInd -20004891 ESC_loadedCheckEEPROM -200048e1 GetOutOfMbxQueue -20004907 UpdateEEPROMLoadedState -2000492d AddObjectsToObjDictionary -20004951 CiA402_LocalError -20004999 _c_int00_noargs -200049bd __aeabi_ui2f -200049e1 COE_ClearObjDictionary -20004a01 ESC_clearTimer -20004a1f GetSyncMan -20004a3b ResetALEventMask -20004a57 SetALEventMask -20004a73 __TI_zero_init_nomemset -20004aad ESC_applicationLayerHandler -20004ac7 ESC_applicationSync0Handler -20004ae1 ESC_applicationSync1Handler -20004afb OBJ_GetObjectHandle -20004b15 COE_Init -20004b2d StopOutputHandler -20004b45 strlen -20004b59 MailboxServiceInd -20004b6b ESC_writeBlockISR -20004b7b BackToInitTransition -20004b89 ESC_getTimer -20004b97 __TI_decompress_none -20004ba5 COE_GetObjectDictionary -20004bb1 CiA402_TransitionAction -20004bbd ESC_readBlock -20004bc9 ESC_readBlockISR -20004bd5 ESC_readByte -20004be1 ESC_readDWord -20004bed ESC_readWord -20004bf9 ESC_writeBlock -20004c05 ESC_writeByte -20004c11 ESC_writeDWord -20004c1d ESC_writeWord -20004c29 ESC_readByteISR -20004c33 ESC_readDWordISR -20004c3d ESC_readWordISR -20004c47 ESC_timerIncPerMilliSec -20004c51 ESC_writeByteISR -20004c5b ESC_writeDWordISR -20004c65 ESC_writeWordISR -20004c6f ESC_resetESC -20004c77 malloc -20004c7f APPL_StartOutputHandler -20004c83 APPL_StopInputHandler -20004c87 APPL_StopMailboxHandler -20004c8b APPL_StopOutputHandler -20004c8f F2838XCM_strcpy -20004c93 OBJ_GetObjDesc -20004c97 _system_pre_init -20004c9b C$$EXIT -20004c9b abort -20004ca0 __TI_static_base__ -20004fe0 __TI_Handler_Table_Base -20004fec __TI_Handler_Table_Limit -20004ff8 __TI_CINIT_Base -20005008 __TI_CINIT_Limit +20000d41 CheckSmSettings +20000f49 AL_ControlRes +2000114d CiA402_StateMachine +20001349 __aeabi_dsub +20001353 __aeabi_dadd +200014ff PDI_Isr +20001679 SDOS_SdoInd +200017d5 Write0xF030 +20001927 ECAT_Init +20001a57 Sync0_Isr +20001b87 ECAT_Main +20001c9f OBJ_GetEntryOffset +20001dad StopInputHandler +20001eab CiA402_Application +20001fa7 CiA402_DummyMotionControl +200020a3 MBX_CheckAndCopyMailbox +2000219f __aeabi_dmul +2000229b DC_CheckWatchdog +20002391 MBX_StopMailboxHandler +20002487 ESC_initHW +20002579 MBX_CopyToSendMailbox +2000266b MainLoop +2000275b _nop +2000275d free +20002841 MBX_Init +20002919 APPL_StartInputHandler +200029e3 MainInit +20002aa7 OBJ_GetDesc +20002b63 MBX_StartMailboxHandler +20002c11 SdoRes +20002cbf COE_ObjInit +20002d65 MBX_MailboxReadInd +20002e09 PDO_OutputMapping +20002eab OBJ_GetObjectList +20002f47 __aeabi_memcpy +20002f47 __aeabi_memcpy4 +20002f47 __aeabi_memcpy8 +20002f47 memcpy +20002fe3 APPL_OutputMapping +20003079 APPL_InputMapping +20003107 ECAT_CheckTimer +20003195 PDO_InputMapping +2000321b MBX_MailboxSendReq +200032a1 Interrupt_enable +20003321 CheckIfEcatError +2000339b __aeabi_fmul +20003415 __aeabi_memclr +20003415 __aeabi_memclr4 +20003415 __aeabi_memclr8 +20003417 __aeabi_memset +20003417 __aeabi_memset4 +20003417 __aeabi_memset8 +2000341d memset +2000348f CM_enableAllPeripherals +20003505 COE_SyncTimeStamp +2000357b StartOutputHandler +200035ed SysCtl_resetPeripheral +200036cd SetALStatus +2000373b __TI_decompress_lzss +200037a3 COE_AddObjectToDic +20003807 MBX_MailboxRepeatReq +20003869 __aeabi_cfcmpeq +20003869 __aeabi_cfcmple +200038c9 OBJ_GetNoOfObjects +20003927 CiA402_DeallocateAxis +20003985 ESCSS_configureSync0Connections +200039e1 ESCSS_configureSync1Connections +20003a3d Interrupt_registerHandler +20003a99 MBX_MailboxWriteInd +20003af5 OBJ_GetObjectLength +20003b4d Sync1_Isr +20003b9f HandleCycleTimeMeasurement +20003bef main +20003c3f Read0x10F8 +20003c8d MBX_Main +20003cd5 SysCtl_enablePeripheral +20003d1d __aeabi_d2iz +20003d65 COE_UpdateSyncErrorStatus +20003dab COE_ContinueInd +20003df1 __TI_auto_init_nobinit_nopinit +20003e35 FOE_Data +20003e73 COE_RemoveDicEntry +20003eaf ESCSS_configureEEPROMSize +20003ee9 OBJ_CopyNumberToString +20003f23 OBJ_GetEntryDesc +20003f5d __aeabi_f2d +20003f95 __aeabi_f2iz +20003fcd strncpy +20004003 GetSystemTimeDelay +20004037 ECAT_Application +20004069 ESC_setLed +2000409b DisableSyncManChannel +200040c9 EnableSyncManChannel +200040f7 __aeabi_i2d +20004125 COE_ObjDictionaryInit +20004151 PutInMbxQueue +2000417d CM_init +200041a5 COE_ServiceInd +200041cd ESC_loadedCheckEEPROM +200041f5 FOE_Ack +2000421d FOE_Read +2000426d GetOutOfMbxQueue +20004293 UpdateEEPROMLoadedState +200042b9 AddObjectsToObjDictionary +20004301 _c_int00_noargs +20004325 __aeabi_ui2f +20004349 FOE_Init +2000436b APPL_Application +2000438b COE_ClearObjDictionary +200043ab ESC_clearTimer +200043c9 FOE_Write +200043e7 FOE_ContinueInd +20004403 GetSyncMan +2000441f MailboxServiceInd +2000443b ResetALEventMask +20004457 SetALEventMask +20004473 __TI_zero_init_nomemset +200044ad ESC_applicationLayerHandler +200044c7 ESC_applicationSync0Handler +200044e1 ESC_applicationSync1Handler +200044fb OBJ_GetObjectHandle +20004515 StopOutputHandler +2000452d strlen +20004541 FOE_Error +20004553 ESC_writeBlockISR +20004563 BackToInitTransition +20004571 COE_Init +2000457f ESC_getTimer +2000458d __TI_decompress_none +2000459b COE_GetObjectDictionary +200045a7 CiA402_TransitionAction +200045b3 ESC_readBlock +200045bf ESC_readBlockISR +200045cb ESC_readByte +200045d7 ESC_readDWord +200045e3 ESC_readWord +200045ef ESC_writeBlock +200045fb ESC_writeByte +20004607 ESC_writeDWord +20004613 ESC_writeWord +2000461f ESC_readByteISR +20004629 ESC_readDWordISR +20004633 ESC_readWordISR +2000463d ESC_timerIncPerMilliSec +20004647 ESC_writeByteISR +20004651 ESC_writeDWordISR +2000465b ESC_writeWordISR +20004665 ESC_resetESC +2000466d FOE_Busy +20004675 malloc +2000467d APPL_StopMailboxHandler +20004681 APPL_StopOutputHandler +20004685 F2838XCM_strcpy +20004689 OBJ_GetObjDesc +2000468d _system_pre_init +20004691 C$$EXIT +20004691 abort +20004698 __TI_static_base__ +200049e0 __TI_Handler_Table_Base +200049ec __TI_Handler_Table_Limit +200049f8 __TI_CINIT_Base +20004a08 __TI_CINIT_Limit ffffffff __TI_pprof_out_hndl ffffffff __TI_prof_data_size ffffffff __TI_prof_data_start ffffffff __binit__ ffffffff __c_args__ ffffffff binit +UNDEFED DebugP_log UNDEFED __mpu_init UNDEFED _system_post_cinit -[399 symbols] +[397 symbols] diff --git a/RAM/f2838x_cm_cia402_solution.out b/RAM/f2838x_cm_cia402_solution.out deleted file mode 100644 index 0aa6b1c..0000000 Binary files a/RAM/f2838x_cm_cia402_solution.out and /dev/null differ diff --git a/RAM/f2838x_cm_cia402_solution_linkInfo.xml b/RAM/f2838x_cm_cia402_solution_linkInfo.xml index c8764f0..5525dc5 100644 --- a/RAM/f2838x_cm_cia402_solution_linkInfo.xml +++ b/RAM/f2838x_cm_cia402_solution_linkInfo.xml @@ -2,254 +2,278 @@ TI ARM Linker PC v20.2.7.LTS Copyright (c) 1996-2018 Texas Instruments Incorporated - 0x65bb9d30 - 0x0 + 0x65bca52d + 0x1 f2838x_cm_cia402_solution.out _c_int00_noargs -
0x20004999
+
0x20004301
+ .\ + object + F2838x CM EtherCAT Slave.obj + F2838x CM EtherCAT Slave.obj + + .\ object cia402appl.obj cia402appl.obj - + .\ object coeappl.obj coeappl.obj - + .\ object ecatappl.obj ecatappl.obj - + .\ object ecatcoe.obj ecatcoe.obj - + + .\ + object + ecatfoe.obj + ecatfoe.obj + + .\ object ecatslv.obj ecatslv.obj - + .\ object ethercat_slave_cm_hal.obj ethercat_slave_cm_hal.obj - + .\ object f2838x_cm_hw.obj f2838x_cm_hw.obj - + .\ object f2838x_cm_system.obj f2838x_cm_system.obj - + + .\ + object + foeappl.obj + foeappl.obj + + .\ object mailbox.obj mailbox.obj - + .\ object objdef.obj objdef.obj - + .\ object sdoserv.obj sdoserv.obj - + .\ object startup_cm.obj startup_cm.obj - + + .\ + object + tiescfoe.obj + tiescfoe.obj + + .\device\ object cm.obj cm.obj - + object <internal> <internal> - + C:\ti\c2000\C2000Ware_5_01_00_00\driverlib\f2838x\driverlib_cm\ccs\Debug\ archive driverlib_cm.lib escss.obj - + C:\ti\c2000\C2000Ware_5_01_00_00\driverlib\f2838x\driverlib_cm\ccs\Debug\ archive driverlib_cm.lib interrupt.obj - + C:\ti\c2000\C2000Ware_5_01_00_00\driverlib\f2838x\driverlib_cm\ccs\Debug\ archive driverlib_cm.lib sysctl.obj - + C:\ti\ccs1240\ccs\tools\compiler\ti-cgt-arm_20.2.7.LTS\lib\ archive rtsv7M4_T_le_eabi.lib fd_add_t2.asm.obj - + C:\ti\ccs1240\ccs\tools\compiler\ti-cgt-arm_20.2.7.LTS\lib\ archive rtsv7M4_T_le_eabi.lib fd_mul_t2.asm.obj - + C:\ti\ccs1240\ccs\tools\compiler\ti-cgt-arm_20.2.7.LTS\lib\ archive rtsv7M4_T_le_eabi.lib fd_toi_t2.asm.obj - + C:\ti\ccs1240\ccs\tools\compiler\ti-cgt-arm_20.2.7.LTS\lib\ archive rtsv7M4_T_le_eabi.lib fs_cmp_t2.asm.obj - + C:\ti\ccs1240\ccs\tools\compiler\ti-cgt-arm_20.2.7.LTS\lib\ archive rtsv7M4_T_le_eabi.lib fs_mul_t2.asm.obj - + C:\ti\ccs1240\ccs\tools\compiler\ti-cgt-arm_20.2.7.LTS\lib\ archive rtsv7M4_T_le_eabi.lib fs_tod_t2.asm.obj - + C:\ti\ccs1240\ccs\tools\compiler\ti-cgt-arm_20.2.7.LTS\lib\ archive rtsv7M4_T_le_eabi.lib fs_toi_t2.asm.obj - + C:\ti\ccs1240\ccs\tools\compiler\ti-cgt-arm_20.2.7.LTS\lib\ archive rtsv7M4_T_le_eabi.lib i_tofd_t2.asm.obj - + C:\ti\ccs1240\ccs\tools\compiler\ti-cgt-arm_20.2.7.LTS\lib\ archive rtsv7M4_T_le_eabi.lib memcpy_t2.asm.obj - + C:\ti\ccs1240\ccs\tools\compiler\ti-cgt-arm_20.2.7.LTS\lib\ archive rtsv7M4_T_le_eabi.lib u_tofs_t2.asm.obj - + C:\ti\ccs1240\ccs\tools\compiler\ti-cgt-arm_20.2.7.LTS\lib\ archive rtsv7M4_T_le_eabi.lib memset_t2.asm.obj - + C:\ti\ccs1240\ccs\tools\compiler\ti-cgt-arm_20.2.7.LTS\lib\ archive rtsv7M4_T_le_eabi.lib copy_zero_init.c.obj - + C:\ti\ccs1240\ccs\tools\compiler\ti-cgt-arm_20.2.7.LTS\lib\ archive rtsv7M4_T_le_eabi.lib copy_decompress_none.c.obj - + C:\ti\ccs1240\ccs\tools\compiler\ti-cgt-arm_20.2.7.LTS\lib\ archive rtsv7M4_T_le_eabi.lib copy_decompress_lzss.c.obj - + C:\ti\ccs1240\ccs\tools\compiler\ti-cgt-arm_20.2.7.LTS\lib\ archive rtsv7M4_T_le_eabi.lib memory.c.obj - + C:\ti\ccs1240\ccs\tools\compiler\ti-cgt-arm_20.2.7.LTS\lib\ archive rtsv7M4_T_le_eabi.lib strlen.c.obj - + C:\ti\ccs1240\ccs\tools\compiler\ti-cgt-arm_20.2.7.LTS\lib\ archive rtsv7M4_T_le_eabi.lib strncpy.c.obj - + C:\ti\ccs1240\ccs\tools\compiler\ti-cgt-arm_20.2.7.LTS\lib\ archive rtsv7M4_T_le_eabi.lib boot_cortex_m.c.obj - + C:\ti\ccs1240\ccs\tools\compiler\ti-cgt-arm_20.2.7.LTS\lib\ archive rtsv7M4_T_le_eabi.lib autoinit.c.obj - + C:\ti\ccs1240\ccs\tools\compiler\ti-cgt-arm_20.2.7.LTS\lib\ archive rtsv7M4_T_le_eabi.lib pre_init.c.obj - + C:\ti\ccs1240\ccs\tools\compiler\ti-cgt-arm_20.2.7.LTS\lib\ archive rtsv7M4_T_le_eabi.lib cpy_tbl.c.obj - + C:\ti\ccs1240\ccs\tools\compiler\ti-cgt-arm_20.2.7.LTS\lib\ archive rtsv7M4_T_le_eabi.lib exit.c.obj - + C:\ti\ccs1240\ccs\tools\compiler\ti-cgt-arm_20.2.7.LTS\lib\ archive rtsv7M4_T_le_eabi.lib _lock.c.obj - + C:\ti\ccs1240\ccs\tools\compiler\ti-cgt-arm_20.2.7.LTS\lib\ archive rtsv7M4_T_le_eabi.lib @@ -262,1199 +286,1220 @@ 0x20000800 0x20000800 0x6 - + .vtable:retain 0x20000c00 0x20000c00 0x140 - + - - .text:APPL_GetDeviceID - 0x1fffc8dc - 0x1fffc8dc - 0x4 - - - - .text:StartInputHandler - 0x1fffd738 - 0x1fffd738 - 0x4ac - - - - .text:OBJ_Read - 0x1fffdbe4 - 0x1fffdbe4 - 0x37a - - - - .text:OBJ_GetObjectList - 0x1fffdf5e - 0x1fffdf5e - 0x9c - - - + .text:APPL_StartMailboxHandler - 0x1fffdffa - 0x1fffdffa + 0x1fffc934 + 0x1fffc934 0x4 - - .text:OBJ_Write + + .text:StartInputHandler + 0x1fffd790 + 0x1fffd790 + 0x4ca + + + + .text:OBJ_Read + 0x1fffdc5a + 0x1fffdc5a + 0x2ea + + + + .text:CheckSyncTypeValue + 0x1fffdf44 + 0x1fffdf44 + 0xba + + + + .text:AL_ControlInd 0x1ffff000 0x1ffff000 - 0x46e - - - - .text:SDOS_SdoInd - 0x1ffff46e - 0x1ffff46e - 0x43c - - - - .text:AL_ControlInd - 0x1ffff8aa - 0x1ffff8aa 0x41e - + - + + .text:OBJ_Write + 0x1ffff41e + 0x1ffff41e + 0x3ac + + + .text:CiA402_Init - 0x1ffffcc8 - 0x1ffffcc8 + 0x1ffff7ca + 0x1ffff7ca 0x2c4 + + + + .text:FOE_ServiceInd + 0x1ffffa8e + 0x1ffffa8e + 0x236 + + + + .text:APPL_GenerateMapping + 0x1ffffcc4 + 0x1ffffcc4 + 0x232 + + + + .text:APPL_AckErrorInd + 0x1ffffef6 + 0x1ffffef6 + 0x2 - - .text:SysCtl_resetPeripheral - 0x1fffff8c - 0x1fffff8c - 0x70 - + + .text:aligned_alloc + 0x1ffffef8 + 0x1ffffef8 + 0x100 + - - .text:APPL_AckErrorInd + + .text:APPL_StartOutputHandler + 0x1ffffff8 + 0x1ffffff8 + 0x4 + + + + .text:COE_Main 0x1ffffffc 0x1ffffffc 0x2 - + - + .text:SDOS_SdoInfoInd 0x20000808 0x20000808 - 0x298 - + 0x232 + + + + .text:ECAT_SetLedIndication + 0x20000a3a + 0x20000a3a + 0x1c0 + + + + .text:APPL_StopInputHandler + 0x20000bfa + 0x20000bfa + 0x4 + + + + .text:ESC_releaseHW + 0x20000bfe + 0x20000bfe + 0x2 + + + + .text:CheckSmSettings + 0x20000d40 + 0x20000d40 + 0x208 + + + + .text:AL_ControlRes + 0x20000f48 + 0x20000f48 + 0x204 + + + + .text:CiA402_StateMachine + 0x2000114c + 0x2000114c + 0x1fc + + + + .text + 0x20001348 + 0x20001348 + 0x1b6 + .text:PDI_Isr - 0x20000aa0 - 0x20000aa0 - 0x140 - + 0x200014fe + 0x200014fe + 0x17a + - - .text:APPL_Application - 0x20000be0 - 0x20000be0 - 0x20 - + + .text:SDOS_SdoInd + 0x20001678 + 0x20001678 + 0x15c + - - .text:APPL_GenerateMapping - 0x20000d40 - 0x20000d40 - 0x232 - - - - .text:SdoDownloadSegmentInd - 0x20000f72 - 0x20000f72 - 0x228 - - - - .text:CheckSmSettings - 0x2000119a - 0x2000119a - 0x208 - - - - .text:CiA402_StateMachine - 0x200013a2 - 0x200013a2 - 0x1fc - - - - .text:AL_ControlRes - 0x2000159e - 0x2000159e - 0x1d2 - - - - .text:ECAT_SetLedIndication - 0x20001770 - 0x20001770 - 0x1c0 - - - - .text - 0x20001930 - 0x20001930 - 0x1b6 - - - + .text:Write0xF030 - 0x20001ae6 - 0x20001ae6 - 0x170 - + 0x200017d4 + 0x200017d4 + 0x152 + - + .text:ECAT_Init - 0x20001c56 - 0x20001c56 - 0x13a - + 0x20001926 + 0x20001926 + 0x130 + .text:Sync0_Isr - 0x20001d90 - 0x20001d90 - 0x11a - + 0x20001a56 + 0x20001a56 + 0x130 + - + .text:ECAT_Main + 0x20001b86 + 0x20001b86 + 0x118 + + + + .text:OBJ_GetEntryOffset + 0x20001c9e + 0x20001c9e + 0x10e + + + + .text:StopInputHandler + 0x20001dac + 0x20001dac + 0xfe + + + + .text:CiA402_Application 0x20001eaa 0x20001eaa - 0x10c - - - - .text:ESC_releaseHW - 0x20001fb6 - 0x20001fb6 - 0x2 - - - - .text:aligned_alloc - 0x20001fb8 - 0x20001fb8 - 0x100 - - - - .text:StopInputHandler - 0x200020b8 - 0x200020b8 - 0xfe - - - - .text:CiA402_Application - 0x200021b6 - 0x200021b6 0xfc - - - - .text:CiA402_DummyMotionControl - 0x200022b2 - 0x200022b2 - 0xfc - - - - .text:MBX_CheckAndCopyMailbox - 0x200023ae - 0x200023ae - 0xfc - - - - .text - 0x200024aa - 0x200024aa - 0xfc - - - - .text:COE_ObjInit - 0x200025a6 - 0x200025a6 - 0xf8 - - .text:OBJ_GetEntryOffset - 0x2000269e - 0x2000269e - 0xf8 - + + .text:CiA402_DummyMotionControl + 0x20001fa6 + 0x20001fa6 + 0xfc + - + + .text:MBX_CheckAndCopyMailbox + 0x200020a2 + 0x200020a2 + 0xfc + + + + .text + 0x2000219e + 0x2000219e + 0xfc + + + .text:DC_CheckWatchdog - 0x20002796 - 0x20002796 + 0x2000229a + 0x2000229a 0xf6 - + - + .text:MBX_StopMailboxHandler - 0x2000288c - 0x2000288c + 0x20002390 + 0x20002390 0xf6 - + .text:ESC_initHW - 0x20002982 - 0x20002982 + 0x20002486 + 0x20002486 0xf2 - + - - .text:SdoUploadSegmentInd - 0x20002a74 - 0x20002a74 - 0xf0 - + + .text:MBX_CopyToSendMailbox + 0x20002578 + 0x20002578 + 0xf2 + - - .text:SDOS_SdoRes - 0x20002b64 - 0x20002b64 - 0xea - - - - .text:_nop - 0x20002c4e - 0x20002c4e - 0x2 - - - - .text:free - 0x20002c50 - 0x20002c50 - 0xe4 - - - + .text:MainLoop - 0x20002d34 - 0x20002d34 - 0xe2 - + 0x2000266a + 0x2000266a + 0xf0 + - + + .text:_nop + 0x2000275a + 0x2000275a + 0x2 + + + + .text:free + 0x2000275c + 0x2000275c + 0xe4 + + + .text:MBX_Init - 0x20002e16 - 0x20002e16 + 0x20002840 + 0x20002840 0xd8 - + - + .text:APPL_StartInputHandler - 0x20002eee - 0x20002eee + 0x20002918 + 0x20002918 0xca - - - - .text:OBJ_GetDesc - 0x20002fb8 - 0x20002fb8 - 0xbc - - - - .text:CheckSyncTypeValue - 0x20003074 - 0x20003074 - 0xba - - - - .text:OBJ_GetObjectLength - 0x2000312e - 0x2000312e - 0xba - - - - .text:SODS_ClearPendingResponse - 0x200031e8 - 0x200031e8 - 0xb8 - - - - .text:COE_Main - 0x200032a0 - 0x200032a0 - 0xb6 - - .text:SdoRes - 0x20003356 - 0x20003356 - 0xb6 - + + .text:MainInit + 0x200029e2 + 0x200029e2 + 0xc4 + - - .text:MBX_CopyToSendMailbox - 0x2000340c - 0x2000340c - 0xaa - + + .text:OBJ_GetDesc + 0x20002aa6 + 0x20002aa6 + 0xbc + - + .text:MBX_StartMailboxHandler - 0x200034b6 - 0x200034b6 - 0xa2 - + 0x20002b62 + 0x20002b62 + 0xae + + + + .text:SdoRes + 0x20002c10 + 0x20002c10 + 0xae + + + + .text:COE_ObjInit + 0x20002cbe + 0x20002cbe + 0xa6 + + + + .text:MBX_MailboxReadInd + 0x20002d64 + 0x20002d64 + 0xa4 + .text:PDO_OutputMapping - 0x20003558 - 0x20003558 + 0x20002e08 + 0x20002e08 0xa2 - + - - .text:SetALStatus - 0x200035fa - 0x200035fa - 0xa2 - + + .text:OBJ_GetObjectList + 0x20002eaa + 0x20002eaa + 0x9c + .text - 0x2000369c - 0x2000369c + 0x20002f46 + 0x20002f46 0x9c - + - + .text:APPL_OutputMapping - 0x20003738 - 0x20003738 + 0x20002fe2 + 0x20002fe2 0x96 - + - + .text:APPL_InputMapping - 0x200037ce - 0x200037ce + 0x20003078 + 0x20003078 0x8e - + - + .text:ECAT_CheckTimer - 0x2000385c - 0x2000385c + 0x20003106 + 0x20003106 0x8e - + - - .text:MBX_MailboxReadInd - 0x200038ea - 0x200038ea - 0x86 - - - + .text:PDO_InputMapping - 0x20003970 - 0x20003970 + 0x20003194 + 0x20003194 0x86 - + - + .text:MBX_MailboxSendReq - 0x200039f6 - 0x200039f6 + 0x2000321a + 0x2000321a 0x84 - + .text:defaultISR - 0x20003a7a - 0x20003a7a + 0x2000329e + 0x2000329e 0x2 - + .text:Interrupt_enable - 0x20003a7c - 0x20003a7c + 0x200032a0 + 0x200032a0 0x80 - + - - .text:MainInit - 0x20003afc - 0x20003afc - 0x7e - - - + .text:CheckIfEcatError - 0x20003b7a - 0x20003b7a + 0x20003320 + 0x20003320 0x7a - + - + .text - 0x20003bf4 - 0x20003bf4 + 0x2000339a + 0x2000339a 0x7a - + .text - 0x20003c6e - 0x20003c6e + 0x20003414 + 0x20003414 0x7a - - - - .text:CM_enableAllPeripherals - 0x20003ce8 - 0x20003ce8 - 0x76 - - - - .text:COE_SyncTimeStamp - 0x20003d5e - 0x20003d5e - 0x76 - - - - .text:split - 0x20003dd4 - 0x20003dd4 - 0x70 + + .text:CM_enableAllPeripherals + 0x2000348e + 0x2000348e + 0x76 + + + + .text:COE_SyncTimeStamp + 0x20003504 + 0x20003504 + 0x76 + + + + .text:StartOutputHandler + 0x2000357a + 0x2000357a + 0x72 + + + + .text:SysCtl_resetPeripheral + 0x200035ec + 0x200035ec + 0x70 + + + + .text:split + 0x2000365c + 0x2000365c + 0x70 + + + + .text:SetALStatus + 0x200036cc + 0x200036cc + 0x6e + + .text:decompress:lzss:__TI_decompress_lzss - 0x20003e44 - 0x20003e44 + 0x2000373a + 0x2000373a 0x68 - + - + .text:COE_AddObjectToDic - 0x20003eac - 0x20003eac + 0x200037a2 + 0x200037a2 0x64 - - - - .text:MBX_MailboxRepeatReq - 0x20003f10 - 0x20003f10 - 0x62 - - - - .text:StartOutputHandler - 0x20003f72 - 0x20003f72 - 0x60 - - - - .text:__aeabi_cfcmple - 0x20003fd2 - 0x20003fd2 - 0x60 - - - - .text:OBJ_GetNoOfObjects - 0x20004032 - 0x20004032 - 0x5e - - - - .text:CiA402_DeallocateAxis - 0x20004090 - 0x20004090 - 0x5c - - - - .text:ESCSS_configureSync0Connections - 0x200040ec - 0x200040ec - 0x5c - - - - .text:ESCSS_configureSync1Connections - 0x20004148 - 0x20004148 - 0x5c - - - - .text:Interrupt_registerHandler - 0x200041a4 - 0x200041a4 - 0x5c - - - - .text:MBX_MailboxWriteInd - 0x20004200 - 0x20004200 - 0x5c - - - - .text:HandleCycleTimeMeasurement - 0x2000425c - 0x2000425c - 0x50 - - .text:Read0x10F8 - 0x200042ac - 0x200042ac - 0x4e - + + .text:MBX_MailboxRepeatReq + 0x20003806 + 0x20003806 + 0x62 + - - .text:MBX_Main - 0x200042fa - 0x200042fa - 0x48 - + + .text:__aeabi_cfcmple + 0x20003868 + 0x20003868 + 0x60 + + + + .text:OBJ_GetNoOfObjects + 0x200038c8 + 0x200038c8 + 0x5e + + + + .text:CiA402_DeallocateAxis + 0x20003926 + 0x20003926 + 0x5c + .text:faultISR - 0x20004342 - 0x20004342 + 0x20003982 + 0x20003982 0x2 + + + + .text:ESCSS_configureSync0Connections + 0x20003984 + 0x20003984 + 0x5c + + + + .text:ESCSS_configureSync1Connections + 0x200039e0 + 0x200039e0 + 0x5c + + + + .text:Interrupt_registerHandler + 0x20003a3c + 0x20003a3c + 0x5c + + + + .text:MBX_MailboxWriteInd + 0x20003a98 + 0x20003a98 + 0x5c - - .text:SysCtl_enablePeripheral - 0x20004344 - 0x20004344 - 0x48 - - - - .text - 0x2000438c - 0x2000438c - 0x48 - - - - .text:COE_UpdateSyncErrorStatus - 0x200043d4 - 0x200043d4 - 0x46 - + + .text:OBJ_GetObjectLength + 0x20003af4 + 0x20003af4 + 0x58 + .text:Sync1_Isr - 0x2000441a - 0x2000441a - 0x44 - + 0x20003b4c + 0x20003b4c + 0x52 + - - .text:nmiISR - 0x2000445e - 0x2000445e - 0x2 - - - - .text:__TI_auto_init_nobinit_nopinit:__TI_auto_init_nobinit_nopinit - 0x20004460 - 0x20004460 - 0x44 - + + .text:HandleCycleTimeMeasurement + 0x20003b9e + 0x20003b9e + 0x50 + .text:main - 0x200044a4 - 0x200044a4 - 0x44 - + 0x20003bee + 0x20003bee + 0x50 + - + + .text:Read0x10F8 + 0x20003c3e + 0x20003c3e + 0x4e + + + + .text:MBX_Main + 0x20003c8c + 0x20003c8c + 0x48 + + + + .text:SysCtl_enablePeripheral + 0x20003cd4 + 0x20003cd4 + 0x48 + + + + .text + 0x20003d1c + 0x20003d1c + 0x48 + + + + .text:COE_UpdateSyncErrorStatus + 0x20003d64 + 0x20003d64 + 0x46 + + + .text:COE_ContinueInd - 0x200044e8 - 0x200044e8 - 0x42 + 0x20003daa + 0x20003daa + 0x44 + + + + .text:nmiISR + 0x20003dee + 0x20003dee + 0x2 + + + + .text:__TI_auto_init_nobinit_nopinit:__TI_auto_init_nobinit_nopinit + 0x20003df0 + 0x20003df0 + 0x44 + + + + .text:FOE_Data + 0x20003e34 + 0x20003e34 + 0x3e + + + + .text:COE_RemoveDicEntry + 0x20003e72 + 0x20003e72 + 0x3c + + + + .text:ESCSS_configureEEPROMSize + 0x20003eae + 0x20003eae + 0x3a + + + + .text:OBJ_CopyNumberToString + 0x20003ee8 + 0x20003ee8 + 0x3a + + + + .text:OBJ_GetEntryDesc + 0x20003f22 + 0x20003f22 + 0x3a + + + + .text + 0x20003f5c + 0x20003f5c + 0x38 + + + + .text + 0x20003f94 + 0x20003f94 + 0x38 + + + + .text:strncpy + 0x20003fcc + 0x20003fcc + 0x36 + + + + .text:GetSystemTimeDelay + 0x20004002 + 0x20004002 + 0x34 .text:ECAT_Application - 0x2000452a - 0x2000452a - 0x3e - - - - .text:COE_RemoveDicEntry - 0x20004568 - 0x20004568 - 0x3c - - - - .text:ESCSS_configureEEPROMSize - 0x200045a4 - 0x200045a4 - 0x3a - - - - .text:OBJ_CopyNumberToString - 0x200045de - 0x200045de - 0x3a - - - - .text:OBJ_GetEntryDesc - 0x20004618 - 0x20004618 - 0x3a - - - - .text - 0x20004652 - 0x20004652 - 0x38 - - - - .text - 0x2000468a - 0x2000468a - 0x38 - - - - .text:strncpy - 0x200046c2 - 0x200046c2 - 0x36 - - - - .text:GetSystemTimeDelay - 0x200046f8 - 0x200046f8 - 0x34 - - - - .text:ESC_setLed - 0x2000472c - 0x2000472c + 0x20004036 + 0x20004036 0x32 - + - + + .text:ESC_setLed + 0x20004068 + 0x20004068 + 0x32 + + + .text:DisableSyncManChannel - 0x2000475e - 0x2000475e + 0x2000409a + 0x2000409a 0x2e - + - + .text:EnableSyncManChannel - 0x2000478c - 0x2000478c + 0x200040c8 + 0x200040c8 0x2e - + - + .text - 0x200047ba - 0x200047ba + 0x200040f6 + 0x200040f6 0x2e - + - + .text:COE_ObjDictionaryInit - 0x200047e8 - 0x200047e8 + 0x20004124 + 0x20004124 0x2c - + - + .text:PutInMbxQueue - 0x20004814 - 0x20004814 + 0x20004150 + 0x20004150 0x2c - + .text:CM_init - 0x20004840 - 0x20004840 + 0x2000417c + 0x2000417c 0x28 - + - + .text:COE_ServiceInd - 0x20004868 - 0x20004868 + 0x200041a4 + 0x200041a4 0x28 - + .text:ESC_loadedCheckEEPROM - 0x20004890 - 0x20004890 + 0x200041cc + 0x200041cc 0x28 - + - + + .text:FOE_Ack + 0x200041f4 + 0x200041f4 + 0x28 + + + + .text:FOE_Read + 0x2000421c + 0x2000421c + 0x28 + + + .text:free_list_insert - 0x200048b8 - 0x200048b8 + 0x20004244 + 0x20004244 0x28 - + - + .text:GetOutOfMbxQueue - 0x200048e0 - 0x200048e0 + 0x2000426c + 0x2000426c 0x26 - + - + .text:UpdateEEPROMLoadedState - 0x20004906 - 0x20004906 + 0x20004292 + 0x20004292 0x26 - + - + .text:AddObjectsToObjDictionary - 0x2000492c - 0x2000492c + 0x200042b8 + 0x200042b8 0x24 - + - - .text:CiA402_LocalError - 0x20004950 - 0x20004950 - 0x24 - - - + .text:ESCSS_isConfigurationLockEnabled - 0x20004974 - 0x20004974 + 0x200042dc + 0x200042dc 0x24 - + .text:_c_int00_noargs:_c_int00_noargs - 0x20004998 - 0x20004998 + 0x20004300 + 0x20004300 0x24 - + - + .text - 0x200049bc - 0x200049bc + 0x20004324 + 0x20004324 0x24 - + - - .text:COE_ClearObjDictionary - 0x200049e0 - 0x200049e0 + + .text:FOE_Init + 0x20004348 + 0x20004348 + 0x22 + + + + .text:APPL_Application + 0x2000436a + 0x2000436a 0x20 - + + .text:COE_ClearObjDictionary + 0x2000438a + 0x2000438a + 0x20 + + + .text:ESC_clearTimer - 0x20004a00 - 0x20004a00 + 0x200043aa + 0x200043aa 0x1e + + + + .text:FOE_Write + 0x200043c8 + 0x200043c8 + 0x1e + + + + .text:FOE_ContinueInd + 0x200043e6 + 0x200043e6 + 0x1c - + .text:GetSyncMan - 0x20004a1e - 0x20004a1e + 0x20004402 + 0x20004402 0x1c - + - + + .text:MailboxServiceInd + 0x2000441e + 0x2000441e + 0x1c + + + .text:ResetALEventMask - 0x20004a3a - 0x20004a3a + 0x2000443a + 0x2000443a 0x1c - + - + .text:SetALEventMask - 0x20004a56 - 0x20004a56 + 0x20004456 + 0x20004456 0x1c - + .text:decompress:ZI:__TI_zero_init_nomemset:__TI_zero_init_nomemset - 0x20004a72 - 0x20004a72 + 0x20004472 + 0x20004472 0x1c - + - + .text:free_list_remove - 0x20004a90 - 0x20004a90 + 0x20004490 + 0x20004490 0x1c - + .text:ESC_applicationLayerHandler - 0x20004aac - 0x20004aac + 0x200044ac + 0x200044ac 0x1a - + .text:ESC_applicationSync0Handler - 0x20004ac6 - 0x20004ac6 + 0x200044c6 + 0x200044c6 0x1a - + .text:ESC_applicationSync1Handler - 0x20004ae0 - 0x20004ae0 + 0x200044e0 + 0x200044e0 0x1a - + - + .text:OBJ_GetObjectHandle - 0x20004afa - 0x20004afa + 0x200044fa + 0x200044fa 0x1a - + - - .text:COE_Init - 0x20004b14 - 0x20004b14 - 0x18 - - - + .text:StopOutputHandler - 0x20004b2c - 0x20004b2c + 0x20004514 + 0x20004514 0x18 - + - + .text:strlen - 0x20004b44 - 0x20004b44 + 0x2000452c + 0x2000452c 0x14 - + - - .text:MailboxServiceInd - 0x20004b58 - 0x20004b58 + + .text:FOE_Error + 0x20004540 + 0x20004540 0x12 - + - + .text:ESC_writeBlockISR - 0x20004b6a - 0x20004b6a + 0x20004552 + 0x20004552 0x10 - + - + .text:BackToInitTransition - 0x20004b7a - 0x20004b7a + 0x20004562 + 0x20004562 + 0xe + + + + .text:COE_Init + 0x20004570 + 0x20004570 0xe - + .text:ESC_getTimer - 0x20004b88 - 0x20004b88 + 0x2000457e + 0x2000457e 0xe - + .text:decompress:none:__TI_decompress_none - 0x20004b96 - 0x20004b96 + 0x2000458c + 0x2000458c 0xe - + - + .text:COE_GetObjectDictionary - 0x20004ba4 - 0x20004ba4 + 0x2000459a + 0x2000459a + 0xc + + + + .text:CiA402_TransitionAction + 0x200045a6 + 0x200045a6 0xc - - .text:CiA402_TransitionAction - 0x20004bb0 - 0x20004bb0 - 0xc - - - + .text:ESC_readBlock - 0x20004bbc - 0x20004bbc + 0x200045b2 + 0x200045b2 0xc - + - + .text:ESC_readBlockISR - 0x20004bc8 - 0x20004bc8 + 0x200045be + 0x200045be 0xc - + - + .text:ESC_readByte - 0x20004bd4 - 0x20004bd4 + 0x200045ca + 0x200045ca 0xc - + - + .text:ESC_readDWord - 0x20004be0 - 0x20004be0 + 0x200045d6 + 0x200045d6 0xc - + - + .text:ESC_readWord - 0x20004bec - 0x20004bec + 0x200045e2 + 0x200045e2 0xc - + - + .text:ESC_writeBlock - 0x20004bf8 - 0x20004bf8 + 0x200045ee + 0x200045ee 0xc - + - + .text:ESC_writeByte - 0x20004c04 - 0x20004c04 + 0x200045fa + 0x200045fa 0xc - + .text:ESC_writeDWord - 0x20004c10 - 0x20004c10 + 0x20004606 + 0x20004606 0xc - + - + .text:ESC_writeWord - 0x20004c1c - 0x20004c1c + 0x20004612 + 0x20004612 0xc - + .text:ESC_readByteISR - 0x20004c28 - 0x20004c28 + 0x2000461e + 0x2000461e 0xa - + - + .text:ESC_readDWordISR - 0x20004c32 - 0x20004c32 + 0x20004628 + 0x20004628 0xa - + .text:ESC_readWordISR - 0x20004c3c - 0x20004c3c + 0x20004632 + 0x20004632 0xa - + - + .text:ESC_timerIncPerMilliSec - 0x20004c46 - 0x20004c46 + 0x2000463c + 0x2000463c 0xa - + - + .text:ESC_writeByteISR - 0x20004c50 - 0x20004c50 + 0x20004646 + 0x20004646 0xa - + - + .text:ESC_writeDWordISR - 0x20004c5a - 0x20004c5a + 0x20004650 + 0x20004650 0xa - + - + .text:ESC_writeWordISR - 0x20004c64 - 0x20004c64 + 0x2000465a + 0x2000465a 0xa - + .text:ESC_resetESC - 0x20004c6e - 0x20004c6e + 0x20004664 + 0x20004664 0x8 - - - - .text:malloc - 0x20004c76 - 0x20004c76 - 0x8 - - - - .text:APPL_StartOutputHandler - 0x20004c7e - 0x20004c7e - 0x4 - - - - .text:APPL_StopInputHandler - 0x20004c82 - 0x20004c82 - 0x4 - - - - .text:APPL_StopMailboxHandler - 0x20004c86 - 0x20004c86 - 0x4 - - - - .text:APPL_StopOutputHandler - 0x20004c8a - 0x20004c8a - 0x4 - - - - .text:F2838XCM_strcpy - 0x20004c8e - 0x20004c8e - 0x4 - - .text:OBJ_GetObjDesc - 0x20004c92 - 0x20004c92 + + .text:FOE_Busy + 0x2000466c + 0x2000466c + 0x8 + + + + .text:malloc + 0x20004674 + 0x20004674 + 0x8 + + + + .text:APPL_StopMailboxHandler + 0x2000467c + 0x2000467c + 0x4 + + + + .text:APPL_StopOutputHandler + 0x20004680 + 0x20004680 + 0x4 + + + + .text:F2838XCM_strcpy + 0x20004684 + 0x20004684 0x4 + + .text:OBJ_GetObjDesc + 0x20004688 + 0x20004688 + 0x4 + + .text:_system_pre_init - 0x20004c96 - 0x20004c96 + 0x2000468c + 0x2000468c 0x4 - + - + .text:abort:abort - 0x20004c9a - 0x20004c9a + 0x20004690 + 0x20004690 0x4 - + - + .cinit..data.load - 0x20004ca0 - 0x20004ca0 - 0x340 + 0x20004698 + 0x20004698 + 0x347 - + __TI_handler_table - 0x20004fe0 - 0x20004fe0 + 0x200049e0 + 0x200049e0 0xc - + .cinit..bss.load - 0x20004ff0 - 0x20004ff0 + 0x200049f0 + 0x200049f0 0x8 - + __TI_cinit_table - 0x20004ff8 - 0x20004ff8 + 0x200049f8 + 0x200049f8 0x10 @@ -1462,9 +1507,9 @@ true 0x1fffe000 0x10 - + - + .sysmem true 0x1fffe000 @@ -1473,12998 +1518,13166 @@ .stack true - 0x1fffd538 + 0x1fffd590 0x4 - + - + .stack true - 0x1fffd538 + 0x1fffd590 0x0 - + .data:sRxPDOassign - 0x1fffd13c - 0x1fffd13c + 0x1fffd194 + 0x1fffd194 0x6 - + - + .data:sTxPDOassign + 0x1fffd1a0 + 0x1fffd1a0 + 0x6 + + + + .data:sModulardeviceprofile + 0x1fffd10a + 0x1fffd10a + 0x6 + + + + .data:sModuleProfileInfo + 0x1fffd16c + 0x1fffd16c + 0xc + + + + .data:sConfiguredModuleIdentList 0x1fffd148 0x1fffd148 - 0x6 - - - - .data:sModulardeviceprofile - 0x1fffd0b2 - 0x1fffd0b2 - 0x6 - - - - .data:sModuleProfileInfo - 0x1fffd114 - 0x1fffd114 0xc - + - - .data:sConfiguredModuleIdentList - 0x1fffd0f0 - 0x1fffd0f0 - 0xc - - - + .data:sDetectedModuleIdentList - 0x1fffd0fc - 0x1fffd0fc + 0x1fffd154 + 0x1fffd154 0xc - + - + .data:DefCiA402ObjectValues - 0x1fffcfc0 - 0x1fffcfc0 + 0x1fffd018 + 0x1fffd018 0xb0 - + - + .data:ApplicationObjDic - 0x1fffcea8 - 0x1fffcea8 + 0x1fffcf00 + 0x1fffcf00 0x118 - + - + .data:DefCiA402AxisObjDic - 0x1fffc8e0 - 0x1fffc8e0 + 0x1fffc938 + 0x1fffc938 0x3e8 - + - + .data - 0x1fffd0b8 - 0x1fffd0b8 + 0x1fffd110 + 0x1fffd110 0x14 - - - - .data:acDevicename - 0x1fffd070 - 0x1fffd070 - 0x19 - - - - .data:acHardwareversion - 0x1fffd089 - 0x1fffd089 - 0x14 - - - - .data:acSoftwareversion - 0x1fffd09d - 0x1fffd09d - 0x14 - - - - .data:sIdentity - 0x1fffd0cc - 0x1fffd0cc - 0x14 - - - - .data:sSyncmanagertype - 0x1fffd142 - 0x1fffd142 - 0x6 - - - - .data:GenObjDic - 0x1fffccc8 - 0x1fffccc8 - 0x1e0 - - - - .data - 0x1fffd120 - 0x1fffd120 - 0xa - + + .data:acDevicename + 0x1fffd0c8 + 0x1fffd0c8 + 0x19 + + + + .data:acHardwareversion + 0x1fffd0e1 + 0x1fffd0e1 + 0x14 + + + + .data:acSoftwareversion + 0x1fffd0f5 + 0x1fffd0f5 + 0x14 + + + + .data:sIdentity + 0x1fffd124 + 0x1fffd124 + 0x14 + + + + .data:sSyncmanagertype + 0x1fffd19a + 0x1fffd19a + 0x6 + + + + .data:GenObjDic + 0x1fffcd20 + 0x1fffcd20 + 0x1e0 + + + .data - 0x1fffd0ed - 0x1fffd0ed + 0x1fffd178 + 0x1fffd178 + 0xa + + + + .data + 0x1fffd145 + 0x1fffd145 0x2 - + .data:sErrorSettings - 0x1fffd108 - 0x1fffd108 + 0x1fffd160 + 0x1fffd160 0xc - + - + .data:aSubindexDesc - 0x1fffd0e0 - 0x1fffd0e0 + 0x1fffd138 + 0x1fffd138 0xd - + - - .data - 0x1fffd0b1 - 0x1fffd0b1 - 0x1 - - - + .data:$O1$$ - 0x1fffd134 - 0x1fffd134 + 0x1fffd18c + 0x1fffd18c 0x8 - + - + .data:$O1$$ - 0x1fffd12c - 0x1fffd12c + 0x1fffd184 + 0x1fffd184 0x8 - + - + .common:LocalAxes true - 0x1fffd150 + 0x1fffd1a8 0x1a0 - + .common:u32LastDc32Value true - 0x1fffd4c0 + 0x1fffd520 0x4 - + .common:u32CheckForDcOverrunCnt true - 0x1fffd4b8 + 0x1fffd514 0x4 - + .common:bEtherCATRunLed true - 0x1fffd519 + 0x1fffd57b 0x1 - + .common:bEtherCATErrorLed true - 0x1fffd518 + 0x1fffd57a 0x1 - + .common:bRunApplication true - 0x1fffd521 + 0x1fffd581 0x1 - - .common:pAPPL_MainLoop + + .common:pAPPL_FoeRead true - 0x1fffd488 + 0x1fffd4e4 + 0x4 + + + .common:pAPPL_FoeReadData + true + 0x1fffd4e8 + 0x4 + + + .common:pAPPL_FoeError + true + 0x1fffd4e0 + 0x4 + + + .common:pAPPL_FoeWrite + true + 0x1fffd4ec 0x4 + .common:pAPPL_FoeWriteData + true + 0x1fffd4f0 + 0x4 + + + .common:pAPPL_CoeReadInd + true + 0x1fffd4d8 + 0x4 + + + .common:pAPPL_CoeWriteInd + true + 0x1fffd4dc + 0x4 + + + .common:pAPPL_MainLoop + true + 0x1fffd4f4 + 0x4 + + .common:u32CycleTimeStartValue true - 0x1fffd4bc + 0x1fffd518 0x4 - + .common:u32MinCycleTimeStartValue true - 0x1fffd4c4 + 0x1fffd528 0x4 - + .common:u32SystemTimeReadFailure true - 0x1fffd4d0 + 0x1fffd534 0x4 - + .common:bMinCycleTimeMeasurementStarted true - 0x1fffd51e + 0x1fffd57e 0x1 - + .common:u32MinCycleTimeValue true - 0x1fffd4c8 + 0x1fffd52c 0x4 - + .common:aPdOutputData true - 0x1fffd334 + 0x1fffd38c 0x44 - + .common:aPdInputData true - 0x1fffd2f0 + 0x1fffd348 0x44 - + .common:pCoeSendStored true - 0x1fffd48c + 0x1fffd4f8 0x4 + + .common:u32PacketNo + true + 0x1fffd530 + 0x4 + + + .common:u32FileOffset + true + 0x1fffd51c + 0x4 + + + .common:u32LastFileOffset + true + 0x1fffd524 + 0x4 + + + .common:u16FileAccessState + true + 0x1fffd562 + 0x2 + + + .common:pFoeSendStored + true + 0x1fffd4fc + 0x4 + + + .common:u16FoeMaxSendBlockSize + true + 0x1fffd564 + 0x2 + .common:bEcatOutputUpdateRunning true - 0x1fffd515 + 0x1fffd577 0x1 .common:bEcatInputUpdateRunning true - 0x1fffd514 + 0x1fffd576 0x1 .common:bEcatFirstOutputsReceived true - 0x1fffd513 + 0x1fffd575 0x1 - + .common:bWdTrigger true - 0x1fffd529 + 0x1fffd585 0x1 - + .common:bDcSyncActive true - 0x1fffd512 + 0x1fffd574 0x1 - + .common:EsmTimeoutCounter true - 0x1fffd4d6 + 0x1fffd53a 0x2 .common:bDcRunning true - 0x1fffd511 + 0x1fffd573 0x1 - + .common:u16SmSync0Counter true - 0x1fffd508 + 0x1fffd56c + 0x2 + + + .common:u16SmSync0Value + true + 0x1fffd56e + 0x2 + + + .common:bSmSyncSequenceValid + true + 0x1fffd583 + 0x1 + + + .common:i16WaitForPllRunningTimeout + true + 0x1fffd54a + 0x2 + + + .common:i16WaitForPllRunningCnt + true + 0x1fffd548 0x2 - .common:u16SmSync0Value - true - 0x1fffd50a - 0x2 - - - .common:bSmSyncSequenceValid - true - 0x1fffd526 - 0x1 - - - .common:i16WaitForPllRunningTimeout - true - 0x1fffd4e6 - 0x2 - - - .common:i16WaitForPllRunningCnt - true - 0x1fffd4e4 - 0x2 - - .common:Sync0WdCounter true - 0x1fffd4dc + 0x1fffd540 0x2 - + .common:Sync0WdValue true - 0x1fffd4de + 0x1fffd542 0x2 .common:Sync1WdCounter true - 0x1fffd4e0 + 0x1fffd544 0x2 - + .common:Sync1WdValue true - 0x1fffd4e2 + 0x1fffd546 0x2 - + .common:LatchInputSync0Value true - 0x1fffd4da + 0x1fffd53e 0x2 - + .common:LatchInputSync0Counter true - 0x1fffd4d8 + 0x1fffd53c 0x2 - + .common:b32BitDc true - 0x1fffd50e + 0x1fffd570 0x1 .common:bEscIntEnabled true - 0x1fffd517 + 0x1fffd579 0x1 - + .common:b3BufferMode true - 0x1fffd50f + 0x1fffd571 0x1 - - .common:bLocalErrorFlag - true - 0x1fffd51b - 0x1 - - + .common:u16LocalErrorCode true - 0x1fffd502 + 0x1fffd566 0x2 - + + .common:u8LocalErrorState + true + 0x1fffd58a + 0x1 + + .common:bApplEsmPending true - 0x1fffd510 + 0x1fffd572 0x1 - - .common:bEcatWaitForAlControlRes - true - 0x1fffd516 - 0x1 - - - .common:nEcatStateTrans - true - 0x1fffd4e8 - 0x2 - + .common:bEcatWaitForAlControlRes + true + 0x1fffd578 + 0x1 + + + .common:nEcatStateTrans + true + 0x1fffd54c + 0x2 + + .common:u8EcatErrorLed true - 0x1fffd52e + 0x1fffd588 0x1 - + .common:u8EcatRunLed true - 0x1fffd52f + 0x1fffd589 0x1 - + .common:nPdInputSize true - 0x1fffd4f0 + 0x1fffd554 0x2 - + .common:nPdOutputSize true - 0x1fffd4f2 + 0x1fffd556 0x2 - + .common:nMaxSyncMan true - 0x1fffd52b + 0x1fffd587 0x1 - + .common:nMaxEscAddress true - 0x1fffd4ee + 0x1fffd552 0x2 - + .common:nAlStatus true - 0x1fffd52a + 0x1fffd586 0x1 - - .common:bExplicitDevIdRequested - true - 0x1fffd51a - 0x1 - - + .common:EcatWdValue true - 0x1fffd4d4 + 0x1fffd538 0x2 .common:nEscAddrOutputData true - 0x1fffd4ec + 0x1fffd550 0x2 - + .common:nEscAddrInputData true - 0x1fffd4ea + 0x1fffd54e 0x2 - + .common:u16ALEventMask true - 0x1fffd4fc + 0x1fffd55c 0x2 .common:u8dummy true - 0x1fffd535 + 0x1fffd58e 0x1 - + .common:SyncManInfo true - 0x1fffd478 + 0x1fffd4d0 0x8 - + .common:bReceiveMbxIsLocked true - 0x1fffd520 + 0x1fffd580 + 0x1 + + + .common:bSendMbxIsFull + true + 0x1fffd582 + 0x1 + + + .common:bMbxRunning + true + 0x1fffd57d + 0x1 + + + .common:bMbxRepeatToggle + true + 0x1fffd57c + 0x1 + + + .common:u16SendMbxSize + true + 0x1fffd56a + 0x2 + + + .common:u16ReceiveMbxSize + true + 0x1fffd568 + 0x2 + + + .common:u16EscAddrReceiveMbx + true + 0x1fffd55e + 0x2 + + + .common:u16EscAddrSendMbx + true + 0x1fffd560 + 0x2 + + + .common:u8MbxWriteCounter + true + 0x1fffd58d 0x1 - .common:bSendMbxIsFull - true - 0x1fffd525 - 0x1 - - - .common:bMbxRunning - true - 0x1fffd51d - 0x1 - - - .common:bMbxRepeatToggle - true - 0x1fffd51c - 0x1 - - - .common:u16SendMbxSize - true - 0x1fffd506 - 0x2 - - - .common:u16ReceiveMbxSize - true - 0x1fffd504 - 0x2 - - - .common:u16EscAddrReceiveMbx - true - 0x1fffd4fe - 0x2 - - - .common:u16EscAddrSendMbx - true - 0x1fffd500 - 0x2 - - - .common:u8MbxWriteCounter - true - 0x1fffd532 - 0x1 - - .common:u8MbxReadCounter true - 0x1fffd531 + 0x1fffd58c 0x1 - + .common:u8MailboxSendReqStored true - 0x1fffd530 + 0x1fffd58b 0x1 - + .common:psWriteMbx true - 0x1fffd4b4 - 0x4 - - - .common:psReadMbx - true - 0x1fffd4a8 + 0x1fffd510 0x4 - .common:psRepeatMbx + .common:psReadMbx true - 0x1fffd4ac + 0x1fffd504 0x4 - - .common:psStoreMbx + + .common:psRepeatMbx true - 0x1fffd4b0 + 0x1fffd508 0x4 + .common:psStoreMbx + true + 0x1fffd50c + 0x4 + + .common:sMbxSendQueue true - 0x1fffd434 + 0x1fffd48c 0x34 - + .common:sMbxReceiveQueue true - 0x1fffd400 + 0x1fffd458 0x34 - + .common:bNoMbxMemoryAvailable true - 0x1fffd51f + 0x1fffd57f 0x1 - + .common:bSyncSetByUser true - 0x1fffd528 + 0x1fffd584 0x1 - + .common:sCycleDiag true - 0x1fffd4fa + 0x1fffd55a 0x2 .common:sSyncManOutPar true - 0x1fffd3bc + 0x1fffd414 0x44 - + .common:sSyncManInPar true - 0x1fffd378 + 0x1fffd3d0 0x44 - - .common:u8PendingSdo - true - 0x1fffd533 - 0x1 - - - .common:bStoreCompleteAccess - true - 0x1fffd527 - 0x1 - - - .common:u8StoreSubindex - true - 0x1fffd534 - 0x1 - - - .common:u16StoreIndex - true - 0x1fffd50c - 0x2 - - - .common:u32StoreDataSize - true - 0x1fffd4cc - 0x4 - - - .common:pStoreData - true - 0x1fffd4a4 - 0x4 - - - .common:pSdoPendFunc - true - 0x1fffd494 - 0x4 - - + .common:aSdoInfoHeader true - 0x1fffd468 + 0x1fffd4c0 0x10 - - .common:pSdoSegData - true - 0x1fffd49c - 0x4 - - - .common:nSdoInfoFragmentsLeft - true - 0x1fffd4f4 - 0x2 - - + .common:nSdoInfoIndex true - 0x1fffd4f6 + 0x1fffd558 0x2 - + .common:pSdoInfoObjEntry true - 0x1fffd490 + 0x1fffd500 0x4 - - .common:pSdoResStored - true - 0x1fffd498 - 0x4 - - - .common:nSdoSegService - true - 0x1fffd52c - 0x1 - - - .common:bSdoSegFollows - true - 0x1fffd523 - 0x1 - - - .common:bSdoSegAccess - true - 0x1fffd522 - 0x1 - - - .common:nSdoSegIndex - true - 0x1fffd4f8 - 0x2 - - - .common:nSdoSegSubindex - true - 0x1fffd52d - 0x1 - - - .common:nSdoSegBytesToHandle - true - 0x1fffd480 - 0x4 - - - .common:bSdoSegLastToggle - true - 0x1fffd524 - 0x1 - - - .common:nSdoSegCompleteSize - true - 0x1fffd484 - 0x4 - - - .common:pSdoSegObjEntry - true - 0x1fffd4a0 - 0x4 - - + .const:.string:aName0x1C32 0x1fffc000 0x1fffc000 - 0x100 - + 0x108 + - + .const:.string:aName0x1C33 - 0x1fffc100 - 0x1fffc100 - 0xff - - - - .const:asEntryDesc0x1C3x - 0x1fffc200 - 0x1fffc200 - 0xc6 - - - - .const:cAbortCode - 0x1fffc2c8 - 0x1fffc2c8 - 0x78 - - - - .const:.string:aName0x60C2 - 0x1fffc340 - 0x1fffc340 - 0x46 - - - - .const:.string:aName0xF000 - 0x1fffc386 - 0x1fffc386 - 0x42 - - - - .const:.string:aName0x607D - 0x1fffc3c8 - 0x1fffc3c8 - 0x40 - - - - .const:.string:aName0x10F1 - 0x1fffc408 - 0x1fffc408 - 0x3f - - - - .const:.string:aName0x1018 - 0x1fffc447 - 0x1fffc447 - 0x39 - - - - .const:asEntryDesc0x1600 - 0x1fffc480 - 0x1fffc480 - 0x24 - - - - .const:asEntryDesc0x1A00 - 0x1fffc4a4 - 0x1fffc4a4 - 0x24 - - - - .const:cBitMask - 0x1fffc4c8 - 0x1fffc4c8 - 0x20 - - - - .const:.string:aName0x605C - 0x1fffc4e8 - 0x1fffc4e8 - 0x1e - - - - .const:asEntryDesc0x1018 - 0x1fffc506 - 0x1fffc506 - 0x1e - - - - .const:.string:aName0xF030 - 0x1fffc524 - 0x1fffc524 - 0x1d - - - - .const:.string:aName0x6061 - 0x1fffc541 - 0x1fffc541 - 0x1b - - - - .const:asEntryDesc0x1601 - 0x1fffc55c - 0x1fffc55c - 0x18 - - - - .const:asEntryDesc0x1602 - 0x1fffc574 - 0x1fffc574 - 0x18 - - - - .const:asEntryDesc0x1A01 - 0x1fffc58c - 0x1fffc58c - 0x18 - - - - .const:asEntryDesc0x1A02 - 0x1fffc5a4 - 0x1fffc5a4 - 0x18 - - - - .const:.string:aName0x605A - 0x1fffc5bc - 0x1fffc5bc - 0x16 - - - - .const:.string:aName0x6064 - 0x1fffc5d2 - 0x1fffc5d2 - 0x16 - - - - .const:.string:aName0x606C - 0x1fffc5e8 - 0x1fffc5e8 - 0x16 - - - - .const:.string:aName0x6085 - 0x1fffc5fe - 0x1fffc5fe - 0x16 - - - - .const:.string:aName0x6502 - 0x1fffc614 - 0x1fffc614 - 0x16 - - - - .const:.string:aName0x605B - 0x1fffc62a - 0x1fffc62a - 0x15 - - - - .const:.string:aName0xF050 - 0x1fffc63f - 0x1fffc63f - 0x15 - - - - .const:.string:aName0x605E - 0x1fffc654 - 0x1fffc654 - 0x14 - - - - .const:.string:aName0x6077 - 0x1fffc668 - 0x1fffc668 - 0x14 - - - - .const:.string:aName0xF010 - 0x1fffc67c - 0x1fffc67c - 0x14 - - - - .const:.string:aName0x10F8 - 0x1fffc690 - 0x1fffc690 - 0x13 - - - - .const:.string:aName0x6060 - 0x1fffc6a3 - 0x1fffc6a3 - 0x13 - - - - .const:.string:aName0x1C00 - 0x1fffc6b6 - 0x1fffc6b6 - 0x12 - + 0x1fffc108 + 0x1fffc108 + 0x107 + - .const:asEntryDesc0x10F1 - 0x1fffc6c8 - 0x1fffc6c8 - 0x12 - + .const:asEntryDesc0x1C3x + 0x1fffc210 + 0x1fffc210 + 0xc6 + - - .const:asEntryDesc0x607D - 0x1fffc6da - 0x1fffc6da - 0x12 - + + .const:cAbortCode + 0x1fffc2d8 + 0x1fffc2d8 + 0x78 + - - .const:asEntryDesc0x60C2 - 0x1fffc6ec - 0x1fffc6ec - 0x12 - - - - .const:asEntryDesc0xF000 - 0x1fffc6fe - 0x1fffc6fe - 0x12 - - - - .const:asEntryDesc0xF010 - 0x1fffc710 - 0x1fffc710 - 0x12 - - - - .const:asEntryDesc0xF030 - 0x1fffc722 - 0x1fffc722 - 0x12 - - - - .const:asEntryDesc0xF050 - 0x1fffc734 - 0x1fffc734 - 0x12 - - - - .const:.string:aName0x1009 - 0x1fffc746 - 0x1fffc746 - 0x11 - - - - .const:.string:aName0x100A - 0x1fffc757 - 0x1fffc757 - 0x11 - - - - .const:.string:aName0x1600 - 0x1fffc768 - 0x1fffc768 - 0x10 - - - - .const:.string:aName0x1A00 - 0x1fffc778 - 0x1fffc778 - 0x10 - - - - .const:.string:aName0x607A - 0x1fffc788 - 0x1fffc788 - 0x10 - - - - .const:.string:aName0x60FF - 0x1fffc798 - 0x1fffc798 - 0x10 - - - - .const:.string:aName0x1001 - 0x1fffc7a8 - 0x1fffc7a8 - 0xf - - - - .const:.string:aName0x1C12 - 0x1fffc7b7 - 0x1fffc7b7 - 0xd - - - - .const:.string:aName0x1C13 - 0x1fffc7c4 - 0x1fffc7c4 - 0xd - - - - .const:.string:aName0x6040 - 0x1fffc7d1 - 0x1fffc7d1 - 0xd - - - - .const:.string:aName0x1000 - 0x1fffc7de - 0x1fffc7de - 0xc + + .const:.string:aName0x60C2 + 0x1fffc350 + 0x1fffc350 + 0x55 - .const:.string:aName0x1008 - 0x1fffc7ea - 0x1fffc7ea - 0xc + .const:.string:aName0x1018 + 0x1fffc3a5 + 0x1fffc3a5 + 0x47 + + + + .const:.string:aName0xF000 + 0x1fffc3ec + 0x1fffc3ec + 0x42 - - .const:.string:aName0x1601 - 0x1fffc7f6 - 0x1fffc7f6 - 0xc - - - - .const:.string:aName0x1602 - 0x1fffc802 - 0x1fffc802 - 0xc - - - - .const:.string:aName0x1A01 - 0x1fffc80e - 0x1fffc80e - 0xc - - - - .const:.string:aName0x1A02 - 0x1fffc81a - 0x1fffc81a - 0xc - - - - .const:.string:aName0x6041 - 0x1fffc826 - 0x1fffc826 - 0xc - - - - .const:asEntryDesc0x1C00 - 0x1fffc832 - 0x1fffc832 - 0xc + + .const:.string:aName0x607D + 0x1fffc42e + 0x1fffc42e + 0x40 - - .const:asPDOAssignEntryDesc - 0x1fffc83e - 0x1fffc83e - 0xc - + + .const:.string:aName0x10F1 + 0x1fffc46e + 0x1fffc46e + 0x3f + - - .const:.string:aName0x603F - 0x1fffc84a - 0x1fffc84a - 0xb - - - - .const:sEntryDesc0x1000 - 0x1fffc856 - 0x1fffc856 - 0x6 + + .const:asEntryDesc0x1600 + 0x1fffc4ae + 0x1fffc4ae + 0x24 + + .const:asEntryDesc0x1A00 + 0x1fffc4d2 + 0x1fffc4d2 + 0x24 + + + + .const:cBitMask + 0x1fffc4f6 + 0x1fffc4f6 + 0x20 + + + + .const:.string:aName0x1009 + 0x1fffc516 + 0x1fffc516 + 0x1e + + - .const:sEntryDesc0x1001 - 0x1fffc85c - 0x1fffc85c - 0x6 + .const:.string:aName0x100A + 0x1fffc534 + 0x1fffc534 + 0x1e + + + + .const:.string:aName0x605C + 0x1fffc552 + 0x1fffc552 + 0x1e - .const:sEntryDesc0x1008 - 0x1fffc862 - 0x1fffc862 - 0x6 + .const:asEntryDesc0x1018 + 0x1fffc570 + 0x1fffc570 + 0x1e + + + + .const:.string:aName0xF030 + 0x1fffc58e + 0x1fffc58e + 0x1d - - .const:sEntryDesc0x1009 - 0x1fffc868 - 0x1fffc868 - 0x6 + + .const:.string:aName0x605E + 0x1fffc5ab + 0x1fffc5ab + 0x1b + + + + .const:.string:aName0x6061 + 0x1fffc5c6 + 0x1fffc5c6 + 0x1b + + + + .const:.string:aName0x6085 + 0x1fffc5e1 + 0x1fffc5e1 + 0x18 + + + + .const:asEntryDesc0x1601 + 0x1fffc5fa + 0x1fffc5fa + 0x18 + + + + .const:asEntryDesc0x1602 + 0x1fffc612 + 0x1fffc612 + 0x18 + + + + .const:asEntryDesc0x1A01 + 0x1fffc62a + 0x1fffc62a + 0x18 + + + + .const:asEntryDesc0x1A02 + 0x1fffc642 + 0x1fffc642 + 0x18 + + + + .const:.string:aName0x605A + 0x1fffc65a + 0x1fffc65a + 0x17 + + + + .const:.string:aName0x6064 + 0x1fffc671 + 0x1fffc671 + 0x16 + + + + .const:.string:aName0x606C + 0x1fffc687 + 0x1fffc687 + 0x16 + + + + .const:.string:aName0x6502 + 0x1fffc69d + 0x1fffc69d + 0x16 + + + + .const:.string:aName0x605B + 0x1fffc6b3 + 0x1fffc6b3 + 0x15 + + + + .const:.string:aName0xF050 + 0x1fffc6c8 + 0x1fffc6c8 + 0x15 + + + + .const:.string:aName0x6077 + 0x1fffc6dd + 0x1fffc6dd + 0x14 + + + + .const:.string:aName0xF010 + 0x1fffc6f1 + 0x1fffc6f1 + 0x14 - .const:sEntryDesc0x100A + .const:.string:aName0x10F8 + 0x1fffc705 + 0x1fffc705 + 0x13 + + + + .const:.string:aName0x6060 + 0x1fffc718 + 0x1fffc718 + 0x13 + + + + .const:.string:aName0x1C00 + 0x1fffc72b + 0x1fffc72b + 0x12 + + + + .const:asEntryDesc0x10F1 + 0x1fffc73e + 0x1fffc73e + 0x12 + + + + .const:asEntryDesc0x607D + 0x1fffc750 + 0x1fffc750 + 0x12 + + + + .const:asEntryDesc0x60C2 + 0x1fffc762 + 0x1fffc762 + 0x12 + + + + .const:asEntryDesc0xF000 + 0x1fffc774 + 0x1fffc774 + 0x12 + + + + .const:asEntryDesc0xF010 + 0x1fffc786 + 0x1fffc786 + 0x12 + + + + .const:asEntryDesc0xF030 + 0x1fffc798 + 0x1fffc798 + 0x12 + + + + .const:asEntryDesc0xF050 + 0x1fffc7aa + 0x1fffc7aa + 0x12 + + + + .const:.string:aName0x1600 + 0x1fffc7bc + 0x1fffc7bc + 0x10 + + + + .const:.string:aName0x1A00 + 0x1fffc7cc + 0x1fffc7cc + 0x10 + + + + .const:.string:aName0x607A + 0x1fffc7dc + 0x1fffc7dc + 0x10 + + + + .const:.string:aName0x60FF + 0x1fffc7ec + 0x1fffc7ec + 0x10 + + + + .const:.string:aName0x1001 + 0x1fffc7fc + 0x1fffc7fc + 0xf + + + + .const:.string:aName0x1C12 + 0x1fffc80b + 0x1fffc80b + 0xd + + + + .const:.string:aName0x1C13 + 0x1fffc818 + 0x1fffc818 + 0xd + + + + .const:.string:aName0x6040 + 0x1fffc825 + 0x1fffc825 + 0xd + + + + .const:.string:aName0x1000 + 0x1fffc832 + 0x1fffc832 + 0xc + + + + .const:.string:aName0x1008 + 0x1fffc83e + 0x1fffc83e + 0xc + + + + .const:.string:aName0x1601 + 0x1fffc84a + 0x1fffc84a + 0xc + + + + .const:.string:aName0x1602 + 0x1fffc856 + 0x1fffc856 + 0xc + + + + .const:.string:aName0x1A01 + 0x1fffc862 + 0x1fffc862 + 0xc + + + + .const:.string:aName0x1A02 0x1fffc86e 0x1fffc86e - 0x6 + 0xc - - .const:sEntryDesc0x10F8 - 0x1fffc874 - 0x1fffc874 - 0x6 - - - - .const:sEntryDesc0x603F + + .const:.string:aName0x6041 0x1fffc87a 0x1fffc87a - 0x6 - + 0xc + - - .const:sEntryDesc0x6040 - 0x1fffc880 - 0x1fffc880 - 0x6 - - - - .const:sEntryDesc0x6041 + + .const:asEntryDesc0x1C00 0x1fffc886 0x1fffc886 - 0x6 - + 0xc + - - .const:sEntryDesc0x605A - 0x1fffc88c - 0x1fffc88c - 0x6 - - - - .const:sEntryDesc0x605B + + .const:asPDOAssignEntryDesc 0x1fffc892 0x1fffc892 - 0x6 - + 0xc + - - .const:sEntryDesc0x605C - 0x1fffc898 - 0x1fffc898 - 0x6 - - - - .const:sEntryDesc0x605E + + .const:.string:aName0x603F 0x1fffc89e 0x1fffc89e - 0x6 - + 0xb + - - .const:sEntryDesc0x6060 - 0x1fffc8a4 - 0x1fffc8a4 - 0x6 - - - - .const:sEntryDesc0x6061 + + .const:sEntryDesc0x1000 0x1fffc8aa 0x1fffc8aa 0x6 - + - - .const:sEntryDesc0x6064 + + .const:sEntryDesc0x1001 0x1fffc8b0 0x1fffc8b0 0x6 - + - - .const:sEntryDesc0x606C + + .const:sEntryDesc0x1008 0x1fffc8b6 0x1fffc8b6 0x6 - + - - .const:sEntryDesc0x6077 + + .const:sEntryDesc0x1009 0x1fffc8bc 0x1fffc8bc 0x6 - + - - .const:sEntryDesc0x607A + + .const:sEntryDesc0x100A 0x1fffc8c2 0x1fffc8c2 0x6 - + - - .const:sEntryDesc0x6085 + + .const:sEntryDesc0x10F8 0x1fffc8c8 0x1fffc8c8 0x6 - + - - .const:sEntryDesc0x60FF + + .const:sEntryDesc0x603F 0x1fffc8ce 0x1fffc8ce 0x6 - + - - .const:sEntryDesc0x6502 + + .const:sEntryDesc0x6040 0x1fffc8d4 0x1fffc8d4 0x6 - + - + + .const:sEntryDesc0x6041 + 0x1fffc8da + 0x1fffc8da + 0x6 + + + + .const:sEntryDesc0x605A + 0x1fffc8e0 + 0x1fffc8e0 + 0x6 + + + + .const:sEntryDesc0x605B + 0x1fffc8e6 + 0x1fffc8e6 + 0x6 + + + + .const:sEntryDesc0x605C + 0x1fffc8ec + 0x1fffc8ec + 0x6 + + + + .const:sEntryDesc0x605E + 0x1fffc8f2 + 0x1fffc8f2 + 0x6 + + + + .const:sEntryDesc0x6060 + 0x1fffc8f8 + 0x1fffc8f8 + 0x6 + + + + .const:sEntryDesc0x6061 + 0x1fffc8fe + 0x1fffc8fe + 0x6 + + + + .const:sEntryDesc0x6064 + 0x1fffc904 + 0x1fffc904 + 0x6 + + + + .const:sEntryDesc0x606C + 0x1fffc90a + 0x1fffc90a + 0x6 + + + + .const:sEntryDesc0x6077 + 0x1fffc910 + 0x1fffc910 + 0x6 + + + + .const:sEntryDesc0x607A + 0x1fffc916 + 0x1fffc916 + 0x6 + + + + .const:sEntryDesc0x6085 + 0x1fffc91c + 0x1fffc91c + 0x6 + + + + .const:sEntryDesc0x60FF + 0x1fffc922 + 0x1fffc922 + 0x6 + + + + .const:sEntryDesc0x6502 + 0x1fffc928 + 0x1fffc928 + 0x6 + + + + .const:.string + 0x1fffc930 + 0x1fffc930 + 0x4 + + + .debug_info 0x0 0x0 - 0x60c + 0x317 - + .debug_info - 0x60c - 0x60c - 0xed + 0x317 + 0x317 + 0x156 - + .debug_info - 0x6f9 - 0x6f9 - 0xdb + 0x46d + 0x46d + 0x158 - + .debug_info - 0x7d4 - 0x7d4 - 0xdb + 0x5c5 + 0x5c5 + 0x161 - + .debug_info - 0x8af - 0x8af - 0xe7 - - - - .debug_info - 0x996 - 0x996 - 0xdb - - - - .debug_info - 0xa71 - 0xa71 - 0xe7 - - - - .debug_info - 0xb58 - 0xb58 - 0xdb - - - - .debug_info - 0xc33 - 0xc33 - 0xe7 - - - - .debug_info - 0xd1a - 0xd1a - 0xdb - - - - .debug_info - 0xdf5 - 0xdf5 - 0xe7 - - - - .debug_info - 0xedc - 0xedc - 0xdb - - - - .debug_info - 0xfb7 - 0xfb7 - 0xe7 - - - - .debug_info - 0x109e - 0x109e - 0xdb - - - - .debug_info - 0x1179 - 0x1179 - 0xe7 - - - - .debug_info - 0x1260 - 0x1260 - 0xdb - - - - .debug_info - 0x133b - 0x133b - 0xe5 - - - - .debug_info - 0x1420 - 0x1420 - 0xdb - - - - .debug_info - 0x14fb - 0x14fb - 0xe5 - - - - .debug_info - 0x15e0 - 0x15e0 - 0xdb - - - - .debug_info - 0x16bb - 0x16bb - 0xe5 - - - - .debug_info - 0x17a0 - 0x17a0 - 0xdb - - - - .debug_info - 0x187b - 0x187b - 0xe5 - - - - .debug_info - 0x1960 - 0x1960 - 0xdb - - - - .debug_info - 0x1a3b - 0x1a3b - 0xe5 - - - - .debug_info - 0x1b20 - 0x1b20 - 0xdb - - - - .debug_info - 0x1bfb - 0x1bfb - 0xe5 - - - - .debug_info - 0x1ce0 - 0x1ce0 - 0xdb - - - - .debug_info - 0x1dbb - 0x1dbb - 0xe5 - - - - .debug_info - 0x1ea0 - 0x1ea0 - 0xdb - - - - .debug_info - 0x1f7b - 0x1f7b - 0xe5 - - - - .debug_info - 0x2060 - 0x2060 - 0xdb - - - - .debug_info - 0x213b - 0x213b - 0xe5 - - - - .debug_info - 0x2220 - 0x2220 - 0xdb - - - - .debug_info - 0x22fb - 0x22fb - 0xe5 - - - - .debug_info - 0x23e0 - 0x23e0 - 0xdb - - - - .debug_info - 0x24bb - 0x24bb - 0xe5 - - - - .debug_info - 0x25a0 - 0x25a0 - 0xdb - - - - .debug_info - 0x267b - 0x267b - 0xe5 - - - - .debug_info - 0x2760 - 0x2760 - 0xdb - - - - .debug_info - 0x283b - 0x283b - 0xe5 - - - - .debug_info - 0x2920 - 0x2920 - 0xdb - - - - .debug_info - 0x29fb - 0x29fb - 0xe7 - - - - .debug_info - 0x2ae2 - 0x2ae2 - 0xdb - - - - .debug_info - 0x2bbd - 0x2bbd - 0xe5 - - - - .debug_info - 0x2ca2 - 0x2ca2 - 0xdb - - - - .debug_info - 0x2d7d - 0x2d7d - 0xe7 - - - - .debug_info - 0x2e64 - 0x2e64 - 0xdb - - - - .debug_info - 0x2f3f - 0x2f3f - 0xe5 - - - - .debug_info - 0x3024 - 0x3024 - 0xdb - - - - .debug_info - 0x30ff - 0x30ff - 0xe5 - - - - .debug_info - 0x31e4 - 0x31e4 - 0xdb - - - - .debug_info - 0x32bf - 0x32bf - 0xe7 - - - - .debug_info - 0x33a6 - 0x33a6 - 0xdb - - - - .debug_info - 0x3481 - 0x3481 - 0xe7 - - - - .debug_info - 0x3568 - 0x3568 - 0xdb - - - - .debug_info - 0x3643 - 0x3643 - 0xe7 - - - - .debug_info - 0x372a - 0x372a - 0xdb - - - - .debug_info - 0x3805 - 0x3805 - 0xe7 - - - - .debug_info - 0x38ec - 0x38ec - 0xdb - - - - .debug_info - 0x39c7 - 0x39c7 - 0xdd - - - - .debug_info - 0x3aa4 - 0x3aa4 - 0xdd - - - - .debug_info - 0x3b81 - 0x3b81 - 0xef - - - - .debug_info - 0x3c70 - 0x3c70 - 0xe9 - - - - .debug_info - 0x3d59 - 0x3d59 - 0xf9 - - - - .debug_info - 0x3e52 - 0x3e52 - 0xf5 - - - - .debug_info - 0x3f47 - 0x3f47 - 0xef - - - - .debug_info - 0x4036 - 0x4036 - 0xe7 - - - - .debug_info - 0x411d - 0x411d - 0xeb - - - - .debug_info - 0x4208 - 0x4208 - 0x1bd - - - - .debug_info - 0x43c5 - 0x43c5 - 0x358 - - - - .debug_info - 0x471d - 0x471d - 0x160 - - - - .debug_info - 0x487d - 0x487d - 0x195 - - - - .debug_info - 0x4a12 - 0x4a12 - 0x247 - - - - .debug_info - 0x4c59 - 0x4c59 - 0x173 - - - - .debug_info - 0x4dcc - 0x4dcc - 0x18c - - - - .debug_info - 0x4f58 - 0x4f58 - 0x155 - - - - .debug_info - 0x50ad - 0x50ad - 0x25f - - - - .debug_info - 0x530c - 0x530c - 0x208 - - - - .debug_info - 0x5514 - 0x5514 - 0x12d - - - - .debug_info - 0x5641 - 0x5641 - 0x12f - - - - .debug_info - 0x5770 - 0x5770 - 0x12b - - - - .debug_info - 0x589b - 0x589b - 0x12f - - - - .debug_info - 0x59ca - 0x59ca - 0x131 - - - - .debug_info - 0x5afb - 0x5afb - 0x18e - - - - .debug_info - 0x5c89 - 0x5c89 - 0x173 - - - - .debug_info - 0x5dfc - 0x5dfc - 0x171 - - - - .debug_info - 0x5f6d - 0x5f6d - 0x121 - - - - .debug_info - 0x608e - 0x608e - 0x136 - - - - .debug_info - 0x61c4 - 0x61c4 - 0x13a - - - - .debug_info - 0x62fe - 0x62fe - 0x7c6 - - - - .debug_info - 0x6ac4 - 0x6ac4 - 0x981 - - - - .debug_info - 0x7445 - 0x7445 + 0x726 + 0x726 0x110 - + .debug_info - 0x7555 - 0x7555 + 0x836 + 0x836 0x72 - + .debug_info - 0x75c7 - 0x75c7 + 0x8a8 + 0x8a8 0x26b - + .debug_info - 0x7832 - 0x7832 + 0xb13 + 0xb13 0x119 - + .debug_info - 0x794b - 0x794b + 0xc2c + 0xc2c 0x80 - + .debug_info - 0x79cb - 0x79cb - 0x327 + 0xcac + 0xcac + 0x7ca - + .debug_info - 0x7cf2 - 0x7cf2 - 0xd9 + 0x1476 + 0x1476 + 0x327 .debug_info - 0x7dcb - 0x7dcb + 0x179d + 0x179d 0x84 - + .debug_info - 0x7e4f - 0x7e4f + 0x1821 + 0x1821 0x2a4 .debug_info - 0x80f3 - 0x80f3 + 0x1ac5 + 0x1ac5 0xbb - + .debug_info - 0x81ae - 0x81ae + 0x1b80 + 0x1b80 0x35 - + .debug_info - 0x81e3 - 0x81e3 - 0x6ca + 0x1bb5 + 0x1bb5 + 0x649 - + .debug_info - 0x88ad - 0x88ad - 0x15b + 0x21fe + 0x21fe + 0xed - + .debug_info - 0x8a08 - 0x8a08 - 0xe1 - - - - .debug_info - 0x8ae9 - 0x8ae9 - 0xd7 - - - - .debug_info - 0x8bc0 - 0x8bc0 - 0xe1 - - - - .debug_info - 0x8ca1 - 0x8ca1 - 0xd7 - - - - .debug_info - 0x8d78 - 0x8d78 - 0xd9 - - - - .debug_info - 0x8e51 - 0x8e51 - 0xe1 - - - - .debug_info - 0x8f32 - 0x8f32 - 0xd7 - - - - .debug_info - 0x9009 - 0x9009 - 0xe3 - - - - .debug_info - 0x90ec - 0x90ec - 0xe1 - - - - .debug_info - 0x91cd - 0x91cd - 0xd7 - - - - .debug_info - 0x92a4 - 0x92a4 - 0xe3 - - - - .debug_info - 0x9387 - 0x9387 - 0xe1 - - - - .debug_info - 0x9468 - 0x9468 - 0xd7 - - - - .debug_info - 0x953f - 0x953f - 0xd3 - - - - .debug_info - 0x9612 - 0x9612 - 0xe4 - - - - .debug_info - 0x96f6 - 0x96f6 - 0xd8 - - - - .debug_info - 0x97ce - 0x97ce - 0xe4 - - - - .debug_info - 0x98b2 - 0x98b2 - 0xd8 - - - - .debug_info - 0x998a - 0x998a - 0xe2 - - - - .debug_info - 0x9a6c - 0x9a6c - 0xd8 - - - - .debug_info - 0x9b44 - 0x9b44 - 0xe2 + 0x22eb + 0x22eb + 0xdb .debug_info - 0x9c26 - 0x9c26 - 0xe4 + 0x23c6 + 0x23c6 + 0xdb + + + + .debug_info + 0x24a1 + 0x24a1 + 0xe7 + + + + .debug_info + 0x2588 + 0x2588 + 0xdb + + + + .debug_info + 0x2663 + 0x2663 + 0xe7 + + + + .debug_info + 0x274a + 0x274a + 0xdb + + + + .debug_info + 0x2825 + 0x2825 + 0xe7 + + + + .debug_info + 0x290c + 0x290c + 0xdb + + + + .debug_info + 0x29e7 + 0x29e7 + 0xe7 + + + + .debug_info + 0x2ace + 0x2ace + 0xdb + + + + .debug_info + 0x2ba9 + 0x2ba9 + 0xe7 + + + + .debug_info + 0x2c90 + 0x2c90 + 0xdb + + + + .debug_info + 0x2d6b + 0x2d6b + 0xe7 + + + + .debug_info + 0x2e52 + 0x2e52 + 0xdb + + + + .debug_info + 0x2f2d + 0x2f2d + 0xe5 + + + + .debug_info + 0x3012 + 0x3012 + 0xdb + + + + .debug_info + 0x30ed + 0x30ed + 0xe5 + + + + .debug_info + 0x31d2 + 0x31d2 + 0xdb + + + + .debug_info + 0x32ad + 0x32ad + 0xe5 + + + + .debug_info + 0x3392 + 0x3392 + 0xdb + + + + .debug_info + 0x346d + 0x346d + 0xe5 + + + + .debug_info + 0x3552 + 0x3552 + 0xdb + + + + .debug_info + 0x362d + 0x362d + 0xe5 + + + + .debug_info + 0x3712 + 0x3712 + 0xdb + + + + .debug_info + 0x37ed + 0x37ed + 0xe5 + + + + .debug_info + 0x38d2 + 0x38d2 + 0xdb + + + + .debug_info + 0x39ad + 0x39ad + 0xe5 + + + + .debug_info + 0x3a92 + 0x3a92 + 0xdb + + + + .debug_info + 0x3b6d + 0x3b6d + 0xe5 + + + + .debug_info + 0x3c52 + 0x3c52 + 0xdb + + + + .debug_info + 0x3d2d + 0x3d2d + 0xe5 + + + + .debug_info + 0x3e12 + 0x3e12 + 0xdb + + + + .debug_info + 0x3eed + 0x3eed + 0xe5 + + + + .debug_info + 0x3fd2 + 0x3fd2 + 0xdb + + + + .debug_info + 0x40ad + 0x40ad + 0xe5 + + + + .debug_info + 0x4192 + 0x4192 + 0xdb + + + + .debug_info + 0x426d + 0x426d + 0xe5 + + + + .debug_info + 0x4352 + 0x4352 + 0xdb + + + + .debug_info + 0x442d + 0x442d + 0xe5 + + + + .debug_info + 0x4512 + 0x4512 + 0xdb + + + + .debug_info + 0x45ed + 0x45ed + 0xe7 + + + + .debug_info + 0x46d4 + 0x46d4 + 0xdb + + + + .debug_info + 0x47af + 0x47af + 0xe5 + + + + .debug_info + 0x4894 + 0x4894 + 0xdb + + + + .debug_info + 0x496f + 0x496f + 0xe7 + + + + .debug_info + 0x4a56 + 0x4a56 + 0xdb + + + + .debug_info + 0x4b31 + 0x4b31 + 0xe5 + + + + .debug_info + 0x4c16 + 0x4c16 + 0xdb + + + + .debug_info + 0x4cf1 + 0x4cf1 + 0xe5 + + + + .debug_info + 0x4dd6 + 0x4dd6 + 0xdb .debug_info - 0x9d0a - 0x9d0a - 0xd8 + 0x4eb1 + 0x4eb1 + 0xe7 - + .debug_info - 0x9de2 - 0x9de2 - 0xe4 + 0x4f98 + 0x4f98 + 0xdb .debug_info - 0x9ec6 - 0x9ec6 - 0xd8 + 0x5073 + 0x5073 + 0xe7 .debug_info - 0x9f9e - 0x9f9e - 0xd8 + 0x515a + 0x515a + 0xdb - + .debug_info - 0xa076 - 0xa076 - 0xd4 + 0x5235 + 0x5235 + 0xe7 - + .debug_info - 0xa14a - 0xa14a - 0x153 + 0x531c + 0x531c + 0xdb - + .debug_info - 0xa29d - 0xa29d - 0x209 + 0x53f7 + 0x53f7 + 0xe7 - + .debug_info - 0xa4a6 - 0xa4a6 - 0x126 + 0x54de + 0x54de + 0xdb - + .debug_info - 0xa5cc - 0xa5cc - 0x199 + 0x55b9 + 0x55b9 + 0xdd - + .debug_info - 0xa765 - 0xa765 - 0x179 + 0x5696 + 0x5696 + 0xdd - + .debug_info - 0xa8de - 0xa8de - 0x188 + 0x5773 + 0x5773 + 0xef - + .debug_info - 0xaa66 - 0xaa66 + 0x5862 + 0x5862 + 0xe9 + + + + .debug_info + 0x594b + 0x594b + 0xf9 + + + + .debug_info + 0x5a44 + 0x5a44 + 0xf5 + + + + .debug_info + 0x5b39 + 0x5b39 + 0xef + + + + .debug_info + 0x5c28 + 0x5c28 + 0xe7 + + + + .debug_info + 0x5d0f + 0x5d0f + 0xeb + + + + .debug_info + 0x5dfa + 0x5dfa + 0x1bd + + + + .debug_info + 0x5fb7 + 0x5fb7 + 0x358 + + + + .debug_info + 0x630f + 0x630f + 0x160 + + + + .debug_info + 0x646f + 0x646f + 0x1a6 + + + + .debug_info + 0x6615 + 0x6615 + 0x1f1 + + + + .debug_info + 0x6806 + 0x6806 + 0x173 + + + + .debug_info + 0x6979 + 0x6979 0x18c - + .debug_info - 0xabf2 - 0xabf2 - 0x167 + 0x6b05 + 0x6b05 + 0x25f - + .debug_info - 0xad59 - 0xad59 - 0x188 + 0x6d64 + 0x6d64 + 0x208 + + + + .debug_info + 0x6f6c + 0x6f6c + 0x12d + + + + .debug_info + 0x7099 + 0x7099 + 0x12b + + + + .debug_info + 0x71c4 + 0x71c4 + 0x12f + + + + .debug_info + 0x72f3 + 0x72f3 + 0x18e + + + + .debug_info + 0x7481 + 0x7481 + 0x173 + + + + .debug_info + 0x75f4 + 0x75f4 + 0x171 + + + + .debug_info + 0x7765 + 0x7765 + 0x136 + + + + .debug_info + 0x789b + 0x789b + 0x981 + + + + .debug_info + 0x821c + 0x821c + 0xd9 .debug_info - 0xaee1 - 0xaee1 - 0x13c - - - - .debug_info - 0xb01d - 0xb01d - 0x126 - - - - .debug_info - 0xb143 - 0xb143 - 0xe14 + 0x82f5 + 0x82f5 + 0x53f - + .debug_info - 0xbf57 - 0xbf57 - 0xdc + 0x8834 + 0x8834 + 0x15b - - .debug_info - 0xc033 - 0xc033 - 0x1b0 - - - - .debug_info - 0xc1e3 - 0xc1e3 - 0x1ae - - - - .debug_info - 0xc391 - 0xc391 - 0x120 - - - - .debug_info - 0xc4b1 - 0xc4b1 - 0x15d - - - - .debug_info - 0xc60e - 0xc60e - 0x14f - - - - .debug_info - 0xc75d - 0xc75d - 0x184 - - - - .debug_info - 0xc8e1 - 0xc8e1 - 0x1bd - - - - .debug_info - 0xca9e - 0xca9e - 0x21d - - - - .debug_info - 0xccbb - 0xccbb - 0x21b - - - - .debug_info - 0xced6 - 0xced6 - 0x148 - - - - .debug_info - 0xd01e - 0xd01e - 0x25b - - - - .debug_info - 0xd279 - 0xd279 - 0x195 - - - - .debug_info - 0xd40e - 0xd40e - 0x34f - - - - .debug_info - 0xd75d - 0xd75d - 0x184 - - - - .debug_info - 0xd8e1 - 0xd8e1 - 0x101 - - - - .debug_info - 0xd9e2 - 0xd9e2 - 0x17e - - - - .debug_info - 0xdb60 - 0xdb60 - 0x1102 - - - - .debug_info - 0xec62 - 0xec62 - 0xfe - - - - .debug_info - 0xed60 - 0xed60 - 0x14a - - - - .debug_info - 0xeeaa - 0xeeaa - 0x116 - - - - .debug_info - 0xefc0 - 0xefc0 - 0x1a2 - - - - .debug_info - 0xf162 - 0xf162 - 0x178 - - - - .debug_info - 0xf2da - 0xf2da - 0x163 - - - - .debug_info - 0xf43d - 0xf43d - 0x122 - - - - .debug_info - 0xf55f - 0xf55f - 0x14e - - - - .debug_info - 0xf6ad - 0xf6ad - 0x1a0 - - - - .debug_info - 0xf84d - 0xf84d - 0x3b7 - - - - .debug_info - 0xfc04 - 0xfc04 - 0x1d0 - - - - .debug_info - 0xfdd4 - 0xfdd4 - 0x176 - - - - .debug_info - 0xff4a - 0xff4a - 0x2aa - - - - .debug_info - 0x101f4 - 0x101f4 - 0x11c - - - - .debug_info - 0x10310 - 0x10310 - 0x699 - - - - .debug_info - 0x109a9 - 0x109a9 - 0x32f - - - - .debug_info - 0x10cd8 - 0x10cd8 - 0x2a5 - - - - .debug_info - 0x10f7d - 0x10f7d - 0x1b8 - - - - .debug_info - 0x11135 - 0x11135 - 0x114 - - - - .debug_info - 0x11249 - 0x11249 - 0x158 - - - - .debug_info - 0x113a1 - 0x113a1 - 0x5a6 - - - - .debug_info - 0x11947 - 0x11947 - 0x1a2 - - - - .debug_info - 0x11ae9 - 0x11ae9 - 0x181 - - - - .debug_info - 0x11c6a - 0x11c6a - 0x1a8 - - - - .debug_info - 0x11e12 - 0x11e12 - 0x186 - - - - .debug_info - 0x11f98 - 0x11f98 - 0x1a2 - - - - .debug_info - 0x1213a - 0x1213a - 0x181 - - - - .debug_info - 0x122bb - 0x122bb - 0x1ab - - - - .debug_info - 0x12466 - 0x12466 - 0x18b - - - - .debug_info - 0x125f1 - 0x125f1 - 0x14d - - - - .debug_info - 0x1273e - 0x1273e - 0x171 - - - - .debug_info - 0x128af - 0x128af - 0x14e - - - - .debug_info - 0x129fd - 0x129fd - 0x138 - - - - .debug_info - 0x12b35 - 0x12b35 - 0x16b - - - - .debug_info - 0x12ca0 - 0x12ca0 - 0x164 - - - - .debug_info - 0x12e04 - 0x12e04 - 0x16d - - - - .debug_info - 0x12f71 - 0x12f71 - 0x167 - - - - .debug_info - 0x130d8 - 0x130d8 - 0x16c - - - - .debug_info - 0x13244 - 0x13244 - 0x167 - - - - .debug_info - 0x133ab - 0x133ab - 0x193 - - - - .debug_info - 0x1353e - 0x1353e - 0x185 - - - - .debug_info - 0x136c3 - 0x136c3 - 0x1a2 - - - - .debug_info - 0x13865 - 0x13865 - 0x2db - - - - .debug_info - 0x13b40 - 0x13b40 - 0x137 - - - - .debug_info - 0x13c77 - 0x13c77 - 0x150 - - - - .debug_info - 0x13dc7 - 0x13dc7 - 0x165 - - - - .debug_info - 0x13f2c - 0x13f2c - 0x165 - - - - .debug_info - 0x14091 - 0x14091 - 0x163 - - - - .debug_info - 0x141f4 - 0x141f4 - 0x21e4 - - - - .debug_info - 0x163d8 - 0x163d8 - 0x297 - - - - .debug_info - 0x1666f - 0x1666f - 0x22a - - - - .debug_info - 0x16899 - 0x16899 - 0x4df - - - - .debug_info - 0x16d78 - 0x16d78 - 0x8b - - - - .debug_info - 0x16e03 - 0x16e03 - 0x2c - - - - .debug_info - 0x16e2f - 0x16e2f - 0x2c - - - - .debug_info - 0x16e5b - 0x16e5b - 0x18f - - - - .debug_info - 0x16fea - 0x16fea - 0x15e - - - - .debug_info - 0x17148 - 0x17148 - 0x841 - - - - .debug_info - 0x17989 - 0x17989 - 0x17a - - - - .debug_info - 0x17b03 - 0x17b03 - 0x167 - - - - .debug_info - 0x17c6a - 0x17c6a - 0x150 - - - - .debug_info - 0x17dba - 0x17dba - 0x245 - - - - .debug_info - 0x17fff - 0x17fff - 0x1ea - - - - .debug_info - 0x181e9 - 0x181e9 - 0x19e - - - - .debug_info - 0x18387 - 0x18387 - 0x1a9 - - - - .debug_info - 0x18530 - 0x18530 - 0x1ac - - - - .debug_info - 0x186dc - 0x186dc - 0x21e - - - - .debug_info - 0x188fa - 0x188fa - 0x190 - - - - .debug_info - 0x18a8a - 0x18a8a - 0x180 - - - - .debug_info - 0x18c0a - 0x18c0a - 0x199 - - - - .debug_info - 0x18da3 - 0x18da3 - 0x148 - - - - .debug_info - 0x18eeb - 0x18eeb - 0x47c - - - - .debug_info - 0x19367 - 0x19367 - 0xdc - - - - .debug_info - 0x19443 - 0x19443 - 0xdb - - - - .debug_info - 0x1951e - 0x1951e - 0xd0 - - - - .debug_info - 0x195ee - 0x195ee - 0x198 - - - - .debug_info - 0x19786 - 0x19786 - 0x1d3 - - - - .debug_info - 0x19959 - 0x19959 - 0x164 - - - - .debug_info - 0x19abd - 0x19abd - 0x48b - - - - .debug_info - 0x19f48 - 0x19f48 - 0x457 - - - - .debug_info - 0x1a39f - 0x1a39f - 0x287 - - - - .debug_info - 0x1a626 - 0x1a626 - 0x22a - - - - .debug_info - 0x1a850 - 0x1a850 - 0x177 - - - - .debug_info - 0x1a9c7 - 0x1a9c7 - 0x147 - - - - .debug_info - 0x1ab0e - 0x1ab0e - 0x1f6 - - - - .debug_info - 0x1ad04 - 0x1ad04 - 0x169 - - - - .debug_info - 0x1ae6d - 0x1ae6d - 0x2a7 - - - - .debug_info - 0x1b114 - 0x1b114 - 0xaa7 - - - - .debug_info - 0x1bbbb - 0x1bbbb - 0xd5 - - - - .debug_info - 0x1bc90 - 0x1bc90 - 0xd5 - - - - .debug_info - 0x1bd65 - 0x1bd65 - 0x24f - - - - .debug_info - 0x1bfb4 - 0x1bfb4 - 0x13c - - - - .debug_info - 0x1c0f0 - 0x1c0f0 - 0x208 - - - - .debug_info - 0x1c2f8 - 0x1c2f8 - 0x3eb - - - - .debug_info - 0x1c6e3 - 0x1c6e3 - 0x1e0 - - - - .debug_info - 0x1c8c3 - 0x1c8c3 - 0x1a4 - - - - .debug_info - 0x1ca67 - 0x1ca67 - 0x381 - - - - .debug_info - 0x1cde8 - 0x1cde8 - 0x16f - - - - .debug_info - 0x1cf57 - 0x1cf57 - 0xe0 - - - - .debug_info - 0x1d037 - 0x1d037 - 0x109 - - - - .debug_info - 0x1d140 - 0x1d140 - 0xfa - - - - .debug_info - 0x1d23a - 0x1d23a - 0xfe - - - - .debug_info - 0x1d338 - 0x1d338 - 0x102 - - - - .debug_info - 0x1d43a - 0x1d43a - 0x2e7 - - - - .debug_info - 0x1d721 - 0x1d721 - 0x123 - - - - .debug_info - 0x1d844 - 0x1d844 - 0x266 - - - - .debug_info - 0x1daaa - 0x1daaa - 0x318 - - - - .debug_info - 0x1ddc2 - 0x1ddc2 - 0x318 - - - - .debug_info - 0x1e0da - 0x1e0da - 0x26e - - - - .debug_info - 0x1e348 - 0x1e348 - 0x21a - - - - .debug_info - 0x1e562 - 0x1e562 - 0x28c - - - - .debug_info - 0x1e7ee - 0x1e7ee - 0x1b5 - - - - .debug_info - 0x1e9a3 - 0x1e9a3 - 0x24a - - - - .debug_info - 0x1ebed - 0x1ebed - 0x2c2 - - - - .debug_info - 0x1eeaf - 0x1eeaf - 0x297 - - - - .debug_info - 0x1f146 - 0x1f146 - 0x27b - - - - .debug_info - 0x1f3c1 - 0x1f3c1 - 0x14c - - - - .debug_info - 0x1f50d - 0x1f50d - 0x13a - - .debug_info - 0x1f647 - 0x1f647 - 0x12e - + 0x898f + 0x898f + 0xe1 + - + .debug_info - 0x1f775 - 0x1f775 - 0x14c - + 0x8a70 + 0x8a70 + 0xd7 + - + .debug_info - 0x1f8c1 - 0x1f8c1 - 0x13a - - - - .debug_info - 0x1f9fb - 0x1f9fb - 0x12c - + 0x8b47 + 0x8b47 + 0xe1 + .debug_info - 0x1fb27 - 0x1fb27 + 0x8c28 + 0x8c28 + 0xd7 + + + + .debug_info + 0x8cff + 0x8cff + 0xd9 + + + + .debug_info + 0x8dd8 + 0x8dd8 + 0xe1 + + + + .debug_info + 0x8eb9 + 0x8eb9 + 0xd7 + + + + .debug_info + 0x8f90 + 0x8f90 + 0xe3 + + + + .debug_info + 0x9073 + 0x9073 + 0xe1 + + + + .debug_info + 0x9154 + 0x9154 + 0xd7 + + + + .debug_info + 0x922b + 0x922b + 0xe3 + + + + .debug_info + 0x930e + 0x930e + 0xe1 + + + + .debug_info + 0x93ef + 0x93ef + 0xd7 + + + + .debug_info + 0x94c6 + 0x94c6 + 0xd4 + + + + .debug_info + 0x959a + 0x959a + 0xe4 + + + + .debug_info + 0x967e + 0x967e + 0xd8 + + + + .debug_info + 0x9756 + 0x9756 + 0xe4 + + + + .debug_info + 0x983a + 0x983a + 0xd8 + + + + .debug_info + 0x9912 + 0x9912 + 0xe2 + + + + .debug_info + 0x99f4 + 0x99f4 + 0xd8 + + + + .debug_info + 0x9acc + 0x9acc + 0xe2 + + + + .debug_info + 0x9bae + 0x9bae + 0xe4 + + + + .debug_info + 0x9c92 + 0x9c92 + 0xd8 + + + + .debug_info + 0x9d6a + 0x9d6a + 0xe4 + + + + .debug_info + 0x9e4e + 0x9e4e + 0xd8 + + + + .debug_info + 0x9f26 + 0x9f26 + 0xd8 + + + + .debug_info + 0x9ffe + 0x9ffe + 0xd4 + + + + .debug_info + 0xa0d2 + 0xa0d2 + 0x153 + + + + .debug_info + 0xa225 + 0xa225 + 0x209 + + + + .debug_info + 0xa42e + 0xa42e + 0x126 + + + + .debug_info + 0xa554 + 0xa554 + 0x199 + + + + .debug_info + 0xa6ed + 0xa6ed + 0x179 + + + + .debug_info + 0xa866 + 0xa866 + 0x188 + + + + .debug_info + 0xa9ee + 0xa9ee + 0x18c + + + + .debug_info + 0xab7a + 0xab7a + 0x167 + + + + .debug_info + 0xace1 + 0xace1 + 0x188 + + + + .debug_info + 0xae69 + 0xae69 + 0x104 + + + + .debug_info + 0xaf6d + 0xaf6d + 0x126 + + + + .debug_info + 0xb093 + 0xb093 + 0x1053 + + + + .debug_info + 0xc0e6 + 0xc0e6 + 0xdc + + + + .debug_info + 0xc1c2 + 0xc1c2 + 0x1b0 + + + + .debug_info + 0xc372 + 0xc372 + 0x1ae + + + + .debug_info + 0xc520 + 0xc520 + 0x120 + + + + .debug_info + 0xc640 + 0xc640 + 0x15d + + + + .debug_info + 0xc79d + 0xc79d + 0x14f + + + + .debug_info + 0xc8ec + 0xc8ec + 0x1af + + + + .debug_info + 0xca9b + 0xca9b + 0x1bd + + + + .debug_info + 0xcc58 + 0xcc58 + 0x28b + + + + .debug_info + 0xcee3 + 0xcee3 + 0x21b + + + + .debug_info + 0xd0fe + 0xd0fe + 0x148 + + + + .debug_info + 0xd246 + 0xd246 + 0x25b + + + + .debug_info + 0xd4a1 + 0xd4a1 + 0x195 + + + + .debug_info + 0xd636 + 0xd636 + 0x318 + + + + .debug_info + 0xd94e + 0xd94e + 0x184 + + + + .debug_info + 0xdad2 + 0xdad2 + 0x101 + + + + .debug_info + 0xdbd3 + 0xdbd3 + 0x17e + + + + .debug_info + 0xdd51 + 0xdd51 + 0x481 + + + + .debug_info + 0xe1d2 + 0xe1d2 + 0x22b + + + + .debug_info + 0xe3fd + 0xe3fd + 0x101 + + + + .debug_info + 0xe4fe + 0xe4fe + 0x13c + + + + .debug_info + 0xe63a + 0xe63a + 0x13e + + + + .debug_info + 0xe778 + 0xe778 + 0x108d + + + + .debug_info + 0xf805 + 0xf805 + 0xff + + + + .debug_info + 0xf904 + 0xf904 + 0x14a + + + + .debug_info + 0xfa4e + 0xfa4e + 0x116 + + + + .debug_info + 0xfb64 + 0xfb64 + 0x1a2 + + + + .debug_info + 0xfd06 + 0xfd06 + 0x17a + + + + .debug_info + 0xfe80 + 0xfe80 + 0x163 + + + + .debug_info + 0xffe3 + 0xffe3 + 0x122 + + + + .debug_info + 0x10105 + 0x10105 + 0x14e + + + + .debug_info + 0x10253 + 0x10253 + 0x1a0 + + + + .debug_info + 0x103f3 + 0x103f3 + 0x3e3 + + + + .debug_info + 0x107d6 + 0x107d6 + 0x1a6 + + + + .debug_info + 0x1097c + 0x1097c + 0x176 + + + + .debug_info + 0x10af2 + 0x10af2 + 0x2aa + + + + .debug_info + 0x10d9c + 0x10d9c + 0x11c + + + + .debug_info + 0x10eb8 + 0x10eb8 + 0x69c + + + + .debug_info + 0x11554 + 0x11554 + 0x32f + + + + .debug_info + 0x11883 + 0x11883 + 0x2d3 + + + + .debug_info + 0x11b56 + 0x11b56 + 0x1b8 + + + + .debug_info + 0x11d0e + 0x11d0e + 0x114 + + + + .debug_info + 0x11e22 + 0x11e22 + 0x158 + + + + .debug_info + 0x11f7a + 0x11f7a + 0x5a6 + + + + .debug_info + 0x12520 + 0x12520 + 0x1a2 + + + + .debug_info + 0x126c2 + 0x126c2 + 0x181 + + + + .debug_info + 0x12843 + 0x12843 + 0x1a8 + + + + .debug_info + 0x129eb + 0x129eb + 0x186 + + + + .debug_info + 0x12b71 + 0x12b71 + 0x1a2 + + + + .debug_info + 0x12d13 + 0x12d13 + 0x181 + + + + .debug_info + 0x12e94 + 0x12e94 + 0x1ab + + + + .debug_info + 0x1303f + 0x1303f + 0x18b + + + + .debug_info + 0x131ca + 0x131ca + 0x14d + + + + .debug_info + 0x13317 + 0x13317 + 0x171 + + + + .debug_info + 0x13488 + 0x13488 + 0x14e + + + + .debug_info + 0x135d6 + 0x135d6 + 0x138 + + + + .debug_info + 0x1370e + 0x1370e + 0x16b + + + + .debug_info + 0x13879 + 0x13879 + 0x164 + + + + .debug_info + 0x139dd + 0x139dd + 0x16d + + + + .debug_info + 0x13b4a + 0x13b4a + 0x167 + + + + .debug_info + 0x13cb1 + 0x13cb1 + 0x16c + + + + .debug_info + 0x13e1d + 0x13e1d + 0x167 + + + + .debug_info + 0x13f84 + 0x13f84 + 0x193 + + + + .debug_info + 0x14117 + 0x14117 + 0x185 + + + + .debug_info + 0x1429c + 0x1429c + 0x1a2 + + + + .debug_info + 0x1443e + 0x1443e + 0x2db + + + + .debug_info + 0x14719 + 0x14719 + 0x137 + + + + .debug_info + 0x14850 + 0x14850 + 0x150 + + + + .debug_info + 0x149a0 + 0x149a0 + 0x165 + + + + .debug_info + 0x14b05 + 0x14b05 + 0x165 + + + + .debug_info + 0x14c6a + 0x14c6a + 0x163 + + + + .debug_info + 0x14dcd + 0x14dcd + 0x21e4 + + + + .debug_info + 0x16fb1 + 0x16fb1 + 0x297 + + + + .debug_info + 0x17248 + 0x17248 + 0x22a + + + + .debug_info + 0x17472 + 0x17472 + 0x4df + + + + .debug_info + 0x17951 + 0x17951 + 0x8b + + + + .debug_info + 0x179dc + 0x179dc + 0x2c + + + + .debug_info + 0x17a08 + 0x17a08 + 0x2c + + + + .debug_info + 0x17a34 + 0x17a34 + 0x18f + + + + .debug_info + 0x17bc3 + 0x17bc3 + 0x15e + + + + .debug_info + 0x17d21 + 0x17d21 + 0x425 + + + + .debug_info + 0x18146 + 0x18146 + 0x16c + + + + .debug_info + 0x182b2 + 0x182b2 + 0x196 + + + + .debug_info + 0x18448 + 0x18448 + 0x128 + + + + .debug_info + 0x18570 + 0x18570 + 0x17f + + + + .debug_info + 0x186ef + 0x186ef + 0x153 + + + + .debug_info + 0x18842 + 0x18842 + 0x165 + + + + .debug_info + 0x189a7 + 0x189a7 + 0x8a2 + + + + .debug_info + 0x19249 + 0x19249 + 0x17a + + + + .debug_info + 0x193c3 + 0x193c3 + 0x17d + + + + .debug_info + 0x19540 + 0x19540 + 0x151 + + + + .debug_info + 0x19691 + 0x19691 + 0x234 + + + + .debug_info + 0x198c5 + 0x198c5 + 0x1ea + + + + .debug_info + 0x19aaf + 0x19aaf + 0x20c + + + + .debug_info + 0x19cbb + 0x19cbb + 0x1a9 + + + + .debug_info + 0x19e64 + 0x19e64 + 0x1ac + + + + .debug_info + 0x1a010 + 0x1a010 + 0x21e + + + + .debug_info + 0x1a22e + 0x1a22e + 0x190 + + + + .debug_info + 0x1a3be + 0x1a3be + 0x180 + + + + .debug_info + 0x1a53e + 0x1a53e + 0x1b5 + + + + .debug_info + 0x1a6f3 + 0x1a6f3 + 0x14a + + + + .debug_info + 0x1a83d + 0x1a83d + 0x4f2 + + + + .debug_info + 0x1ad2f + 0x1ad2f + 0xdd + + + + .debug_info + 0x1ae0c + 0x1ae0c + 0xdb + + + + .debug_info + 0x1aee7 + 0x1aee7 + 0xd0 + + + + .debug_info + 0x1afb7 + 0x1afb7 + 0x198 + + + + .debug_info + 0x1b14f + 0x1b14f + 0x1d3 + + + + .debug_info + 0x1b322 + 0x1b322 + 0x164 + + + + .debug_info + 0x1b486 + 0x1b486 + 0x47c + + + + .debug_info + 0x1b902 + 0x1b902 + 0x41a + + + + .debug_info + 0x1bd1c + 0x1bd1c + 0x287 + + + + .debug_info + 0x1bfa3 + 0x1bfa3 + 0x1f1 + + + + .debug_info + 0x1c194 + 0x1c194 + 0x177 + + + + .debug_info + 0x1c30b + 0x1c30b + 0x147 + + + + .debug_info + 0x1c452 + 0x1c452 + 0x1f6 + + + + .debug_info + 0x1c648 + 0x1c648 + 0x169 + + + + .debug_info + 0x1c7b1 + 0x1c7b1 + 0x29e + + + + .debug_info + 0x1ca4f + 0x1ca4f + 0x683 + + + + .debug_info + 0x1d0d2 + 0x1d0d2 + 0xd5 + + + + .debug_info + 0x1d1a7 + 0x1d1a7 + 0x234 + + + + .debug_info + 0x1d3db + 0x1d3db + 0x3d8 + + + + .debug_info + 0x1d7b3 + 0x1d7b3 + 0x2f4 + + + + .debug_info + 0x1daa7 + 0x1daa7 + 0x16f + + + + .debug_info + 0x1dc16 + 0x1dc16 + 0xe0 + + + + .debug_info + 0x1dcf6 + 0x1dcf6 + 0x109 + + + + .debug_info + 0x1ddff + 0x1ddff + 0xfa + + + + .debug_info + 0x1def9 + 0x1def9 + 0xfe + + + + .debug_info + 0x1dff7 + 0x1dff7 + 0x102 + + + + .debug_info + 0x1e0f9 + 0x1e0f9 + 0x2e7 + + + + .debug_info + 0x1e3e0 + 0x1e3e0 + 0x123 + + + + .debug_info + 0x1e503 + 0x1e503 + 0x266 + + + + .debug_info + 0x1e769 + 0x1e769 + 0x318 + + + + .debug_info + 0x1ea81 + 0x1ea81 + 0x318 + + + + .debug_info + 0x1ed99 + 0x1ed99 + 0x26e + + + + .debug_info + 0x1f007 + 0x1f007 + 0x21a + + + + .debug_info + 0x1f221 + 0x1f221 + 0x28c + + + + .debug_info + 0x1f4ad + 0x1f4ad + 0x1b5 + + + + .debug_info + 0x1f662 + 0x1f662 + 0x24a + + + + .debug_info + 0x1f8ac + 0x1f8ac + 0x2c2 + + + + .debug_info + 0x1fb6e + 0x1fb6e + 0x297 + + + + .debug_info + 0x1fe05 + 0x1fe05 + 0x27b + + + + .debug_info + 0x20080 + 0x20080 + 0x14c + + + + .debug_info + 0x201cc + 0x201cc + 0x13a + + + + .debug_info + 0x20306 + 0x20306 0x12e - + .debug_info - 0x1fc55 - 0x1fc55 - 0x12c + 0x20434 + 0x20434 + 0x14c + + .debug_info + 0x20580 + 0x20580 + 0x13a + + + + .debug_info + 0x206ba + 0x206ba + 0x12c + + + + .debug_info + 0x207e6 + 0x207e6 + 0x12e + + + + .debug_info + 0x20914 + 0x20914 + 0x12c + + .debug_info - 0x1fd81 - 0x1fd81 + 0x20a40 + 0x20a40 0x119 - + - + .debug_info - 0x1fe9a - 0x1fe9a + 0x20b59 + 0x20b59 0x12b - + - + .debug_info - 0x1ffc5 - 0x1ffc5 + 0x20c84 + 0x20c84 0x147 - + .debug_info - 0x2010c - 0x2010c + 0x20dcb + 0x20dcb 0x1a6 - + - + .debug_info - 0x202b2 - 0x202b2 + 0x20f71 + 0x20f71 0x1d2 - + .debug_info - 0x20484 - 0x20484 + 0x21143 + 0x21143 0x46 - + .debug_info - 0x204ca - 0x204ca + 0x21189 + 0x21189 0x17a - + - + .debug_info - 0x20644 - 0x20644 + 0x21303 + 0x21303 0x1ea - + .debug_info - 0x2082e - 0x2082e + 0x214ed + 0x214ed 0x46 - + .debug_info - 0x20874 - 0x20874 + 0x21533 + 0x21533 0x2c - + .debug_info - 0x208a0 - 0x208a0 + 0x2155f + 0x2155f 0x170 - + - + .debug_info - 0x20a10 - 0x20a10 + 0x216cf + 0x216cf 0x250 - + .debug_info - 0x20c60 - 0x20c60 + 0x2191f + 0x2191f 0x60 - + - + .debug_info - 0x20cc0 - 0x20cc0 + 0x2197f + 0x2197f 0x46 - + .debug_info - 0x20d06 - 0x20d06 + 0x219c5 + 0x219c5 0x39 - + .debug_info - 0x20d3f - 0x20d3f + 0x219fe + 0x219fe 0x284 - + .debug_info - 0x20fc3 - 0x20fc3 + 0x21c82 + 0x21c82 0x10c - + - + .debug_info - 0x210cf - 0x210cf + 0x21d8e + 0x21d8e 0x13f - + - + .debug_info - 0x2120e - 0x2120e + 0x21ecd + 0x21ecd 0x168 - + - + .debug_info - 0x21376 - 0x21376 + 0x22035 + 0x22035 0x18e - + - + .debug_info - 0x21504 - 0x21504 + 0x221c3 + 0x221c3 0x19f - + - + .debug_info - 0x216a3 - 0x216a3 + 0x22362 + 0x22362 0x203 - + - + .debug_info - 0x218a6 - 0x218a6 + 0x22565 + 0x22565 0x1db - + - + .debug_info - 0x21a81 - 0x21a81 + 0x22740 + 0x22740 0x299 - + - + .debug_info - 0x21d1a - 0x21d1a + 0x229d9 + 0x229d9 0xb2 - + - + .debug_info - 0x21dcc - 0x21dcc + 0x22a8b + 0x22a8b 0x2c - + - + .debug_info - 0x21df8 - 0x21df8 + 0x22ab7 + 0x22ab7 0x161 - + - + .debug_info - 0x21f59 - 0x21f59 + 0x22c18 + 0x22c18 0x245 - + - + .debug_info - 0x2219e - 0x2219e + 0x22e5d + 0x22e5d 0x181 - + - + .debug_info - 0x2231f - 0x2231f + 0x22fde + 0x22fde 0x277 - + .debug_info - 0x22596 - 0x22596 + 0x23255 + 0x23255 0x10b - + .debug_info - 0x226a1 - 0x226a1 + 0x23360 + 0x23360 0x1a9 - - - - .debug_info - 0x2284a - 0x2284a - 0x385 - - - - .debug_info - 0x22bcf - 0x22bcf - 0x1a6 - - - - .debug_info - 0x22d75 - 0x22d75 - 0x39 - - - - .debug_info - 0x22dae - 0x22dae - 0x39 - - - - .debug_info - 0x22de7 - 0x22de7 - 0x39 - - - - .debug_info - 0x22e20 - 0x22e20 - 0xcd - - - - .debug_info - 0x22eed - 0x22eed - 0x153 - - - - .debug_info - 0x23040 - 0x23040 - 0x122 - + .debug_info - 0x23162 - 0x23162 + 0x23509 + 0x23509 + 0x385 + + + + .debug_info + 0x2388e + 0x2388e + 0x1a6 + + + + .debug_info + 0x23a34 + 0x23a34 + 0x39 + + + + .debug_info + 0x23a6d + 0x23a6d + 0x39 + + + + .debug_info + 0x23aa6 + 0x23aa6 + 0x39 + + + + .debug_info + 0x23adf + 0x23adf + 0xcd + + + + .debug_info + 0x23bac + 0x23bac + 0x153 + + + + .debug_info + 0x23cff + 0x23cff + 0x122 + + + + .debug_info + 0x23e21 + 0x23e21 0x19b - + - + .debug_info - 0x232fd - 0x232fd + 0x23fbc + 0x23fbc 0x11e - + - + .debug_info - 0x2341b - 0x2341b + 0x240da + 0x240da 0x12e - + - + .debug_info - 0x23549 - 0x23549 + 0x24208 + 0x24208 0x9d - + .debug_line 0x0 0x0 - 0x125 - - - - .debug_line - 0x125 - 0x125 - 0x33 - - - - .debug_line - 0x158 - 0x158 - 0x33 - - - - .debug_line - 0x18b - 0x18b - 0x33 - - - - .debug_line - 0x1be - 0x1be - 0x33 - - - - .debug_line - 0x1f1 - 0x1f1 - 0x33 - - - - .debug_line - 0x224 - 0x224 - 0x33 - - - - .debug_line - 0x257 - 0x257 - 0x33 - - - - .debug_line - 0x28a - 0x28a - 0x33 - - - - .debug_line - 0x2bd - 0x2bd - 0x33 - - - - .debug_line - 0x2f0 - 0x2f0 - 0x33 - - - - .debug_line - 0x323 - 0x323 - 0x33 - - - - .debug_line - 0x356 - 0x356 - 0x33 - - - - .debug_line - 0x389 - 0x389 - 0x33 - - - - .debug_line - 0x3bc - 0x3bc - 0x33 - - - - .debug_line - 0x3ef - 0x3ef - 0x33 - - - - .debug_line - 0x422 - 0x422 - 0x33 - - - - .debug_line - 0x455 - 0x455 - 0x33 - - - - .debug_line - 0x488 - 0x488 - 0x33 - - - - .debug_line - 0x4bb - 0x4bb - 0x33 - - - - .debug_line - 0x4ee - 0x4ee - 0x33 - - - - .debug_line - 0x521 - 0x521 - 0x33 - - - - .debug_line - 0x554 - 0x554 - 0x33 - - - - .debug_line - 0x587 - 0x587 - 0x33 - - - - .debug_line - 0x5ba - 0x5ba - 0x33 - - - - .debug_line - 0x5ed - 0x5ed - 0x33 - - - - .debug_line - 0x620 - 0x620 - 0x33 - - - - .debug_line - 0x653 - 0x653 - 0x33 - - - - .debug_line - 0x686 - 0x686 - 0x33 - - - - .debug_line - 0x6b9 - 0x6b9 - 0x33 - - - - .debug_line - 0x6ec - 0x6ec - 0x33 - - - - .debug_line - 0x71f - 0x71f - 0x33 - - - - .debug_line - 0x752 - 0x752 - 0x33 - - - - .debug_line - 0x785 - 0x785 - 0x33 - - - - .debug_line - 0x7b8 - 0x7b8 - 0x33 - - - - .debug_line - 0x7eb - 0x7eb - 0x33 - - - - .debug_line - 0x81e - 0x81e - 0x33 - - - - .debug_line - 0x851 - 0x851 - 0x33 - - - - .debug_line - 0x884 - 0x884 - 0x33 - - - - .debug_line - 0x8b7 - 0x8b7 - 0x33 - - - - .debug_line - 0x8ea - 0x8ea - 0x33 - - - - .debug_line - 0x91d - 0x91d - 0x33 - - - - .debug_line - 0x950 - 0x950 - 0x33 - - - - .debug_line - 0x983 - 0x983 - 0x33 - - - - .debug_line - 0x9b6 - 0x9b6 - 0x33 - - - - .debug_line - 0x9e9 - 0x9e9 - 0x33 - - - - .debug_line - 0xa1c - 0xa1c - 0x33 - - - - .debug_line - 0xa4f - 0xa4f - 0x33 - - - - .debug_line - 0xa82 - 0xa82 - 0x33 - - - - .debug_line - 0xab5 - 0xab5 - 0x33 - - - - .debug_line - 0xae8 - 0xae8 - 0x33 - - - - .debug_line - 0xb1b - 0xb1b - 0x33 - - - - .debug_line - 0xb4e - 0xb4e - 0x33 - - - - .debug_line - 0xb81 - 0xb81 - 0x33 - - - - .debug_line - 0xbb4 - 0xbb4 - 0x33 - - - - .debug_line - 0xbe7 - 0xbe7 - 0x33 - - - - .debug_line - 0xc1a - 0xc1a - 0x33 - - - - .debug_line - 0xc4d - 0xc4d - 0x33 - - - - .debug_line - 0xc80 - 0xc80 - 0x33 - - - - .debug_line - 0xcb3 - 0xcb3 - 0x33 - - - - .debug_line - 0xce6 - 0xce6 - 0x33 - - - - .debug_line - 0xd19 - 0xd19 - 0x33 - - - - .debug_line - 0xd4c - 0xd4c - 0x33 - - - - .debug_line - 0xd7f - 0xd7f - 0x33 - - - - .debug_line - 0xdb2 - 0xdb2 - 0x33 - - - - .debug_line - 0xde5 - 0xde5 - 0x33 - - - - .debug_line - 0xe18 - 0xe18 - 0x33 - - - - .debug_line - 0xe4b - 0xe4b - 0x33 - - - - .debug_line - 0xe7e - 0xe7e - 0x33 - - - - .debug_line - 0xeb1 - 0xeb1 - 0x18e - - - - .debug_line - 0x103f - 0x103f - 0x179 - - - - .debug_line - 0x11b8 - 0x11b8 - 0x6d - - - - .debug_line - 0x1225 - 0x1225 - 0x57 - - - - .debug_line - 0x127c - 0x127c - 0x156 - - - - .debug_line - 0x13d2 - 0x13d2 - 0x4e - - - - .debug_line - 0x1420 - 0x1420 - 0x1b2 - - - - .debug_line - 0x15d2 - 0x15d2 - 0x52 - - - - .debug_line - 0x1624 - 0x1624 - 0x89 - - - - .debug_line - 0x16ad - 0x16ad - 0xcf - - - - .debug_line - 0x177c - 0x177c 0x48 - + .debug_line - 0x17c4 - 0x17c4 - 0x48 + 0x48 + 0x48 + 0x53 - + .debug_line - 0x180c - 0x180c - 0x48 + 0x9b + 0x9b + 0x53 - + .debug_line - 0x1854 - 0x1854 - 0x48 + 0xee + 0xee + 0x50 - + .debug_line - 0x189c - 0x189c - 0x48 - - - - .debug_line - 0x18e4 - 0x18e4 - 0xba - - - - .debug_line - 0x199e - 0x199e - 0x9c - - - - .debug_line - 0x1a3a - 0x1a3a - 0x91 - - - - .debug_line - 0x1acb - 0x1acb - 0x48 - - - - .debug_line - 0x1b13 - 0x1b13 - 0x51 - - - - .debug_line - 0x1b64 - 0x1b64 - 0x45 - - - - .debug_line - 0x1ba9 - 0x1ba9 - 0x30 - - - - .debug_line - 0x1bd9 - 0x1bd9 - 0x33 - - - - .debug_line - 0x1c0c - 0x1c0c + 0x13e + 0x13e 0x6b - + .debug_line - 0x1c77 - 0x1c77 + 0x1a9 + 0x1a9 0x2c - + .debug_line - 0x1ca3 - 0x1ca3 + 0x1d5 + 0x1d5 0x6f - + .debug_line - 0x1d12 - 0x1d12 + 0x244 + 0x244 0x30 - + .debug_line - 0x1d42 - 0x1d42 + 0x274 + 0x274 0x30 - + .debug_line - 0x1d72 - 0x1d72 + 0x2a4 + 0x2a4 + 0x30 + + + + .debug_line + 0x2d4 + 0x2d4 0x2f - - .debug_line - 0x1da1 - 0x1da1 - 0x30 - - .debug_line - 0x1dd1 - 0x1dd1 + 0x303 + 0x303 0x20 - + .debug_line - 0x1df1 - 0x1df1 + 0x323 + 0x323 0x73 .debug_line - 0x1e64 - 0x1e64 + 0x396 + 0x396 0x70 - + .debug_line - 0x1ed4 - 0x1ed4 + 0x406 + 0x406 0x74 - + .debug_line - 0x1f48 - 0x1f48 - 0xd2 - - - - .debug_line - 0x201a - 0x201a - 0x40 - - - - .debug_line - 0x205a - 0x205a - 0x30 - - - - .debug_line - 0x208a - 0x208a - 0x30 - - - - .debug_line - 0x20ba - 0x20ba - 0x30 - - - - .debug_line - 0x20ea - 0x20ea - 0x30 - - - - .debug_line - 0x211a - 0x211a - 0x30 - - - - .debug_line - 0x214a - 0x214a - 0x30 - - - - .debug_line - 0x217a - 0x217a - 0x30 - - - - .debug_line - 0x21aa - 0x21aa - 0x30 - - - - .debug_line - 0x21da - 0x21da - 0x30 - - - - .debug_line - 0x220a - 0x220a - 0x30 - - - - .debug_line - 0x223a - 0x223a - 0x30 - - - - .debug_line - 0x226a - 0x226a - 0x30 - - - - .debug_line - 0x229a - 0x229a - 0x30 - - - - .debug_line - 0x22ca - 0x22ca - 0x30 - - - - .debug_line - 0x22fa - 0x22fa - 0x30 - - - - .debug_line - 0x232a - 0x232a - 0x30 + 0x47a + 0x47a + 0x125 .debug_line - 0x235a - 0x235a - 0x30 + 0x59f + 0x59f + 0x33 .debug_line - 0x238a - 0x238a - 0x30 + 0x5d2 + 0x5d2 + 0x33 .debug_line - 0x23ba - 0x23ba - 0x30 + 0x605 + 0x605 + 0x33 + + + + .debug_line + 0x638 + 0x638 + 0x33 + + + + .debug_line + 0x66b + 0x66b + 0x33 + + + + .debug_line + 0x69e + 0x69e + 0x33 + + + + .debug_line + 0x6d1 + 0x6d1 + 0x33 + + + + .debug_line + 0x704 + 0x704 + 0x33 + + + + .debug_line + 0x737 + 0x737 + 0x33 + + + + .debug_line + 0x76a + 0x76a + 0x33 + + + + .debug_line + 0x79d + 0x79d + 0x33 + + + + .debug_line + 0x7d0 + 0x7d0 + 0x33 + + + + .debug_line + 0x803 + 0x803 + 0x33 + + + + .debug_line + 0x836 + 0x836 + 0x33 + + + + .debug_line + 0x869 + 0x869 + 0x33 + + + + .debug_line + 0x89c + 0x89c + 0x33 + + + + .debug_line + 0x8cf + 0x8cf + 0x33 + + + + .debug_line + 0x902 + 0x902 + 0x33 + + + + .debug_line + 0x935 + 0x935 + 0x33 + + + + .debug_line + 0x968 + 0x968 + 0x33 + + + + .debug_line + 0x99b + 0x99b + 0x33 + + + + .debug_line + 0x9ce + 0x9ce + 0x33 + + + + .debug_line + 0xa01 + 0xa01 + 0x33 + + + + .debug_line + 0xa34 + 0xa34 + 0x33 + + + + .debug_line + 0xa67 + 0xa67 + 0x33 + + + + .debug_line + 0xa9a + 0xa9a + 0x33 + + + + .debug_line + 0xacd + 0xacd + 0x33 + + + + .debug_line + 0xb00 + 0xb00 + 0x33 + + + + .debug_line + 0xb33 + 0xb33 + 0x33 + + + + .debug_line + 0xb66 + 0xb66 + 0x33 + + + + .debug_line + 0xb99 + 0xb99 + 0x33 + + + + .debug_line + 0xbcc + 0xbcc + 0x33 + + + + .debug_line + 0xbff + 0xbff + 0x33 + + + + .debug_line + 0xc32 + 0xc32 + 0x33 + + + + .debug_line + 0xc65 + 0xc65 + 0x33 + + + + .debug_line + 0xc98 + 0xc98 + 0x33 + + + + .debug_line + 0xccb + 0xccb + 0x33 + + + + .debug_line + 0xcfe + 0xcfe + 0x33 + + + + .debug_line + 0xd31 + 0xd31 + 0x33 + + + + .debug_line + 0xd64 + 0xd64 + 0x33 + + + + .debug_line + 0xd97 + 0xd97 + 0x33 + + + + .debug_line + 0xdca + 0xdca + 0x33 + + + + .debug_line + 0xdfd + 0xdfd + 0x33 + + + + .debug_line + 0xe30 + 0xe30 + 0x33 + + + + .debug_line + 0xe63 + 0xe63 + 0x33 + + + + .debug_line + 0xe96 + 0xe96 + 0x33 + + + + .debug_line + 0xec9 + 0xec9 + 0x33 + + + + .debug_line + 0xefc + 0xefc + 0x33 + + + + .debug_line + 0xf2f + 0xf2f + 0x33 + + + + .debug_line + 0xf62 + 0xf62 + 0x33 + + + + .debug_line + 0xf95 + 0xf95 + 0x33 .debug_line - 0x23ea - 0x23ea - 0x30 + 0xfc8 + 0xfc8 + 0x33 - + .debug_line - 0x241a - 0x241a - 0x30 + 0xffb + 0xffb + 0x33 - + .debug_line - 0x244a - 0x244a - 0x30 + 0x102e + 0x102e + 0x33 - + .debug_line - 0x247a - 0x247a - 0x30 + 0x1061 + 0x1061 + 0x33 - + .debug_line - 0x24aa - 0x24aa - 0x30 + 0x1094 + 0x1094 + 0x33 - + .debug_line - 0x24da - 0x24da - 0x30 + 0x10c7 + 0x10c7 + 0x33 - + .debug_line - 0x250a - 0x250a - 0x30 + 0x10fa + 0x10fa + 0x33 - + .debug_line - 0x253a - 0x253a - 0x30 + 0x112d + 0x112d + 0x33 - + .debug_line - 0x256a - 0x256a - 0x64 + 0x1160 + 0x1160 + 0x33 - + .debug_line - 0x25ce - 0x25ce - 0x5f + 0x1193 + 0x1193 + 0x33 - + .debug_line - 0x262d - 0x262d - 0x50 + 0x11c6 + 0x11c6 + 0x33 - + .debug_line - 0x267d - 0x267d - 0x5d + 0x11f9 + 0x11f9 + 0x33 - + .debug_line - 0x26da - 0x26da - 0x87 + 0x122c + 0x122c + 0x33 - + .debug_line - 0x2761 - 0x2761 - 0x4c + 0x125f + 0x125f + 0x33 - + .debug_line - 0x27ad - 0x27ad - 0x4c + 0x1292 + 0x1292 + 0x33 - + .debug_line - 0x27f9 - 0x27f9 - 0x50 + 0x12c5 + 0x12c5 + 0x33 - + .debug_line - 0x2849 - 0x2849 - 0xc0 + 0x12f8 + 0x12f8 + 0x33 - + .debug_line - 0x2909 - 0x2909 - 0x76 + 0x132b + 0x132b + 0x18e - - .debug_line - 0x297f - 0x297f - 0x45 - - - - .debug_line - 0x29c4 - 0x29c4 - 0xaf - - - - .debug_line - 0x2a73 - 0x2a73 - 0x31 - - - - .debug_line - 0x2aa4 - 0x2aa4 - 0x56 - - - - .debug_line - 0x2afa - 0x2afa - 0x5d - - - - .debug_line - 0x2b57 - 0x2b57 - 0x5e - - - - .debug_line - 0x2bb5 - 0x2bb5 - 0x5d - - - - .debug_line - 0x2c12 - 0x2c12 - 0x56 - - - - .debug_line - 0x2c68 - 0x2c68 - 0xc4 - - - - .debug_line - 0x2d2c - 0x2d2c - 0x60 - - - - .debug_line - 0x2d8c - 0x2d8c - 0xb6 - - - - .debug_line - 0x2e42 - 0x2e42 - 0x14e - - - - .debug_line - 0x2f90 - 0x2f90 - 0x61 - - .debug_line - 0x2ff1 - 0x2ff1 - 0xc2 - + 0x14b9 + 0x14b9 + 0x179 + - + .debug_line - 0x30b3 - 0x30b3 - 0x77 - + 0x1632 + 0x1632 + 0x6d + - + .debug_line - 0x312a - 0x312a - 0x9b - - - - .debug_line - 0x31c5 - 0x31c5 - 0x52 - - - - .debug_line - 0x3217 - 0x3217 - 0x48 - - - - .debug_line - 0x325f - 0x325f + 0x169f + 0x169f 0x58 - + - + .debug_line - 0x32b7 - 0x32b7 - 0xa8 - + 0x16f7 + 0x16f7 + 0xf4 + - + .debug_line - 0x335f - 0x335f - 0x30 - + 0x17eb + 0x17eb + 0x4e + + + + .debug_line + 0x1839 + 0x1839 + 0x1b2 + + + + .debug_line + 0x19eb + 0x19eb + 0x89 + .debug_line - 0x338f - 0x338f - 0x4a - + 0x1a74 + 0x1a74 + 0xcf + - + .debug_line - 0x33d9 - 0x33d9 + 0x1b43 + 0x1b43 0x48 - + - + .debug_line - 0x3421 - 0x3421 - 0x50 - + 0x1b8b + 0x1b8b + 0x48 + - + .debug_line - 0x3471 - 0x3471 - 0x49 - + 0x1bd3 + 0x1bd3 + 0x48 + - + .debug_line - 0x34ba - 0x34ba - 0x92 - + 0x1c1b + 0x1c1b + 0xb3 + - + .debug_line - 0x354c - 0x354c - 0x5a - - - - .debug_line - 0x35a6 - 0x35a6 - 0x46 - - - - .debug_line - 0x35ec - 0x35ec - 0x50 - - - - .debug_line - 0x363c - 0x363c - 0x2a3 - - - - .debug_line - 0x38df - 0x38df - 0x84 - - - - .debug_line - 0x3963 - 0x3963 - 0x49 - - - - .debug_line - 0x39ac - 0x39ac - 0x14b - - - - .debug_line - 0x3af7 - 0x3af7 - 0x45 - - - - .debug_line - 0x3b3c - 0x3b3c - 0x26d - - - - .debug_line - 0x3da9 - 0x3da9 - 0x15f - - - - .debug_line - 0x3f08 - 0x3f08 - 0xb9 - - - - .debug_line - 0x3fc1 - 0x3fc1 - 0xae - - - - .debug_line - 0x406f - 0x406f - 0xc2 - - - - .debug_line - 0x4131 - 0x4131 - 0x62 - - - - .debug_line - 0x4193 - 0x4193 - 0x1aa - - - - .debug_line - 0x433d - 0x433d - 0x53 - - - - .debug_line - 0x4390 - 0x4390 - 0x55 - - - - .debug_line - 0x43e5 - 0x43e5 - 0x53 - - - - .debug_line - 0x4438 - 0x4438 - 0x55 - - - - .debug_line - 0x448d - 0x448d - 0x53 - - - - .debug_line - 0x44e0 - 0x44e0 - 0x55 - + 0x1cce + 0x1cce + 0x9c + .debug_line - 0x4535 - 0x4535 - 0x53 - - - - .debug_line - 0x4588 - 0x4588 - 0x55 - - - - .debug_line - 0x45dd - 0x45dd - 0x50 - - - - .debug_line - 0x462d - 0x462d - 0xc2 - - - - .debug_line - 0x46ef - 0x46ef - 0x53 - - - - .debug_line - 0x4742 - 0x4742 - 0x50 - - - - .debug_line - 0x4792 - 0x4792 - 0x53 - - - - .debug_line - 0x47e5 - 0x47e5 - 0x55 - - - - .debug_line - 0x483a - 0x483a - 0x53 - - - - .debug_line - 0x488d - 0x488d - 0x55 - - - - .debug_line - 0x48e2 - 0x48e2 - 0x53 - - - - .debug_line - 0x4935 - 0x4935 - 0x55 - - - - .debug_line - 0x498a - 0x498a - 0x50 - - - - .debug_line - 0x49da - 0x49da - 0x55 - - - - .debug_line - 0x4a2f - 0x4a2f - 0x5d - - - - .debug_line - 0x4a8c - 0x4a8c - 0x180 - - - - .debug_line - 0x4c0c - 0x4c0c - 0xab - - - - .debug_line - 0x4cb7 - 0x4cb7 - 0xac - - - - .debug_line - 0x4d63 - 0x4d63 - 0xa3 - - - - .debug_line - 0x4e06 - 0x4e06 - 0xa3 - - - - .debug_line - 0x4ea9 - 0x4ea9 - 0xa3 - - - - .debug_line - 0x4f4c - 0x4f4c - 0x6d - - - - .debug_line - 0x4fb9 - 0x4fb9 - 0x6b - - - - .debug_line - 0x5024 - 0x5024 - 0x6a - - - - .debug_line - 0x508e - 0x508e - 0x68 - - - - .debug_line - 0x50f6 - 0x50f6 - 0x20 - - - - .debug_line - 0x5116 - 0x5116 - 0x8d - - - - .debug_line - 0x51a3 - 0x51a3 - 0x6b - - - - .debug_line - 0x520e - 0x520e - 0x6b - - - - .debug_line - 0x5279 - 0x5279 - 0x4b - - - - .debug_line - 0x52c4 - 0x52c4 - 0x11b - - - - .debug_line - 0x53df - 0x53df - 0x58 - - - - .debug_line - 0x5437 - 0x5437 - 0x49 - - - - .debug_line - 0x5480 - 0x5480 - 0x55 - - - - .debug_line - 0x54d5 - 0x54d5 - 0x94 - - - - .debug_line - 0x5569 - 0x5569 - 0x99 - - - - .debug_line - 0x5602 - 0x5602 - 0x71 - - - - .debug_line - 0x5673 - 0x5673 - 0x78 - - - - .debug_line - 0x56eb - 0x56eb - 0x76 - - - - .debug_line - 0x5761 - 0x5761 - 0x9d - - - - .debug_line - 0x57fe - 0x57fe - 0x5d - - - - .debug_line - 0x585b - 0x585b - 0x5b - - - - .debug_line - 0x58b6 - 0x58b6 - 0x6e - - - - .debug_line - 0x5924 - 0x5924 - 0x73 - - - - .debug_line - 0x5997 - 0x5997 - 0xc2 - - - - .debug_line - 0x5a59 - 0x5a59 - 0x2f - - - - .debug_line - 0x5a88 - 0x5a88 - 0x2f - - - - .debug_line - 0x5ab7 - 0x5ab7 - 0x2f - - - - .debug_line - 0x5ae6 - 0x5ae6 - 0x4e - - - - .debug_line - 0x5b34 - 0x5b34 - 0xb3 - - - - .debug_line - 0x5be7 - 0x5be7 - 0x79 - - - - .debug_line - 0x5c60 - 0x5c60 - 0x29b - - - - .debug_line - 0x5efb - 0x5efb - 0x21b - - - - .debug_line - 0x6116 - 0x6116 - 0xb7 - - - - .debug_line - 0x61cd - 0x61cd - 0xb2 - - - - .debug_line - 0x627f - 0x627f - 0x4b - - - - .debug_line - 0x62ca - 0x62ca - 0x44 - - - - .debug_line - 0x630e - 0x630e - 0x7d - - - - .debug_line - 0x638b - 0x638b - 0x52 - - - - .debug_line - 0x63dd - 0x63dd - 0xb4 - - - - .debug_line - 0x6491 - 0x6491 - 0xd3 - - - - .debug_line - 0x6564 - 0x6564 - 0x30 - - - - .debug_line - 0x6594 - 0x6594 - 0x30 - - - - .debug_line - 0x65c4 - 0x65c4 - 0xa4 - - - - .debug_line - 0x6668 - 0x6668 - 0x8b - - - - .debug_line - 0x66f3 - 0x66f3 - 0xba - - - - .debug_line - 0x67ad - 0x67ad - 0x20f - - - - .debug_line - 0x69bc - 0x69bc - 0x1a4 - - - - .debug_line - 0x6b60 - 0x6b60 - 0xb7 - - - - .debug_line - 0x6c17 - 0x6c17 - 0x341 - - - - .debug_line - 0x6f58 - 0x6f58 - 0x33 - - - - .debug_line - 0x6f8b - 0x6f8b - 0x33 - - - - .debug_line - 0x6fbe - 0x6fbe - 0x45 - - - - .debug_line - 0x7003 - 0x7003 - 0x48 - - - - .debug_line - 0x704b - 0x704b - 0x48 - - - - .debug_line - 0x7093 - 0x7093 - 0x48 - - - - .debug_line - 0x70db - 0x70db - 0x55 - - - - .debug_line - 0x7130 - 0x7130 - 0xf0 - - - - .debug_line - 0x7220 - 0x7220 + 0x1d6a + 0x1d6a 0x91 - + - + .debug_line - 0x72b1 - 0x72b1 - 0x98 - + 0x1dfb + 0x1dfb + 0x51 + - + .debug_line - 0x7349 - 0x7349 - 0x98 - + 0x1e4c + 0x1e4c + 0x33 + - + .debug_line - 0x73e1 - 0x73e1 - 0x92 - + 0x1e7f + 0x1e7f + 0x30 + - + .debug_line - 0x7473 - 0x7473 - 0x72 - + 0x1eaf + 0x1eaf + 0x77 + - + .debug_line - 0x74e5 - 0x74e5 - 0x73 - + 0x1f26 + 0x1f26 + 0x40 + - + .debug_line - 0x7558 - 0x7558 - 0x20 - + 0x1f66 + 0x1f66 + 0x30 + - + .debug_line - 0x7578 - 0x7578 - 0xa3 - + 0x1f96 + 0x1f96 + 0x30 + - + .debug_line - 0x761b - 0x761b - 0xa6 - + 0x1fc6 + 0x1fc6 + 0x30 + - + .debug_line - 0x76c1 - 0x76c1 - 0x8f - + 0x1ff6 + 0x1ff6 + 0x30 + - + .debug_line - 0x7750 - 0x7750 - 0x8d - + 0x2026 + 0x2026 + 0x30 + - + .debug_line - 0x77dd - 0x77dd - 0xd2 - + 0x2056 + 0x2056 + 0x30 + - + .debug_line - 0x78af - 0x78af - 0x8e - + 0x2086 + 0x2086 + 0x30 + - + .debug_line - 0x793d - 0x793d - 0x5a - + 0x20b6 + 0x20b6 + 0x30 + - + .debug_line - 0x7997 - 0x7997 - 0x66 - + 0x20e6 + 0x20e6 + 0x30 + - + .debug_line - 0x79fd - 0x79fd - 0x6e - + 0x2116 + 0x2116 + 0x30 + - + .debug_line - 0x7a6b - 0x7a6b - 0x57 - + 0x2146 + 0x2146 + 0x30 + - + .debug_line - 0x7ac2 - 0x7ac2 - 0x54 - + 0x2176 + 0x2176 + 0x30 + - + .debug_line - 0x7b16 - 0x7b16 + 0x21a6 + 0x21a6 + 0x30 + + + + .debug_line + 0x21d6 + 0x21d6 + 0x30 + + + + .debug_line + 0x2206 + 0x2206 + 0x30 + + + + .debug_line + 0x2236 + 0x2236 + 0x30 + + + + .debug_line + 0x2266 + 0x2266 + 0x30 + + + + .debug_line + 0x2296 + 0x2296 + 0x30 + + + + .debug_line + 0x22c6 + 0x22c6 + 0x30 + + + + .debug_line + 0x22f6 + 0x22f6 + 0x30 + + + + .debug_line + 0x2326 + 0x2326 + 0x30 + + + + .debug_line + 0x2356 + 0x2356 + 0x30 + + + + .debug_line + 0x2386 + 0x2386 + 0x30 + + + + .debug_line + 0x23b6 + 0x23b6 + 0x30 + + + + .debug_line + 0x23e6 + 0x23e6 + 0x30 + + + + .debug_line + 0x2416 + 0x2416 + 0x30 + + + + .debug_line + 0x2446 + 0x2446 + 0x30 + + + + .debug_line + 0x2476 + 0x2476 + 0x64 + + + + .debug_line + 0x24da + 0x24da + 0x5f + + + + .debug_line + 0x2539 + 0x2539 0x50 - + - + .debug_line - 0x7b66 - 0x7b66 - 0x88 - + 0x2589 + 0x2589 + 0x5d + - + .debug_line - 0x7bee - 0x7bee - 0x4e - + 0x25e6 + 0x25e6 + 0x87 + - + .debug_line - 0x7c3c - 0x7c3c - 0x79 - - - - .debug_line - 0x7cb5 - 0x7cb5 - 0x92 - - - - .debug_line - 0x7d47 - 0x7d47 + 0x266d + 0x266d 0x4c - + - + .debug_line - 0x7d93 - 0x7d93 - 0x34 - + 0x26b9 + 0x26b9 + 0x4c + - + .debug_line - 0x7dc7 - 0x7dc7 - 0x20 - - - - .debug_line - 0x7de7 - 0x7de7 - 0x55 - - - - .debug_line - 0x7e3c - 0x7e3c - 0x3a - - - - .debug_line - 0x7e76 - 0x7e76 - 0x92 - - - - .debug_line - 0x7f08 - 0x7f08 - 0x20 - - - - .debug_line - 0x7f28 - 0x7f28 - 0xa9 - - - - .debug_line - 0x7fd1 - 0x7fd1 - 0x3a - - - - .debug_line - 0x800b - 0x800b - 0x9a - - - - .debug_line - 0x80a5 - 0x80a5 - 0x96 - - - - .debug_line - 0x813b - 0x813b - 0x10f - - - - .debug_line - 0x824a - 0x824a - 0x2c - - - - .debug_line - 0x8276 - 0x8276 - 0x2c - - - - .debug_line - 0x82a2 - 0x82a2 - 0x41 - - - - .debug_line - 0x82e3 - 0x82e3 + 0x2705 + 0x2705 0x50 - + - + .debug_line - 0x8333 - 0x8333 - 0x55 - + 0x2755 + 0x2755 + 0x84 + - + .debug_line - 0x8388 - 0x8388 - 0xd0 - - - - .debug_line - 0x8458 - 0x8458 - 0x98 - - - - .debug_line - 0x84f0 - 0x84f0 - 0x112 - - - - .debug_line - 0x8602 - 0x8602 - 0x2c - - - - .debug_line - 0x862e - 0x862e - 0x92 - - - - .debug_line - 0x86c0 - 0x86c0 - 0x20 - - - - .debug_line - 0x86e0 - 0x86e0 - 0xae - - - - .debug_line - 0x878e - 0x878e - 0x20 - + 0x27d9 + 0x27d9 + 0x42 + .debug_line - 0x87ae - 0x87ae - 0xb7 - - - - .debug_line - 0x8865 - 0x8865 - 0x33 - - - - .debug_line - 0x8898 - 0x8898 + 0x281b + 0x281b 0x45 - + - + .debug_line - 0x88dd - 0x88dd - 0xbf - + 0x2860 + 0x2860 + 0xaf + - + .debug_line - 0x899c - 0x899c - 0x6f - + 0x290f + 0x290f + 0x31 + - + .debug_line - 0x8a0b - 0x8a0b - 0x2e - + 0x2940 + 0x2940 + 0x56 + + + + .debug_line + 0x2996 + 0x2996 + 0x5b + + + + .debug_line + 0x29f1 + 0x29f1 + 0x52 + + + + .debug_line + 0x2a43 + 0x2a43 + 0x5d + + + + .debug_line + 0x2aa0 + 0x2aa0 + 0x53 + + + + .debug_line + 0x2af3 + 0x2af3 + 0xc5 + + + + .debug_line + 0x2bb8 + 0x2bb8 + 0x60 + + + + .debug_line + 0x2c18 + 0x2c18 + 0xd3 + + + + .debug_line + 0x2ceb + 0x2ceb + 0x14e + + + + .debug_line + 0x2e39 + 0x2e39 + 0x61 + + + + .debug_line + 0x2e9a + 0x2e9a + 0x9f + + + + .debug_line + 0x2f39 + 0x2f39 + 0x78 + + + + .debug_line + 0x2fb1 + 0x2fb1 + 0x9b + + + + .debug_line + 0x304c + 0x304c + 0x52 + + + + .debug_line + 0x309e + 0x309e + 0x42 + + + + .debug_line + 0x30e0 + 0x30e0 + 0x5a + + + + .debug_line + 0x313a + 0x313a + 0x9b + + + + .debug_line + 0x31d5 + 0x31d5 + 0x1f0 + + + + .debug_line + 0x33c5 + 0x33c5 + 0x4c + + + + .debug_line + 0x3411 + 0x3411 + 0x4b + + + + .debug_line + 0x345c + 0x345c + 0x30 + + + + .debug_line + 0x348c + 0x348c + 0xa8 + + + + .debug_line + 0x3534 + 0x3534 + 0x30 + + + + .debug_line + 0x3564 + 0x3564 + 0x4a + + + + .debug_line + 0x35ae + 0x35ae + 0x48 + + + + .debug_line + 0x35f6 + 0x35f6 + 0x50 + + + + .debug_line + 0x3646 + 0x3646 + 0x49 + + + + .debug_line + 0x368f + 0x368f + 0x92 + + + + .debug_line + 0x3721 + 0x3721 + 0x60 + + + + .debug_line + 0x3781 + 0x3781 + 0x46 + + + + .debug_line + 0x37c7 + 0x37c7 + 0x50 + + + + .debug_line + 0x3817 + 0x3817 + 0x2cf + + + + .debug_line + 0x3ae6 + 0x3ae6 + 0x72 + + + + .debug_line + 0x3b58 + 0x3b58 + 0x49 + + + + .debug_line + 0x3ba1 + 0x3ba1 + 0x151 + + + + .debug_line + 0x3cf2 + 0x3cf2 + 0x45 + + + + .debug_line + 0x3d37 + 0x3d37 + 0x263 + + + + .debug_line + 0x3f9a + 0x3f9a + 0x1a8 + + + + .debug_line + 0x4142 + 0x4142 + 0xb1 + + + + .debug_line + 0x41f3 + 0x41f3 + 0xa1 + + + + .debug_line + 0x4294 + 0x4294 + 0xce + + + + .debug_line + 0x4362 + 0x4362 + 0x62 + + + + .debug_line + 0x43c4 + 0x43c4 + 0x1aa + + + + .debug_line + 0x456e + 0x456e + 0x53 + + + + .debug_line + 0x45c1 + 0x45c1 + 0x55 + + + + .debug_line + 0x4616 + 0x4616 + 0x53 + + + + .debug_line + 0x4669 + 0x4669 + 0x55 + + + + .debug_line + 0x46be + 0x46be + 0x53 + + + + .debug_line + 0x4711 + 0x4711 + 0x55 + + + + .debug_line + 0x4766 + 0x4766 + 0x53 + + + + .debug_line + 0x47b9 + 0x47b9 + 0x55 + + + + .debug_line + 0x480e + 0x480e + 0x50 + + + + .debug_line + 0x485e + 0x485e + 0xc2 + + + + .debug_line + 0x4920 + 0x4920 + 0x53 + + + + .debug_line + 0x4973 + 0x4973 + 0x50 + + + + .debug_line + 0x49c3 + 0x49c3 + 0x53 + + + + .debug_line + 0x4a16 + 0x4a16 + 0x55 + + + + .debug_line + 0x4a6b + 0x4a6b + 0x53 + + + + .debug_line + 0x4abe + 0x4abe + 0x55 + + + + .debug_line + 0x4b13 + 0x4b13 + 0x53 + + + + .debug_line + 0x4b66 + 0x4b66 + 0x55 + + + + .debug_line + 0x4bbb + 0x4bbb + 0x50 + + + + .debug_line + 0x4c0b + 0x4c0b + 0x55 + + + + .debug_line + 0x4c60 + 0x4c60 + 0x5d + + + + .debug_line + 0x4cbd + 0x4cbd + 0x180 + + + + .debug_line + 0x4e3d + 0x4e3d + 0xab + + + + .debug_line + 0x4ee8 + 0x4ee8 + 0xac + + + + .debug_line + 0x4f94 + 0x4f94 + 0xa3 + + + + .debug_line + 0x5037 + 0x5037 + 0xa3 + + + + .debug_line + 0x50da + 0x50da + 0xa3 + + + + .debug_line + 0x517d + 0x517d + 0x6d + + + + .debug_line + 0x51ea + 0x51ea + 0x6b + + + + .debug_line + 0x5255 + 0x5255 + 0x6a + + + + .debug_line + 0x52bf + 0x52bf + 0x68 + + + + .debug_line + 0x5327 + 0x5327 + 0x20 + + + + .debug_line + 0x5347 + 0x5347 + 0x8d + + + + .debug_line + 0x53d4 + 0x53d4 + 0x6b + + + + .debug_line + 0x543f + 0x543f + 0x6b + + + + .debug_line + 0x54aa + 0x54aa + 0x4b + + + + .debug_line + 0x54f5 + 0x54f5 + 0x56 + + + + .debug_line + 0x554b + 0x554b + 0x4b + + + + .debug_line + 0x5596 + 0x5596 + 0x51 + + + + .debug_line + 0x55e7 + 0x55e7 + 0x48 + + + + .debug_line + 0x562f + 0x562f + 0x50 + + + + .debug_line + 0x567f + 0x567f + 0x4b + + + + .debug_line + 0x56ca + 0x56ca + 0x45 + + + + .debug_line + 0x570f + 0x570f + 0x11b + + + + .debug_line + 0x582a + 0x582a + 0x58 + + + + .debug_line + 0x5882 + 0x5882 + 0x4b + + + + .debug_line + 0x58cd + 0x58cd + 0x55 + + + + .debug_line + 0x5922 + 0x5922 + 0x94 + + + + .debug_line + 0x59b6 + 0x59b6 + 0x9c + + + + .debug_line + 0x5a52 + 0x5a52 + 0x9b + + + + .debug_line + 0x5aed + 0x5aed + 0x78 + + + + .debug_line + 0x5b65 + 0x5b65 + 0x76 + + + + .debug_line + 0x5bdb + 0x5bdb + 0x9d + + + + .debug_line + 0x5c78 + 0x5c78 + 0x5d + + + + .debug_line + 0x5cd5 + 0x5cd5 + 0x5b + + + + .debug_line + 0x5d30 + 0x5d30 + 0x7b + + + + .debug_line + 0x5dab + 0x5dab + 0x73 + + + + .debug_line + 0x5e1e + 0x5e1e + 0xd8 + + + + .debug_line + 0x5ef6 + 0x5ef6 + 0x2f + + + + .debug_line + 0x5f25 + 0x5f25 + 0x2f + + + + .debug_line + 0x5f54 + 0x5f54 + 0x2f + + + + .debug_line + 0x5f83 + 0x5f83 + 0x4e + + + + .debug_line + 0x5fd1 + 0x5fd1 + 0xca + + + + .debug_line + 0x609b + 0x609b + 0x79 + + + + .debug_line + 0x6114 + 0x6114 + 0x1f9 + + + + .debug_line + 0x630d + 0x630d + 0x17d + + + + .debug_line + 0x648a + 0x648a + 0xbc + + + + .debug_line + 0x6546 + 0x6546 + 0x5c + + + + .debug_line + 0x65a2 + 0x65a2 + 0x4b + + + + .debug_line + 0x65ed + 0x65ed + 0x44 + + + + .debug_line + 0x6631 + 0x6631 + 0x7d + + + + .debug_line + 0x66ae + 0x66ae + 0x52 + + + + .debug_line + 0x6700 + 0x6700 + 0xb4 + + + + .debug_line + 0x67b4 + 0x67b4 + 0x88 + + + + .debug_line + 0x683c + 0x683c + 0x30 + + + + .debug_line + 0x686c + 0x686c + 0x92 + + + + .debug_line + 0x68fe + 0x68fe + 0x186 + + + + .debug_line + 0x6a84 + 0x6a84 + 0x103 + + + + .debug_line + 0x6b87 + 0x6b87 + 0x33 + + + + .debug_line + 0x6bba + 0x6bba + 0x33 + + + + .debug_line + 0x6bed + 0x6bed + 0x45 + + + + .debug_line + 0x6c32 + 0x6c32 + 0x48 + + + + .debug_line + 0x6c7a + 0x6c7a + 0x48 + + + + .debug_line + 0x6cc2 + 0x6cc2 + 0x48 + + + + .debug_line + 0x6d0a + 0x6d0a + 0x55 + + + + .debug_line + 0x6d5f + 0x6d5f + 0xf0 + + + + .debug_line + 0x6e4f + 0x6e4f + 0x91 + + + + .debug_line + 0x6ee0 + 0x6ee0 + 0x98 + + + + .debug_line + 0x6f78 + 0x6f78 + 0x98 + + + + .debug_line + 0x7010 + 0x7010 + 0x92 + + + + .debug_line + 0x70a2 + 0x70a2 + 0x72 + + + + .debug_line + 0x7114 + 0x7114 + 0x73 + + + + .debug_line + 0x7187 + 0x7187 + 0x20 + + + + .debug_line + 0x71a7 + 0x71a7 + 0xa3 + + + + .debug_line + 0x724a + 0x724a + 0xa6 + + + + .debug_line + 0x72f0 + 0x72f0 + 0x8f + + + + .debug_line + 0x737f + 0x737f + 0x8d + + + + .debug_line + 0x740c + 0x740c + 0xd2 + + + + .debug_line + 0x74de + 0x74de + 0x8e + + + + .debug_line + 0x756c + 0x756c + 0x5a + + + + .debug_line + 0x75c6 + 0x75c6 + 0x66 + + + + .debug_line + 0x762c + 0x762c + 0x6e + .debug_line - 0x8a39 - 0x8a39 + 0x769a + 0x769a + 0x57 + + + + .debug_line + 0x76f1 + 0x76f1 + 0x54 + + + + .debug_line + 0x7745 + 0x7745 + 0x50 + + + + .debug_line + 0x7795 + 0x7795 + 0x88 + + + + .debug_line + 0x781d + 0x781d + 0x4e + + + + .debug_line + 0x786b + 0x786b + 0x79 + + + + .debug_line + 0x78e4 + 0x78e4 + 0x92 + + + + .debug_line + 0x7976 + 0x7976 + 0x4c + + + + .debug_line + 0x79c2 + 0x79c2 + 0x34 + + + + .debug_line + 0x79f6 + 0x79f6 + 0x20 + + + + .debug_line + 0x7a16 + 0x7a16 + 0x55 + + + + .debug_line + 0x7a6b + 0x7a6b + 0x3a + + + + .debug_line + 0x7aa5 + 0x7aa5 + 0x92 + + + + .debug_line + 0x7b37 + 0x7b37 + 0x20 + + + + .debug_line + 0x7b57 + 0x7b57 + 0xa9 + + + + .debug_line + 0x7c00 + 0x7c00 + 0x3a + + + + .debug_line + 0x7c3a + 0x7c3a 0x9a + + + + .debug_line + 0x7cd4 + 0x7cd4 + 0x96 + + + + .debug_line + 0x7d6a + 0x7d6a + 0x10f - + .debug_line - 0x8ad3 - 0x8ad3 - 0x97 + 0x7e79 + 0x7e79 + 0x2c - + .debug_line - 0x8b6a - 0x8b6a - 0x93 + 0x7ea5 + 0x7ea5 + 0x2c - + .debug_line - 0x8bfd - 0x8bfd - 0x40 + 0x7ed1 + 0x7ed1 + 0x41 + + + + .debug_line + 0x7f12 + 0x7f12 + 0x50 + + + + .debug_line + 0x7f62 + 0x7f62 + 0x55 + + + + .debug_line + 0x7fb7 + 0x7fb7 + 0xd0 + + + + .debug_line + 0x8087 + 0x8087 + 0x98 + + + + .debug_line + 0x811f + 0x811f + 0x112 + + + + .debug_line + 0x8231 + 0x8231 + 0x2c + + + + .debug_line + 0x825d + 0x825d + 0x92 + + + + .debug_line + 0x82ef + 0x82ef + 0x20 - + .debug_line - 0x8c3d - 0x8c3d - 0x3c + 0x830f + 0x830f + 0xae + + + + .debug_line + 0x83bd + 0x83bd + 0x20 + + + + .debug_line + 0x83dd + 0x83dd + 0xb7 + + + + .debug_line + 0x8494 + 0x8494 + 0x33 - + .debug_line - 0x8c79 - 0x8c79 + 0x84c7 + 0x84c7 + 0x45 + + + + .debug_line + 0x850c + 0x850c + 0xbf + + + + .debug_line + 0x85cb + 0x85cb + 0x6f + + + + .debug_line + 0x863a + 0x863a + 0x2e + + + + .debug_line + 0x8668 + 0x8668 + 0x9a + + + + .debug_line + 0x8702 + 0x8702 + 0x97 + + + + .debug_line + 0x8799 + 0x8799 + 0x93 + + + + .debug_line + 0x882c + 0x882c + 0x40 + + + + .debug_line + 0x886c + 0x886c + 0x3c + + + + .debug_line + 0x88a8 + 0x88a8 0x20 - + - + .debug_line - 0x8c99 - 0x8c99 + 0x88c8 + 0x88c8 0x2b - + - + .debug_line - 0x8cc4 - 0x8cc4 + 0x88f3 + 0x88f3 0x3a - + - + .debug_frame 0x0 0x0 - 0x50 + 0x34 - + .debug_frame - 0x50 - 0x50 - 0x50 + 0x34 + 0x34 + 0x34 - + .debug_frame - 0xa0 - 0xa0 + 0x68 + 0x68 + 0x34 + + + + .debug_frame + 0x9c + 0x9c + 0x50 + + + + .debug_frame + 0xec + 0xec + 0x50 + + + + .debug_frame + 0x13c + 0x13c 0x44 - + .debug_frame - 0xe4 - 0xe4 + 0x180 + 0x180 0x38 - + - + .debug_frame - 0x11c - 0x11c - 0x50 - + 0x1b8 + 0x1b8 + 0x54 + - + .debug_frame - 0x16c - 0x16c + 0x20c + 0x20c 0x34 - + - + .debug_frame - 0x1a0 - 0x1a0 + 0x240 + 0x240 0x50 - + - + .debug_frame - 0x1f0 - 0x1f0 - 0x38 - - - - .debug_frame - 0x228 - 0x228 + 0x290 + 0x290 0x44 - + - + .debug_frame - 0x26c - 0x26c + 0x2d4 + 0x2d4 0x3c - + - - .debug_frame - 0x2a8 - 0x2a8 - 0x34 - - - - .debug_frame - 0x2dc - 0x2dc - 0x34 - - - + .debug_frame 0x310 0x310 0x34 - + - + .debug_frame 0x344 0x344 0x34 - + - + .debug_frame 0x378 0x378 0x34 - + - + .debug_frame 0x3ac 0x3ac 0x44 - + - + .debug_frame 0x3f0 0x3f0 0x44 - + - + .debug_frame 0x434 0x434 0x44 - + - + .debug_frame 0x478 0x478 - 0x34 - - - - .debug_frame - 0x4ac - 0x4ac - 0x3c - - - - .debug_frame - 0x4e8 - 0x4e8 - 0x34 - - - - .debug_frame - 0x51c - 0x51c 0x3c - + .debug_frame - 0x558 - 0x558 + 0x4b4 + 0x4b4 + 0x3c + + + + .debug_frame + 0x4f0 + 0x4f0 0x40 - + - + .debug_frame - 0x598 - 0x598 - 0x38 - - - - .debug_frame - 0x5d0 - 0x5d0 - 0x40 - - - - .debug_frame - 0x610 - 0x610 - 0x3c - - - - .debug_frame - 0x64c - 0x64c - 0x3c - - - - .debug_frame - 0x688 - 0x688 - 0x38 - - - - .debug_frame - 0x6c0 - 0x6c0 - 0x3c - - - - .debug_frame - 0x6fc - 0x6fc - 0x3c - - - - .debug_frame - 0x738 - 0x738 - 0x4c - - - - .debug_frame - 0x784 - 0x784 - 0x34 - - - - .debug_frame - 0x7b8 - 0x7b8 + 0x530 + 0x530 0x38 - + .debug_frame - 0x7f0 - 0x7f0 + 0x568 + 0x568 0x40 + + .debug_frame + 0x5a8 + 0x5a8 + 0x3c + + + + .debug_frame + 0x5e4 + 0x5e4 + 0x3c + + + + .debug_frame + 0x620 + 0x620 + 0x38 + + + + .debug_frame + 0x658 + 0x658 + 0x3c + + + + .debug_frame + 0x694 + 0x694 + 0x38 + + + + .debug_frame + 0x6cc + 0x6cc + 0x34 + + + + .debug_frame + 0x700 + 0x700 + 0x34 + + + + .debug_frame + 0x734 + 0x734 + 0x38 + + + + .debug_frame + 0x76c + 0x76c + 0x40 + + .debug_frame - 0x830 - 0x830 + 0x7ac + 0x7ac 0x38 - + - + .debug_frame - 0x868 - 0x868 + 0x7e4 + 0x7e4 0x38 - + .debug_frame - 0x8a0 - 0x8a0 + 0x81c + 0x81c 0x38 - + .debug_frame - 0x8d8 - 0x8d8 + 0x854 + 0x854 0x4c - + - + .debug_frame - 0x924 - 0x924 + 0x8a0 + 0x8a0 0x3c - + - + .debug_frame - 0x960 - 0x960 - 0x38 - - - - .debug_frame - 0x998 - 0x998 + 0x8dc + 0x8dc 0x44 - + - + .debug_frame - 0x9dc - 0x9dc - 0x3c - + 0x920 + 0x920 + 0x44 + - + .debug_frame - 0xa18 - 0xa18 + 0x964 + 0x964 0x3c - + - + + .debug_frame + 0x9a0 + 0x9a0 + 0x38 + + + + .debug_frame + 0x9d8 + 0x9d8 + 0x44 + + + + .debug_frame + 0xa1c + 0xa1c + 0x38 + + + .debug_frame 0xa54 0xa54 - 0x40 - - - - .debug_frame - 0xa94 - 0xa94 - 0x38 - - - - .debug_frame - 0xacc - 0xacc - 0x34 - - - - .debug_frame - 0xb00 - 0xb00 - 0x38 - - - - .debug_frame - 0xb38 - 0xb38 - 0x38 - - - - .debug_frame - 0xb70 - 0xb70 0x34 - + .debug_frame - 0xba4 - 0xba4 + 0xa88 + 0xa88 + 0x38 + + + + .debug_frame + 0xac0 + 0xac0 + 0x4c + + + + .debug_frame + 0xb0c + 0xb0c + 0x34 + + + + .debug_frame + 0xb40 + 0xb40 + 0x38 + + + + .debug_frame + 0xb78 + 0xb78 + 0x38 + + + + .debug_frame + 0xbb0 + 0xbb0 + 0x34 + + + + .debug_frame + 0xbe4 + 0xbe4 0x3c - + - + .debug_frame - 0xbe0 - 0xbe0 + 0xc20 + 0xc20 0x38 - + - + .debug_frame - 0xc18 - 0xc18 + 0xc58 + 0xc58 0x38 - + - + .debug_frame - 0xc50 - 0xc50 + 0xc90 + 0xc90 0x38 - + - + .debug_frame - 0xc88 - 0xc88 + 0xcc8 + 0xcc8 0x38 - + - + .debug_frame - 0xcc0 - 0xcc0 + 0xd00 + 0xd00 0x3c - + - + .debug_frame - 0xcfc - 0xcfc + 0xd3c + 0xd3c 0x50 - + - + .debug_frame - 0xd4c - 0xd4c - 0x44 - + 0xd8c + 0xd8c + 0x3c + - - .debug_frame - 0xd90 - 0xd90 - 0x38 - - - + .debug_frame 0xdc8 0xdc8 - 0x48 - - - - .debug_frame - 0xe10 - 0xe10 - 0x34 - - - - .debug_frame - 0xe44 - 0xe44 - 0x50 - - - - .debug_frame - 0xe94 - 0xe94 - 0x44 - - - - .debug_frame - 0xed8 - 0xed8 - 0x44 - - - - .debug_frame - 0xf1c - 0xf1c - 0x40 - - - - .debug_frame - 0xf5c - 0xf5c - 0x44 - - - - .debug_frame - 0xfa0 - 0xfa0 0x38 - - - - .debug_frame - 0xfd8 - 0xfd8 - 0x34 - - - - .debug_frame - 0x100c - 0x100c - 0x38 - - - - .debug_frame - 0x1044 - 0x1044 - 0x34 - - - - .debug_frame - 0x1078 - 0x1078 - 0x38 - - - - .debug_frame - 0x10b0 - 0x10b0 - 0x34 - - - - .debug_frame - 0x10e4 - 0x10e4 - 0x38 - - - - .debug_frame - 0x111c - 0x111c - 0x34 - - - - .debug_frame - 0x1150 - 0x1150 - 0x38 - - - - .debug_frame - 0x1188 - 0x1188 - 0x34 - - - - .debug_frame - 0x11bc - 0x11bc - 0x34 - - - - .debug_frame - 0x11f0 - 0x11f0 - 0x34 - - - - .debug_frame - 0x1224 - 0x1224 - 0x34 - - - - .debug_frame - 0x1258 - 0x1258 - 0x34 - - - - .debug_frame - 0x128c - 0x128c - 0x38 - - - - .debug_frame - 0x12c4 - 0x12c4 - 0x34 - - - - .debug_frame - 0x12f8 - 0x12f8 - 0x38 - - - - .debug_frame - 0x1330 - 0x1330 - 0x34 - - - - .debug_frame - 0x1364 - 0x1364 - 0x38 - - - - .debug_frame - 0x139c - 0x139c - 0x34 - - - - .debug_frame - 0x13d0 - 0x13d0 - 0x38 - - - - .debug_frame - 0x1408 - 0x1408 - 0x3c - - - - .debug_frame - 0x1444 - 0x1444 - 0x44 - - - - .debug_frame - 0x1488 - 0x1488 - 0x34 - - - - .debug_frame - 0x14bc - 0x14bc - 0x34 - - - - .debug_frame - 0x14f0 - 0x14f0 - 0x3c - - - - .debug_frame - 0x152c - 0x152c - 0x3c - - - - .debug_frame - 0x1568 - 0x1568 - 0x3c - - - - .debug_frame - 0x15a4 - 0x15a4 - 0x34 - - - - .debug_frame - 0x15d8 - 0x15d8 - 0x3c - - - - .debug_frame - 0x1614 - 0x1614 - 0x34 - - - - .debug_frame - 0x1648 - 0x1648 - 0x34 - - - - .debug_frame - 0x167c - 0x167c - 0x44 - - - - .debug_frame - 0x16c0 - 0x16c0 - 0x40 - - - - .debug_frame - 0x1700 - 0x1700 - 0x48 - + .debug_frame - 0x1748 - 0x1748 + 0xe00 + 0xe00 + 0x48 + + + + .debug_frame + 0xe48 + 0xe48 + 0x34 + + + + .debug_frame + 0xe7c + 0xe7c + 0x50 + + + + .debug_frame + 0xecc + 0xecc + 0x44 + + + + .debug_frame + 0xf10 + 0xf10 + 0x48 + + + + .debug_frame + 0xf58 + 0xf58 0x40 - + - + .debug_frame - 0x1788 - 0x1788 - 0x3c - - - - .debug_frame - 0x17c4 - 0x17c4 - 0x4c - - - - .debug_frame - 0x1810 - 0x1810 - 0x3c - - - - .debug_frame - 0x184c - 0x184c + 0xf98 + 0xf98 0x40 - + + + + .debug_frame + 0xfd8 + 0xfd8 + 0x38 + + + + .debug_frame + 0x1010 + 0x1010 + 0x34 + + + + .debug_frame + 0x1044 + 0x1044 + 0x38 + + + + .debug_frame + 0x107c + 0x107c + 0x34 + + + + .debug_frame + 0x10b0 + 0x10b0 + 0x38 + + + + .debug_frame + 0x10e8 + 0x10e8 + 0x34 + .debug_frame - 0x188c - 0x188c - 0x44 - + 0x111c + 0x111c + 0x38 + - + .debug_frame - 0x18d0 - 0x18d0 + 0x1154 + 0x1154 + 0x34 + + + + .debug_frame + 0x1188 + 0x1188 + 0x38 + + + + .debug_frame + 0x11c0 + 0x11c0 + 0x34 + + + + .debug_frame + 0x11f4 + 0x11f4 + 0x34 + + + + .debug_frame + 0x1228 + 0x1228 + 0x34 + + + + .debug_frame + 0x125c + 0x125c + 0x34 + + + + .debug_frame + 0x1290 + 0x1290 + 0x34 + + + + .debug_frame + 0x12c4 + 0x12c4 + 0x38 + + + + .debug_frame + 0x12fc + 0x12fc + 0x34 + + + + .debug_frame + 0x1330 + 0x1330 + 0x38 + + + + .debug_frame + 0x1368 + 0x1368 + 0x34 + + + + .debug_frame + 0x139c + 0x139c + 0x38 + + + + .debug_frame + 0x13d4 + 0x13d4 + 0x34 + + + + .debug_frame + 0x1408 + 0x1408 + 0x38 + + + + .debug_frame + 0x1440 + 0x1440 0x3c - + - + .debug_frame - 0x190c - 0x190c + 0x147c + 0x147c + 0x44 + + + + .debug_frame + 0x14c0 + 0x14c0 + 0x34 + + + + .debug_frame + 0x14f4 + 0x14f4 + 0x34 + + + + .debug_frame + 0x1528 + 0x1528 + 0x3c + + + + .debug_frame + 0x1564 + 0x1564 + 0x3c + + + + .debug_frame + 0x15a0 + 0x15a0 + 0x3c + + + + .debug_frame + 0x15dc + 0x15dc + 0x34 + + + + .debug_frame + 0x1610 + 0x1610 + 0x3c + + + + .debug_frame + 0x164c + 0x164c + 0x40 + + + + .debug_frame + 0x168c + 0x168c 0x38 - + - + .debug_frame - 0x1944 - 0x1944 - 0x48 - + 0x16c4 + 0x16c4 + 0x3c + - + .debug_frame - 0x198c - 0x198c - 0x38 - + 0x1700 + 0x1700 + 0x3c + - + .debug_frame - 0x19c4 - 0x19c4 - 0x50 - + 0x173c + 0x173c + 0x34 + - + .debug_frame - 0x1a14 - 0x1a14 - 0x50 - + 0x1770 + 0x1770 + 0x3c + - + .debug_frame - 0x1a64 - 0x1a64 + 0x17ac + 0x17ac + 0x34 + + + + .debug_frame + 0x17e0 + 0x17e0 + 0x34 + + + + .debug_frame + 0x1814 + 0x1814 + 0x44 + + + + .debug_frame + 0x1858 + 0x1858 + 0x40 + + + + .debug_frame + 0x1898 + 0x1898 + 0x54 + + + + .debug_frame + 0x18ec + 0x18ec + 0x40 + + + + .debug_frame + 0x192c + 0x192c + 0x3c + + + + .debug_frame + 0x1968 + 0x1968 0x4c - + - + + .debug_frame + 0x19b4 + 0x19b4 + 0x3c + + + + .debug_frame + 0x19f0 + 0x19f0 + 0x40 + + + + .debug_frame + 0x1a30 + 0x1a30 + 0x44 + + + + .debug_frame + 0x1a74 + 0x1a74 + 0x3c + + + .debug_frame 0x1ab0 0x1ab0 - 0x48 - - - - .debug_frame - 0x1af8 - 0x1af8 0x38 - + - + .debug_frame - 0x1b30 - 0x1b30 - 0x34 - - - - .debug_frame - 0x1b64 - 0x1b64 - 0x44 - - - - .debug_frame - 0x1ba8 - 0x1ba8 - 0x40 - - - - .debug_frame - 0x1be8 - 0x1be8 - 0x48 - - - - .debug_frame - 0x1c30 - 0x1c30 - 0x40 - - - - .debug_frame - 0x1c70 - 0x1c70 - 0x44 - - - - .debug_frame - 0x1cb4 - 0x1cb4 + 0x1ae8 + 0x1ae8 0x4c - + - + .debug_frame - 0x1d00 - 0x1d00 - 0x54 - + 0x1b34 + 0x1b34 + 0x38 + - + .debug_frame - 0x1d54 - 0x1d54 + 0x1b6c + 0x1b6c 0x50 - + - + .debug_frame - 0x1da4 - 0x1da4 + 0x1bbc + 0x1bbc + 0x50 + + + + .debug_frame + 0x1c0c + 0x1c0c + 0x4c + + + + .debug_frame + 0x1c58 + 0x1c58 + 0x38 + + + + .debug_frame + 0x1c90 + 0x1c90 + 0x38 + + + + .debug_frame + 0x1cc8 + 0x1cc8 + 0x34 + + + + .debug_frame + 0x1cfc + 0x1cfc 0x44 - + - + .debug_frame - 0x1de8 - 0x1de8 + 0x1d40 + 0x1d40 + 0x40 + + + + .debug_frame + 0x1d80 + 0x1d80 + 0x48 + + + + .debug_frame + 0x1dc8 + 0x1dc8 + 0x40 + + + + .debug_frame + 0x1e08 + 0x1e08 0x50 - + + + + .debug_frame + 0x1e58 + 0x1e58 + 0x50 + .debug_frame - 0x1e38 - 0x1e38 + 0x1ea8 + 0x1ea8 0x34 - + - + .debug_frame - 0x1e6c - 0x1e6c + 0x1edc + 0x1edc 0x34 - + - + .debug_frame - 0x1ea0 - 0x1ea0 + 0x1f10 + 0x1f10 0x34 - + - + .debug_frame - 0x1ed4 - 0x1ed4 + 0x1f44 + 0x1f44 0x34 - + - - .debug_frame - 0x1f08 - 0x1f08 - 0x38 - - - - .debug_frame - 0x1f40 - 0x1f40 - 0x38 - - - + .debug_frame 0x1f78 0x1f78 0x38 - + - + .debug_frame 0x1fb0 0x1fb0 - 0x3c - + 0x38 + - + .debug_frame - 0x1fec - 0x1fec + 0x1fe8 + 0x1fe8 + 0x38 + + + + .debug_frame + 0x2020 + 0x2020 0x3c - + + + + .debug_frame + 0x205c + 0x205c + 0x3c + - .debug_frame - 0x2028 - 0x2028 - 0x38 - - - - .debug_frame - 0x2060 - 0x2060 - 0x38 - - - .debug_frame 0x2098 0x2098 0x38 - + - + .debug_frame 0x20d0 0x20d0 + 0x38 + + + + .debug_frame + 0x2108 + 0x2108 + 0x38 + + + + .debug_frame + 0x2140 + 0x2140 0x40 - + - - .debug_frame - 0x2110 - 0x2110 - 0x3c - - - - .debug_frame - 0x214c - 0x214c - 0x34 - - - + .debug_frame 0x2180 0x2180 - 0x34 - - - - .debug_frame - 0x21b4 - 0x21b4 - 0x40 - - - - .debug_frame - 0x21f4 - 0x21f4 - 0x34 - - - - .debug_frame - 0x2228 - 0x2228 - 0x34 - - - - .debug_frame - 0x225c - 0x225c - 0x38 - - - - .debug_frame - 0x2294 - 0x2294 - 0x44 - - - - .debug_frame - 0x22d8 - 0x22d8 0x3c - + - + .debug_frame - 0x2314 - 0x2314 - 0x48 - - - - .debug_frame - 0x235c - 0x235c + 0x21bc + 0x21bc 0x34 - + .debug_frame - 0x2390 - 0x2390 - 0x38 + 0x21f0 + 0x21f0 + 0x34 - + .debug_frame - 0x23c8 - 0x23c8 - 0x30 + 0x2224 + 0x2224 + 0x40 - + .debug_frame - 0x23f8 - 0x23f8 + 0x2264 + 0x2264 + 0x34 + + + + .debug_frame + 0x2298 + 0x2298 + 0x34 + + + + .debug_frame + 0x22cc + 0x22cc + 0x38 + + + + .debug_frame + 0x2304 + 0x2304 + 0x44 + + + + .debug_frame + 0x2348 + 0x2348 0x3c - + .debug_frame - 0x2434 - 0x2434 + 0x2384 + 0x2384 + 0x48 + + + + .debug_frame + 0x23cc + 0x23cc 0x34 - + + .debug_frame + 0x2400 + 0x2400 + 0x38 + + + + .debug_frame + 0x2438 + 0x2438 + 0x30 + + + .debug_frame 0x2468 0x2468 - 0x34 - - - - .debug_frame - 0x249c - 0x249c - 0x34 + 0x3c - + + .debug_frame + 0x24a4 + 0x24a4 + 0x34 + + + + .debug_frame + 0x24d8 + 0x24d8 + 0x34 + + + + .debug_frame + 0x250c + 0x250c + 0x34 + + + .debug_abbrev 0x0 0x0 - 0x13e + 0x8e - + .debug_abbrev - 0x13e - 0x13e - 0x29 - - - - .debug_abbrev - 0x167 - 0x167 - 0x29 - - - - .debug_abbrev - 0x190 - 0x190 - 0x29 - - - - .debug_abbrev - 0x1b9 - 0x1b9 - 0x29 - - - - .debug_abbrev - 0x1e2 - 0x1e2 - 0x29 - - - - .debug_abbrev - 0x20b - 0x20b - 0x29 - - - - .debug_abbrev - 0x234 - 0x234 - 0x29 - - - - .debug_abbrev - 0x25d - 0x25d - 0x29 - - - - .debug_abbrev - 0x286 - 0x286 - 0x29 - - - - .debug_abbrev - 0x2af - 0x2af - 0x29 - - - - .debug_abbrev - 0x2d8 - 0x2d8 - 0x29 - - - - .debug_abbrev - 0x301 - 0x301 - 0x29 - - - - .debug_abbrev - 0x32a - 0x32a - 0x29 - - - - .debug_abbrev - 0x353 - 0x353 - 0x29 - - - - .debug_abbrev - 0x37c - 0x37c - 0x29 - - - - .debug_abbrev - 0x3a5 - 0x3a5 - 0x29 - - - - .debug_abbrev - 0x3ce - 0x3ce - 0x29 - - - - .debug_abbrev - 0x3f7 - 0x3f7 - 0x29 - - - - .debug_abbrev - 0x420 - 0x420 - 0x29 - - - - .debug_abbrev - 0x449 - 0x449 - 0x29 - - - - .debug_abbrev - 0x472 - 0x472 - 0x29 - - - - .debug_abbrev - 0x49b - 0x49b - 0x29 - - - - .debug_abbrev - 0x4c4 - 0x4c4 - 0x29 - - - - .debug_abbrev - 0x4ed - 0x4ed - 0x29 - - - - .debug_abbrev - 0x516 - 0x516 - 0x29 - - - - .debug_abbrev - 0x53f - 0x53f - 0x29 - - - - .debug_abbrev - 0x568 - 0x568 - 0x29 - - - - .debug_abbrev - 0x591 - 0x591 - 0x29 - - - - .debug_abbrev - 0x5ba - 0x5ba - 0x29 - - - - .debug_abbrev - 0x5e3 - 0x5e3 - 0x29 - - - - .debug_abbrev - 0x60c - 0x60c - 0x29 - - - - .debug_abbrev - 0x635 - 0x635 - 0x29 - - - - .debug_abbrev - 0x65e - 0x65e - 0x29 - - - - .debug_abbrev - 0x687 - 0x687 - 0x29 - - - - .debug_abbrev - 0x6b0 - 0x6b0 - 0x29 - - - - .debug_abbrev - 0x6d9 - 0x6d9 - 0x29 - - - - .debug_abbrev - 0x702 - 0x702 - 0x29 - - - - .debug_abbrev - 0x72b - 0x72b - 0x29 - - - - .debug_abbrev - 0x754 - 0x754 - 0x29 - - - - .debug_abbrev - 0x77d - 0x77d - 0x29 - - - - .debug_abbrev - 0x7a6 - 0x7a6 - 0x29 - - - - .debug_abbrev - 0x7cf - 0x7cf - 0x29 - - - - .debug_abbrev - 0x7f8 - 0x7f8 - 0x29 - - - - .debug_abbrev - 0x821 - 0x821 - 0x29 - - - - .debug_abbrev - 0x84a - 0x84a - 0x29 - - - - .debug_abbrev - 0x873 - 0x873 - 0x29 - - - - .debug_abbrev - 0x89c - 0x89c - 0x29 - - - - .debug_abbrev - 0x8c5 - 0x8c5 - 0x29 - - - - .debug_abbrev - 0x8ee - 0x8ee - 0x29 - - - - .debug_abbrev - 0x917 - 0x917 - 0x29 - - - - .debug_abbrev - 0x940 - 0x940 - 0x29 - - - - .debug_abbrev - 0x969 - 0x969 - 0x29 - - - - .debug_abbrev - 0x992 - 0x992 - 0x29 - - - - .debug_abbrev - 0x9bb - 0x9bb - 0x29 - - - - .debug_abbrev - 0x9e4 - 0x9e4 - 0x29 - - - - .debug_abbrev - 0xa0d - 0xa0d - 0x29 - - - - .debug_abbrev - 0xa36 - 0xa36 - 0x29 - - - - .debug_abbrev - 0xa5f - 0xa5f - 0x29 - - - - .debug_abbrev - 0xa88 - 0xa88 - 0x29 - - - - .debug_abbrev - 0xab1 - 0xab1 - 0x29 - - - - .debug_abbrev - 0xada - 0xada - 0x29 - - - - .debug_abbrev - 0xb03 - 0xb03 - 0x29 - - - - .debug_abbrev - 0xb2c - 0xb2c - 0x29 - - - - .debug_abbrev - 0xb55 - 0xb55 - 0x29 - - - - .debug_abbrev - 0xb7e - 0xb7e - 0x29 - - - - .debug_abbrev - 0xba7 - 0xba7 - 0x29 - - - - .debug_abbrev - 0xbd0 - 0xbd0 - 0x29 - - - - .debug_abbrev - 0xbf9 - 0xbf9 - 0x29 - - - - .debug_abbrev - 0xc22 - 0xc22 - 0x6e - - - - .debug_abbrev - 0xc90 - 0xc90 - 0x7c - - - - .debug_abbrev - 0xd0c - 0xd0c - 0x6c - - - - .debug_abbrev - 0xd78 - 0xd78 - 0x60 - - - - .debug_abbrev - 0xdd8 - 0xdd8 - 0x6e - - - - .debug_abbrev - 0xe46 - 0xe46 - 0x60 - - - - .debug_abbrev - 0xea6 - 0xea6 - 0x5e - - - - .debug_abbrev - 0xf04 - 0xf04 - 0x6c - - - - .debug_abbrev - 0xf70 - 0xf70 - 0x7a - - - - .debug_abbrev - 0xfea - 0xfea - 0x7a - - - - .debug_abbrev - 0x1064 - 0x1064 + 0x8e + 0x8e 0x52 - + .debug_abbrev - 0x10b6 - 0x10b6 + 0xe0 + 0xe0 0x52 .debug_abbrev - 0x1108 - 0x1108 - 0x52 - - - - .debug_abbrev - 0x115a - 0x115a - 0x52 - - - - .debug_abbrev - 0x11ac - 0x11ac - 0x52 - - - - .debug_abbrev - 0x11fe - 0x11fe - 0x7c - - - - .debug_abbrev - 0x127a - 0x127a - 0x6c - - - - .debug_abbrev - 0x12e6 - 0x12e6 - 0x6c - - - - .debug_abbrev - 0x1352 - 0x1352 - 0x52 - - - - .debug_abbrev - 0x13a4 - 0x13a4 + 0x132 + 0x132 0x5e - + .debug_abbrev - 0x1402 - 0x1402 - 0x5e - - - - .debug_abbrev - 0x1460 - 0x1460 - 0xd8 - - - - .debug_abbrev - 0x1538 - 0x1538 - 0x70 - - - - .debug_abbrev - 0x15a8 - 0x15a8 + 0x190 + 0x190 0x5a - + .debug_abbrev - 0x1602 - 0x1602 + 0x1ea + 0x1ea 0x49 - + .debug_abbrev - 0x164b - 0x164b + 0x233 + 0x233 0x69 - + .debug_abbrev - 0x16b4 - 0x16b4 + 0x29c + 0x29c 0x6e - + .debug_abbrev - 0x1722 - 0x1722 + 0x30a + 0x30a 0x70 - + .debug_abbrev - 0x1792 - 0x1792 - 0x5a + 0x37a + 0x37a + 0xd8 - + .debug_abbrev - 0x17ec - 0x17ec - 0x49 + 0x452 + 0x452 + 0x5a .debug_abbrev - 0x1835 - 0x1835 + 0x4ac + 0x4ac 0x1f - + .debug_abbrev - 0x1854 - 0x1854 + 0x4cb + 0x4cb 0x5c .debug_abbrev - 0x18b0 - 0x18b0 + 0x527 + 0x527 0x24 - + .debug_abbrev - 0x18d4 - 0x18d4 + 0x54b + 0x54b 0x33 - + .debug_abbrev - 0x1907 - 0x1907 - 0x145 - - - - .debug_abbrev - 0x1a4c - 0x1a4c - 0x3f - - - - .debug_abbrev - 0x1a8b - 0x1a8b - 0x29 - - - - .debug_abbrev - 0x1ab4 - 0x1ab4 - 0x29 - - - - .debug_abbrev - 0x1add - 0x1add - 0x29 - - - - .debug_abbrev - 0x1b06 - 0x1b06 - 0x29 - - - - .debug_abbrev - 0x1b2f - 0x1b2f - 0x29 - - - - .debug_abbrev - 0x1b58 - 0x1b58 - 0x29 - - - - .debug_abbrev - 0x1b81 - 0x1b81 - 0x29 - - - - .debug_abbrev - 0x1baa - 0x1baa - 0x29 - - - - .debug_abbrev - 0x1bd3 - 0x1bd3 - 0x29 - - - - .debug_abbrev - 0x1bfc - 0x1bfc - 0x29 - - - - .debug_abbrev - 0x1c25 - 0x1c25 - 0x29 - - - - .debug_abbrev - 0x1c4e - 0x1c4e - 0x29 - - - - .debug_abbrev - 0x1c77 - 0x1c77 - 0x29 - - - - .debug_abbrev - 0x1ca0 - 0x1ca0 - 0x29 - - - - .debug_abbrev - 0x1cc9 - 0x1cc9 - 0x29 - - - - .debug_abbrev - 0x1cf2 - 0x1cf2 - 0x29 + 0x57e + 0x57e + 0x154 .debug_abbrev - 0x1d1b - 0x1d1b + 0x6d2 + 0x6d2 0x29 .debug_abbrev - 0x1d44 - 0x1d44 + 0x6fb + 0x6fb 0x29 .debug_abbrev - 0x1d6d - 0x1d6d + 0x724 + 0x724 + 0x29 + + + + .debug_abbrev + 0x74d + 0x74d + 0x29 + + + + .debug_abbrev + 0x776 + 0x776 + 0x29 + + + + .debug_abbrev + 0x79f + 0x79f + 0x29 + + + + .debug_abbrev + 0x7c8 + 0x7c8 + 0x29 + + + + .debug_abbrev + 0x7f1 + 0x7f1 + 0x29 + + + + .debug_abbrev + 0x81a + 0x81a + 0x29 + + + + .debug_abbrev + 0x843 + 0x843 + 0x29 + + + + .debug_abbrev + 0x86c + 0x86c + 0x29 + + + + .debug_abbrev + 0x895 + 0x895 + 0x29 + + + + .debug_abbrev + 0x8be + 0x8be + 0x29 + + + + .debug_abbrev + 0x8e7 + 0x8e7 + 0x29 + + + + .debug_abbrev + 0x910 + 0x910 + 0x29 + + + + .debug_abbrev + 0x939 + 0x939 + 0x29 + + + + .debug_abbrev + 0x962 + 0x962 + 0x29 + + + + .debug_abbrev + 0x98b + 0x98b + 0x29 + + + + .debug_abbrev + 0x9b4 + 0x9b4 + 0x29 + + + + .debug_abbrev + 0x9dd + 0x9dd + 0x29 + + + + .debug_abbrev + 0xa06 + 0xa06 + 0x29 + + + + .debug_abbrev + 0xa2f + 0xa2f + 0x29 + + + + .debug_abbrev + 0xa58 + 0xa58 + 0x29 + + + + .debug_abbrev + 0xa81 + 0xa81 + 0x29 + + + + .debug_abbrev + 0xaaa + 0xaaa + 0x29 + + + + .debug_abbrev + 0xad3 + 0xad3 + 0x29 + + + + .debug_abbrev + 0xafc + 0xafc + 0x29 + + + + .debug_abbrev + 0xb25 + 0xb25 + 0x29 + + + + .debug_abbrev + 0xb4e + 0xb4e + 0x29 + + + + .debug_abbrev + 0xb77 + 0xb77 + 0x29 + + + + .debug_abbrev + 0xba0 + 0xba0 + 0x29 + + + + .debug_abbrev + 0xbc9 + 0xbc9 + 0x29 + + + + .debug_abbrev + 0xbf2 + 0xbf2 + 0x29 + + + + .debug_abbrev + 0xc1b + 0xc1b + 0x29 + + + + .debug_abbrev + 0xc44 + 0xc44 + 0x29 + + + + .debug_abbrev + 0xc6d + 0xc6d + 0x29 + + + + .debug_abbrev + 0xc96 + 0xc96 + 0x29 + + + + .debug_abbrev + 0xcbf + 0xcbf + 0x29 + + + + .debug_abbrev + 0xce8 + 0xce8 + 0x29 + + + + .debug_abbrev + 0xd11 + 0xd11 + 0x29 + + + + .debug_abbrev + 0xd3a + 0xd3a + 0x29 + + + + .debug_abbrev + 0xd63 + 0xd63 + 0x29 + + + + .debug_abbrev + 0xd8c + 0xd8c + 0x29 + + + + .debug_abbrev + 0xdb5 + 0xdb5 + 0x29 + + + + .debug_abbrev + 0xdde + 0xdde + 0x29 + + + + .debug_abbrev + 0xe07 + 0xe07 + 0x29 + + + + .debug_abbrev + 0xe30 + 0xe30 + 0x29 + + + + .debug_abbrev + 0xe59 + 0xe59 + 0x29 + + + + .debug_abbrev + 0xe82 + 0xe82 + 0x29 + + + + .debug_abbrev + 0xeab + 0xeab + 0x29 + + + + .debug_abbrev + 0xed4 + 0xed4 0x29 .debug_abbrev - 0x1d96 - 0x1d96 + 0xefd + 0xefd 0x29 - - .debug_abbrev - 0x1dbf - 0x1dbf - 0x29 - - - - .debug_abbrev - 0x1de8 - 0x1de8 - 0x29 - - - - .debug_abbrev - 0x1e11 - 0x1e11 - 0x29 - - - - .debug_abbrev - 0x1e3a - 0x1e3a - 0x29 - - - - .debug_abbrev - 0x1e63 - 0x1e63 - 0x29 - - - - .debug_abbrev - 0x1e8c - 0x1e8c - 0x29 - - - - .debug_abbrev - 0x1eb5 - 0x1eb5 - 0x29 - - - - .debug_abbrev - 0x1ede - 0x1ede - 0x6c - - .debug_abbrev - 0x1f4a - 0x1f4a - 0x7c + 0xf26 + 0xf26 + 0x29 - + .debug_abbrev - 0x1fc6 - 0x1fc6 - 0x50 + 0xf4f + 0xf4f + 0x29 - + .debug_abbrev - 0x2016 - 0x2016 - 0x6c + 0xf78 + 0xf78 + 0x29 - + .debug_abbrev - 0x2082 - 0x2082 + 0xfa1 + 0xfa1 + 0x29 + + + + .debug_abbrev + 0xfca + 0xfca + 0x29 + + + + .debug_abbrev + 0xff3 + 0xff3 + 0x29 + + + + .debug_abbrev + 0x101c + 0x101c + 0x29 + + + + .debug_abbrev + 0x1045 + 0x1045 + 0x29 + + + + .debug_abbrev + 0x106e + 0x106e + 0x29 + + + + .debug_abbrev + 0x1097 + 0x1097 + 0x29 + + + + .debug_abbrev + 0x10c0 + 0x10c0 + 0x29 + + + + .debug_abbrev + 0x10e9 + 0x10e9 + 0x29 + + + + .debug_abbrev + 0x1112 + 0x1112 + 0x29 + + + + .debug_abbrev + 0x113b + 0x113b + 0x29 + + + + .debug_abbrev + 0x1164 + 0x1164 + 0x29 + + + + .debug_abbrev + 0x118d + 0x118d + 0x29 + + + + .debug_abbrev + 0x11b6 + 0x11b6 0x6e - + .debug_abbrev - 0x20f0 - 0x20f0 + 0x1224 + 0x1224 0x7c - + .debug_abbrev - 0x216c - 0x216c + 0x12a0 + 0x12a0 + 0x6c + + + + .debug_abbrev + 0x130c + 0x130c + 0x60 + + + + .debug_abbrev + 0x136c + 0x136c 0x6e - + .debug_abbrev - 0x21da - 0x21da - 0x6c - - - - .debug_abbrev - 0x2246 - 0x2246 - 0x6c + 0x13da + 0x13da + 0x60 .debug_abbrev - 0x22b2 - 0x22b2 - 0x7b + 0x143a + 0x143a + 0x5e - + .debug_abbrev - 0x232d - 0x232d + 0x1498 + 0x1498 + 0x7a + + + + .debug_abbrev + 0x1512 + 0x1512 + 0x7a + + + + .debug_abbrev + 0x158c + 0x158c 0x52 - + .debug_abbrev - 0x237f - 0x237f - 0x17f + 0x15de + 0x15de + 0x52 + + + + .debug_abbrev + 0x1630 + 0x1630 + 0x52 + + + + .debug_abbrev + 0x1682 + 0x1682 + 0x7c + + + + .debug_abbrev + 0x16fe + 0x16fe + 0x6c + + + + .debug_abbrev + 0x176a + 0x176a + 0x6c + + + + .debug_abbrev + 0x17d6 + 0x17d6 + 0x5e + + + + .debug_abbrev + 0x1834 + 0x1834 + 0x70 + + + + .debug_abbrev + 0x18a4 + 0x18a4 + 0x49 + + + + .debug_abbrev + 0x18ed + 0x18ed + 0x136 + + + + .debug_abbrev + 0x1a23 + 0x1a23 + 0x3f + + + + .debug_abbrev + 0x1a62 + 0x1a62 + 0x29 + + + + .debug_abbrev + 0x1a8b + 0x1a8b + 0x29 + + + + .debug_abbrev + 0x1ab4 + 0x1ab4 + 0x29 + + + + .debug_abbrev + 0x1add + 0x1add + 0x29 + + + + .debug_abbrev + 0x1b06 + 0x1b06 + 0x29 + + + + .debug_abbrev + 0x1b2f + 0x1b2f + 0x29 + + + + .debug_abbrev + 0x1b58 + 0x1b58 + 0x29 + + + + .debug_abbrev + 0x1b81 + 0x1b81 + 0x29 + + + + .debug_abbrev + 0x1baa + 0x1baa + 0x29 + + + + .debug_abbrev + 0x1bd3 + 0x1bd3 + 0x29 + + + + .debug_abbrev + 0x1bfc + 0x1bfc + 0x29 + + + + .debug_abbrev + 0x1c25 + 0x1c25 + 0x29 + + + + .debug_abbrev + 0x1c4e + 0x1c4e + 0x29 + + + + .debug_abbrev + 0x1c77 + 0x1c77 + 0x29 + + + + .debug_abbrev + 0x1ca0 + 0x1ca0 + 0x29 + + + + .debug_abbrev + 0x1cc9 + 0x1cc9 + 0x29 + + + + .debug_abbrev + 0x1cf2 + 0x1cf2 + 0x29 + + + + .debug_abbrev + 0x1d1b + 0x1d1b + 0x29 + + + + .debug_abbrev + 0x1d44 + 0x1d44 + 0x29 + + + + .debug_abbrev + 0x1d6d + 0x1d6d + 0x29 + + + + .debug_abbrev + 0x1d96 + 0x1d96 + 0x29 + + + + .debug_abbrev + 0x1dbf + 0x1dbf + 0x29 + + + + .debug_abbrev + 0x1de8 + 0x1de8 + 0x29 + + + + .debug_abbrev + 0x1e11 + 0x1e11 + 0x29 + + + + .debug_abbrev + 0x1e3a + 0x1e3a + 0x29 + + + + .debug_abbrev + 0x1e63 + 0x1e63 + 0x29 + + + + .debug_abbrev + 0x1e8c + 0x1e8c + 0x29 + + + + .debug_abbrev + 0x1eb5 + 0x1eb5 + 0x6c + + + + .debug_abbrev + 0x1f21 + 0x1f21 + 0x7c + + + + .debug_abbrev + 0x1f9d + 0x1f9d + 0x50 + + + + .debug_abbrev + 0x1fed + 0x1fed + 0x6c + + + + .debug_abbrev + 0x2059 + 0x2059 + 0x6e + + + + .debug_abbrev + 0x20c7 + 0x20c7 + 0x7c + + + + .debug_abbrev + 0x2143 + 0x2143 + 0x6e + + + + .debug_abbrev + 0x21b1 + 0x21b1 + 0x6c .debug_abbrev - 0x24fe - 0x24fe - 0x29 - - - - .debug_abbrev - 0x2527 - 0x2527 - 0x7c - - - - .debug_abbrev - 0x25a3 - 0x25a3 + 0x221d + 0x221d 0x6c - + .debug_abbrev - 0x260f - 0x260f - 0x5e + 0x2289 + 0x2289 + 0x50 - + .debug_abbrev - 0x266d - 0x266d - 0x5e + 0x22d9 + 0x22d9 + 0x52 - + .debug_abbrev - 0x26cb - 0x26cb + 0x232b + 0x232b + 0x188 + + + + .debug_abbrev + 0x24b3 + 0x24b3 + 0x29 + + + + .debug_abbrev + 0x24dc + 0x24dc + 0x7c + + + + .debug_abbrev + 0x2558 + 0x2558 + 0x6c + + + + .debug_abbrev + 0x25c4 + 0x25c4 0x5e - + + + + .debug_abbrev + 0x2622 + 0x2622 + 0x5e + + + + .debug_abbrev + 0x2680 + 0x2680 + 0x5e + .debug_abbrev - 0x2729 - 0x2729 + 0x26de + 0x26de 0x6c - + - + .debug_abbrev - 0x2795 - 0x2795 + 0x274a + 0x274a 0x6c - + - + .debug_abbrev - 0x2801 - 0x2801 + 0x27b6 + 0x27b6 0x6c - + - + .debug_abbrev - 0x286d - 0x286d + 0x2822 + 0x2822 0x6c - + - + .debug_abbrev - 0x28d9 - 0x28d9 + 0x288e + 0x288e 0x5e - + - + .debug_abbrev - 0x2937 - 0x2937 + 0x28ec + 0x28ec 0x7b - - - - .debug_abbrev - 0x29b2 - 0x29b2 - 0x6e - - - - .debug_abbrev - 0x2a20 - 0x2a20 - 0x109 - + .debug_abbrev - 0x2b29 - 0x2b29 + 0x2967 + 0x2967 + 0x6e + + + + .debug_abbrev + 0x29d5 + 0x29d5 + 0xf3 + + + + .debug_abbrev + 0x2ac8 + 0x2ac8 0x7f - - - - .debug_abbrev - 0x2ba8 - 0x2ba8 - 0x50 - - - - .debug_abbrev - 0x2bf8 - 0x2bf8 - 0x7c - - - - .debug_abbrev - 0x2c74 - 0x2c74 - 0x183 - + .debug_abbrev - 0x2df7 - 0x2df7 - 0x29 - - - - .debug_abbrev - 0x2e20 - 0x2e20 - 0x6c - - - - .debug_abbrev - 0x2e8c - 0x2e8c + 0x2b47 + 0x2b47 0x50 - - .debug_abbrev - 0x2edc - 0x2edc - 0x7a - - - - .debug_abbrev - 0x2f56 - 0x2f56 - 0x7a - - - - .debug_abbrev - 0x2fd0 - 0x2fd0 - 0x5e - - - - .debug_abbrev - 0x302e - 0x302e - 0x52 - - - - .debug_abbrev - 0x3080 - 0x3080 - 0x7c - - - - .debug_abbrev - 0x30fc - 0x30fc - 0x7a - - - - .debug_abbrev - 0x3176 - 0x3176 - 0x6e - - - - .debug_abbrev - 0x31e4 - 0x31e4 - 0x7a - - - - .debug_abbrev - 0x325e - 0x325e - 0x7a - - - - .debug_abbrev - 0x32d8 - 0x32d8 - 0x7c - - - - .debug_abbrev - 0x3354 - 0x3354 - 0x50 - - - - .debug_abbrev - 0x33a4 - 0x33a4 - 0x7a - - - - .debug_abbrev - 0x341e - 0x341e - 0x6c - - - - .debug_abbrev - 0x348a - 0x348a - 0x6c - - - - .debug_abbrev - 0x34f6 - 0x34f6 - 0x6c - - - - .debug_abbrev - 0x3562 - 0x3562 - 0x50 - - - - .debug_abbrev - 0x35b2 - 0x35b2 - 0x6c - - - - .debug_abbrev - 0x361e - 0x361e - 0xf5 - - - - .debug_abbrev - 0x3713 - 0x3713 - 0x6c - - - - .debug_abbrev - 0x377f - 0x377f - 0x6c - - - - .debug_abbrev - 0x37eb - 0x37eb - 0x6c - - - - .debug_abbrev - 0x3857 - 0x3857 - 0x6c - - .debug_abbrev - 0x38c3 - 0x38c3 - 0x6c + 0x2b97 + 0x2b97 + 0x7c + + + + .debug_abbrev + 0x2c13 + 0x2c13 + 0xef - + .debug_abbrev - 0x392f - 0x392f - 0x6c + 0x2d02 + 0x2d02 + 0x7c - + .debug_abbrev - 0x399b - 0x399b - 0x71 - - - - .debug_abbrev - 0x3a0c - 0x3a0c - 0x6c - - - - .debug_abbrev - 0x3a78 - 0x3a78 - 0x52 - - - - .debug_abbrev - 0x3aca - 0x3aca - 0x6c - - - - .debug_abbrev - 0x3b36 - 0x3b36 - 0x55 - - - - .debug_abbrev - 0x3b8b - 0x3b8b + 0x2d7e + 0x2d7e 0x50 - + .debug_abbrev - 0x3bdb - 0x3bdb - 0x6e - - - - .debug_abbrev - 0x3c49 - 0x3c49 - 0x6e - - - - .debug_abbrev - 0x3cb7 - 0x3cb7 - 0x6e - - - - .debug_abbrev - 0x3d25 - 0x3d25 - 0x6e - - - - .debug_abbrev - 0x3d93 - 0x3d93 - 0x6e - - - - .debug_abbrev - 0x3e01 - 0x3e01 - 0x6e - - - - .debug_abbrev - 0x3e6f - 0x3e6f - 0x71 - - - - .debug_abbrev - 0x3ee0 - 0x3ee0 + 0x2dce + 0x2dce 0x6c - + .debug_abbrev - 0x3f4c - 0x3f4c - 0x6e + 0x2e3a + 0x2e3a + 0x7d - + .debug_abbrev - 0x3fba - 0x3fba - 0x6e - + 0x2eb7 + 0x2eb7 + 0x199 + - + .debug_abbrev - 0x4028 - 0x4028 - 0x52 - + 0x3050 + 0x3050 + 0x3f + - + .debug_abbrev - 0x407a - 0x407a + 0x308f + 0x308f + 0x6c + + + + .debug_abbrev + 0x30fb + 0x30fb + 0x50 + + + + .debug_abbrev + 0x314b + 0x314b + 0x7a + + + + .debug_abbrev + 0x31c5 + 0x31c5 + 0x7a + + + + .debug_abbrev + 0x323f + 0x323f 0x5e - - - - .debug_abbrev - 0x40d8 - 0x40d8 - 0x61 - - - - .debug_abbrev - 0x4139 - 0x4139 - 0x61 - - - - .debug_abbrev - 0x419a - 0x419a - 0x61 - - - - .debug_abbrev - 0x41fb - 0x41fb - 0xd9 - - - - .debug_abbrev - 0x42d4 - 0x42d4 - 0x8f - - - - .debug_abbrev - 0x4363 - 0x4363 - 0x60 - - - - .debug_abbrev - 0x43c3 - 0x43c3 - 0xac - - - - .debug_abbrev - 0x446f - 0x446f - 0x1f - - - - .debug_abbrev - 0x448e - 0x448e - 0x24 - - - - .debug_abbrev - 0x44b2 - 0x44b2 - 0x24 - - - - .debug_abbrev - 0x44d6 - 0x44d6 - 0x64 - - - - .debug_abbrev - 0x453a - 0x453a - 0x63 - - - - .debug_abbrev - 0x459d - 0x459d - 0x166 - - - - .debug_abbrev - 0x4703 - 0x4703 - 0x6e - + .debug_abbrev - 0x4771 - 0x4771 - 0x7f - + 0x329d + 0x329d + 0x52 + - + .debug_abbrev - 0x47f0 - 0x47f0 - 0x6e - - - - .debug_abbrev - 0x485e - 0x485e - 0x6c - - - - .debug_abbrev - 0x48ca - 0x48ca - 0x6e - - - - .debug_abbrev - 0x4938 - 0x4938 + 0x32ef + 0x32ef 0x7c - + + + + .debug_abbrev + 0x336b + 0x336b + 0x7a + + + + .debug_abbrev + 0x33e5 + 0x33e5 + 0x6e + + + + .debug_abbrev + 0x3453 + 0x3453 + 0x7a + .debug_abbrev - 0x49b4 - 0x49b4 - 0x7c - - - - .debug_abbrev - 0x4a30 - 0x4a30 + 0x34cd + 0x34cd 0x7a - + - + .debug_abbrev - 0x4aaa - 0x4aaa + 0x3547 + 0x3547 + 0x7c + + + + .debug_abbrev + 0x35c3 + 0x35c3 + 0x50 + + + + .debug_abbrev + 0x3613 + 0x3613 + 0x7a + + + + .debug_abbrev + 0x368d + 0x368d 0x6c - + - + .debug_abbrev - 0x4b16 - 0x4b16 + 0x36f9 + 0x36f9 0x6c - + - + .debug_abbrev - 0x4b82 - 0x4b82 + 0x3765 + 0x3765 0x6c - + - + .debug_abbrev - 0x4bee - 0x4bee + 0x37d1 + 0x37d1 + 0x50 + + + + .debug_abbrev + 0x3821 + 0x3821 0x6c - + - + .debug_abbrev - 0x4c5a - 0x4c5a + 0x388d + 0x388d + 0xf5 + + + + .debug_abbrev + 0x3982 + 0x3982 0x6c - + - + .debug_abbrev - 0x4cc6 - 0x4cc6 - 0x10c - + 0x39ee + 0x39ee + 0x6c + - + .debug_abbrev - 0x4dd2 - 0x4dd2 - 0x29 - + 0x3a5a + 0x3a5a + 0x6c + - + .debug_abbrev - 0x4dfb - 0x4dfb - 0x29 - + 0x3ac6 + 0x3ac6 + 0x6c + - + .debug_abbrev - 0x4e24 - 0x4e24 - 0x29 - + 0x3b32 + 0x3b32 + 0x6c + - + .debug_abbrev - 0x4e4d - 0x4e4d + 0x3b9e + 0x3b9e + 0x6c + + + + .debug_abbrev + 0x3c0a + 0x3c0a + 0x71 + + + + .debug_abbrev + 0x3c7b + 0x3c7b + 0x6c + + + + .debug_abbrev + 0x3ce7 + 0x3ce7 + 0x52 + + + + .debug_abbrev + 0x3d39 + 0x3d39 + 0x6c + + + + .debug_abbrev + 0x3da5 + 0x3da5 + 0x55 + + + + .debug_abbrev + 0x3dfa + 0x3dfa + 0x50 + + + + .debug_abbrev + 0x3e4a + 0x3e4a 0x6e - + - + .debug_abbrev - 0x4ebb - 0x4ebb + 0x3eb8 + 0x3eb8 0x6e - + - + .debug_abbrev - 0x4f29 - 0x4f29 + 0x3f26 + 0x3f26 0x6e + + + + .debug_abbrev + 0x3f94 + 0x3f94 + 0x6e + + + + .debug_abbrev + 0x4002 + 0x4002 + 0x6e + + + + .debug_abbrev + 0x4070 + 0x4070 + 0x6e + + + + .debug_abbrev + 0x40de + 0x40de + 0x71 + + + + .debug_abbrev + 0x414f + 0x414f + 0x6c + + + + .debug_abbrev + 0x41bb + 0x41bb + 0x6e + + + + .debug_abbrev + 0x4229 + 0x4229 + 0x6e + + + + .debug_abbrev + 0x4297 + 0x4297 + 0x52 + + + + .debug_abbrev + 0x42e9 + 0x42e9 + 0x5e + + + + .debug_abbrev + 0x4347 + 0x4347 + 0x61 + + + + .debug_abbrev + 0x43a8 + 0x43a8 + 0x61 + + + + .debug_abbrev + 0x4409 + 0x4409 + 0x61 + + + + .debug_abbrev + 0x446a + 0x446a + 0xd9 + + + + .debug_abbrev + 0x4543 + 0x4543 + 0x8f + + + + .debug_abbrev + 0x45d2 + 0x45d2 + 0x60 + + + + .debug_abbrev + 0x4632 + 0x4632 + 0xac + + + + .debug_abbrev + 0x46de + 0x46de + 0x1f + + + + .debug_abbrev + 0x46fd + 0x46fd + 0x24 + + + + .debug_abbrev + 0x4721 + 0x4721 + 0x24 + + + + .debug_abbrev + 0x4745 + 0x4745 + 0x64 .debug_abbrev - 0x4f97 - 0x4f97 - 0x8b + 0x47a9 + 0x47a9 + 0x63 - + .debug_abbrev - 0x5022 - 0x5022 - 0x8b - + 0x480c + 0x480c + 0xb4 + - + .debug_abbrev - 0x50ad - 0x50ad - 0x7c - + 0x48c0 + 0x48c0 + 0x7d + - + .debug_abbrev - 0x5129 - 0x5129 + 0x493d + 0x493d + 0x7d + + + + .debug_abbrev + 0x49ba + 0x49ba + 0x6d + + + + .debug_abbrev + 0x4a27 + 0x4a27 + 0x7d + + + + .debug_abbrev + 0x4aa4 + 0x4aa4 + 0x7d + + + + .debug_abbrev + 0x4b21 + 0x4b21 + 0x73 + + + + .debug_abbrev + 0x4b94 + 0x4b94 + 0x17c + + + + .debug_abbrev + 0x4d10 + 0x4d10 0x6e - + - + .debug_abbrev - 0x5197 - 0x5197 - 0x7c - + 0x4d7e + 0x4d7e + 0x7f + - + .debug_abbrev - 0x5213 - 0x5213 + 0x4dfd + 0x4dfd 0x6e - + - + .debug_abbrev - 0x5281 - 0x5281 + 0x4e6b + 0x4e6b + 0x6c + + + + .debug_abbrev + 0x4ed7 + 0x4ed7 + 0x6e + + + + .debug_abbrev + 0x4f45 + 0x4f45 0x7c - + + + + .debug_abbrev + 0x4fc1 + 0x4fc1 + 0x7c + + + + .debug_abbrev + 0x503d + 0x503d + 0x7a + + + + .debug_abbrev + 0x50b7 + 0x50b7 + 0x6c + + + + .debug_abbrev + 0x5123 + 0x5123 + 0x6c + + + + .debug_abbrev + 0x518f + 0x518f + 0x6c + + + + .debug_abbrev + 0x51fb + 0x51fb + 0x6c + + + + .debug_abbrev + 0x5267 + 0x5267 + 0x6c + + + + .debug_abbrev + 0x52d3 + 0x52d3 + 0x115 + + + + .debug_abbrev + 0x53e8 + 0x53e8 + 0x29 + + + + .debug_abbrev + 0x5411 + 0x5411 + 0x29 + + + + .debug_abbrev + 0x543a + 0x543a + 0x29 + + + + .debug_abbrev + 0x5463 + 0x5463 + 0x6e + + + + .debug_abbrev + 0x54d1 + 0x54d1 + 0x6e + + + + .debug_abbrev + 0x553f + 0x553f + 0x6e + + + + .debug_abbrev + 0x55ad + 0x55ad + 0x8b + + + + .debug_abbrev + 0x5638 + 0x5638 + 0x8b + + + + .debug_abbrev + 0x56c3 + 0x56c3 + 0x7c + + + + .debug_abbrev + 0x573f + 0x573f + 0x6e + + + + .debug_abbrev + 0x57ad + 0x57ad + 0x7c + + + + .debug_abbrev + 0x5829 + 0x5829 + 0x6e + + + + .debug_abbrev + 0x5897 + 0x5897 + 0x7c + + + + .debug_abbrev + 0x5913 + 0x5913 + 0x6c + + + + .debug_abbrev + 0x597f + 0x597f + 0x7c + + + + .debug_abbrev + 0x59fb + 0x59fb + 0x168 + .debug_abbrev - 0x52fd - 0x52fd - 0x6c - - - - .debug_abbrev - 0x5369 - 0x5369 - 0x7c - - - - .debug_abbrev - 0x53e5 - 0x53e5 - 0x196 - - - - .debug_abbrev - 0x557b - 0x557b + 0x5b63 + 0x5b63 0x29 - + - + .debug_abbrev - 0x55a4 - 0x55a4 - 0x29 - - - - .debug_abbrev - 0x55cd - 0x55cd + 0x5b8c + 0x5b8c 0x7a - + - + .debug_abbrev - 0x5647 - 0x5647 - 0x5e - - - - .debug_abbrev - 0x56a5 - 0x56a5 - 0x7a - - - - .debug_abbrev - 0x571f - 0x571f + 0x5c06 + 0x5c06 0x7c - + - + .debug_abbrev - 0x579b - 0x579b - 0x7a - - - - .debug_abbrev - 0x5815 - 0x5815 - 0x7a - - - - .debug_abbrev - 0x588f - 0x588f + 0x5c82 + 0x5c82 0x7c - + - + .debug_abbrev - 0x590b - 0x590b + 0x5cfe + 0x5cfe 0x68 - + .debug_abbrev - 0x5973 - 0x5973 + 0x5d66 + 0x5d66 0x29 - + .debug_abbrev - 0x599c - 0x599c + 0x5d8f + 0x5d8f 0x4e - + - + .debug_abbrev - 0x59ea - 0x59ea + 0x5ddd + 0x5ddd 0x40 - + - + .debug_abbrev - 0x5a2a - 0x5a2a + 0x5e1d + 0x5e1d 0x40 - + - + .debug_abbrev - 0x5a6a - 0x5a6a + 0x5e5d + 0x5e5d 0x40 - + - + .debug_abbrev - 0x5aaa - 0x5aaa + 0x5e9d + 0x5e9d 0x5e - - - - .debug_abbrev - 0x5b08 - 0x5b08 - 0x5e - - - - .debug_abbrev - 0x5b66 - 0x5b66 - 0x6c - - - - .debug_abbrev - 0x5bd2 - 0x5bd2 - 0x7c - - - - .debug_abbrev - 0x5c4e - 0x5c4e - 0x7c - - - - .debug_abbrev - 0x5cca - 0x5cca - 0x6c - - - - .debug_abbrev - 0x5d36 - 0x5d36 - 0x71 - - - - .debug_abbrev - 0x5da7 - 0x5da7 - 0x8f - - - - .debug_abbrev - 0x5e36 - 0x5e36 - 0x4b - - - - .debug_abbrev - 0x5e81 - 0x5e81 - 0x6c - + .debug_abbrev - 0x5eed - 0x5eed - 0x6c - + 0x5efb + 0x5efb + 0x5e + - + .debug_abbrev 0x5f59 0x5f59 0x6c - + - + .debug_abbrev 0x5fc5 0x5fc5 + 0x7c + + + + .debug_abbrev + 0x6041 + 0x6041 + 0x7c + + + + .debug_abbrev + 0x60bd + 0x60bd 0x6c - + - + .debug_abbrev - 0x6031 - 0x6031 - 0x3c - + 0x6129 + 0x6129 + 0x71 + - + .debug_abbrev - 0x606d - 0x606d - 0x3c - + 0x619a + 0x619a + 0x8f + - + .debug_abbrev - 0x60a9 - 0x60a9 - 0x3c - + 0x6229 + 0x6229 + 0x4b + - + .debug_abbrev - 0x60e5 - 0x60e5 - 0x3c - + 0x6274 + 0x6274 + 0x6c + - + .debug_abbrev - 0x6121 - 0x6121 + 0x62e0 + 0x62e0 + 0x6c + + + + .debug_abbrev + 0x634c + 0x634c + 0x6c + + + + .debug_abbrev + 0x63b8 + 0x63b8 + 0x6c + + + + .debug_abbrev + 0x6424 + 0x6424 0x3c - + .debug_abbrev - 0x615d - 0x615d + 0x6460 + 0x6460 0x3c - + .debug_abbrev - 0x6199 - 0x6199 + 0x649c + 0x649c 0x3c - + .debug_abbrev - 0x61d5 - 0x61d5 - 0x3e + 0x64d8 + 0x64d8 + 0x3c + + .debug_abbrev + 0x6514 + 0x6514 + 0x3c + + + + .debug_abbrev + 0x6550 + 0x6550 + 0x3c + + + + .debug_abbrev + 0x658c + 0x658c + 0x3c + + + + .debug_abbrev + 0x65c8 + 0x65c8 + 0x3e + + .debug_abbrev - 0x6213 - 0x6213 + 0x6606 + 0x6606 0x3e - + - + .debug_abbrev - 0x6251 - 0x6251 + 0x6644 + 0x6644 0x4a - + - + .debug_abbrev - 0x629b - 0x629b + 0x668e + 0x668e 0x4f - + - + .debug_abbrev - 0x62ea - 0x62ea + 0x66dd + 0x66dd 0x5d - + .debug_abbrev - 0x6347 - 0x6347 + 0x673a + 0x673a 0x6f - + .debug_abbrev - 0x63b6 - 0x63b6 + 0x67a9 + 0x67a9 0x24 - + .debug_abbrev - 0x63da - 0x63da + 0x67cd + 0x67cd 0x37 - + .debug_abbrev - 0x6411 - 0x6411 + 0x6804 + 0x6804 0x74 - + .debug_abbrev - 0x6485 - 0x6485 + 0x6878 + 0x6878 0x24 - + .debug_abbrev - 0x64a9 - 0x64a9 + 0x689c + 0x689c 0x24 - + - + .debug_abbrev - 0x64cd - 0x64cd + 0x68c0 + 0x68c0 0x37 - + .debug_abbrev - 0x6504 - 0x6504 + 0x68f7 + 0x68f7 0x6f - + .debug_abbrev - 0x6573 - 0x6573 + 0x6966 + 0x6966 0x24 - + - + .debug_abbrev - 0x6597 - 0x6597 + 0x698a + 0x698a 0x35 - + .debug_abbrev - 0x65cc - 0x65cc + 0x69bf + 0x69bf 0x24 - + - + .debug_abbrev - 0x65f0 - 0x65f0 + 0x69e3 + 0x69e3 0xd6 - + .debug_abbrev - 0x66c6 - 0x66c6 + 0x6ab9 + 0x6ab9 0x29 - + - + .debug_abbrev - 0x66ef - 0x66ef + 0x6ae2 + 0x6ae2 0x27 - + - + .debug_abbrev - 0x6716 - 0x6716 + 0x6b09 + 0x6b09 0x76 - + - + .debug_abbrev - 0x678c - 0x678c + 0x6b7f + 0x6b7f 0x6d - + - + .debug_abbrev - 0x67f9 - 0x67f9 + 0x6bec + 0x6bec 0x6d - + - + .debug_abbrev - 0x6866 - 0x6866 + 0x6c59 + 0x6c59 0x8c - + - + .debug_abbrev - 0x68f2 - 0x68f2 + 0x6ce5 + 0x6ce5 0x7b - + - + .debug_abbrev - 0x696d - 0x696d + 0x6d60 + 0x6d60 0x8e - + - + .debug_abbrev - 0x69fb - 0x69fb + 0x6dee + 0x6dee 0x7f - - - - .debug_abbrev - 0x6a7a - 0x6a7a - 0x24 - - - - .debug_abbrev - 0x6a9e - 0x6a9e - 0x35 - - - - .debug_abbrev - 0x6ad3 - 0x6ad3 - 0x71 - - - - .debug_abbrev - 0x6b44 - 0x6b44 - 0x45 - - - - .debug_abbrev - 0x6b89 - 0x6b89 - 0x71 - - - - .debug_abbrev - 0x6bfa - 0x6bfa - 0x29 - - - - .debug_abbrev - 0x6c23 - 0x6c23 - 0x55 - - - - .debug_abbrev - 0x6c78 - 0x6c78 - 0xc0 - - .debug_abbrev - 0x6d38 - 0x6d38 - 0x7e - - - - .debug_abbrev - 0x6db6 - 0x6db6 - 0x24 - - - - .debug_abbrev - 0x6dda - 0x6dda - 0x24 - - - - .debug_abbrev - 0x6dfe - 0x6dfe - 0x24 - - - - .debug_abbrev - 0x6e22 - 0x6e22 - 0x4b - - - + .debug_abbrev 0x6e6d 0x6e6d - 0x55 + 0x24 + + + + .debug_abbrev + 0x6e91 + 0x6e91 + 0x35 - + .debug_abbrev - 0x6ec2 - 0x6ec2 + 0x6ec6 + 0x6ec6 + 0x71 + + + + .debug_abbrev + 0x6f37 + 0x6f37 0x45 + + + + .debug_abbrev + 0x6f7c + 0x6f7c + 0x71 + + + + .debug_abbrev + 0x6fed + 0x6fed + 0x29 - + .debug_abbrev - 0x6f07 - 0x6f07 + 0x7016 + 0x7016 + 0x55 + + + + .debug_abbrev + 0x706b + 0x706b + 0xc0 + + + + .debug_abbrev + 0x712b + 0x712b + 0x7e + + + + .debug_abbrev + 0x71a9 + 0x71a9 + 0x24 + + + + .debug_abbrev + 0x71cd + 0x71cd + 0x24 + + + + .debug_abbrev + 0x71f1 + 0x71f1 + 0x24 + + + + .debug_abbrev + 0x7215 + 0x7215 + 0x4b + + + + .debug_abbrev + 0x7260 + 0x7260 + 0x55 + + + + .debug_abbrev + 0x72b5 + 0x72b5 + 0x45 + + + + .debug_abbrev + 0x72fa + 0x72fa 0x50 - + - + .debug_abbrev - 0x6f57 - 0x6f57 + 0x734a + 0x734a 0x29 - + - + .debug_abbrev - 0x6f80 - 0x6f80 + 0x7373 + 0x7373 0x53 - + - + .debug_abbrev - 0x6fd3 - 0x6fd3 + 0x73c6 + 0x73c6 0xf - + .debug_str 0x0 0x0 - 0x2fb - - - - .debug_str - 0x2fb - 0x2fb - 0x555 - - - - .debug_str - 0x850 - 0x850 0x124 - + .debug_str - 0x974 - 0x974 + 0x124 + 0x124 0xc8 - + .debug_str - 0xa3c - 0xa3c + 0x1ec + 0x1ec 0x2ae - + .debug_str - 0xcea - 0xcea + 0x49a + 0x49a 0x108 - + .debug_str - 0xdf2 - 0xdf2 + 0x5a2 + 0x5a2 0xca - + .debug_str - 0xebc - 0xebc - 0x2b2 + 0x66c + 0x66c + 0x2fb - + .debug_str - 0x116e - 0x116e - 0xfd + 0x967 + 0x967 + 0x2b3 .debug_str - 0x126b - 0x126b + 0xc1a + 0xc1a 0xfd - + .debug_str - 0x1368 - 0x1368 + 0xd17 + 0xd17 0x344 .debug_str - 0x16ac - 0x16ac + 0x105b + 0x105b 0x146 - + .debug_str - 0x17f2 - 0x17f2 + 0x11a1 + 0x11a1 0xf4 - + .debug_str - 0x18e6 - 0x18e6 + 0x1295 + 0x1295 + 0x555 + + + + .debug_str + 0x17ea + 0x17ea + 0xfd + + + + .debug_str + 0x18e7 + 0x18e7 + 0x102 + + + + .debug_str + 0x19e9 + 0x19e9 0x2120 - + - + .debug_str - 0x3a06 - 0x3a06 + 0x3b09 + 0x3b09 0x594 - + - + .debug_str - 0x3f9a - 0x3f9a + 0x409d + 0x409d 0x567 - + - + .debug_str - 0x4501 - 0x4501 + 0x4604 + 0x4604 0x39d - + .debug_str - 0x489e - 0x489e + 0x49a1 + 0x49a1 0xfd - + - + .debug_str - 0x499b - 0x499b + 0x4a9e + 0x4a9e 0x107 - + - + .debug_str - 0x4aa2 - 0x4aa2 + 0x4ba5 + 0x4ba5 0xe0 - + - + .debug_str - 0x4b82 - 0x4b82 + 0x4c85 + 0x4c85 0x593 - + - + .debug_str - 0x5115 - 0x5115 + 0x5218 + 0x5218 0x5c0 - + .debug_str - 0x56d5 - 0x56d5 + 0x57d8 + 0x57d8 0x105 - + .debug_str - 0x57da - 0x57da + 0x58dd + 0x58dd 0x10b - + .debug_str - 0x58e5 - 0x58e5 + 0x59e8 + 0x59e8 0x140 - + .debug_str - 0x5a25 - 0x5a25 + 0x5b28 + 0x5b28 0x118 - + - + .debug_str - 0x5b3d - 0x5b3d + 0x5c40 + 0x5c40 0x16b - + .debug_str - 0x5ca8 - 0x5ca8 + 0x5dab + 0x5dab 0x158 - + - + .debug_str - 0x5e00 - 0x5e00 + 0x5f03 + 0x5f03 0x10a - + - + .debug_str - 0x5f0a - 0x5f0a + 0x600d + 0x600d 0x140 - + - + .debug_str - 0x604a - 0x604a + 0x614d + 0x614d 0xed - + - + .debug_str - 0x6137 - 0x6137 + 0x623a + 0x623a 0x157 - + - + .debug_str - 0x628e - 0x628e + 0x6391 + 0x6391 0x150 - + - + .debug_str - 0x63de - 0x63de + 0x64e1 + 0x64e1 0x197 - + - + .debug_aranges 0x0 0x0 0x20 - + .debug_aranges 0x20 0x20 0x20 - + .debug_aranges 0x40 0x40 0x20 - + .debug_aranges 0x60 0x60 0x20 - + - + .debug_aranges 0x80 0x80 0x20 - + - + .debug_aranges 0xa0 0xa0 0x20 - + - + .debug_aranges 0xc0 0xc0 0x20 - + - + .debug_aranges 0xe0 0xe0 0x20 - + - + .debug_aranges 0x100 0x100 0x20 - + - + .debug_aranges 0x120 0x120 0x20 - + - + .debug_aranges 0x140 0x140 0x20 - + - + .debug_aranges 0x160 0x160 0x20 - + - + .debug_aranges 0x180 0x180 0x20 - + - + .debug_aranges 0x1a0 0x1a0 0x20 - + - + .debug_aranges 0x1c0 0x1c0 0x20 - + - + .debug_aranges 0x1e0 0x1e0 0x20 - + - + .debug_aranges 0x200 0x200 0x20 - + - + .debug_aranges 0x220 0x220 0x20 - + - + .debug_aranges 0x240 0x240 0x20 - + - + .debug_aranges 0x260 0x260 0x20 - + - + .debug_aranges 0x280 0x280 0x20 - + - + .debug_aranges 0x2a0 0x2a0 0x20 - + - + .debug_aranges 0x2c0 0x2c0 0x20 - + - + .debug_aranges 0x2e0 0x2e0 0x20 - + - + .debug_aranges 0x300 0x300 0x20 - + - + .debug_aranges 0x320 0x320 0x20 - + - + .debug_aranges 0x340 0x340 0x20 - + - + .debug_aranges 0x360 0x360 0x20 - + - + .debug_aranges 0x380 0x380 0x20 - + - + .debug_aranges 0x3a0 0x3a0 0x20 - + - + .debug_aranges 0x3c0 0x3c0 0x20 - + - + .debug_aranges 0x3e0 0x3e0 0x20 - + - + .debug_aranges 0x400 0x400 0x20 - + - + .debug_aranges 0x420 0x420 0x20 - + - + .debug_aranges 0x440 0x440 0x20 - + - + .debug_aranges 0x460 0x460 0x20 - + - + .debug_aranges 0x480 0x480 0x20 - + - + .debug_aranges 0x4a0 0x4a0 0x20 - + - + .debug_aranges 0x4c0 0x4c0 0x20 - + - + .debug_aranges 0x4e0 0x4e0 0x20 - + - + .debug_aranges 0x500 0x500 0x20 - + - + .debug_aranges 0x520 0x520 0x20 - + - + .debug_aranges 0x540 0x540 0x20 - + - + .debug_aranges 0x560 0x560 0x20 - + - + .debug_aranges 0x580 0x580 0x20 - + - + .debug_aranges 0x5a0 0x5a0 0x20 - + - + .debug_aranges 0x5c0 0x5c0 0x20 - + - + .debug_aranges 0x5e0 0x5e0 0x20 - + - + .debug_aranges 0x600 0x600 0x20 - + - + .debug_aranges 0x620 0x620 0x20 - + - + .debug_aranges 0x640 0x640 0x20 - + - + .debug_aranges 0x660 0x660 0x20 - + - + .debug_aranges 0x680 0x680 0x20 - + - + .debug_aranges 0x6a0 0x6a0 0x20 - + - + .debug_aranges 0x6c0 0x6c0 0x20 - + - + .debug_aranges 0x6e0 0x6e0 0x20 - + - + .debug_aranges 0x700 0x700 0x20 - + - + .debug_aranges 0x720 0x720 0x20 - + - + .debug_aranges 0x740 0x740 0x20 - + - + .debug_aranges 0x760 0x760 0x20 - + - + .debug_aranges 0x780 0x780 0x20 - + - + .debug_aranges 0x7a0 0x7a0 0x20 - + - + .debug_aranges 0x7c0 0x7c0 0x20 - + - + .debug_aranges 0x7e0 0x7e0 0x20 - + - + .debug_aranges 0x800 0x800 0x20 - + - + .debug_aranges 0x820 0x820 0x20 - + - + .debug_aranges 0x840 0x840 0x20 - + - + .debug_aranges 0x860 0x860 0x20 - + - + .debug_aranges 0x880 0x880 0x20 - + - + .debug_aranges 0x8a0 0x8a0 0x20 - + - + .debug_aranges 0x8c0 0x8c0 0x20 - + - + .debug_aranges 0x8e0 0x8e0 0x20 - + - + .debug_aranges 0x900 0x900 0x20 - + - + .debug_aranges 0x920 0x920 0x20 - + - + .debug_aranges 0x940 0x940 0x20 - + - + .debug_aranges 0x960 0x960 0x20 - + - + .debug_aranges 0x980 0x980 0x20 - + - + .debug_aranges 0x9a0 0x9a0 0x20 - + - + .debug_aranges 0x9c0 0x9c0 0x20 - + - + .debug_aranges 0x9e0 0x9e0 0x20 - + - + .debug_aranges 0xa00 0xa00 0x20 - + - + .debug_aranges 0xa20 0xa20 0x20 - + - + .debug_aranges 0xa40 0xa40 0x20 - + - + .debug_aranges 0xa60 0xa60 0x20 - + - + .debug_aranges 0xa80 0xa80 0x20 - + - + .debug_aranges 0xaa0 0xaa0 0x20 - + - + .debug_aranges 0xac0 0xac0 0x20 - + - + .debug_aranges 0xae0 0xae0 0x20 - + - + .debug_aranges 0xb00 0xb00 0x20 - + - + .debug_aranges 0xb20 0xb20 0x20 - + - + .debug_aranges 0xb40 0xb40 0x20 - + - + .debug_aranges 0xb60 0xb60 0x20 - + - + .debug_aranges 0xb80 0xb80 0x20 - + - + .debug_aranges 0xba0 0xba0 0x20 - + .debug_aranges 0xbc0 0xbc0 0x20 - + - + .debug_aranges 0xbe0 0xbe0 0x20 - + - + .debug_aranges 0xc00 0xc00 0x20 - + - + .debug_aranges 0xc20 0xc20 0x20 - + - + .debug_aranges 0xc40 0xc40 0x20 - + - + .debug_aranges 0xc60 0xc60 0x20 - + - + .debug_aranges 0xc80 0xc80 0x20 - + - + .debug_aranges 0xca0 0xca0 0x20 - + - + .debug_aranges 0xcc0 0xcc0 0x20 - + - + .debug_aranges 0xce0 0xce0 0x20 - + - + .debug_aranges 0xd00 0xd00 0x20 - + - + .debug_aranges 0xd20 0xd20 0x20 - + - + .debug_aranges 0xd40 0xd40 0x20 - + - + .debug_aranges 0xd60 0xd60 0x20 - + - + .debug_aranges 0xd80 0xd80 0x20 - + - + .debug_aranges 0xda0 0xda0 0x20 - + - + .debug_aranges 0xdc0 0xdc0 0x20 - + - + .debug_aranges 0xde0 0xde0 0x20 - + - + .debug_aranges 0xe00 0xe00 0x20 - + - + .debug_aranges 0xe20 0xe20 0x20 - + - + .debug_aranges 0xe40 0xe40 0x20 - + - + .debug_aranges 0xe60 0xe60 0x20 - + - + .debug_aranges 0xe80 0xe80 0x20 - + - + .debug_aranges 0xea0 0xea0 0x20 - + - + .debug_aranges 0xec0 0xec0 0x20 - + - + .debug_aranges 0xee0 0xee0 0x20 - + - + .debug_aranges 0xf00 0xf00 0x20 - + - + .debug_aranges 0xf20 0xf20 0x20 - + - + .debug_aranges 0xf40 0xf40 0x20 - + - + .debug_aranges 0xf60 0xf60 0x20 - + - + .debug_aranges 0xf80 0xf80 0x20 - + - + .debug_aranges 0xfa0 0xfa0 0x20 - + - + .debug_aranges 0xfc0 0xfc0 0x20 - + - + .debug_aranges 0xfe0 0xfe0 0x20 - + - + .debug_aranges 0x1000 0x1000 0x20 - + - + .debug_aranges 0x1020 0x1020 0x20 - + - + .debug_aranges 0x1040 0x1040 0x20 - + - + .debug_aranges 0x1060 0x1060 0x20 - + - + .debug_aranges 0x1080 0x1080 0x20 - + - + .debug_aranges 0x10a0 0x10a0 0x20 - + - + .debug_aranges 0x10c0 0x10c0 0x20 - + - + .debug_aranges 0x10e0 0x10e0 0x20 - + - + .debug_aranges 0x1100 0x1100 0x20 - + - + .debug_aranges 0x1120 0x1120 0x20 - + - + .debug_aranges 0x1140 0x1140 0x20 - + - + .debug_aranges 0x1160 0x1160 0x20 - + - + .debug_aranges 0x1180 0x1180 0x20 - + - + .debug_aranges 0x11a0 0x11a0 0x20 - + - + .debug_aranges 0x11c0 0x11c0 0x20 - + - + .debug_aranges 0x11e0 0x11e0 0x20 - + - + .debug_aranges 0x1200 0x1200 0x20 - + - + .debug_aranges 0x1220 0x1220 0x20 - - - - .debug_aranges - 0x1240 - 0x1240 - 0x20 .debug_aranges - 0x1260 - 0x1260 + 0x1240 + 0x1240 0x20 - + + .debug_aranges + 0x1260 + 0x1260 + 0x20 + + + .debug_aranges 0x1280 0x1280 0x20 - + - + .debug_aranges 0x12a0 0x12a0 0x20 - + - + .debug_aranges 0x12c0 0x12c0 - 0x28 - - - - .debug_aranges - 0x12e8 - 0x12e8 0x20 - + .debug_aranges - 0x1308 - 0x1308 + 0x12e0 + 0x12e0 0x20 - + .debug_aranges - 0x1328 - 0x1328 + 0x1300 + 0x1300 0x20 - + + .debug_aranges + 0x1320 + 0x1320 + 0x28 + + + .debug_aranges 0x1348 0x1348 0x20 - + - + .debug_aranges 0x1368 0x1368 0x20 - + - + .debug_aranges 0x1388 0x1388 0x20 - + - + .debug_aranges 0x13a8 0x13a8 0x20 - + - + .debug_aranges 0x13c8 0x13c8 0x20 - + - + .debug_aranges 0x13e8 0x13e8 0x20 - + - + .debug_aranges 0x1408 0x1408 0x20 - + - + .debug_aranges 0x1428 0x1428 0x20 - + - + .debug_aranges 0x1448 0x1448 0x20 - + - + .debug_aranges 0x1468 0x1468 0x20 - + - + .debug_aranges 0x1488 0x1488 0x20 - + - + .debug_aranges 0x14a8 0x14a8 0x20 - + .debug_aranges 0x14c8 0x14c8 0x20 - + + .debug_aranges + 0x14e8 + 0x14e8 + 0x20 + + + + .debug_aranges + 0x1508 + 0x1508 + 0x20 + + + + .debug_aranges + 0x1528 + 0x1528 + 0x20 + + + .debug_pubnames 0x0 0x0 - 0x20 + 0x6c - + .debug_pubnames - 0x20 - 0x20 - 0x2b + 0x6c + 0x6c + 0x2e - + .debug_pubnames - 0x4b - 0x4b - 0x22 - - - - .debug_pubnames - 0x6d - 0x6d - 0x22 - - - - .debug_pubnames - 0x8f - 0x8f - 0x28 - - - - .debug_pubnames - 0xb7 - 0xb7 - 0x22 - - - - .debug_pubnames - 0xd9 - 0xd9 - 0x28 - - - - .debug_pubnames - 0x101 - 0x101 - 0x22 - - - - .debug_pubnames - 0x123 - 0x123 - 0x28 - - - - .debug_pubnames - 0x14b - 0x14b - 0x22 - - - - .debug_pubnames - 0x16d - 0x16d - 0x28 - - - - .debug_pubnames - 0x195 - 0x195 - 0x22 - - - - .debug_pubnames - 0x1b7 - 0x1b7 - 0x28 - - - - .debug_pubnames - 0x1df - 0x1df - 0x22 - - - - .debug_pubnames - 0x201 - 0x201 - 0x28 - - - - .debug_pubnames - 0x229 - 0x229 - 0x22 - - - - .debug_pubnames - 0x24b - 0x24b - 0x27 - - - - .debug_pubnames - 0x272 - 0x272 - 0x22 - - - - .debug_pubnames - 0x294 - 0x294 - 0x27 - - - - .debug_pubnames - 0x2bb - 0x2bb - 0x22 - - - - .debug_pubnames - 0x2dd - 0x2dd - 0x27 - - - - .debug_pubnames - 0x304 - 0x304 - 0x22 - - - - .debug_pubnames - 0x326 - 0x326 - 0x27 - - - - .debug_pubnames - 0x34d - 0x34d - 0x22 - - - - .debug_pubnames - 0x36f - 0x36f - 0x27 - - - - .debug_pubnames - 0x396 - 0x396 - 0x22 - - - - .debug_pubnames - 0x3b8 - 0x3b8 - 0x27 - - - - .debug_pubnames - 0x3df - 0x3df - 0x22 - - - - .debug_pubnames - 0x401 - 0x401 - 0x27 - - - - .debug_pubnames - 0x428 - 0x428 - 0x22 - - - - .debug_pubnames - 0x44a - 0x44a - 0x27 - - - - .debug_pubnames - 0x471 - 0x471 - 0x22 - - - - .debug_pubnames - 0x493 - 0x493 - 0x27 - - - - .debug_pubnames - 0x4ba - 0x4ba - 0x22 - - - - .debug_pubnames - 0x4dc - 0x4dc - 0x27 - - - - .debug_pubnames - 0x503 - 0x503 - 0x22 - - - - .debug_pubnames - 0x525 - 0x525 - 0x27 - - - - .debug_pubnames - 0x54c - 0x54c - 0x22 - - - - .debug_pubnames - 0x56e - 0x56e - 0x27 - - - - .debug_pubnames - 0x595 - 0x595 - 0x22 - - - - .debug_pubnames - 0x5b7 - 0x5b7 - 0x27 - - - - .debug_pubnames - 0x5de - 0x5de - 0x22 - - - - .debug_pubnames - 0x600 - 0x600 - 0x28 - - - - .debug_pubnames - 0x628 - 0x628 - 0x22 - - - - .debug_pubnames - 0x64a - 0x64a - 0x27 - - - - .debug_pubnames - 0x671 - 0x671 - 0x22 - - - - .debug_pubnames - 0x693 - 0x693 - 0x28 - - - - .debug_pubnames - 0x6bb - 0x6bb - 0x22 - - - - .debug_pubnames - 0x6dd - 0x6dd - 0x27 - - - - .debug_pubnames - 0x704 - 0x704 - 0x22 - - - - .debug_pubnames - 0x726 - 0x726 - 0x27 - - - - .debug_pubnames - 0x74d - 0x74d - 0x22 - - - - .debug_pubnames - 0x76f - 0x76f - 0x28 - - - - .debug_pubnames - 0x797 - 0x797 - 0x22 - - - - .debug_pubnames - 0x7b9 - 0x7b9 - 0x28 - - - - .debug_pubnames - 0x7e1 - 0x7e1 - 0x22 - - - - .debug_pubnames - 0x803 - 0x803 - 0x28 - - - - .debug_pubnames - 0x82b - 0x82b - 0x22 - - - - .debug_pubnames - 0x84d - 0x84d - 0x28 - - - - .debug_pubnames - 0x875 - 0x875 - 0x22 - - - - .debug_pubnames - 0x897 - 0x897 - 0x23 - - - - .debug_pubnames - 0x8ba - 0x8ba - 0x23 - - - - .debug_pubnames - 0x8dd - 0x8dd - 0x2c - - - - .debug_pubnames - 0x909 - 0x909 - 0x29 - - - - .debug_pubnames - 0x932 - 0x932 - 0x31 - - - - .debug_pubnames - 0x963 - 0x963 + 0x9a + 0x9a 0x2f - + .debug_pubnames - 0x992 - 0x992 - 0x2c - - - - .debug_pubnames - 0x9be - 0x9be - 0x28 - - - - .debug_pubnames - 0x9e6 - 0x9e6 - 0x2a - - - - .debug_pubnames - 0xa10 - 0xa10 - 0x22 - - - - .debug_pubnames - 0xa32 - 0xa32 - 0x2b - - - - .debug_pubnames - 0xa5d - 0xa5d - 0x2c - - - - .debug_pubnames - 0xa89 - 0xa89 - 0x1b - - - - .debug_pubnames - 0xaa4 - 0xaa4 - 0x22 - - - - .debug_pubnames - 0xac6 - 0xac6 - 0x2e - - - - .debug_pubnames - 0xaf4 - 0xaf4 - 0x2a - - - - .debug_pubnames - 0xb1e - 0xb1e - 0x28 - - - - .debug_pubnames - 0xb46 - 0xb46 - 0x30 - - - - .debug_pubnames - 0xb76 - 0xb76 - 0x29 - - - - .debug_pubnames - 0xb9f - 0xb9f - 0x2d - - - - .debug_pubnames - 0xbcc - 0xbcc - 0x2e - - - - .debug_pubnames - 0xbfa - 0xbfa - 0x2c - - - - .debug_pubnames - 0xc26 - 0xc26 - 0x2e - - - - .debug_pubnames - 0xc54 - 0xc54 - 0x2f - - - - .debug_pubnames - 0xc83 - 0xc83 - 0x2d - - - - .debug_pubnames - 0xcb0 - 0xcb0 - 0x29 - - - - .debug_pubnames - 0xcd9 - 0xcd9 - 0x28 - - - - .debug_pubnames - 0xd01 - 0xd01 + 0xc9 + 0xc9 0x27 - + .debug_pubnames - 0xd28 - 0xd28 - 0x27 - - - - .debug_pubnames - 0xd4f - 0xd4f - 0x27 - - - - .debug_pubnames - 0xd76 - 0xd76 - 0x43 - - - - .debug_pubnames - 0xdb9 - 0xdb9 - 0x59 - - - - .debug_pubnames - 0xe12 - 0xe12 - 0x27 - - - - .debug_pubnames - 0xe39 - 0xe39 - 0x22 - - - - .debug_pubnames - 0xe5b - 0xe5b - 0x27 - - - - .debug_pubnames - 0xe82 - 0xe82 - 0x22 - - - - .debug_pubnames - 0xea4 - 0xea4 - 0x23 - - - - .debug_pubnames - 0xec7 - 0xec7 - 0x27 - - - - .debug_pubnames - 0xeee - 0xeee - 0x22 - - - - .debug_pubnames - 0xf10 - 0xf10 - 0x28 - - - - .debug_pubnames - 0xf38 - 0xf38 - 0x27 - - - - .debug_pubnames - 0xf5f - 0xf5f - 0x22 - - - - .debug_pubnames - 0xf81 - 0xf81 - 0x28 - - - - .debug_pubnames - 0xfa9 - 0xfa9 - 0x27 - - - - .debug_pubnames - 0xfd0 - 0xfd0 - 0x22 - - - - .debug_pubnames - 0xff2 - 0xff2 + 0xf0 + 0xf0 0x20 - + .debug_pubnames - 0x1012 - 0x1012 - 0x28 + 0x110 + 0x110 + 0x2b - + .debug_pubnames - 0x103a - 0x103a + 0x13b + 0x13b 0x22 - - .debug_pubnames - 0x105c - 0x105c - 0x28 - - - - .debug_pubnames - 0x1084 - 0x1084 - 0x22 - - - - .debug_pubnames - 0x10a6 - 0x10a6 - 0x27 - - - - .debug_pubnames - 0x10cd - 0x10cd - 0x22 - - - - .debug_pubnames - 0x10ef - 0x10ef - 0x27 - - .debug_pubnames - 0x1116 - 0x1116 + 0x15d + 0x15d + 0x22 + + + + .debug_pubnames + 0x17f + 0x17f 0x28 + + .debug_pubnames + 0x1a7 + 0x1a7 + 0x22 + + + + .debug_pubnames + 0x1c9 + 0x1c9 + 0x28 + + + + .debug_pubnames + 0x1f1 + 0x1f1 + 0x22 + + + + .debug_pubnames + 0x213 + 0x213 + 0x28 + + + + .debug_pubnames + 0x23b + 0x23b + 0x22 + + + + .debug_pubnames + 0x25d + 0x25d + 0x28 + + + + .debug_pubnames + 0x285 + 0x285 + 0x22 + + + + .debug_pubnames + 0x2a7 + 0x2a7 + 0x28 + + + + .debug_pubnames + 0x2cf + 0x2cf + 0x22 + + + + .debug_pubnames + 0x2f1 + 0x2f1 + 0x28 + + + + .debug_pubnames + 0x319 + 0x319 + 0x22 + + + + .debug_pubnames + 0x33b + 0x33b + 0x27 + + + + .debug_pubnames + 0x362 + 0x362 + 0x22 + + + + .debug_pubnames + 0x384 + 0x384 + 0x27 + + + + .debug_pubnames + 0x3ab + 0x3ab + 0x22 + + + + .debug_pubnames + 0x3cd + 0x3cd + 0x27 + + + + .debug_pubnames + 0x3f4 + 0x3f4 + 0x22 + + + + .debug_pubnames + 0x416 + 0x416 + 0x27 + + + + .debug_pubnames + 0x43d + 0x43d + 0x22 + + + + .debug_pubnames + 0x45f + 0x45f + 0x27 + + + + .debug_pubnames + 0x486 + 0x486 + 0x22 + + + + .debug_pubnames + 0x4a8 + 0x4a8 + 0x27 + + + + .debug_pubnames + 0x4cf + 0x4cf + 0x22 + + + + .debug_pubnames + 0x4f1 + 0x4f1 + 0x27 + + + + .debug_pubnames + 0x518 + 0x518 + 0x22 + + + + .debug_pubnames + 0x53a + 0x53a + 0x27 + + + + .debug_pubnames + 0x561 + 0x561 + 0x22 + + + + .debug_pubnames + 0x583 + 0x583 + 0x27 + + + + .debug_pubnames + 0x5aa + 0x5aa + 0x22 + + + + .debug_pubnames + 0x5cc + 0x5cc + 0x27 + + + + .debug_pubnames + 0x5f3 + 0x5f3 + 0x22 + + + + .debug_pubnames + 0x615 + 0x615 + 0x27 + + + + .debug_pubnames + 0x63c + 0x63c + 0x22 + + + + .debug_pubnames + 0x65e + 0x65e + 0x27 + + + + .debug_pubnames + 0x685 + 0x685 + 0x22 + + + + .debug_pubnames + 0x6a7 + 0x6a7 + 0x27 + + + + .debug_pubnames + 0x6ce + 0x6ce + 0x22 + + + + .debug_pubnames + 0x6f0 + 0x6f0 + 0x28 + + + + .debug_pubnames + 0x718 + 0x718 + 0x22 + + + + .debug_pubnames + 0x73a + 0x73a + 0x27 + + + + .debug_pubnames + 0x761 + 0x761 + 0x22 + + + + .debug_pubnames + 0x783 + 0x783 + 0x28 + + + + .debug_pubnames + 0x7ab + 0x7ab + 0x22 + + + + .debug_pubnames + 0x7cd + 0x7cd + 0x27 + + + + .debug_pubnames + 0x7f4 + 0x7f4 + 0x22 + + + + .debug_pubnames + 0x816 + 0x816 + 0x27 + + + + .debug_pubnames + 0x83d + 0x83d + 0x22 + + .debug_pubnames - 0x113e - 0x113e - 0x22 + 0x85f + 0x85f + 0x28 - + .debug_pubnames - 0x1160 - 0x1160 - 0x28 + 0x887 + 0x887 + 0x22 .debug_pubnames - 0x1188 - 0x1188 - 0x22 + 0x8a9 + 0x8a9 + 0x28 .debug_pubnames - 0x11aa - 0x11aa + 0x8d1 + 0x8d1 0x22 - + .debug_pubnames - 0x11cc - 0x11cc - 0x20 - - - - .debug_pubnames - 0x11ec - 0x11ec + 0x8f3 + 0x8f3 0x28 - + .debug_pubnames - 0x1214 - 0x1214 - 0x21 - - - - .debug_pubnames - 0x1235 - 0x1235 - 0x30 - - - - .debug_pubnames - 0x1265 - 0x1265 - 0x29 - - - - .debug_pubnames - 0x128e - 0x128e - 0x29 - - - - .debug_pubnames - 0x12b7 - 0x12b7 - 0x30 - - - - .debug_pubnames - 0x12e7 - 0x12e7 - 0x2c - - - - .debug_pubnames - 0x1313 - 0x1313 - 0x2d - - - - .debug_pubnames - 0x1340 - 0x1340 + 0x91b + 0x91b 0x22 - + .debug_pubnames - 0x1362 - 0x1362 - 0x1f + 0x93d + 0x93d + 0x28 - + .debug_pubnames - 0x1381 - 0x1381 + 0x965 + 0x965 + 0x22 + + + + .debug_pubnames + 0x987 + 0x987 + 0x23 + + + + .debug_pubnames + 0x9aa + 0x9aa + 0x23 + + + + .debug_pubnames + 0x9cd + 0x9cd + 0x2c + + + + .debug_pubnames + 0x9f9 + 0x9f9 + 0x29 + + + + .debug_pubnames + 0xa22 + 0xa22 + 0x31 + + + + .debug_pubnames + 0xa53 + 0xa53 + 0x2f + + + + .debug_pubnames + 0xa82 + 0xa82 + 0x2c + + + + .debug_pubnames + 0xaae + 0xaae + 0x28 + + + + .debug_pubnames + 0xad6 + 0xad6 + 0x2a + + + + .debug_pubnames + 0xb00 + 0xb00 + 0x22 + + + + .debug_pubnames + 0xb22 + 0xb22 + 0x2b + + + + .debug_pubnames + 0xb4d + 0xb4d + 0x2c + + + + .debug_pubnames + 0xb79 + 0xb79 + 0x1b + + + + .debug_pubnames + 0xb94 + 0xb94 + 0x22 + + + + .debug_pubnames + 0xbb6 + 0xbb6 0x2e - + .debug_pubnames - 0x13af - 0x13af - 0x135 - + 0xbe4 + 0xbe4 + 0x2a + - + .debug_pubnames - 0x14e4 - 0x14e4 - 0x24 - + 0xc0e + 0xc0e + 0x30 + - + .debug_pubnames - 0x1508 - 0x1508 + 0xc3e + 0xc3e 0x29 + + + + .debug_pubnames + 0xc67 + 0xc67 + 0x2d + + + + .debug_pubnames + 0xc94 + 0xc94 + 0x2c + + + + .debug_pubnames + 0xcc0 + 0xcc0 + 0x2e + + + + .debug_pubnames + 0xcee + 0xcee + 0x2d + + + + .debug_pubnames + 0xd1b + 0xd1b + 0x29 + + + + .debug_pubnames + 0xd44 + 0xd44 + 0x28 + + + + .debug_pubnames + 0xd6c + 0xd6c + 0x27 + + + + .debug_pubnames + 0xd93 + 0xd93 + 0x43 - + .debug_pubnames - 0x1531 - 0x1531 + 0xdd6 + 0xdd6 + 0x59 + + + + .debug_pubnames + 0xe2f + 0xe2f 0x27 - + .debug_pubnames - 0x1558 - 0x1558 - 0x20 + 0xe56 + 0xe56 + 0x22 - + .debug_pubnames - 0x1578 - 0x1578 - 0x31 - - - - .debug_pubnames - 0x15a9 - 0x15a9 + 0xe78 + 0xe78 0x27 - + .debug_pubnames - 0x15d0 - 0x15d0 - 0x20 + 0xe9f + 0xe9f + 0x22 - + .debug_pubnames - 0x15f0 - 0x15f0 + 0xec1 + 0xec1 + 0x23 + + + + .debug_pubnames + 0xee4 + 0xee4 + 0x27 + + + + .debug_pubnames + 0xf0b + 0xf0b + 0x22 + + + + .debug_pubnames + 0xf2d + 0xf2d 0x28 - + .debug_pubnames - 0x1618 - 0x1618 - 0x1e + 0xf55 + 0xf55 + 0x27 - + .debug_pubnames - 0x1636 - 0x1636 - 0x2c + 0xf7c + 0xf7c + 0x22 - + .debug_pubnames - 0x1662 - 0x1662 - 0x26 + 0xf9e + 0xf9e + 0x28 - + .debug_pubnames - 0x1688 - 0x1688 - 0x1f + 0xfc6 + 0xfc6 + 0x27 - + .debug_pubnames - 0x16a7 - 0x16a7 - 0x1f + 0xfed + 0xfed + 0x22 + + + + .debug_pubnames + 0x100f + 0x100f + 0x20 + + + + .debug_pubnames + 0x102f + 0x102f + 0x28 + + + + .debug_pubnames + 0x1057 + 0x1057 + 0x22 + + + + .debug_pubnames + 0x1079 + 0x1079 + 0x28 + + + + .debug_pubnames + 0x10a1 + 0x10a1 + 0x22 + + + + .debug_pubnames + 0x10c3 + 0x10c3 + 0x27 + + + + .debug_pubnames + 0x10ea + 0x10ea + 0x22 + + + + .debug_pubnames + 0x110c + 0x110c + 0x27 + + + + .debug_pubnames + 0x1133 + 0x1133 + 0x28 + + + + .debug_pubnames + 0x115b + 0x115b + 0x22 + + + + .debug_pubnames + 0x117d + 0x117d + 0x28 + + + + .debug_pubnames + 0x11a5 + 0x11a5 + 0x22 + + + + .debug_pubnames + 0x11c7 + 0x11c7 + 0x22 + + + + .debug_pubnames + 0x11e9 + 0x11e9 + 0x20 + + + + .debug_pubnames + 0x1209 + 0x1209 + 0x28 + + + + .debug_pubnames + 0x1231 + 0x1231 + 0x21 + + + + .debug_pubnames + 0x1252 + 0x1252 + 0x30 + + + + .debug_pubnames + 0x1282 + 0x1282 + 0x29 + + + + .debug_pubnames + 0x12ab + 0x12ab + 0x29 .debug_pubnames - 0x16c6 - 0x16c6 - 0x25 + 0x12d4 + 0x12d4 + 0x30 + + + + .debug_pubnames + 0x1304 + 0x1304 + 0x2c + + + + .debug_pubnames + 0x1330 + 0x1330 + 0x2d + + + + .debug_pubnames + 0x135d + 0x135d + 0x22 + + + + .debug_pubnames + 0x137f + 0x137f + 0x1f + + + + .debug_pubnames + 0x139e + 0x139e + 0x2e + + + + .debug_pubnames + 0x13cc + 0x13cc + 0x1c5 - + .debug_pubnames - 0x16eb - 0x16eb - 0x25 + 0x1591 + 0x1591 + 0x24 - + .debug_pubnames - 0x1710 - 0x1710 + 0x15b5 + 0x15b5 + 0x29 + + + + .debug_pubnames + 0x15de + 0x15de + 0x27 + + + + .debug_pubnames + 0x1605 + 0x1605 + 0x20 + + + + .debug_pubnames + 0x1625 + 0x1625 + 0x31 + + + + .debug_pubnames + 0x1656 + 0x1656 + 0x27 + + + + .debug_pubnames + 0x167d + 0x167d + 0x20 + + + + .debug_pubnames + 0x169d + 0x169d + 0x28 + + + + .debug_pubnames + 0x16c5 + 0x16c5 + 0x1e + + + + .debug_pubnames + 0x16e3 + 0x16e3 + 0x2c + + + + .debug_pubnames + 0x170f + 0x170f + 0x26 + + + + .debug_pubnames + 0x1735 + 0x1735 0x1f - + .debug_pubnames - 0x172f - 0x172f - 0x26 + 0x1754 + 0x1754 + 0x1f + + .debug_pubnames + 0x1773 + 0x1773 + 0x25 + + + + .debug_pubnames + 0x1798 + 0x1798 + 0x25 + + + + .debug_pubnames + 0x17bd + 0x17bd + 0x1f + + + + .debug_pubnames + 0x17dc + 0x17dc + 0x26 + + + + .debug_pubnames + 0x1802 + 0x1802 + 0x8f + + + + .debug_pubnames + 0x1891 + 0x1891 + 0x25 + + + + .debug_pubnames + 0x18b6 + 0x18b6 + 0x1f + + + + .debug_pubnames + 0x18d5 + 0x18d5 + 0x26 + + .debug_pubnames - 0x1755 - 0x1755 - 0x34a - + 0x18fb + 0x18fb + 0x330 + - + .debug_pubnames - 0x1a9f - 0x1a9f + 0x1c2b + 0x1c2b 0x32 - + - + .debug_pubnames - 0x1ad1 - 0x1ad1 + 0x1c5d + 0x1c5d 0x2e - + - + .debug_pubnames - 0x1aff - 0x1aff + 0x1c8b + 0x1c8b 0x28 - + - + .debug_pubnames - 0x1b27 - 0x1b27 + 0x1cb3 + 0x1cb3 0x2c - + - + .debug_pubnames - 0x1b53 - 0x1b53 + 0x1cdf + 0x1cdf 0x27 - + - + .debug_pubnames - 0x1b7a - 0x1b7a + 0x1d06 + 0x1d06 0x27 - + - + .debug_pubnames - 0x1ba1 - 0x1ba1 + 0x1d2d + 0x1d2d 0x29 - + - + .debug_pubnames - 0x1bca - 0x1bca + 0x1d56 + 0x1d56 0x21 - + - + .debug_pubnames - 0x1beb - 0x1beb + 0x1d77 + 0x1d77 0x2b - + - + .debug_pubnames - 0x1c16 - 0x1c16 + 0x1da2 + 0x1da2 0x28 - + - + .debug_pubnames - 0x1c3e - 0x1c3e + 0x1dca + 0x1dca 0x22 - + - + .debug_pubnames - 0x1c60 - 0x1c60 + 0x1dec + 0x1dec 0x25 - - - - .debug_pubnames - 0x1c85 - 0x1c85 - 0x26 - - - - .debug_pubnames - 0x1cab - 0x1cab - 0x2b - - - - .debug_pubnames - 0x1cd6 - 0x1cd6 - 0x24 - - - - .debug_pubnames - 0x1cfa - 0x1cfa - 0x24 - - - - .debug_pubnames - 0x1d1e - 0x1d1e - 0x20 - - - - .debug_pubnames - 0x1d3e - 0x1d3e - 0x20 - - - - .debug_pubnames - 0x1d5e - 0x1d5e - 0x27 - - - - .debug_pubnames - 0x1d85 - 0x1d85 - 0x27 - - - - .debug_pubnames - 0x1dac - 0x1dac - 0x27 - - - - .debug_pubnames - 0x1dd3 - 0x1dd3 - 0x24 - - - - .debug_pubnames - 0x1df7 - 0x1df7 - 0x28 - - - - .debug_pubnames - 0x1e1f - 0x1e1f - 0x25 - - - - .debug_pubnames - 0x1e44 - 0x1e44 - 0x27 - - - - .debug_pubnames - 0x1e6b - 0x1e6b - 0x24 - - - - .debug_pubnames - 0x1e8f - 0x1e8f - 0x28 - - - - .debug_pubnames - 0x1eb7 - 0x1eb7 - 0x25 - - - - .debug_pubnames - 0x1edc - 0x1edc - 0x2e - - - - .debug_pubnames - 0x1f0a - 0x1f0a - 0x21 - - - - .debug_pubnames - 0x1f2b - 0x1f2b - 0x23 - - - - .debug_pubnames - 0x1f4e - 0x1f4e - 0x24 - - - - .debug_pubnames - 0x1f72 - 0x1f72 - 0x26 - - - - .debug_pubnames - 0x1f98 - 0x1f98 - 0x23 - - - - .debug_pubnames - 0x1fbb - 0x1fbb - 0x27 - - - - .debug_pubnames - 0x1fe2 - 0x1fe2 - 0x24 - - - - .debug_pubnames - 0x2006 - 0x2006 - 0x26 - - - - .debug_pubnames - 0x202c - 0x202c - 0x23 - - - - .debug_pubnames - 0x204f - 0x204f - 0x27 - - - - .debug_pubnames - 0x2076 - 0x2076 - 0x24 - - - - .debug_pubnames - 0x209a - 0x209a - 0x2c - - - - .debug_pubnames - 0x20c6 - 0x20c6 - 0x21 - - - - .debug_pubnames - 0x20e7 - 0x20e7 - 0x23 - - - - .debug_pubnames - 0x210a - 0x210a - 0x25 - - - - .debug_pubnames - 0x212f - 0x212f - 0x32 - - - - .debug_pubnames - 0x2161 - 0x2161 - 0x32 - - - - .debug_pubnames - 0x2193 - 0x2193 - 0x32 - - - - .debug_pubnames - 0x21c5 - 0x21c5 - 0x26 - - - - .debug_pubnames - 0x21eb - 0x21eb - 0x17d - - - - .debug_pubnames - 0x2368 - 0x2368 - 0x24 - - - - .debug_pubnames - 0x238c - 0x238c - 0x28 - - - - .debug_pubnames - 0x23b4 - 0x23b4 - 0x27 - - - - .debug_pubnames - 0x23db - 0x23db - 0x2d - - - - .debug_pubnames - 0x2408 - 0x2408 - 0x2e - - - - .debug_pubnames - 0x2436 - 0x2436 - 0x2c - + .debug_pubnames - 0x2462 - 0x2462 - 0x29 - - - - .debug_pubnames - 0x248b - 0x248b - 0x2a - - - - .debug_pubnames - 0x24b5 - 0x24b5 - 0x2e - - - - .debug_pubnames - 0x24e3 - 0x24e3 - 0x1f - - - - .debug_pubnames - 0x2502 - 0x2502 - 0x2b - - - - .debug_pubnames - 0x252d - 0x252d - 0x29 - - - - .debug_pubnames - 0x2556 - 0x2556 - 0x1f - - - - .debug_pubnames - 0x2575 - 0x2575 - 0x59 - - - - .debug_pubnames - 0x25ce - 0x25ce - 0x25 - - - - .debug_pubnames - 0x25f3 - 0x25f3 - 0x24 - - - - .debug_pubnames - 0x2617 - 0x2617 - 0x1f - - - - .debug_pubnames - 0x2636 - 0x2636 - 0x27 - - - - .debug_pubnames - 0x265d - 0x265d - 0x29 - - - - .debug_pubnames - 0x2686 - 0x2686 - 0x29 - - - - .debug_pubnames - 0x26af - 0x26af - 0x20 - - - - .debug_pubnames - 0x26cf - 0x26cf - 0x1f - - - - .debug_pubnames - 0x26ee - 0x26ee - 0x28 - - - - .debug_pubnames - 0x2716 - 0x2716 - 0x2a - - - - .debug_pubnames - 0x2740 - 0x2740 - 0x2a - - - - .debug_pubnames - 0x276a - 0x276a - 0x25 - - - - .debug_pubnames - 0x278f - 0x278f - 0x29 - - - - .debug_pubnames - 0x27b8 - 0x27b8 - 0x2d - - - - .debug_pubnames - 0x27e5 - 0x27e5 - 0x22 - - - - .debug_pubnames - 0x2807 - 0x2807 - 0x1c5 - - - - .debug_pubnames - 0x29cc - 0x29cc - 0x21 - - - - .debug_pubnames - 0x29ed - 0x29ed - 0x21 - - - - .debug_pubnames - 0x2a0e - 0x2a0e - 0x1d - - - - .debug_pubnames - 0x2a2b - 0x2a2b - 0x30 - - - - .debug_pubnames - 0x2a5b - 0x2a5b - 0x22 - - - - .debug_pubnames - 0x2a7d - 0x2a7d + 0x1e11 + 0x1e11 0x26 - + - + .debug_pubnames - 0x2aa3 - 0x2aa3 - 0x2c - + 0x1e37 + 0x1e37 + 0x2b + - + .debug_pubnames - 0x2acf - 0x2acf - 0x2a - + 0x1e62 + 0x1e62 + 0x24 + - + .debug_pubnames - 0x2af9 - 0x2af9 - 0x22 - + 0x1e86 + 0x1e86 + 0x24 + - + .debug_pubnames - 0x2b1b - 0x2b1b - 0x25 - + 0x1eaa + 0x1eaa + 0x20 + - + .debug_pubnames - 0x2b40 - 0x2b40 - 0x1f - + 0x1eca + 0x1eca + 0x20 + - + .debug_pubnames - 0x2b5f - 0x2b5f - 0x1d - - - - .debug_pubnames - 0x2b7c - 0x2b7c - 0x1f - - - - .debug_pubnames - 0x2b9b - 0x2b9b - 0x21 - - - - .debug_pubnames - 0x2bbc - 0x2bbc - 0x2e - - - - .debug_pubnames - 0x2bea - 0x2bea - 0x1e - - - - .debug_pubnames - 0x2c08 - 0x2c08 - 0x37 - - - - .debug_pubnames - 0x2c3f - 0x2c3f - 0x36 - - - - .debug_pubnames - 0x2c75 - 0x2c75 - 0x36 - - - - .debug_pubnames - 0x2cab - 0x2cab - 0x30 - - - - .debug_pubnames - 0x2cdb - 0x2cdb + 0x1eea + 0x1eea 0x27 - + - + .debug_pubnames - 0x2d02 - 0x2d02 - 0x30 - + 0x1f11 + 0x1f11 + 0x27 + - + .debug_pubnames - 0x2d32 - 0x2d32 - 0x2d - + 0x1f38 + 0x1f38 + 0x27 + + + + .debug_pubnames + 0x1f5f + 0x1f5f + 0x24 + + + + .debug_pubnames + 0x1f83 + 0x1f83 + 0x28 + + + + .debug_pubnames + 0x1fab + 0x1fab + 0x25 + + + + .debug_pubnames + 0x1fd0 + 0x1fd0 + 0x27 + + + + .debug_pubnames + 0x1ff7 + 0x1ff7 + 0x24 + .debug_pubnames - 0x2d5f - 0x2d5f + 0x201b + 0x201b + 0x28 + + + + .debug_pubnames + 0x2043 + 0x2043 + 0x25 + + + + .debug_pubnames + 0x2068 + 0x2068 0x2e - + - + .debug_pubnames - 0x2d8d - 0x2d8d + 0x2096 + 0x2096 + 0x21 + + + + .debug_pubnames + 0x20b7 + 0x20b7 0x23 - + - + .debug_pubnames - 0x2db0 - 0x2db0 - 0x23 - + 0x20da + 0x20da + 0x24 + - + .debug_pubnames - 0x2dd3 - 0x2dd3 - 0x23 - - - - .debug_pubnames - 0x2df6 - 0x2df6 + 0x20fe + 0x20fe 0x26 - + - + .debug_pubnames - 0x2e1c - 0x2e1c + 0x2124 + 0x2124 + 0x23 + + + + .debug_pubnames + 0x2147 + 0x2147 + 0x27 + + + + .debug_pubnames + 0x216e + 0x216e + 0x24 + + + + .debug_pubnames + 0x2192 + 0x2192 + 0x26 + + + + .debug_pubnames + 0x21b8 + 0x21b8 + 0x23 + + + + .debug_pubnames + 0x21db + 0x21db + 0x27 + + + + .debug_pubnames + 0x2202 + 0x2202 + 0x24 + + + + .debug_pubnames + 0x2226 + 0x2226 + 0x2c + + + + .debug_pubnames + 0x2252 + 0x2252 + 0x21 + + + + .debug_pubnames + 0x2273 + 0x2273 + 0x23 + + + + .debug_pubnames + 0x2296 + 0x2296 + 0x25 + + + + .debug_pubnames + 0x22bb + 0x22bb + 0x32 + + + + .debug_pubnames + 0x22ed + 0x22ed + 0x32 + + + + .debug_pubnames + 0x231f + 0x231f + 0x32 + + + + .debug_pubnames + 0x2351 + 0x2351 + 0x26 + + + + .debug_pubnames + 0x2377 + 0x2377 + 0x20 + + + + .debug_pubnames + 0x2397 + 0x2397 + 0x1f + + + + .debug_pubnames + 0x23b6 + 0x23b6 + 0x20 + + + + .debug_pubnames + 0x23d6 + 0x23d6 + 0x1f + + + + .debug_pubnames + 0x23f5 + 0x23f5 + 0x1e + + + + .debug_pubnames + 0x2413 + 0x2413 + 0x1f + + + + .debug_pubnames + 0x2432 + 0x2432 + 0x17d + + + + .debug_pubnames + 0x25af + 0x25af + 0x24 + + + + .debug_pubnames + 0x25d3 + 0x25d3 + 0x28 + + + + .debug_pubnames + 0x25fb + 0x25fb + 0x27 + + + + .debug_pubnames + 0x2622 + 0x2622 + 0x2d + + + + .debug_pubnames + 0x264f + 0x264f + 0x2e + + + + .debug_pubnames + 0x267d + 0x267d + 0x2c + + + + .debug_pubnames + 0x26a9 + 0x26a9 + 0x29 + + + + .debug_pubnames + 0x26d2 + 0x26d2 + 0x2a + + + + .debug_pubnames + 0x26fc + 0x26fc + 0x2e + + + + .debug_pubnames + 0x272a + 0x272a + 0x1f + + + + .debug_pubnames + 0x2749 + 0x2749 + 0x2b + + + + .debug_pubnames + 0x2774 + 0x2774 + 0x29 + + + + .debug_pubnames + 0x279d + 0x279d + 0x1f + + + + .debug_pubnames + 0x27bc + 0x27bc + 0x59 + + + + .debug_pubnames + 0x2815 + 0x2815 + 0x25 + + + + .debug_pubnames + 0x283a + 0x283a + 0x24 + + + + .debug_pubnames + 0x285e + 0x285e + 0x1f + + + + .debug_pubnames + 0x287d + 0x287d + 0x27 + + + + .debug_pubnames + 0x28a4 + 0x28a4 + 0x29 + + + + .debug_pubnames + 0x28cd + 0x28cd + 0x29 + + + + .debug_pubnames + 0x28f6 + 0x28f6 + 0x20 + + + + .debug_pubnames + 0x2916 + 0x2916 + 0x1f + + + + .debug_pubnames + 0x2935 + 0x2935 + 0x28 + + + + .debug_pubnames + 0x295d + 0x295d + 0x2a + + + + .debug_pubnames + 0x2987 + 0x2987 + 0x2a + + + + .debug_pubnames + 0x29b1 + 0x29b1 + 0x25 + + + + .debug_pubnames + 0x29d6 + 0x29d6 + 0x29 + + + + .debug_pubnames + 0x29ff + 0x29ff + 0x2d + + + + .debug_pubnames + 0x2a2c + 0x2a2c + 0x22 + + + + .debug_pubnames + 0x2a4e + 0x2a4e + 0x4c + + + + .debug_pubnames + 0x2a9a + 0x2a9a + 0x21 + + + + .debug_pubnames + 0x2abb + 0x2abb + 0x1d + + + + .debug_pubnames + 0x2ad8 + 0x2ad8 + 0x26 + + + + .debug_pubnames + 0x2afe + 0x2afe + 0x22 + + + + .debug_pubnames + 0x2b20 + 0x2b20 + 0x25 + + + + .debug_pubnames + 0x2b45 + 0x2b45 + 0x1f + + + + .debug_pubnames + 0x2b64 + 0x2b64 + 0x1d + + + + .debug_pubnames + 0x2b81 + 0x2b81 + 0x1f + + + + .debug_pubnames + 0x2ba0 + 0x2ba0 + 0x21 + + + + .debug_pubnames + 0x2bc1 + 0x2bc1 + 0x2e + + + + .debug_pubnames + 0x2bef + 0x2bef + 0x1e + + + + .debug_pubnames + 0x2c0d + 0x2c0d + 0x37 + + + + .debug_pubnames + 0x2c44 + 0x2c44 + 0x36 + + + + .debug_pubnames + 0x2c7a + 0x2c7a + 0x36 + + + + .debug_pubnames + 0x2cb0 + 0x2cb0 + 0x30 + + + + .debug_pubnames + 0x2ce0 + 0x2ce0 + 0x27 + + + + .debug_pubnames + 0x2d07 + 0x2d07 + 0x30 + + + + .debug_pubnames + 0x2d37 + 0x2d37 + 0x2d + + + + .debug_pubnames + 0x2d64 + 0x2d64 + 0x2e + + + + .debug_pubnames + 0x2d92 + 0x2d92 0x23 - + .debug_pubnames - 0x2e3f - 0x2e3f - 0x22 + 0x2db5 + 0x2db5 + 0x23 - + .debug_pubnames - 0x2e61 - 0x2e61 + 0x2dd8 + 0x2dd8 0x23 - + .debug_pubnames - 0x2e84 - 0x2e84 - 0x22 + 0x2dfb + 0x2dfb + 0x26 + + .debug_pubnames + 0x2e21 + 0x2e21 + 0x23 + + + + .debug_pubnames + 0x2e44 + 0x2e44 + 0x22 + + + + .debug_pubnames + 0x2e66 + 0x2e66 + 0x23 + + + + .debug_pubnames + 0x2e89 + 0x2e89 + 0x22 + + .debug_pubnames - 0x2ea6 - 0x2ea6 + 0x2eab + 0x2eab 0x1d - - - - .debug_pubnames - 0x2ec3 - 0x2ec3 - 0x23 - - - - .debug_pubnames - 0x2ee6 - 0x2ee6 - 0x37 - - - - .debug_pubnames - 0x2f1d - 0x2f1d - 0x2e - - - - .debug_pubnames - 0x2f4b - 0x2f4b - 0x2b - + .debug_pubnames - 0x2f76 - 0x2f76 - 0x2b + 0x2ec8 + 0x2ec8 + 0x23 + + .debug_pubnames + 0x2eeb + 0x2eeb + 0x37 + + + + .debug_pubnames + 0x2f22 + 0x2f22 + 0x2e + + + + .debug_pubnames + 0x2f50 + 0x2f50 + 0x2b + + + + .debug_pubnames + 0x2f7b + 0x2f7b + 0x2b + + .debug_pubnames - 0x2fa1 - 0x2fa1 + 0x2fa6 + 0x2fa6 0x22 - + - + .debug_pubnames - 0x2fc3 - 0x2fc3 + 0x2fc8 + 0x2fc8 0x39 - + - + .debug_pubnames - 0x2ffc - 0x2ffc + 0x3001 + 0x3001 0x1d - + - + .debug_pubnames - 0x3019 - 0x3019 + 0x301e + 0x301e 0x27 - + - + .debug_pubnames - 0x3040 - 0x3040 + 0x3045 + 0x3045 0x27 - + - + .debug_pubnames - 0x3067 - 0x3067 + 0x306c + 0x306c 0x1b - + - + .debug_pubnames - 0x3082 - 0x3082 + 0x3087 + 0x3087 0x1c - + - + .debug_pubnames - 0x309e - 0x309e + 0x30a3 + 0x30a3 0x24 - + - + .debug_pubnames - 0x30c2 - 0x30c2 + 0x30c7 + 0x30c7 0x1d - + - + .debug_pubnames - 0x30df - 0x30df + 0x30e4 + 0x30e4 0x1e - + .debug_pubnames - 0x30fd - 0x30fd + 0x3102 + 0x3102 0x1e - + .debug_pubnames - 0x311b - 0x311b + 0x3120 + 0x3120 0x26 - - - - .debug_pubnames - 0x3141 - 0x3141 - 0x35 - - - - .debug_pubnames - 0x3176 - 0x3176 - 0x27 - - - - .debug_pubnames - 0x319d - 0x319d - 0x1c - + .debug_pubnames - 0x31b9 - 0x31b9 + 0x3146 + 0x3146 + 0x35 + + + + .debug_pubnames + 0x317b + 0x317b + 0x27 + + + + .debug_pubnames + 0x31a2 + 0x31a2 + 0x1c + + + + .debug_pubnames + 0x31be + 0x31be 0x28 - + - + .debug_pubnames - 0x31e1 - 0x31e1 + 0x31e6 + 0x31e6 0x1b - + - + .debug_pubtypes 0x0 0x0 - 0x20b - - - - .debug_pubtypes - 0x20b - 0x20b - 0x16d - - - - .debug_pubtypes - 0x378 - 0x378 0x70 - + .debug_pubtypes - 0x3e8 - 0x3e8 + 0x70 + 0x70 0x1f - + .debug_pubtypes - 0x407 - 0x407 + 0x8f + 0x8f 0x25c - + .debug_pubtypes - 0x663 - 0x663 + 0x2eb + 0x2eb 0x38 - + .debug_pubtypes - 0x69b - 0x69b + 0x323 + 0x323 0x2d - + .debug_pubtypes - 0x6c8 - 0x6c8 - 0x58 + 0x350 + 0x350 + 0x20b - + .debug_pubtypes - 0x720 - 0x720 - 0x2c + 0x55b + 0x55b + 0x58 .debug_pubtypes - 0x74c - 0x74c + 0x5b3 + 0x5b3 0xed - + .debug_pubtypes - 0x839 - 0x839 + 0x6a0 + 0x6a0 0x330 .debug_pubtypes - 0xb69 - 0xb69 + 0x9d0 + 0x9d0 0xaa - + .debug_pubtypes - 0xc13 - 0xc13 + 0xa7a + 0xa7a 0x1f - + + .debug_pubtypes + 0xa99 + 0xa99 + 0x16d + + + + .debug_pubtypes + 0xc06 + 0xc06 + 0x2c + + + .debug_pubtypes 0xc32 0xc32 + 0x2d + + + + .debug_pubtypes + 0xc5f + 0xc5f 0x6f8 - + - + .debug_pubtypes - 0x132a - 0x132a + 0x1357 + 0x1357 0xc1 - + - + .debug_pubtypes - 0x13eb - 0x13eb + 0x1418 + 0x1418 0x8c - + - + .debug_pubtypes - 0x1477 - 0x1477 + 0x14a4 + 0x14a4 0xe0 - + .debug_pubtypes - 0x1557 - 0x1557 + 0x1584 + 0x1584 0xff - + - + .debug_pubtypes - 0x1656 - 0x1656 + 0x1683 + 0x1683 0x22 - + - + .debug_pubtypes - 0x1678 - 0x1678 + 0x16a5 + 0x16a5 0x1d - + - + .debug_pubtypes - 0x1695 - 0x1695 + 0x16c2 + 0x16c2 0x8c - + - + .debug_pubtypes - 0x1721 - 0x1721 + 0x174e + 0x174e 0xc1 - + .debug_pubtypes - 0x17e2 - 0x17e2 + 0x180f + 0x180f 0x48 - + .debug_pubtypes - 0x182a - 0x182a + 0x1857 + 0x1857 0x48 - + .debug_pubtypes - 0x1872 - 0x1872 + 0x189f + 0x189f 0x1d - + .debug_pubtypes - 0x188f - 0x188f + 0x18bc + 0x18bc 0x5d - + - + .debug_pubtypes - 0x18ec - 0x18ec + 0x1919 + 0x1919 0x48 - + .debug_pubtypes - 0x1934 - 0x1934 + 0x1961 + 0x1961 0x35 - + .debug_pubtypes - 0x1969 - 0x1969 + 0x1996 + 0x1996 0x1f - + - + .debug_pubtypes - 0x1988 - 0x1988 + 0x19b5 + 0x19b5 0x26 - + - + .debug_pubtypes - 0x19ae - 0x19ae + 0x19db + 0x19db 0x1d - + - + .debug_pubtypes - 0x19cb - 0x19cb + 0x19f8 + 0x19f8 0x32 - - - - .debug_pubtypes - 0x19fd - 0x19fd - 0x30 - - - - .debug_pubtypes - 0x1a2d - 0x1a2d - 0x2c - - - - .debug_pubtypes - 0x1a59 - 0x1a59 - 0x50 - - - - .debug_pubtypes - 0x1aa9 - 0x1aa9 - 0x1f + + .debug_pubtypes + 0x1a2a + 0x1a2a + 0x30 + + + + .debug_pubtypes + 0x1a5a + 0x1a5a + 0x2c + + + + .debug_pubtypes + 0x1a86 + 0x1a86 + 0x50 + + + + .debug_pubtypes + 0x1ad6 + 0x1ad6 + 0x1f + + @@ -14485,220 +14698,223 @@ - + .text.1 - 0x1fffc8dc - 0x1fffc8dc + 0x1fffc934 + 0x1fffc934 0x4 - + - + .text.2 - 0x1fffd738 - 0x1fffd738 - 0x8c6 + 0x1fffd790 + 0x1fffd790 + 0x86e - - - - + + + - + .text.3 0x1ffff000 0x1ffff000 0xffe - - - - - - + + + + + + + + + - + .text.4 0x20000808 0x20000808 0x3f8 - - - + + + + - + .text.5 0x20000d40 0x20000d40 - 0x3f5e + 0x3954 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + - - - + + + + + + - - - - - - + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + + - + - - - - - - + + + + + + + - - - - - - + + + + + + + + + + + - + - - - - - - - - + + + + + + + + - - - - - - - - - + + + + + + + + + - + - + - - - - + + + + - - - - - - - + + + + + + - + .text - - - - - + + + + + @@ -14710,14 +14926,14 @@ .cinit - 0x20004ca0 - 0x20004ca0 - 0x368 + 0x20004698 + 0x20004698 + 0x370 - - - - + + + + @@ -14740,16 +14956,16 @@ 0x1000 - + .stack - 0x1fffd538 + 0x1fffd590 0x200 - + @@ -14775,228 +14991,221 @@ .data - 0x1fffc8e0 + 0x1fffc938 0x86e - + + + + + + + + - - - - - - - - + + + + - - - - - - + + + - - - - + + + .bss - 0x1fffd150 - 0x3e6 + 0x1fffd1a8 + 0x3e7 - - - - - - - + + + + + + + + + + - - - - - - - + + + + + + + + + + + + + + + + + - - - - - - - - - + - - - - - - - - - - - - - - - - + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - + + + + + + + + + + - - + + + + + - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - + + + + + .const 0x1fffc000 0x1fffc000 - 0x8da + 0x934 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -15041,38 +15250,1460 @@ - + .TI.noinit 0x0 0x0 - + .TI.persistent 0x0 0x0 - + __llvm_prf_cnts 0x1fffc000 0x0 - + .debug_info 0x0 0x0 - 0x235e6 + 0x242a5 - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .debug_line + 0x0 + 0x0 + 0x892d + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .debug_frame + 0x0 + 0x0 + 0x2540 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .debug_abbrev + 0x0 + 0x0 + 0x73d5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .debug_str + 0x0 + 0x0 + 0x6678 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .debug_aranges + 0x0 + 0x0 + 0x1548 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .debug_pubnames + 0x0 + 0x0 + 0x3201 + + + + + + + + + @@ -15108,11 +16739,11 @@ - - - + + + @@ -15120,1698 +16751,306 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .debug_line - 0x0 - 0x0 - 0x8cfe - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .debug_frame - 0x0 - 0x0 - 0x24d0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .debug_abbrev - 0x0 - 0x0 - 0x6fe2 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .debug_str - 0x0 - 0x0 - 0x6575 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .debug_aranges - 0x0 - 0x0 - 0x14e8 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .debug_pubnames - 0x0 - 0x0 - 0x31fc - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - + - + - - - - - - - - - - - + + + + + + + + + + + - - - - - + + + + + - - - - - - - - - + + + + + + + + + - - - - - + + + + + - + .debug_pubtypes 0x0 0x0 - 0x1ac8 + 0x1af5 - - - - - - - - - + + + + + + + - + - - - - - + + + + + + + + - - - - + + + + - + - - - - - - - + + + + + + + - + Veneer$$CMSE 0x0 0x0 - + SEGMENT_0 0x1fffc000 0x1fffc000 - 0x8e0 + 0x938 0x5 - + - + SEGMENT_1 - 0x1fffc8e0 + 0x1fffc938 0xe58 0x6 @@ -16820,17 +17059,17 @@ - + SEGMENT_2 - 0x1fffd738 - 0x1fffd738 - 0x8c6 + 0x1fffd790 + 0x1fffd790 + 0x86e 0x5 - + - + SEGMENT_3 0x1fffe000 0x1000 @@ -16839,27 +17078,27 @@ - + SEGMENT_4 0x1ffff000 0x1ffff000 0xffe 0x5 - + - + SEGMENT_5 0x20000800 0x20000800 - 0x4808 + 0x4208 0x5 - + - + @@ -17024,56 +17263,52 @@ 0x0 0x1fffc000 0x1fff - 0x1ff8 - 0x7 + 0x1ffb + 0x4 RWIX 0x1fffc000 0x0 - + 0x1fffc000 - 0x8da + 0x934 - - 0x1fffc8da - 0x2 - - 0x1fffc8dc + 0x1fffc934 0x4 - + - 0x1fffc8e0 + 0x1fffc938 0x86e - 0x1fffd14e + 0x1fffd1a6 0x2 - 0x1fffd150 - 0x3e6 + 0x1fffd1a8 + 0x3e7 - 0x1fffd536 - 0x2 + 0x1fffd58f + 0x1 - 0x1fffd538 + 0x1fffd590 0x200 - 0x1fffd738 - 0x8c6 - + 0x1fffd790 + 0x86e + 0x1fffdffe @@ -17098,7 +17333,7 @@ 0x1ffff000 0xffe - + 0x1ffffffe @@ -17142,14 +17377,14 @@ 0x0 0x20000808 0xb7f7 - 0x47fe - 0x6ff9 + 0x41fc + 0x75fb RWIX 0x20000808 0x3f8 - + 0x20000c00 @@ -17158,21 +17393,21 @@ 0x20000d40 - 0x3f5e - + 0x3954 + - 0x20004c9e - 0x2 + 0x20004694 + 0x4 - 0x20004ca0 - 0x368 + 0x20004698 + 0x370 - 0x20005008 - 0x6ff7 + 0x20004a08 + 0x75f7 @@ -17314,18 +17549,18 @@ __TI_cinit_table .data - 0x20004ca0 - 0x340 - 0x1fffc8e0 + 0x20004698 + 0x347 + 0x1fffc938 0x86e lzss .bss - 0x20004ff0 + 0x200049f0 0x8 - 0x1fffd150 - 0x3e6 + 0x1fffd1a8 + 0x3e7 zero_init @@ -17356,19 +17591,19 @@ __TI_CINIT_Base - 0x20004ff8 + 0x200049f8 __TI_CINIT_Limit - 0x20005008 + 0x20004a08 __TI_Handler_Table_Base - 0x20004fe0 + 0x200049e0 __TI_Handler_Table_Limit - 0x20004fec + 0x200049ec binit @@ -17384,7 +17619,7 @@ __STACK_END - 0x1fffd738 + 0x1fffd790 __SYSMEM_SIZE @@ -17406,1824 +17641,1820 @@ __TI_prof_data_size 0xffffffff - + + APPL_AckErrorInd + 0x1ffffef7 + + + + APPL_StopMailboxHandler + 0x2000467d + + + + APPL_StartMailboxHandler + 0x1fffc935 + + + LocalAxes - 0x1fffd150 + 0x1fffd1a8 - + aName0x6085 - 0x1fffc5fe - + 0x1fffc5e1 + - + aName0xF030 - 0x1fffc524 - - - - sEntryDesc0x6502 - 0x1fffc8d4 - - - - aName0x1C13 - 0x1fffc7c4 - - - - aName0x1C12 - 0x1fffc7b7 + 0x1fffc58e - - asEntryDesc0x60C2 - 0x1fffc6ec - - - - sEntryDesc0x6064 - 0x1fffc8b0 - - - - sEntryDesc0x6061 - 0x1fffc8aa - - - - sEntryDesc0x6060 - 0x1fffc8a4 - - - - sEntryDesc0x606C - 0x1fffc8b6 - - - - sEntryDesc0x6077 - 0x1fffc8bc - - - - sEntryDesc0x607A - 0x1fffc8c2 - - - - APPL_GetDeviceID - 0x1fffc8dd - - - - sDetectedModuleIdentList - 0x1fffd0fc - - - - sEntryDesc0x6041 - 0x1fffc886 - - - - sEntryDesc0x6040 - 0x1fffc880 - - - - CiA402_LocalError - 0x20004951 - - - - sEntryDesc0x605E - 0x1fffc89e - - - - sEntryDesc0x605A - 0x1fffc88c - - - - sEntryDesc0x605C - 0x1fffc898 - - - - sEntryDesc0x605B - 0x1fffc892 - - - - DefCiA402ObjectValues - 0x1fffcfc0 - - - - APPL_StartInputHandler - 0x20002eef - - - - asEntryDesc0xF050 - 0x1fffc734 - - - - sEntryDesc0x603F - 0x1fffc87a - - - - aName0x1602 - 0x1fffc802 - - - - aName0x1601 - 0x1fffc7f6 - - - - aName0x1600 - 0x1fffc768 - - - - asEntryDesc0xF030 - 0x1fffc722 - - - - ApplicationObjDic - 0x1fffcea8 - - - - asEntryDesc0xF000 - 0x1fffc6fe - - - - CiA402_Application - 0x200021b7 - - - - asEntryDesc0xF010 - 0x1fffc710 - - - - sEntryDesc0x60FF - 0x1fffc8ce - - - - CiA402_StateMachine - 0x200013a3 - - - - asEntryDesc0x1A01 - 0x1fffc58c - - - - asEntryDesc0x1A00 - 0x1fffc4a4 - - - - asEntryDesc0x1A02 - 0x1fffc5a4 - - - - DefCiA402AxisObjDic - 0x1fffc8e0 - - - - APPL_AckErrorInd - 0x1ffffffd - - - - sEntryDesc0x6085 - 0x1fffc8c8 - - - - APPL_StartOutputHandler - 0x20004c7f - - - - APPL_StopOutputHandler - 0x20004c8b - - - - aName0x1A02 - 0x1fffc81a - - - - aName0x1A01 - 0x1fffc80e - - - - aName0x1A00 - 0x1fffc778 - - - - main - 0x200044a5 - - - - aName0x60FF - 0x1fffc798 - - - - CiA402_TransitionAction - 0x20004bb1 - - - - APPL_Application - 0x20000be1 - - - - APPL_GenerateMapping - 0x20000d41 - - - - aName0x6502 - 0x1fffc614 - - - - APPL_StopInputHandler - 0x20004c83 - - - - sConfiguredModuleIdentList - 0x1fffd0f0 - - - - aName0x60C2 - 0x1fffc340 - - - - CiA402_DummyMotionControl - 0x200022b3 - - - - APPL_OutputMapping - 0x20003739 - - - - aName0x6041 - 0x1fffc826 - - - - aName0x6040 - 0x1fffc7d1 - - - - asEntryDesc0x607D - 0x1fffc6da - - - - aName0x605E - 0x1fffc654 - - - - aName0x605C - 0x1fffc4e8 - - - - aName0x605B - 0x1fffc62a - - - - aName0x605A - 0x1fffc5bc - - - - aName0x6064 - 0x1fffc5d2 - - - - aName0x6061 - 0x1fffc541 - - - - aName0x6060 - 0x1fffc6a3 - - - - sModulardeviceprofile - 0x1fffd0b2 - - - - CiA402_Init - 0x1ffffcc9 - - - - aName0x606C - 0x1fffc5e8 - - - - aName0x6077 - 0x1fffc668 - - - - APPL_InputMapping - 0x200037cf - - - - aName0x607D - 0x1fffc3c8 - - - - aName0x607A - 0x1fffc788 - - - - Write0xF030 - 0x20001ae7 - - - - sTxPDOassign - 0x1fffd148 - - - - aName0xF050 - 0x1fffc63f - - - - sModuleProfileInfo - 0x1fffd114 - - - - aName0x603F - 0x1fffc84a - - - - sRxPDOassign - 0x1fffd13c - - - - aName0xF000 - 0x1fffc386 - - - - asEntryDesc0x1601 - 0x1fffc55c - - - - asEntryDesc0x1600 - 0x1fffc480 - - - - asEntryDesc0x1602 - 0x1fffc574 - - - - CiA402_DeallocateAxis - 0x20004091 - - - - asPDOAssignEntryDesc - 0x1fffc83e - - - - APPL_StopMailboxHandler - 0x20004c87 - - - - aName0xF010 - 0x1fffc67c - - - - APPL_StartMailboxHandler - 0x1fffdffb - - - - u32LastDc32Value - 0x1fffd4c0 - - - u32CheckForDcOverrunCnt - 0x1fffd4b8 - - - acSoftwareversion - 0x1fffd09d - - - - aName0x1C00 - 0x1fffc6b6 - - - - sEntryDesc0x1009 - 0x1fffc868 - - - - sEntryDesc0x1008 - 0x1fffc862 - - - - sEntryDesc0x1001 - 0x1fffc85c - - - - sEntryDesc0x1000 - 0x1fffc856 - - - - sEntryDesc0x100A - 0x1fffc86e - - - - GenObjDic - 0x1fffccc8 - - - - COE_RemoveDicEntry - 0x20004569 - - - - aName0x1C33 - 0x1fffc100 - - - - aName0x1C32 - 0x1fffc000 - - - - sEntryDesc0x10F8 - 0x1fffc874 - - - - COE_AddObjectToDic - 0x20003ead - - - - u64Timestamp - 0x1fffd0b8 - - - - aName0x10F8 - 0x1fffc690 - - - - aName0x10F1 - 0x1fffc408 - - - - sSyncmanagertype - 0x1fffd142 - - - - COE_GetObjectDictionary - 0x20004ba5 - - - - COE_ObjDictionaryInit - 0x200047e9 - - - - aName0x1009 - 0x1fffc746 - - - - aName0x1008 - 0x1fffc7ea - - - - aName0x1001 - 0x1fffc7a8 - - - - aName0x1000 - 0x1fffc7de - - - - aName0x100A - 0x1fffc757 - - - - aName0x1018 - 0x1fffc447 - - - - COE_ClearObjDictionary - 0x200049e1 - - - - Read0x10F8 - 0x200042ad - - - - u32Devicetype - 0x1fffd0c0 - - - - acDevicename - 0x1fffd070 - - - - asEntryDesc0x1018 - 0x1fffc506 - - - - ObjDicList - 0x1fffd0c8 - - - - asEntryDesc0x10F1 - 0x1fffc6c8 - - - - COE_ObjInit - 0x200025a7 - - - - acHardwareversion - 0x1fffd089 - - - - asEntryDesc0x1C3x - 0x1fffc200 - - - - COE_SyncTimeStamp - 0x20003d5f - - - - asEntryDesc0x1C00 - 0x1fffc832 + + sEntryDesc0x6502 + 0x1fffc928 + + + + aName0x1C13 + 0x1fffc818 - - sIdentity - 0x1fffd0cc - - - - AddObjectsToObjDictionary - 0x2000492d - - - - COE_UpdateSyncErrorStatus - 0x200043d5 - - - - u16ErrorRegister - 0x1fffd0c4 - - - - COE_Main - 0x200032a1 - - - - bEtherCATRunLed - 0x1fffd519 - - - bEtherCATErrorLed - 0x1fffd518 - - - bRunApplication - 0x1fffd521 - - - pAPPL_MainLoop - 0x1fffd488 - - - u32CycleTimeStartValue - 0x1fffd4bc - - - u32MinCycleTimeStartValue - 0x1fffd4c4 - - - u32SystemTimeReadFailure - 0x1fffd4d0 - - - bMinCycleTimeMeasurementStarted - 0x1fffd51e - - - u32MinCycleTimeValue - 0x1fffd4c8 - - - aPdOutputData - 0x1fffd334 - - - aPdInputData - 0x1fffd2f0 - - - ECAT_Application - 0x2000452b - - - - MainLoop - 0x20002d35 - - - - Sync1_Isr - 0x2000441b - - - - PDI_Isr - 0x20000aa1 - - - - Sync0_Isr - 0x20001d91 - - - - MainInit - 0x20003afd - - - - ECAT_SetLedIndication - 0x20001771 - - - - HandleCycleTimeMeasurement - 0x2000425d - - - - PDO_InputMapping - 0x20003971 - - - - bInitFinished - 0x1fffd120 - - - - ECAT_CheckTimer - 0x2000385d - - - - GetSystemTimeDelay - 0x200046f9 - - - - PDO_OutputMapping - 0x20003559 - - - - pCoeSendStored - 0x1fffd48c - - - COE_Init - 0x20004b15 - - - - COE_ServiceInd - 0x20004869 - - - - COE_ContinueInd - 0x200044e9 - - - - bEcatOutputUpdateRunning - 0x1fffd515 - - - bEcatInputUpdateRunning - 0x1fffd514 - - - bEcatFirstOutputsReceived - 0x1fffd513 - - - bWdTrigger - 0x1fffd529 - - - bDcSyncActive - 0x1fffd512 - - - EsmTimeoutCounter - 0x1fffd4d6 - - - bDcRunning - 0x1fffd511 - - - u16SmSync0Counter - 0x1fffd508 - - - u16SmSync0Value - 0x1fffd50a - - - bSmSyncSequenceValid - 0x1fffd526 - - - i16WaitForPllRunningTimeout - 0x1fffd4e6 - - - i16WaitForPllRunningCnt - 0x1fffd4e4 - - - Sync0WdCounter - 0x1fffd4dc - - - Sync0WdValue - 0x1fffd4de - - - Sync1WdCounter - 0x1fffd4e0 - - - Sync1WdValue - 0x1fffd4e2 - - - LatchInputSync0Value - 0x1fffd4da - - - LatchInputSync0Counter - 0x1fffd4d8 - - - b32BitDc - 0x1fffd50e - - - bEscIntEnabled - 0x1fffd517 - - - b3BufferMode - 0x1fffd50f - - - bLocalErrorFlag - 0x1fffd51b - - - u16LocalErrorCode - 0x1fffd502 - - - bApplEsmPending - 0x1fffd510 - - - bEcatWaitForAlControlRes - 0x1fffd516 - - - nEcatStateTrans - 0x1fffd4e8 - - - u8EcatErrorLed - 0x1fffd52e - - - u8EcatRunLed - 0x1fffd52f - - - nPdInputSize - 0x1fffd4f0 - - - nPdOutputSize - 0x1fffd4f2 - - - nMaxSyncMan - 0x1fffd52b - - - nMaxEscAddress - 0x1fffd4ee - - - nAlStatus - 0x1fffd52a - - - bExplicitDevIdRequested - 0x1fffd51a - - - EcatWdValue - 0x1fffd4d4 - - - nEscAddrOutputData - 0x1fffd4ec - - - nEscAddrInputData - 0x1fffd4ea - - - u16ALEventMask - 0x1fffd4fc - - - u8dummy - 0x1fffd535 - - - SyncManInfo - 0x1fffd478 - - - ResetALEventMask - 0x20004a3b - - - - StartOutputHandler - 0x20003f73 - - - - EnableSyncManChannel - 0x2000478d - - - - StopOutputHandler - 0x20004b2d - - - - DisableSyncManChannel - 0x2000475f - - - - ECAT_Main + + aName0x1C12 + 0x1fffc80b + + + + asEntryDesc0x60C2 + 0x1fffc762 + + + + sEntryDesc0x6064 + 0x1fffc904 + + + + sEntryDesc0x6061 + 0x1fffc8fe + + + + sEntryDesc0x6060 + 0x1fffc8f8 + + + + sEntryDesc0x606C + 0x1fffc90a + + + + sEntryDesc0x6077 + 0x1fffc910 + + + + sEntryDesc0x607A + 0x1fffc916 + + + + sDetectedModuleIdentList + 0x1fffd154 + + + + sEntryDesc0x6041 + 0x1fffc8da + + + + sEntryDesc0x6040 + 0x1fffc8d4 + + + + sEntryDesc0x605E + 0x1fffc8f2 + + + + sEntryDesc0x605A + 0x1fffc8e0 + + + + sEntryDesc0x605C + 0x1fffc8ec + + + + sEntryDesc0x605B + 0x1fffc8e6 + + + + DefCiA402ObjectValues + 0x1fffd018 + + + + APPL_StartInputHandler + 0x20002919 + + + + asEntryDesc0xF050 + 0x1fffc7aa + + + + sEntryDesc0x603F + 0x1fffc8ce + + + + aName0x1602 + 0x1fffc856 + + + + aName0x1601 + 0x1fffc84a + + + + aName0x1600 + 0x1fffc7bc + + + + asEntryDesc0xF030 + 0x1fffc798 + + + + ApplicationObjDic + 0x1fffcf00 + + + + asEntryDesc0xF000 + 0x1fffc774 + + + + CiA402_Application 0x20001eab - - - - CheckSmSettings - 0x2000119b - - - - AL_ControlRes - 0x2000159f - - - - EepromLoaded - 0x1fffd0ee - - - - UpdateEEPROMLoadedState - 0x20004907 - - ECAT_Init - 0x20001c57 - + + asEntryDesc0xF010 + 0x1fffc786 + - - SetALStatus - 0x200035fb - + + sEntryDesc0x60FF + 0x1fffc922 + - - AL_ControlInd - 0x1ffff8ab - + + CiA402_StateMachine + 0x2000114d + - - StopInputHandler - 0x200020b9 - + + asEntryDesc0x1A01 + 0x1fffc62a + - - DC_CheckWatchdog - 0x20002797 - + + asEntryDesc0x1A00 + 0x1fffc4d2 + - - BackToInitTransition - 0x20004b7b - + + asEntryDesc0x1A02 + 0x1fffc642 + - - SetALEventMask - 0x20004a57 - + + DefCiA402AxisObjDic + 0x1fffc938 + - - CheckIfEcatError - 0x20003b7b - + + sEntryDesc0x6085 + 0x1fffc91c + - - SMActivate - 0x1fffd0ed - + + APPL_StartOutputHandler + 0x1ffffff9 + - - GetSyncMan - 0x20004a1f - + + APPL_StopOutputHandler + 0x20004681 + - - StartInputHandler - 0x1fffd739 - + + aName0x1A02 + 0x1fffc86e + - - ESC_readDWord - 0x20004be1 - + + aName0x1A01 + 0x1fffc862 + - - ESC_writeBlockISR - 0x20004b6b + + aName0x1A00 + 0x1fffc7cc + + + + main + 0x20003bef + + + + aName0x60FF + 0x1fffc7ec + + + + CiA402_TransitionAction + 0x200045a7 + + + + APPL_Application + 0x2000436b + + + + APPL_GenerateMapping + 0x1ffffcc5 + + + + aName0x6502 + 0x1fffc69d + + + + APPL_StopInputHandler + 0x20000bfb + + + + sConfiguredModuleIdentList + 0x1fffd148 + + + + aName0x60C2 + 0x1fffc350 + + + + CiA402_DummyMotionControl + 0x20001fa7 + + + + APPL_OutputMapping + 0x20002fe3 + + + + aName0x6041 + 0x1fffc87a + + + + aName0x6040 + 0x1fffc825 + + + + asEntryDesc0x607D + 0x1fffc750 + + + + aName0x605E + 0x1fffc5ab + + + + aName0x605C + 0x1fffc552 + + + + aName0x605B + 0x1fffc6b3 + + + + aName0x605A + 0x1fffc65a + + + + aName0x6064 + 0x1fffc671 + + + + aName0x6061 + 0x1fffc5c6 + + + + aName0x6060 + 0x1fffc718 + + + + sModulardeviceprofile + 0x1fffd10a + + + + CiA402_Init + 0x1ffff7cb + + + + aName0x606C + 0x1fffc687 + + + + aName0x6077 + 0x1fffc6dd + + + + APPL_InputMapping + 0x20003079 - - ESC_readDWordISR - 0x20004c33 - + + aName0x607D + 0x1fffc42e + - - ESC_applicationSync0Handler - 0x20004ac7 - + + aName0x607A + 0x1fffc7dc + - - ESC_getTimer - 0x20004b89 - + + Write0xF030 + 0x200017d5 + - - ESC_applicationLayerHandler - 0x20004aad - + + sTxPDOassign + 0x1fffd1a0 + - - ESC_writeDWordISR - 0x20004c5b - + + aName0xF050 + 0x1fffc6c8 + - - ESC_applicationSync1Handler - 0x20004ae1 - + + sModuleProfileInfo + 0x1fffd16c + - - ESC_writeWord - 0x20004c1d - + + aName0x603F + 0x1fffc89e + - - ESC_writeByte - 0x20004c05 - + + sRxPDOassign + 0x1fffd194 + - - ESC_clearTimer - 0x20004a01 - + + aName0xF000 + 0x1fffc3ec + - - ESC_initHW - 0x20002983 - + + asEntryDesc0x1601 + 0x1fffc5fa + - - ESC_writeWordISR - 0x20004c65 - + + asEntryDesc0x1600 + 0x1fffc4ae + - - ESC_readWordISR - 0x20004c3d - + + asEntryDesc0x1602 + 0x1fffc612 + - - ESC_readBlockISR - 0x20004bc9 - + + CiA402_DeallocateAxis + 0x20003927 + - - ESC_writeBlock - 0x20004bf9 - + + asPDOAssignEntryDesc + 0x1fffc892 + - - ESC_loadedCheckEEPROM - 0x20004891 - + + aName0xF010 + 0x1fffc6f1 + - - ESC_resetESC - 0x20004c6f - - - - ESC_setLed - 0x2000472d - - - - ESC_readBlock - 0x20004bbd - - - - ESC_writeByteISR - 0x20004c51 - - - - ESC_readByteISR - 0x20004c29 - - - - ESC_releaseHW - 0x20001fb7 - - - - ESC_writeDWord - 0x20004c11 - - - - ESC_readWord - 0x20004bed - - - - ESC_timerIncPerMilliSec - 0x20004c47 - - - - ESC_readByte - 0x20004bd5 - - - - F2838XCM_strcpy - 0x20004c8f - - - - bReceiveMbxIsLocked + + u32LastDc32Value 0x1fffd520 - - bSendMbxIsFull - 0x1fffd525 + + u32CheckForDcOverrunCnt + 0x1fffd514 - - bMbxRunning - 0x1fffd51d + + acSoftwareversion + 0x1fffd0f5 + - - bMbxRepeatToggle - 0x1fffd51c + + aName0x1C00 + 0x1fffc72b + - - u16SendMbxSize - 0x1fffd506 + + sEntryDesc0x1009 + 0x1fffc8bc + - - u16ReceiveMbxSize - 0x1fffd504 + + sEntryDesc0x1008 + 0x1fffc8b6 + - - u16EscAddrReceiveMbx - 0x1fffd4fe + + sEntryDesc0x1001 + 0x1fffc8b0 + - - u16EscAddrSendMbx - 0x1fffd500 + + sEntryDesc0x1000 + 0x1fffc8aa + - - u8MbxWriteCounter - 0x1fffd532 + + sEntryDesc0x100A + 0x1fffc8c2 + - - u8MbxReadCounter - 0x1fffd531 + + GenObjDic + 0x1fffcd20 + - - u8MailboxSendReqStored - 0x1fffd530 + + COE_RemoveDicEntry + 0x20003e73 + - - psWriteMbx - 0x1fffd4b4 + + aName0x1C33 + 0x1fffc108 + - - psReadMbx - 0x1fffd4a8 + + aName0x1C32 + 0x1fffc000 + - - psRepeatMbx - 0x1fffd4ac + + sEntryDesc0x10F8 + 0x1fffc8c8 + - - psStoreMbx - 0x1fffd4b0 + + COE_AddObjectToDic + 0x200037a3 + - - sMbxSendQueue - 0x1fffd434 + + u64Timestamp + 0x1fffd110 + - - sMbxReceiveQueue - 0x1fffd400 + + aName0x10F8 + 0x1fffc705 + - - bNoMbxMemoryAvailable - 0x1fffd51f + + aName0x10F1 + 0x1fffc46e + - - MBX_Main - 0x200042fb - + + sSyncmanagertype + 0x1fffd19a + - - MailboxServiceInd - 0x20004b59 - + + COE_GetObjectDictionary + 0x2000459b + - - MBX_CopyToSendMailbox - 0x2000340d - + + COE_ObjDictionaryInit + 0x20004125 + - - MBX_MailboxSendReq - 0x200039f7 - + + aName0x1009 + 0x1fffc516 + - - MBX_StartMailboxHandler - 0x200034b7 - + + aName0x1008 + 0x1fffc83e + - - MBX_Init - 0x20002e17 - + + aName0x1001 + 0x1fffc7fc + - - PutInMbxQueue - 0x20004815 - + + aName0x1000 + 0x1fffc832 + - - MBX_MailboxWriteInd - 0x20004201 - + + aName0x100A + 0x1fffc534 + - - MBX_MailboxRepeatReq - 0x20003f11 - + + aName0x1018 + 0x1fffc3a5 + - - MBX_StopMailboxHandler - 0x2000288d - + + COE_ClearObjDictionary + 0x2000438b + - - MBX_CheckAndCopyMailbox - 0x200023af - + + Read0x10F8 + 0x20003c3f + - - GetOutOfMbxQueue - 0x200048e1 - + + u32Devicetype + 0x1fffd118 + - - MBX_MailboxReadInd - 0x200038eb - + + acDevicename + 0x1fffd0c8 + - - bSyncSetByUser - 0x1fffd528 + + asEntryDesc0x1018 + 0x1fffc570 + - - sCycleDiag - 0x1fffd4fa + + ObjDicList + 0x1fffd120 + - - sSyncManOutPar - 0x1fffd3bc + + asEntryDesc0x10F1 + 0x1fffc73e + - - sSyncManInPar - 0x1fffd378 + + COE_ObjInit + 0x20002cbf + - - CheckSyncTypeValue - 0x20003075 - + + acHardwareversion + 0x1fffd0e1 + - - cBitMask - 0x1fffc4c8 - + + asEntryDesc0x1C3x + 0x1fffc210 + - - OBJ_GetObjDesc - 0x20004c93 - + + COE_SyncTimeStamp + 0x20003505 + - - OBJ_GetObjectList - 0x1fffdf5f - + + asEntryDesc0x1C00 + 0x1fffc886 + - - OBJ_CopyNumberToString - 0x200045df - + + sIdentity + 0x1fffd124 + - - OBJ_GetNoOfObjects - 0x20004033 - + + AddObjectsToObjDictionary + 0x200042b9 + - - OBJ_GetEntryDesc - 0x20004619 - + + COE_UpdateSyncErrorStatus + 0x20003d65 + - - OBJ_Read - 0x1fffdbe5 - + + u16ErrorRegister + 0x1fffd11c + - - OBJ_GetObjectHandle - 0x20004afb - + + COE_Main + 0x1ffffffd + - - aSubindexDesc - 0x1fffd0e0 - + + bEtherCATRunLed + 0x1fffd57b - - OBJ_GetEntryOffset - 0x2000269f - + + bEtherCATErrorLed + 0x1fffd57a - - OBJ_GetObjectLength - 0x2000312f - + + bRunApplication + 0x1fffd581 - - OBJ_GetDesc - 0x20002fb9 - + + pAPPL_FoeRead + 0x1fffd4e4 - - sErrorSettings - 0x1fffd108 - + + pAPPL_FoeReadData + 0x1fffd4e8 - - OBJ_Write - 0x1ffff001 - + + pAPPL_FoeError + 0x1fffd4e0 - - u8PendingSdo - 0x1fffd533 + + pAPPL_FoeWrite + 0x1fffd4ec - - bStoreCompleteAccess - 0x1fffd527 + + pAPPL_FoeWriteData + 0x1fffd4f0 - - u8StoreSubindex - 0x1fffd534 + + pAPPL_CoeReadInd + 0x1fffd4d8 - - u16StoreIndex - 0x1fffd50c + + pAPPL_CoeWriteInd + 0x1fffd4dc - - u32StoreDataSize - 0x1fffd4cc - - - pStoreData - 0x1fffd4a4 - - - pSdoPendFunc - 0x1fffd494 - - - aSdoInfoHeader - 0x1fffd468 - - - pSdoSegData - 0x1fffd49c - - - nSdoInfoFragmentsLeft + + pAPPL_MainLoop 0x1fffd4f4 - - nSdoInfoIndex - 0x1fffd4f6 + + u32CycleTimeStartValue + 0x1fffd518 - - pSdoInfoObjEntry - 0x1fffd490 + + u32MinCycleTimeStartValue + 0x1fffd528 - - pSdoResStored - 0x1fffd498 + + u32SystemTimeReadFailure + 0x1fffd534 - - nSdoSegService + + bMinCycleTimeMeasurementStarted + 0x1fffd57e + + + u32MinCycleTimeValue 0x1fffd52c - - bSdoSegFollows - 0x1fffd523 + + aPdOutputData + 0x1fffd38c - - bSdoSegAccess - 0x1fffd522 + + aPdInputData + 0x1fffd348 - - nSdoSegIndex + + ECAT_Application + 0x20004037 + + + + MainLoop + 0x2000266b + + + + Sync1_Isr + 0x20003b4d + + + + PDI_Isr + 0x200014ff + + + + Sync0_Isr + 0x20001a57 + + + + MainInit + 0x200029e3 + + + + ECAT_SetLedIndication + 0x20000a3b + + + + HandleCycleTimeMeasurement + 0x20003b9f + + + + PDO_InputMapping + 0x20003195 + + + + bInitFinished + 0x1fffd178 + + + + ECAT_CheckTimer + 0x20003107 + + + + GetSystemTimeDelay + 0x20004003 + + + + PDO_OutputMapping + 0x20002e09 + + + + pCoeSendStored 0x1fffd4f8 - - nSdoSegSubindex - 0x1fffd52d + + COE_Init + 0x20004571 + - - nSdoSegBytesToHandle - 0x1fffd480 + + COE_ServiceInd + 0x200041a5 + - - bSdoSegLastToggle + + COE_ContinueInd + 0x20003dab + + + + u32PacketNo + 0x1fffd530 + + + u32FileOffset + 0x1fffd51c + + + u32LastFileOffset 0x1fffd524 - - nSdoSegCompleteSize - 0x1fffd484 + + u16FileAccessState + 0x1fffd562 - - pSdoSegObjEntry - 0x1fffd4a0 + + pFoeSendStored + 0x1fffd4fc - - bSdoInWork - 0x1fffd0b1 - + + u16FoeMaxSendBlockSize + 0x1fffd564 - - SDOS_SdoRes - 0x20002b65 - + + FOE_ServiceInd + 0x1ffffa8f + - + + FOE_ContinueInd + 0x200043e7 + + + + FOE_Init + 0x20004349 + + + + bEcatOutputUpdateRunning + 0x1fffd577 + + + bEcatInputUpdateRunning + 0x1fffd576 + + + bEcatFirstOutputsReceived + 0x1fffd575 + + + bWdTrigger + 0x1fffd585 + + + bDcSyncActive + 0x1fffd574 + + + EsmTimeoutCounter + 0x1fffd53a + + + bDcRunning + 0x1fffd573 + + + u16SmSync0Counter + 0x1fffd56c + + + u16SmSync0Value + 0x1fffd56e + + + bSmSyncSequenceValid + 0x1fffd583 + + + i16WaitForPllRunningTimeout + 0x1fffd54a + + + i16WaitForPllRunningCnt + 0x1fffd548 + + + Sync0WdCounter + 0x1fffd540 + + + Sync0WdValue + 0x1fffd542 + + + Sync1WdCounter + 0x1fffd544 + + + Sync1WdValue + 0x1fffd546 + + + LatchInputSync0Value + 0x1fffd53e + + + LatchInputSync0Counter + 0x1fffd53c + + + b32BitDc + 0x1fffd570 + + + bEscIntEnabled + 0x1fffd579 + + + b3BufferMode + 0x1fffd571 + + + u16LocalErrorCode + 0x1fffd566 + + + u8LocalErrorState + 0x1fffd58a + + + bApplEsmPending + 0x1fffd572 + + + bEcatWaitForAlControlRes + 0x1fffd578 + + + nEcatStateTrans + 0x1fffd54c + + + u8EcatErrorLed + 0x1fffd588 + + + u8EcatRunLed + 0x1fffd589 + + + nPdInputSize + 0x1fffd554 + + + nPdOutputSize + 0x1fffd556 + + + nMaxSyncMan + 0x1fffd587 + + + nMaxEscAddress + 0x1fffd552 + + + nAlStatus + 0x1fffd586 + + + EcatWdValue + 0x1fffd538 + + + nEscAddrOutputData + 0x1fffd550 + + + nEscAddrInputData + 0x1fffd54e + + + u16ALEventMask + 0x1fffd55c + + + u8dummy + 0x1fffd58e + + + SyncManInfo + 0x1fffd4d0 + + + ResetALEventMask + 0x2000443b + + + + StartOutputHandler + 0x2000357b + + + + EnableSyncManChannel + 0x200040c9 + + + + StopOutputHandler + 0x20004515 + + + + DisableSyncManChannel + 0x2000409b + + + + ECAT_Main + 0x20001b87 + + + + CheckSmSettings + 0x20000d41 + + + + AL_ControlRes + 0x20000f49 + + + + EepromLoaded + 0x1fffd146 + + + + UpdateEEPROMLoadedState + 0x20004293 + + + + ECAT_Init + 0x20001927 + + + + SetALStatus + 0x200036cd + + + + AL_ControlInd + 0x1ffff001 + + + + StopInputHandler + 0x20001dad + + + + DC_CheckWatchdog + 0x2000229b + + + + BackToInitTransition + 0x20004563 + + + + SetALEventMask + 0x20004457 + + + + CheckIfEcatError + 0x20003321 + + + + SMActivate + 0x1fffd145 + + + + GetSyncMan + 0x20004403 + + + + StartInputHandler + 0x1fffd791 + + + + ESC_readDWord + 0x200045d7 + + + + ESC_writeBlockISR + 0x20004553 + + + + ESC_readDWordISR + 0x20004629 + + + + ESC_applicationSync0Handler + 0x200044c7 + + + + ESC_getTimer + 0x2000457f + + + + ESC_applicationLayerHandler + 0x200044ad + + + + ESC_writeDWordISR + 0x20004651 + + + + ESC_applicationSync1Handler + 0x200044e1 + + + + ESC_writeWord + 0x20004613 + + + + ESC_writeByte + 0x200045fb + + + + ESC_clearTimer + 0x200043ab + + + + ESC_initHW + 0x20002487 + + + + ESC_writeWordISR + 0x2000465b + + + + ESC_readWordISR + 0x20004633 + + + + ESC_readBlockISR + 0x200045bf + + + + ESC_writeBlock + 0x200045ef + + + + ESC_loadedCheckEEPROM + 0x200041cd + + + + ESC_resetESC + 0x20004665 + + + + ESC_setLed + 0x20004069 + + + + ESC_readBlock + 0x200045b3 + + + + ESC_writeByteISR + 0x20004647 + + + + ESC_readByteISR + 0x2000461f + + + + ESC_releaseHW + 0x20000bff + + + + ESC_writeDWord + 0x20004607 + + + + ESC_readWord + 0x200045e3 + + + + ESC_timerIncPerMilliSec + 0x2000463d + + + + ESC_readByte + 0x200045cb + + + + F2838XCM_strcpy + 0x20004685 + + + + FOE_Write + 0x200043c9 + + + + FOE_Busy + 0x2000466d + + + + FOE_Error + 0x20004541 + + + + FOE_Read + 0x2000421d + + + + FOE_Ack + 0x200041f5 + + + + FOE_Data + 0x20003e35 + + + + bReceiveMbxIsLocked + 0x1fffd580 + + + bSendMbxIsFull + 0x1fffd582 + + + bMbxRunning + 0x1fffd57d + + + bMbxRepeatToggle + 0x1fffd57c + + + u16SendMbxSize + 0x1fffd56a + + + u16ReceiveMbxSize + 0x1fffd568 + + + u16EscAddrReceiveMbx + 0x1fffd55e + + + u16EscAddrSendMbx + 0x1fffd560 + + + u8MbxWriteCounter + 0x1fffd58d + + + u8MbxReadCounter + 0x1fffd58c + + + u8MailboxSendReqStored + 0x1fffd58b + + + psWriteMbx + 0x1fffd510 + + + psReadMbx + 0x1fffd504 + + + psRepeatMbx + 0x1fffd508 + + + psStoreMbx + 0x1fffd50c + + + sMbxSendQueue + 0x1fffd48c + + + sMbxReceiveQueue + 0x1fffd458 + + + bNoMbxMemoryAvailable + 0x1fffd57f + + + MBX_Main + 0x20003c8d + + + + MailboxServiceInd + 0x2000441f + + + + MBX_CopyToSendMailbox + 0x20002579 + + + + MBX_MailboxSendReq + 0x2000321b + + + + MBX_StartMailboxHandler + 0x20002b63 + + + + MBX_Init + 0x20002841 + + + + PutInMbxQueue + 0x20004151 + + + + MBX_MailboxWriteInd + 0x20003a99 + + + + MBX_MailboxRepeatReq + 0x20003807 + + + + MBX_StopMailboxHandler + 0x20002391 + + + + MBX_CheckAndCopyMailbox + 0x200020a3 + + + + GetOutOfMbxQueue + 0x2000426d + + + + MBX_MailboxReadInd + 0x20002d65 + + + + bSyncSetByUser + 0x1fffd584 + + + sCycleDiag + 0x1fffd55a + + + sSyncManOutPar + 0x1fffd414 + + + sSyncManInPar + 0x1fffd3d0 + + + CheckSyncTypeValue + 0x1fffdf45 + + + + cBitMask + 0x1fffc4f6 + + + + OBJ_GetObjDesc + 0x20004689 + + + + OBJ_GetObjectList + 0x20002eab + + + + OBJ_CopyNumberToString + 0x20003ee9 + + + + OBJ_GetNoOfObjects + 0x200038c9 + + + + OBJ_GetEntryDesc + 0x20003f23 + + + + OBJ_Read + 0x1fffdc5b + + + + OBJ_GetObjectHandle + 0x200044fb + + + + aSubindexDesc + 0x1fffd138 + + + + OBJ_GetEntryOffset + 0x20001c9f + + + + OBJ_GetObjectLength + 0x20003af5 + + + + OBJ_GetDesc + 0x20002aa7 + + + + sErrorSettings + 0x1fffd160 + + + + OBJ_Write + 0x1ffff41f + + + + aSdoInfoHeader + 0x1fffd4c0 + + + nSdoInfoIndex + 0x1fffd558 + + + pSdoInfoObjEntry + 0x1fffd500 + + SDOS_SdoInfoInd 0x20000809 - + - + cAbortCode - 0x1fffc2c8 - + 0x1fffc2d8 + - + SDOS_SdoInd - 0x1ffff46f - + 0x20001679 + - + SdoRes - 0x20003357 - + 0x20002c11 + - - SODS_ClearPendingResponse - 0x200031e9 - - - + vectorTableRAM 0x20000c00 - + CM_enableAllPeripherals - 0x20003ce9 - + 0x2000348f + - + CM_init - 0x20004841 + 0x2000417d - + ESCSS_configureEEPROMSize - 0x200045a5 + 0x20003eaf - + ESCSS_configureSync0Connections - 0x200040ed + 0x20003985 - + ESCSS_configureSync1Connections - 0x20004149 + 0x200039e1 - + Interrupt_enable - 0x20003a7d + 0x200032a1 - + Interrupt_registerHandler - 0x200041a5 + 0x20003a3d - + SysCtl_enablePeripheral - 0x20004345 - + 0x20003cd5 + - + SysCtl_resetPeripheral - 0x1fffff8d - + 0x200035ed + - + __aeabi_dsub - 0x20001931 - + 0x20001349 + - + __aeabi_dadd - 0x2000193b - + 0x20001353 + + + + __aeabi_dmul + 0x2000219f + - __aeabi_dmul - 0x200024ab - - - __aeabi_d2iz - 0x2000438d - + 0x20003d1d + - + __aeabi_cfcmpeq - 0x20003fd3 - + 0x20003869 + + + + __aeabi_cfcmple + 0x20003869 + - __aeabi_cfcmple - 0x20003fd3 - - - __aeabi_fmul - 0x20003bf5 - + 0x2000339b + + + + __aeabi_f2d + 0x20003f5d + - __aeabi_f2d - 0x20004653 - + __aeabi_f2iz + 0x20003f95 + - __aeabi_f2iz - 0x2000468b - - - __aeabi_i2d - 0x200047bb - + 0x200040f7 + - + memcpy - 0x2000369d + 0x20002f47 - + __aeabi_memcpy - 0x2000369d + 0x20002f47 - + __aeabi_memcpy8 - 0x2000369d + 0x20002f47 - + __aeabi_memcpy4 - 0x2000369d + 0x20002f47 - + __aeabi_ui2f - 0x200049bd - + 0x20004325 + - + __aeabi_memset - 0x20003c71 + 0x20003417 - + memset - 0x20003c77 + 0x2000341d - + __aeabi_memset8 - 0x20003c71 + 0x20003417 - + __aeabi_memset4 - 0x20003c71 + 0x20003417 - + __aeabi_memclr8 - 0x20003c6f + 0x20003415 - + __aeabi_memclr4 - 0x20003c6f + 0x20003415 - + __aeabi_memclr - 0x20003c6f + 0x20003415 - + __TI_zero_init_nomemset - 0x20004a73 + 0x20004473 - + __TI_decompress_none - 0x20004b97 + 0x2000458d - + __TI_decompress_lzss - 0x20003e45 + 0x2000373b - + _sys_memory 0x1fffe000 - + free - 0x20002c51 - + 0x2000275d + - + memalign - 0x20001fb9 - + 0x1ffffef9 + - + malloc - 0x20004c77 - + 0x20004675 + - + aligned_alloc - 0x20001fb9 - + 0x1ffffef9 + - + strlen - 0x20004b45 - + 0x2000452d + - + strncpy - 0x200046c3 - + 0x20003fcd + - + __stack - 0x1fffd538 + 0x1fffd590 - + _c_int00_noargs - 0x20004999 + 0x20004301 - + __TI_auto_init_nobinit_nopinit - 0x20004461 - + 0x20003df1 + - + _system_pre_init - 0x20004c97 + 0x2000468d - + C$$EXIT - 0x20004c9b - + 0x20004691 + - + abort - 0x20004c9b - + 0x20004691 + - + _nop - 0x20002c4f - + 0x2000275b + - + _lock - 0x1fffd12c - + 0x1fffd184 + - + _unlock - 0x1fffd130 - + 0x1fffd188 + - + __TI_static_base__ - 0x20004ca0 + 0x20004698 - + + DebugP_log + 0x0 + + __mpu_init 0x0 - + _system_post_cinit 0x0 - Link successful + Link errors: red sections failed placement
diff --git a/RAM/f2838x_cm_hw.d b/RAM/f2838x_cm_hw.d deleted file mode 100644 index 3f07b49..0000000 --- a/RAM/f2838x_cm_hw.d +++ /dev/null @@ -1,57 +0,0 @@ -# FIXED - -f2838x_cm_hw.obj: ../f2838x_cm_hw.c -f2838x_cm_hw.obj: ../f2838x_cm_hw.h -f2838x_cm_hw.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/stdint.h -f2838x_cm_hw.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_ti_config.h -f2838x_cm_hw.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/linkage.h -f2838x_cm_hw.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_stdint40.h -f2838x_cm_hw.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/stdint.h -f2838x_cm_hw.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/cdefs.h -f2838x_cm_hw.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/_types.h -f2838x_cm_hw.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/machine/_types.h -f2838x_cm_hw.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/machine/_stdint.h -f2838x_cm_hw.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/_stdint.h -f2838x_cm_hw.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/string.h -f2838x_cm_hw.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/xlocale/_string.h -f2838x_cm_hw.obj: ../esc.h -f2838x_cm_hw.obj: ../ecat_def.h -f2838x_cm_hw.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/stdlib.h -f2838x_cm_hw.obj: ../f2838x_cm_system.h - -../f2838x_cm_hw.c: - -../f2838x_cm_hw.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/stdint.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_ti_config.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/linkage.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_stdint40.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/stdint.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/cdefs.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/_types.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/machine/_types.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/machine/_stdint.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/_stdint.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/string.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/xlocale/_string.h: - -../esc.h: - -../ecat_def.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/stdlib.h: - -../f2838x_cm_system.h: - diff --git a/RAM/f2838x_cm_system.d b/RAM/f2838x_cm_system.d deleted file mode 100644 index e16f4c2..0000000 --- a/RAM/f2838x_cm_system.d +++ /dev/null @@ -1,24 +0,0 @@ -# FIXED - -f2838x_cm_system.obj: ../f2838x_cm_system.c -f2838x_cm_system.obj: ../f2838x_cm_system.h -f2838x_cm_system.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/string.h -f2838x_cm_system.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_ti_config.h -f2838x_cm_system.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/linkage.h -f2838x_cm_system.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/cdefs.h -f2838x_cm_system.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/xlocale/_string.h - -../f2838x_cm_system.c: - -../f2838x_cm_system.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/string.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_ti_config.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/linkage.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/cdefs.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/xlocale/_string.h: - diff --git a/RAM/mailbox.d b/RAM/mailbox.d deleted file mode 100644 index f58a0b3..0000000 --- a/RAM/mailbox.d +++ /dev/null @@ -1,81 +0,0 @@ -# FIXED - -mailbox.obj: ../mailbox.c -mailbox.obj: ../ecat_def.h -mailbox.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/stdlib.h -mailbox.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_ti_config.h -mailbox.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/linkage.h -mailbox.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/cdefs.h -mailbox.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/string.h -mailbox.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/xlocale/_string.h -mailbox.obj: ../f2838x_cm_system.h -mailbox.obj: ../ecatslv.h -mailbox.obj: ../esc.h -mailbox.obj: ../f2838x_cm_hw.h -mailbox.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/stdint.h -mailbox.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_stdint40.h -mailbox.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/stdint.h -mailbox.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/_types.h -mailbox.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/machine/_types.h -mailbox.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/machine/_stdint.h -mailbox.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/_stdint.h -mailbox.obj: ../esc.h -mailbox.obj: ../mailbox.h -mailbox.obj: ../ecatcoe.h -mailbox.obj: ../mailbox.h -mailbox.obj: ../sdoserv.h -mailbox.obj: ../ecatcoe.h -mailbox.obj: ../mailbox.h - -../mailbox.c: - -../ecat_def.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/stdlib.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_ti_config.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/linkage.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/cdefs.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/string.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/xlocale/_string.h: - -../f2838x_cm_system.h: - -../ecatslv.h: - -../esc.h: - -../f2838x_cm_hw.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/stdint.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_stdint40.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/stdint.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/_types.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/machine/_types.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/machine/_stdint.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/_stdint.h: - -../esc.h: - -../mailbox.h: - -../ecatcoe.h: - -../mailbox.h: - -../sdoserv.h: - -../ecatcoe.h: - -../mailbox.h: - diff --git a/RAM/makefile b/RAM/makefile index 7975068..2f0aec5 100644 --- a/RAM/makefile +++ b/RAM/makefile @@ -10,18 +10,22 @@ GEN_OPTS__FLAG := GEN_CMDS__FLAG := ORDERED_OBJS += \ +"./F2838x CM EtherCAT Slave.obj" \ "./cia402appl.obj" \ "./coeappl.obj" \ "./ecatappl.obj" \ "./ecatcoe.obj" \ +"./ecatfoe.obj" \ "./ecatslv.obj" \ "./ethercat_slave_cm_hal.obj" \ "./f2838x_cm_hw.obj" \ "./f2838x_cm_system.obj" \ +"./foeappl.obj" \ "./mailbox.obj" \ "./objdef.obj" \ "./sdoserv.obj" \ "./startup_cm.obj" \ +"./tiescfoe.obj" \ "./device/cm.obj" \ "../2838x_RAM_lnk_ecat_cm.cmd" \ "C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/ccs/Debug/driverlib_cm.lib" \ @@ -156,8 +160,8 @@ f2838x_cm_cia402_solution.out: $(OBJS) $(CMD_SRCS) $(LIB_SRCS) $(GEN_CMDS) # Other Targets clean: -$(RM) $(EXE_OUTPUTS__QUOTED) - -$(RM) "cia402appl.obj" "coeappl.obj" "ecatappl.obj" "ecatcoe.obj" "ecatslv.obj" "ethercat_slave_cm_hal.obj" "f2838x_cm_hw.obj" "f2838x_cm_system.obj" "mailbox.obj" "objdef.obj" "sdoserv.obj" "startup_cm.obj" "device\cm.obj" - -$(RM) "cia402appl.d" "coeappl.d" "ecatappl.d" "ecatcoe.d" "ecatslv.d" "ethercat_slave_cm_hal.d" "f2838x_cm_hw.d" "f2838x_cm_system.d" "mailbox.d" "objdef.d" "sdoserv.d" "startup_cm.d" "device\cm.d" + -$(RM) "F2838x CM EtherCAT Slave.obj" "cia402appl.obj" "coeappl.obj" "ecatappl.obj" "ecatcoe.obj" "ecatfoe.obj" "ecatslv.obj" "ethercat_slave_cm_hal.obj" "f2838x_cm_hw.obj" "f2838x_cm_system.obj" "foeappl.obj" "mailbox.obj" "objdef.obj" "sdoserv.obj" "startup_cm.obj" "tiescfoe.obj" "device\cm.obj" + -$(RM) "F2838x CM EtherCAT Slave.d" "cia402appl.d" "coeappl.d" "ecatappl.d" "ecatcoe.d" "ecatfoe.d" "ecatslv.d" "ethercat_slave_cm_hal.d" "f2838x_cm_hw.d" "f2838x_cm_system.d" "foeappl.d" "mailbox.d" "objdef.d" "sdoserv.d" "startup_cm.d" "tiescfoe.d" "device\cm.d" -@echo 'Finished clean' -@echo ' ' diff --git a/RAM/objdef.d b/RAM/objdef.d deleted file mode 100644 index dc7efcc..0000000 --- a/RAM/objdef.d +++ /dev/null @@ -1,90 +0,0 @@ -# FIXED - -objdef.obj: ../objdef.c -objdef.obj: ../ecat_def.h -objdef.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/stdlib.h -objdef.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_ti_config.h -objdef.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/linkage.h -objdef.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/cdefs.h -objdef.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/string.h -objdef.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/xlocale/_string.h -objdef.obj: ../f2838x_cm_system.h -objdef.obj: ../ecatslv.h -objdef.obj: ../esc.h -objdef.obj: ../f2838x_cm_hw.h -objdef.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/stdint.h -objdef.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_stdint40.h -objdef.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/stdint.h -objdef.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/_types.h -objdef.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/machine/_types.h -objdef.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/machine/_stdint.h -objdef.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/_stdint.h -objdef.obj: ../esc.h -objdef.obj: ../coeappl.h -objdef.obj: ../objdef.h -objdef.obj: ../sdoserv.h -objdef.obj: ../ecatcoe.h -objdef.obj: ../mailbox.h -objdef.obj: ../objdef.h -objdef.obj: ../sdoserv.h -objdef.obj: ../ecatcoe.h -objdef.obj: ../mailbox.h - -../objdef.c: - -../ecat_def.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/stdlib.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_ti_config.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/linkage.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/cdefs.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/string.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/xlocale/_string.h: - -../f2838x_cm_system.h: - -../ecatslv.h: - -../esc.h: - -../f2838x_cm_hw.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/stdint.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_stdint40.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/stdint.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/_types.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/machine/_types.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/machine/_stdint.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/_stdint.h: - -../esc.h: - -../coeappl.h: - -../objdef.h: - -../sdoserv.h: - -../ecatcoe.h: - -../mailbox.h: - -../objdef.h: - -../sdoserv.h: - -../ecatcoe.h: - -../mailbox.h: - diff --git a/RAM/sdoserv.d b/RAM/sdoserv.d deleted file mode 100644 index 1392bd2..0000000 --- a/RAM/sdoserv.d +++ /dev/null @@ -1,75 +0,0 @@ -# FIXED - -sdoserv.obj: ../sdoserv.c -sdoserv.obj: ../ecat_def.h -sdoserv.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/stdlib.h -sdoserv.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_ti_config.h -sdoserv.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/linkage.h -sdoserv.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/cdefs.h -sdoserv.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/string.h -sdoserv.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/xlocale/_string.h -sdoserv.obj: ../f2838x_cm_system.h -sdoserv.obj: ../ecatslv.h -sdoserv.obj: ../esc.h -sdoserv.obj: ../f2838x_cm_hw.h -sdoserv.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/stdint.h -sdoserv.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_stdint40.h -sdoserv.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/stdint.h -sdoserv.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/_types.h -sdoserv.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/machine/_types.h -sdoserv.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/machine/_stdint.h -sdoserv.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/_stdint.h -sdoserv.obj: ../esc.h -sdoserv.obj: ../objdef.h -sdoserv.obj: ../sdoserv.h -sdoserv.obj: ../ecatcoe.h -sdoserv.obj: ../mailbox.h - -../sdoserv.c: - -../ecat_def.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/stdlib.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_ti_config.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/linkage.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/cdefs.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/string.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/xlocale/_string.h: - -../f2838x_cm_system.h: - -../ecatslv.h: - -../esc.h: - -../f2838x_cm_hw.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/stdint.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_stdint40.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/stdint.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/_types.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/machine/_types.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/machine/_stdint.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/_stdint.h: - -../esc.h: - -../objdef.h: - -../sdoserv.h: - -../ecatcoe.h: - -../mailbox.h: - diff --git a/RAM/startup_cm.d b/RAM/startup_cm.d deleted file mode 100644 index eb73026..0000000 --- a/RAM/startup_cm.d +++ /dev/null @@ -1,36 +0,0 @@ -# FIXED - -startup_cm.obj: ../startup_cm.c -startup_cm.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/stdint.h -startup_cm.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_ti_config.h -startup_cm.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/linkage.h -startup_cm.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_stdint40.h -startup_cm.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/stdint.h -startup_cm.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/cdefs.h -startup_cm.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/_types.h -startup_cm.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/machine/_types.h -startup_cm.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/machine/_stdint.h -startup_cm.obj: C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/_stdint.h - -../startup_cm.c: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/stdint.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_ti_config.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/linkage.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/_stdint40.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/stdint.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/cdefs.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/_types.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/machine/_types.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/machine/_stdint.h: - -C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include/sys/_stdint.h: - diff --git a/RAM/subdir_rules.mk b/RAM/subdir_rules.mk index ccb0b73..79eafb8 100644 --- a/RAM/subdir_rules.mk +++ b/RAM/subdir_rules.mk @@ -5,6 +5,13 @@ SHELL = cmd.exe # Each subdirectory must supply rules for building sources it contributes +F2838x\ CM\ EtherCAT\ Slave.obj: ../F2838x\ CM\ EtherCAT\ Slave.c $(GEN_OPTS) | $(GEN_FILES) $(GEN_MISC_FILES) + @echo 'Building file: "$<"' + @echo 'Invoking: Arm Compiler' + "C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/bin/armcl" -mv7M4 --code_state=16 --float_support=none -me -O2 --include_path="C:/workspace_v12/f2838x_cm_cia402_solution" --include_path="C:/ti/c2000/C2000Ware_5_01_00_00/libraries/communications/Ethercat/f2838x/examples/f2838x_cm_cia402_solution" --include_path="C:/workspace_v12/f2838x_cm_cia402_solution/device" --include_path="C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm" --include_path="C:/ti/c2000/C2000Ware_5_01_00_00/device_support/f2838x/common/include" --include_path="C:/ti/c2000/C2000Ware_5_01_00_00/libraries/communications/Ethercat/f2838x/include" --include_path="C:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include" --define=ETHERCAT_STACK --define=RAM --diag_suppress=10063 --diag_warning=225 --diag_wrap=off --display_error_number --verbose_diagnostics --gen_func_subsections=on --embedded_constants=off --preproc_with_compile --preproc_dependency="F2838x CM EtherCAT Slave.d_raw" $(GEN_OPTS__FLAG) "$<" + @echo 'Finished building: "$<"' + @echo ' ' + %.obj: ../%.c $(GEN_OPTS) | $(GEN_FILES) $(GEN_MISC_FILES) @echo 'Building file: "$<"' @echo 'Invoking: Arm Compiler' diff --git a/RAM/subdir_vars.mk b/RAM/subdir_vars.mk index 5e19d13..b4c240b 100644 --- a/RAM/subdir_vars.mk +++ b/RAM/subdir_vars.mk @@ -12,87 +12,111 @@ LIB_SRCS += \ C:/ti/c2000/C2000Ware_5_01_00_00/driverlib/f2838x/driverlib_cm/ccs/Debug/driverlib_cm.lib C_SRCS += \ +../F2838x\ CM\ EtherCAT\ Slave.c \ ../cia402appl.c \ ../coeappl.c \ ../ecatappl.c \ ../ecatcoe.c \ +../ecatfoe.c \ ../ecatslv.c \ ../ethercat_slave_cm_hal.c \ ../f2838x_cm_hw.c \ ../f2838x_cm_system.c \ +../foeappl.c \ ../mailbox.c \ ../objdef.c \ ../sdoserv.c \ -../startup_cm.c +../startup_cm.c \ +../tiescfoe.c C_DEPS += \ +./F2838x\ CM\ EtherCAT\ Slave.d \ ./cia402appl.d \ ./coeappl.d \ ./ecatappl.d \ ./ecatcoe.d \ +./ecatfoe.d \ ./ecatslv.d \ ./ethercat_slave_cm_hal.d \ ./f2838x_cm_hw.d \ ./f2838x_cm_system.d \ +./foeappl.d \ ./mailbox.d \ ./objdef.d \ ./sdoserv.d \ -./startup_cm.d +./startup_cm.d \ +./tiescfoe.d OBJS += \ +./F2838x\ CM\ EtherCAT\ Slave.obj \ ./cia402appl.obj \ ./coeappl.obj \ ./ecatappl.obj \ ./ecatcoe.obj \ +./ecatfoe.obj \ ./ecatslv.obj \ ./ethercat_slave_cm_hal.obj \ ./f2838x_cm_hw.obj \ ./f2838x_cm_system.obj \ +./foeappl.obj \ ./mailbox.obj \ ./objdef.obj \ ./sdoserv.obj \ -./startup_cm.obj +./startup_cm.obj \ +./tiescfoe.obj OBJS__QUOTED += \ +"F2838x CM EtherCAT Slave.obj" \ "cia402appl.obj" \ "coeappl.obj" \ "ecatappl.obj" \ "ecatcoe.obj" \ +"ecatfoe.obj" \ "ecatslv.obj" \ "ethercat_slave_cm_hal.obj" \ "f2838x_cm_hw.obj" \ "f2838x_cm_system.obj" \ +"foeappl.obj" \ "mailbox.obj" \ "objdef.obj" \ "sdoserv.obj" \ -"startup_cm.obj" +"startup_cm.obj" \ +"tiescfoe.obj" C_DEPS__QUOTED += \ +"F2838x CM EtherCAT Slave.d" \ "cia402appl.d" \ "coeappl.d" \ "ecatappl.d" \ "ecatcoe.d" \ +"ecatfoe.d" \ "ecatslv.d" \ "ethercat_slave_cm_hal.d" \ "f2838x_cm_hw.d" \ "f2838x_cm_system.d" \ +"foeappl.d" \ "mailbox.d" \ "objdef.d" \ "sdoserv.d" \ -"startup_cm.d" +"startup_cm.d" \ +"tiescfoe.d" C_SRCS__QUOTED += \ +"../F2838x CM EtherCAT Slave.c" \ "../cia402appl.c" \ "../coeappl.c" \ "../ecatappl.c" \ "../ecatcoe.c" \ +"../ecatfoe.c" \ "../ecatslv.c" \ "../ethercat_slave_cm_hal.c" \ "../f2838x_cm_hw.c" \ "../f2838x_cm_system.c" \ +"../foeappl.c" \ "../mailbox.c" \ "../objdef.c" \ "../sdoserv.c" \ -"../startup_cm.c" +"../startup_cm.c" \ +"../tiescfoe.c" diff --git a/TMS320F28388D.ccxml b/TMS320F28388D.ccxml index b22c3f1..1e20d03 100644 --- a/TMS320F28388D.ccxml +++ b/TMS320F28388D.ccxml @@ -1,81 +1,107 @@ - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + diff --git a/applInterface.h b/applInterface.h index ede88f3..ca65371 100644 --- a/applInterface.h +++ b/applInterface.h @@ -1,6 +1,7 @@ /* * This source file is part of the EtherCAT Slave Stack Code licensed by Beckhoff Automation GmbH & Co KG, 33415 Verl, Germany. * The corresponding license agreement applies. This hint shall not be removed. +* https://www.beckhoff.com/media/downloads/slave-stack-code/ethercat_ssc_license.pdf */ /** @@ -13,8 +14,10 @@ \author EthercatSSC@beckhoff.com \brief Definition of the application interface functions -\version 5.12 +\version 5.13 +
Changes to version V5.12:
+V5.13 COE4: update default entry name handling in case of 16Bit characters, add CoE Read/write indication functions

Changes to version V5.11:
V5.12 APPL1: add optional application function called from the main loop (after mbx and esm are executed)
V5.12 EEPROM3: implement a store EEPROM timeout handler
@@ -42,9 +45,12 @@ V5.10.1 : Start file change log #include "objdef.h" #include "ecatappl.h" +/*ET9300 Project Handler :(#if DIAGNOSIS_SUPPORTED) lines 49 to 51 deleted*/ +/*ET9300 Project Handler :(#if EOE_SUPPORTED) lines 54 to 56 deleted*/ +#include "foeappl.h" #endif /*#ifndef _APPL_INTERFACE_H_*/ @@ -60,18 +66,159 @@ V5.10.1 : Start file change log ------ -----------------------------------------------------------------------------------------*/ +/*ET9300 Project Handler :(#if ESC_EEPROM_EMULATION) lines 76 to 122 deleted*/ + + +/*ET9300 Project Handler :(#if EOE_SUPPORTED) lines 125 to 152 deleted*/ +///////////////////////////////////////////////////////////////////////////////////////// +/** +\param pName Pointer to the name of the file (the pointer is null if the function is called due to a previous busy state) +\param nameSize Length of the file name (the value is 0 if the function is called due to a previous busy state) +\param password Password for the file read (the value is 0 if the function is called due to a previous busy state) +\param maxBlockSize Maximum size of a data block (copied to pData) +\param pData Destination pointer for the first FoE fragment + -/*ECATCHANGE_START(V5.12) APPL1*/ +\return block size: + < FOE_MAXBUSY-101 (0x7F95) + busy: + FOE_MAXBUSY-100 (0%) (0x7FFA - 0x64) + ... + FOE_MAXBUSY (100%) (0x7FFA) + error: + ECAT_FOE_ERRCODE_NOTDEFINED (0x8000) + ECAT_FOE_ERRCODE_NOTFOUND (0x8001) + ECAT_FOE_ERRCODE_ACCESS (0x8002) + ECAT_FOE_ERRCODE_DISKFULL (0x8003) + ECAT_FOE_ERRCODE_ILLEGAL (0x8004) + ECAT_FOE_ERRCODE_EXISTS (0x8006) + ECAT_FOE_ERRCODE_NOUSER (0x8007) + +\brief The function is called when a file read request was received. The Foe fragments shall always have the length of "maxBlockSize" till the last file fragment. +\brief In case that the file size is a multiple of "maxBlockSize" 0 shall be returned after the last fragment. +\brief The function pointer is reset in MainInit() so it shall be set afterwards +*//////////////////////////////////////////////////////////////////////////////////////// +PROTO UINT16 (*pAPPL_FoeRead)(UINT16 MBXMEM * pName, UINT16 nameSize, UINT32 password, UINT16 maxBlockSize, UINT16 *pData); + + +///////////////////////////////////////////////////////////////////////////////////////// +/** +\param offset File offset which shall be transmitted next +\param maxBlockSize Maximum size of a data block (copied to pData) +\param pData Destination pointer for the next foe fragment + + + +\return block size: + < FOE_MAXBUSY-101 (0x7F95) + busy: + FOE_MAXBUSY-100 (0%) (0x7FFA - 0x64) + ... + FOE_MAXBUSY (100%) (0x7FFA) + error: + ECAT_FOE_ERRCODE_NOTDEFINED (0x8000) + ECAT_FOE_ERRCODE_NOTFOUND (0x8001) + ECAT_FOE_ERRCODE_ACCESS (0x8002) + ECAT_FOE_ERRCODE_DISKFULL (0x8003) + ECAT_FOE_ERRCODE_ILLEGAL (0x8004) + ECAT_FOE_ERRCODE_EXISTS (0x8006) + ECAT_FOE_ERRCODE_NOUSER (0x8007) + +\brief The function is called to transmit FoE read data 2 .. n (the slave received an acknowledge on a previous accepted file read request). The Foe fragments shall always have the length of "maxBlockSize" till the last file fragment. +\brief In case that the file size is a multiple of "maxBlockSize" 0 shall be returned after the last fragment. +\brief The function pointer is reset in MainInit() so it shall be set afterwards +*//////////////////////////////////////////////////////////////////////////////////////// +PROTO UINT16(*pAPPL_FoeReadData)(UINT32 offset, UINT16 maxBlockSize, UINT16 *pData); + + +///////////////////////////////////////////////////////////////////////////////////////// +/** +\param errorCode Error code send by the EtherCAT master + + +\brief The function is called when the master has send an FoE Abort. +\brief The function pointer is reset in MainInit() so it shall be set afterwards +*//////////////////////////////////////////////////////////////////////////////////////// +PROTO void(*pAPPL_FoeError)(UINT32 errorCode); + + + +///////////////////////////////////////////////////////////////////////////////////////// +/** +\param pName Pointer to the name of the file +\param nameSize Length of the file name +\param password Password for the file read + +\return okay, or an error code + 0 (okay) + ECAT_FOE_ERRCODE_NOTDEFINED (0x8000) + ECAT_FOE_ERRCODE_NOTFOUND (0x8001) + ECAT_FOE_ERRCODE_ACCESS (0x8002) + ECAT_FOE_ERRCODE_DISKFULL (0x8003) + ECAT_FOE_ERRCODE_ILLEGAL (0x8004) + ECAT_FOE_ERRCODE_EXISTS (0x8006) + ECAT_FOE_ERRCODE_NOUSER (0x8007) + +\brief This function is called on a received FoE write request. +\brief (no busy response shall be returned by this function. If the slave requires some time to handle the incoming data the function pAPPL_FoeData() shall return a busy) +\brief The function pointer is reset in MainInit() so it shall be set afterwards +*//////////////////////////////////////////////////////////////////////////////////////// +PROTO UINT16 (*pAPPL_FoeWrite)(UINT16 MBXMEM * pName, UINT16 nameSize, UINT32 password); + + +///////////////////////////////////////////////////////////////////////////////////////// +/** +\param pData Received file data +\param Size Length of received file data +\param bDataFollowing TRUE if more FoE Data requests are following + +\return okay, busy or an error code + 0 (okay) + FOE_MAXBUSY-100 (0%) (0x7FFa - 100) + FOE_MAXBUSY (100%) (0x7FFA) + ECAT_FOE_ERRCODE_NOTDEFINED (0x8000) + ECAT_FOE_ERRCODE_ACCESS (0x8002) + ECAT_FOE_ERRCODE_DISKFULL (0x8003) + ECAT_FOE_ERRCODE_ILLEGAL (0x8004) + ECAT_FOE_ERRCODE_NOUSER (0x8007) + +\brief This function is called on a FoE Data request +\brief The function pointer is reset in MainInit() so it shall be set afterwards +*//////////////////////////////////////////////////////////////////////////////////////// +PROTO UINT16(*pAPPL_FoeWriteData)(UINT16 MBXMEM * pData, UINT16 Size, BOOL bDataFollowing); + +/* ECATCHANGE_START(V5.13) COE4*/ +///////////////////////////////////////////////////////////////////////////////////////// +/** +\param Index Index of the object to be read +\param Subindex Subindex of the object entry to be read +\param CompleteAccess Indicates if the object is read with complete access + +\brief The function is called before an object/entry is read +*//////////////////////////////////////////////////////////////////////////////////////// +PROTO void(*pAPPL_CoeReadInd)(UINT16 Index, UINT8 Subindex, BOOL CompleteAccess); + +///////////////////////////////////////////////////////////////////////////////////////// +/** +\param Index Index of the object which was written +\param Subindex Subindex of the object entry which was written +\param CompleteAccess Indicates if the object was written with complete access + +\brief The function is called after an object/entry was successfully written +*//////////////////////////////////////////////////////////////////////////////////////// +PROTO void(*pAPPL_CoeWriteInd)(UINT16 Index, UINT8 Subindex, BOOL CompleteAccess); + +/* ECATCHANGE_END(V5.13) COE4*/ ///////////////////////////////////////////////////////////////////////////////////////// /** \brief This function is called by the SSC from the main loop +\brief The function pointer is reset in MainInit() so it shall be set afterwards *//////////////////////////////////////////////////////////////////////////////////////// PROTO void(*pAPPL_MainLoop)(); -/*ECATCHANGE_END(V5.12) APPL1*/ /*----------------------------------------------------------------------------------------- ------ @@ -114,5 +261,6 @@ PROTO void MainLoop(void); PROTO void ECAT_StateChange(UINT8 alStatus, UINT16 alStatusCode); +/*ET9300 Project Handler :(#if EOE_SUPPORTED) lines 348 to 361 deleted*/ #undef PROTO diff --git a/cia402appl.c b/cia402appl.c index 335f4d7..effaa02 100644 --- a/cia402appl.c +++ b/cia402appl.c @@ -1,6 +1,7 @@ /* * This source file is part of the EtherCAT Slave Stack Code licensed by Beckhoff Automation GmbH & Co KG, 33415 Verl, Germany. * The corresponding license agreement applies. This hint shall not be removed. +* https://www.beckhoff.com/media/downloads/slave-stack-code/ethercat_ssc_license.pdf */ /** @@ -14,8 +15,11 @@ \brief Implementation This file contains all ciA402 specific functions -\version 5.12 +\version 5.13 +
Changes to version V5.12:
+V5.13 CIA402 2: write profile info to 0xF010.x bit15-0 (was bit16-31 before)
+V5.13 CIA402 3: change define "CIA402_DEVICE" to "CiA402_SAMPLE_APPLICATION"

Changes to version V5.11:
V5.12 COE3: update entry access right handling

Changes to version V5.10:
@@ -45,6 +49,8 @@ V4.30 : create file (state machine; handling state transition options; input fee -----------------------------------------------------------------------------------------*/ #include "ecat_def.h" +/*ECATCHANGE_START(V5.13) CIA402 3*/ +/*ECATCHANGE_END(V5.13) CIA402 3*/ #include "applInterface.h" @@ -55,6 +61,7 @@ V4.30 : create file (state machine; handling state transition options; input fee #include "cia402appl.h" #undef _CiA402_ +//#include /*-------------------------------------------------------------------------------------- ------ @@ -809,23 +816,9 @@ UINT8 Write0xF030( UINT16 index, UINT8 subindex, UINT32 dataSize, UINT16 MBXMEM UINT16 i = subindex; UINT16 maxSubindex = sConfiguredModuleIdentList.u16SubIndex0; OBJCONST TSDOINFOENTRYDESC OBJMEM *pEntry; - /* lastSubindex is used for complete access to make loop over the requested entries - to be read, we initialize this variable with the requested subindex that only - one loop will be done for a single access */ - UINT8 lastSubindex = subindex; +/*ET9300 Project Handler :(#if COMPLETE_ACCESS_SUPPORTED) lines 818 to 823 deleted*/ - if ( bCompleteAccess ) - { - if ( subindex == 0 ) - { - /* we change the subindex 0 */ - maxSubindex = (UINT8) pData[0]; - } - - /* we write until the maximum subindex */ - lastSubindex = (UINT8)maxSubindex; - } - else +/*ET9300 Project Handler :(#if COMPLETE_ACCESS_SUPPORTED) lines 825 to 838 deleted*/ if (subindex > maxSubindex) { /* the maximum subindex is reached */ @@ -841,9 +834,7 @@ UINT8 Write0xF030( UINT16 index, UINT8 subindex, UINT32 dataSize, UINT16 MBXMEM /* check if we have write access (bits 3-5 (PREOP, SAFEOP, OP) of ObjAccess) by comparing with the actual state (bits 1-3 (PREOP, SAFEOP, OP) of AL Status) */ -/*ECATCHANGE_START(V5.12) COE3*/ if (0 == (((UINT8) ((pEntry->ObjAccess & ACCESS_WRITE) >> 2)) & (nAlStatus & STATE_MASK) )) -/*ECATCHANGE_END(V5.12) COE3*/ { /* we don't have write access */ if ( (pEntry->ObjAccess & ACCESS_WRITE) == 0 ) @@ -860,7 +851,7 @@ UINT8 Write0xF030( UINT16 index, UINT8 subindex, UINT32 dataSize, UINT16 MBXMEM } /* we use the standard write function */ - for (i = subindex; i <= lastSubindex; i++) +/*ET9300 Project Handler :(#if COMPLETE_ACCESS_SUPPORTED) lines 871 to 873 deleted*/ { /* we have to copy the entry */ if (i == 0) @@ -882,6 +873,7 @@ UINT8 Write0xF030( UINT16 index, UINT8 subindex, UINT32 dataSize, UINT16 MBXMEM UINT32 CurValue = sConfiguredModuleIdentList.aEntries[(i-1)]; UINT16 MBXMEM *pVarPtr = (UINT16 MBXMEM *) &sConfiguredModuleIdentList.aEntries[(i-1)]; +/*ET9300 Project Handler :(#if BIG_ENDIAN_16BIT || BIG_ENDIAN_FORMAT) lines 895 to 898 deleted*/ pVarPtr[0] = pData[0]; pVarPtr[1] = pData[1]; pData += 2; @@ -926,7 +918,9 @@ UINT8 Write0xF030( UINT16 index, UINT8 subindex, UINT32 dataSize, UINT16 MBXMEM for (cnt = 0 ; cnt < sConfiguredModuleIdentList.u16SubIndex0; cnt++) { /*all Modules have the same profile number*/ - sModuleProfileInfo.aEntries[cnt] = DEVICE_PROFILE_TYPE; +/*ECATCHANGE_START(V5.13) CIA402 2*/ + sModuleProfileInfo.aEntries[cnt] = (DEVICE_PROFILE_TYPE >> 16); +/*ECATCHANGE_END(V5.13) CIA402 2*/ switch(sConfiguredModuleIdentList.aEntries[cnt]) { @@ -955,56 +949,6 @@ UINT8 Write0xF030( UINT16 index, UINT8 subindex, UINT32 dataSize, UINT16 MBXMEM return 0; } -/*----------------------------------------------------------------------------------------- ------- ------- generic functions ------- ------------------------------------------------------------------------------------------*/ -///////////////////////////////////////////////////////////////////////////////////////// -/** - \brief The function is called when an error state was acknowledged by the master - -*//////////////////////////////////////////////////////////////////////////////////////// - -void APPL_AckErrorInd(UINT16 stateTrans) -{ -} - -///////////////////////////////////////////////////////////////////////////////////////// -/** - \return AL Status Code (see ecatslv.h ALSTATUSCODE_....) - - \brief The function is called in the state transition from INIT to PREOP when - all general settings were checked to start the mailbox handler. This function - informs the application about the state transition, the application can refuse - the state transition when returning an AL Status error code. - The return code NOERROR_INWORK can be used, if the application cannot confirm - the state transition immediately, in that case the application need to be complete - the transition by calling ECAT_StateChange. - -*//////////////////////////////////////////////////////////////////////////////////////// - -UINT16 APPL_StartMailboxHandler(void) -{ - return ALSTATUSCODE_NOERROR; -} - -///////////////////////////////////////////////////////////////////////////////////////// -/** - \return 0, NOERROR_INWORK - - \brief The function is called in the state transition from PREEOP to INIT - to stop the mailbox handler. This functions informs the application - about the state transition, the application cannot refuse - the state transition. - -*//////////////////////////////////////////////////////////////////////////////////////// - -UINT16 APPL_StopMailboxHandler(void) -{ - return ALSTATUSCODE_NOERROR; -} - ///////////////////////////////////////////////////////////////////////////////////////// /** \param pIntMask pointer to the AL Event Mask which will be written to the AL event Mask @@ -1041,7 +985,9 @@ UINT16 APPL_StartInputHandler(UINT16 *pIntMask) for (cnt = 0 ; cnt < sRxPDOassign.u16SubIndex0; cnt++) { /*all Modules have the same profile number*/ - sModuleProfileInfo.aEntries[cnt] = DEVICE_PROFILE_TYPE; +/*ECATCHANGE_START(V5.13) CIA402 2*/ + sModuleProfileInfo.aEntries[cnt] = (DEVICE_PROFILE_TYPE >> 16); +/*ECATCHANGE_END(V5.13) CIA402 2*/ switch((sRxPDOassign.aEntries[cnt] & 0x000F)) //get only identification of the PDO mapping object { @@ -1077,6 +1023,7 @@ UINT16 APPL_StartInputHandler(UINT16 *pIntMask) } } } +/*ET9300 Project Handler :(#if DIAGNOSIS_SUPPORTED) lines 1099 to 1105 deleted*/ return ALSTATUSCODE_NOERROR; } @@ -1156,7 +1103,7 @@ UINT16 APPL_GenerateMapping(UINT16* pInputSize,UINT16* pOutputSize) return ALSTATUSCODE_NOVALIDOUTPUTS; } - /** Update object dictionary according to activated axis + /*Update object dictionary according to activated axis which axes are activated is calculated by object 0x1C12*/ for(PDOAssignEntryCnt = 0; PDOAssignEntryCnt < sRxPDOassign.u16SubIndex0; PDOAssignEntryCnt++) { @@ -1432,16 +1379,9 @@ void APPL_Application(void) } } -///////////////////////////////////////////////////////////////////////////////////////// -/** - \return The Explicit Device ID of the EtherCAT slave +/*ET9300 Project Handler :(#if EXPLICIT_DEVICE_ID) lines 1461 to 1472 deleted*/ - \brief Calculate the Explicit Device ID -*//////////////////////////////////////////////////////////////////////////////////////// -UINT16 APPL_GetDeviceID(void) -{ - return 0x0005; -} +/*ET9300 Project Handler :(#if USE_DEFAULT_MAIN) lines 1474 to 1505 deleted*/ ///////////////////////////////////////////////////////////////////////////////////////// /** @@ -1454,6 +1394,8 @@ int main(void) /* initialize the Hardware and the EtherCAT Slave Controller */ HW_Init(); + DebugP_log((char*)"--\n"); + MainInit(); /*Initialize Axes structures*/ @@ -1464,7 +1406,7 @@ int main(void) bRunApplication = TRUE; do { - MainLoop(); +// MainLoop(); } while (bRunApplication == TRUE); diff --git a/cia402appl.h b/cia402appl.h index e0e4a55..5f7bba8 100644 --- a/cia402appl.h +++ b/cia402appl.h @@ -1,6 +1,7 @@ /* * This source file is part of the EtherCAT Slave Stack Code licensed by Beckhoff Automation GmbH & Co KG, 33415 Verl, Germany. * The corresponding license agreement applies. This hint shall not be removed. +* https://www.beckhoff.com/media/downloads/slave-stack-code/ethercat_ssc_license.pdf */ /** @@ -13,8 +14,10 @@ \author EthercatSSC@beckhoff.com \brief CiA402 specific defines; objects; Axes structure -\version 5.12 +\version 5.13 +
Changes to version V5.12:
+V5.13 CIA402 1: update names and pdo mapping flags according ETG.6010

Changes to version V5.11:
V5.12 CIA402 1: change define value STATUSWORD_STATE_SWITCHEDONDISABLED
V5.12 CIA402 2: update control word mask for transition 3 (Ready to switch on to Switched on)
@@ -45,9 +48,7 @@ V5.01 : Start file change log - ControlWord Commands Mask (IEC61800_184e) -----------------------------------------------*/ #define CONTROLWORD_COMMAND_SHUTDOWN_MASK 0x0087 /**< \brief Shutdown command mask*/ -/*ECATCHANGE_START(V5.12) CIA402 2*/ #define CONTROLWORD_COMMAND_SWITCHON_MASK 0x008F /**< \brief Switch on command mask*/ -/*ECATCHANGE_END(V5.12) CIA402 2*/ #define CONTROLWORD_COMMAND_SWITCHON_ENABLEOPERATION_MASK 0x008F /**< \brief Switch on & Enable command mask*/ #define CONTROLWORD_COMMAND_DISABLEVOLTAGE_MASK 0x0082 /**< \brief Disable voltage command mask*/ #define CONTROLWORD_COMMAND_QUICKSTOP_MASK 0x0086 /**< \brief Quickstop command mask*/ @@ -87,9 +88,7 @@ V5.01 : Start file change log - StatusWord -----------------------------------------------*/ #define STATUSWORD_STATE_NOTREADYTOSWITCHON 0x0000 /**< \brief Not ready to switch on*/ -/* ECATCHANGE_START(V5.12) CIA402 1*/ #define STATUSWORD_STATE_SWITCHEDONDISABLED 0x0040 /**< \brief Switched on but disabled*/ -/* ECATCHANGE_END(V5.12) CIA402 1*/ #define STATUSWORD_STATE_READYTOSWITCHON 0x0021 /**< \brief Ready to switch on*/ #define STATUSWORD_STATE_SWITCHEDON 0x0023 /**< \brief Switched on*/ #define STATUSWORD_STATE_OPERATIONENABLED 0x0027 /**< \brief Operation enabled*/ @@ -327,6 +326,7 @@ V5.01 : Start file change log #define MAX_AXES 2 /**< \brief Number of supported axes*/ +/*ET9300 Project Handler :(#if FC1100_HW) lines 329 to 331 deleted*/ /*--------------------------------------------- @@ -358,9 +358,7 @@ TOBJ1600; /** \brief 0x1601 (csp RxPDO) data structure*/ typedef struct OBJ_STRUCT_PACKED_START { UINT16 u16SubIndex0; /**< \brief SubIndex 0*/ -/*ECATCHANGE_START(V5.12) CiA402 3*/ UINT32 aEntries[3]; /**< \brief Entry buffer*/ -/*ECATCHANGE_END(V5.12) CiA402 3*/ } OBJ_STRUCT_PACKED_END TOBJ1601; @@ -368,9 +366,7 @@ TOBJ1601; /** \brief 0x1602 (csv RxPDO) data structure*/ typedef struct OBJ_STRUCT_PACKED_START { UINT16 u16SubIndex0; /**< \brief SubIndex 0*/ -/*ECATCHANGE_START(V5.12) CiA402 3*/ UINT32 aEntries[3]; /**< \brief Entry buffer*/ -/*ECATCHANGE_END(V5.12) CiA402 3*/ } OBJ_STRUCT_PACKED_END TOBJ1602; @@ -386,9 +382,7 @@ TOBJ1A00; /** \brief 0x1A01 (csp TxPDO) data structure*/ typedef struct OBJ_STRUCT_PACKED_START { UINT16 u16SubIndex0; /**< \brief SubIndex 0*/ -/*ECATCHANGE_START(V5.12) CiA402 3*/ UINT32 aEntries[3]; /**< \brief Entry buffer*/ -/*ECATCHANGE_END(V5.12) CiA402 3*/ } OBJ_STRUCT_PACKED_END TOBJ1A01; @@ -396,9 +390,7 @@ TOBJ1A01; /** \brief 0x1A02 (csv TxPDO) data structure*/ typedef struct OBJ_STRUCT_PACKED_START { UINT16 u16SubIndex0; /**< \brief SubIndex 0*/ -/*ECATCHANGE_START(V5.12) CiA402 3*/ UINT32 aEntries[3]; /**< \brief Entry buffer*/ -/*ECATCHANGE_END(V5.12) CiA402 3*/ } OBJ_STRUCT_PACKED_END TOBJ1A02; /** @}*/ @@ -527,9 +519,7 @@ typedef struct STRUCT_PACKED_START { UINT16 ObjStatusWord; /**< \brief Status word (0x6041)*/ INT32 ObjPositionActualValue; /**< \brief Actual position (0x6064)*/ -/*ECATCHANGE_START(V5.12) CiA402 3*/ UINT16 Padding16Bit; /**< \brief 16bit padding*/ -/*ECATCHANGE_END(V5.12) CiA402 3*/ }STRUCT_PACKED_END TCiA402PDO1A01; @@ -539,9 +529,7 @@ typedef struct STRUCT_PACKED_START { UINT16 ObjStatusWord; /**< \brief Status word (0x6041)*/ INT32 ObjPositionActualValue; /**< \brief Actual position (0x6064)*/ -/*ECATCHANGE_START(V5.12) CiA402 3*/ UINT16 Padding16Bit; /**< \brief 16bit padding*/ -/*ECATCHANGE_END(V5.12) CiA402 3*/ }STRUCT_PACKED_END TCiA402PDO1A02; @@ -562,9 +550,7 @@ typedef struct STRUCT_PACKED_START { UINT16 ObjControlWord; /**< \brief Control word (0x6040)*/ INT32 ObjTargetPosition; /**< \brief Target position (0x607A)*/ -/*ECATCHANGE_START(V5.12) CiA402 3*/ UINT16 Padding16Bit; /**< \brief 16bit padding*/ -/*ECATCHANGE_END(V5.12) CiA402 3*/ }STRUCT_PACKED_END TCiA402PDO1601; @@ -574,14 +560,13 @@ typedef struct STRUCT_PACKED_START { UINT16 ObjControlWord; /**< \brief Control word (0x6040)*/ INT32 ObjTargetVelocity; /**< \brief Target velocity (0x60FF)*/ -/*ECATCHANGE_START(V5.12) CiA402 3*/ UINT16 Padding16Bit; /**< \brief 16bit padding*/ -/*ECATCHANGE_END(V5.12) CiA402 3*/ }STRUCT_PACKED_END TCiA402PDO1602; /** @}*/ +/*ET9300 Project Handler :(#if FC1100_HW) lines 573 to 575 deleted*/ /** * \addtogroup CiA402Objects CiA402 Axis Objects @@ -720,9 +705,7 @@ OBJCONST UCHAR OBJMEM aName0x1600[] = "csp/csv RxPDO\000\377"; OBJCONST TSDOINFOENTRYDESC OBJMEM asEntryDesc0x1601[] = { {DEFTYPE_UNSIGNED8, 0x8, ACCESS_READ }, /* Subindex 000 */ {DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ}, /* SubIndex 001*/ -/*ECATCHANGE_START(V5.12) CiA402 3*/ { DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ }, /* SubIndex 002*/ -/*ECATCHANGE_END(V5.12) CiA402 3*/ {DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ}}; /* SubIndex 003*/ @@ -740,9 +723,7 @@ OBJCONST UCHAR OBJMEM aName0x1601[] = "csp RxPDO\000\377"; OBJCONST TSDOINFOENTRYDESC OBJMEM asEntryDesc0x1602[] = { {DEFTYPE_UNSIGNED8, 0x8, ACCESS_READ }, /* Subindex 000 */ {DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ}, /* SubIndex 001*/ -/*ECATCHANGE_START(V5.12) CiA402 3*/ { DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ }, /* SubIndex 002*/ -/*ECATCHANGE_END(V5.12) CiA402 3*/ {DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ}}; /* SubIndex 003*/ @@ -781,9 +762,7 @@ OBJCONST UCHAR OBJMEM aName0x1A00[] = "csp/csv TxPDO\000\377"; OBJCONST TSDOINFOENTRYDESC OBJMEM asEntryDesc0x1A01[] = { {DEFTYPE_UNSIGNED8, 0x8, ACCESS_READ }, /* Subindex 000 */ {DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ}, /* SubIndex 001*/ -/*ECATCHANGE_START(V5.12) CiA402 3*/ { DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ }, /* SubIndex 002*/ -/*ECATCHANGE_END(V5.12) CiA402 3*/ {DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ}}; /* SubIndex 003 */ @@ -802,9 +781,7 @@ OBJCONST UCHAR OBJMEM aName0x1A01[] = "csp TxPDO\000\377"; OBJCONST TSDOINFOENTRYDESC OBJMEM asEntryDesc0x1A02[] = { {DEFTYPE_UNSIGNED8, 0x8, ACCESS_READ }, /* Subindex 000 */ {DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ}, /* SubIndex 001*/ -/*ECATCHANGE_START(V5.12) CiA402 3*/ { DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ }, /* SubIndex 002*/ -/*ECATCHANGE_END(V5.12) CiA402 3*/ {DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ}}; /* SubIndex 003*/ @@ -822,9 +799,10 @@ OBJCONST UCHAR OBJMEM aName0x1A02[] = "csv TxPDO\000\377"; * \addtogroup CiA402Objects CiA402 Axis Objects * @{ */ + /*ECATCHANGE_START(V5.13) CIA402 1*/ /** \brief Object 0x603F (Error Code) entry description*/ -OBJCONST TSDOINFOENTRYDESC OBJMEM sEntryDesc0x603F = {DEFTYPE_UNSIGNED16, 0x10, ACCESS_READ}; +OBJCONST TSDOINFOENTRYDESC OBJMEM sEntryDesc0x603F = {DEFTYPE_UNSIGNED16, 0x10, (ACCESS_READ | OBJACCESS_TXPDOMAPPING) }; /** \brief Object 0x603F (Error Code) object name*/ OBJCONST UCHAR OBJMEM aName0x603F[] = "Error Code"; @@ -845,7 +823,7 @@ OBJCONST UCHAR OBJMEM aName0x6041[] = "Status Word"; OBJCONST TSDOINFOENTRYDESC OBJMEM sEntryDesc0x605A = {DEFTYPE_INTEGER16, 0x10, ACCESS_READWRITE}; /** \brief Object 0x605A (Quickstop Option Code) object name*/ -OBJCONST UCHAR OBJMEM aName0x605A[] = "Quickstop Option Code"; +OBJCONST UCHAR OBJMEM aName0x605A[] = "Quick stop option code"; /** \brief Object 0x605B (Shutdown Option Code) entry description*/ OBJCONST TSDOINFOENTRYDESC OBJMEM sEntryDesc0x605B = {DEFTYPE_INTEGER16, 0x10, ACCESS_READWRITE}; @@ -864,7 +842,7 @@ OBJCONST UCHAR OBJMEM aName0x605C[] = "Disable Operation Option Code"; OBJCONST TSDOINFOENTRYDESC OBJMEM sEntryDesc0x605E = {DEFTYPE_INTEGER16, 0x10, ACCESS_READWRITE}; /** \brief Object 0x605E (Fault Reaction Code) object name*/ -OBJCONST UCHAR OBJMEM aName0x605E[] = "Fault Reaction Code"; +OBJCONST UCHAR OBJMEM aName0x605E[] = "Fault reaction option code"; /** \brief Object 0x6060 (Modes of Operation) entry description*/ OBJCONST TSDOINFOENTRYDESC OBJMEM sEntryDesc0x6060 = {DEFTYPE_INTEGER8, 0x08, (ACCESS_READWRITE|OBJACCESS_RXPDOMAPPING)}; @@ -873,31 +851,31 @@ OBJCONST TSDOINFOENTRYDESC OBJMEM sEntryDesc0x6060 = {DEFTYPE_INTEGER8, 0x08, OBJCONST UCHAR OBJMEM aName0x6060[] = "Modes of Operation"; /** \brief Object 0x6061 (Modes of Operation Display) entry description*/ -OBJCONST TSDOINFOENTRYDESC OBJMEM sEntryDesc0x6061 = {DEFTYPE_INTEGER8, 0x08, (ACCESS_READ|OBJACCESS_TXPDOMAPPING)}; +OBJCONST TSDOINFOENTRYDESC OBJMEM sEntryDesc0x6061 = {DEFTYPE_INTEGER8, 0x08, (ACCESS_READ | OBJACCESS_TXPDOMAPPING)}; /** \brief Object 0x6061 (Modes of Operation Display) object name*/ OBJCONST UCHAR OBJMEM aName0x6061[] = "Modes of Operation Display"; /** \brief Object 0x6064 (Position Actual Value) entry description*/ -OBJCONST TSDOINFOENTRYDESC OBJMEM sEntryDesc0x6064 = {DEFTYPE_INTEGER32, 0x20, (ACCESS_READ|OBJACCESS_TXPDOMAPPING)}; +OBJCONST TSDOINFOENTRYDESC OBJMEM sEntryDesc0x6064 = {DEFTYPE_INTEGER32, 0x20, (ACCESS_READ | OBJACCESS_TXPDOMAPPING)}; /** \brief Object 0x6064 (Position Actual Value) object name*/ OBJCONST UCHAR OBJMEM aName0x6064[] = "Position Actual Value"; /** \brief Object 0x606C (Velocity Actual Value) entry description*/ -OBJCONST TSDOINFOENTRYDESC OBJMEM sEntryDesc0x606C = {DEFTYPE_INTEGER32, 0x20, (ACCESS_READ|OBJACCESS_TXPDOMAPPING)}; +OBJCONST TSDOINFOENTRYDESC OBJMEM sEntryDesc0x606C = {DEFTYPE_INTEGER32, 0x20, (ACCESS_READ | OBJACCESS_TXPDOMAPPING)}; /** \brief Object 0x606C (Velocity Actual Value) object name*/ OBJCONST UCHAR OBJMEM aName0x606C[] = "Velocity Actual Value"; /** \brief Object 0x6077 (Torque Actual Value) entry description*/ -OBJCONST TSDOINFOENTRYDESC OBJMEM sEntryDesc0x6077 = {DEFTYPE_INTEGER16, 0x10, ACCESS_READ}; +OBJCONST TSDOINFOENTRYDESC OBJMEM sEntryDesc0x6077 = {DEFTYPE_INTEGER16, 0x10, (ACCESS_READ | OBJACCESS_TXPDOMAPPING) }; /** \brief Object 0x6077 (Torque Actual Value) object name*/ OBJCONST UCHAR OBJMEM aName0x6077[] = "Torque Actual Value"; /** \brief Object 0x607A (Target Position) entry description*/ -OBJCONST TSDOINFOENTRYDESC OBJMEM sEntryDesc0x607A = {DEFTYPE_INTEGER32, 0x20, (ACCESS_READWRITE|OBJACCESS_RXPDOMAPPING)}; +OBJCONST TSDOINFOENTRYDESC OBJMEM sEntryDesc0x607A = {DEFTYPE_INTEGER32, 0x20, (ACCESS_READWRITE | OBJACCESS_RXPDOMAPPING)}; /** \brief Object 0x607A (Target Position) object name*/ OBJCONST UCHAR OBJMEM aName0x607A[] = "Target Position"; @@ -911,8 +889,8 @@ OBJCONST UCHAR OBJMEM aName0x607A[] = "Target Position"; */ OBJCONST TSDOINFOENTRYDESC OBJMEM asEntryDesc0x607D[] = { {DEFTYPE_UNSIGNED8, 0x08, ACCESS_READ}, - {DEFTYPE_INTEGER32, 0x20, ACCESS_READWRITE}, - {DEFTYPE_INTEGER32, 0x20, ACCESS_READWRITE}}; + {DEFTYPE_INTEGER32, 0x20, (ACCESS_READWRITE | OBJACCESS_RXPDOMAPPING)}, + {DEFTYPE_INTEGER32, 0x20, (ACCESS_READWRITE | OBJACCESS_RXPDOMAPPING)}}; /** \brief Object 0x607D (Software Position Limit) object and entry names*/ @@ -920,10 +898,10 @@ OBJCONST UCHAR OBJMEM aName0x607D[] = "Software Position Limit\000Min position l /** \brief Object 0x6085 (Quickstop Declaration) entry description*/ -OBJCONST TSDOINFOENTRYDESC OBJMEM sEntryDesc0x6085 = {DEFTYPE_INTEGER32, 0x20, ACCESS_READWRITE}; +OBJCONST TSDOINFOENTRYDESC OBJMEM sEntryDesc0x6085 = {DEFTYPE_INTEGER32, 0x20, (ACCESS_READWRITE | OBJACCESS_RXPDOMAPPING)}; /** \brief Object 0x6085 (Quickstop Declaration) object name*/ -OBJCONST UCHAR OBJMEM aName0x6085[] = "Quickstop Declaration"; +OBJCONST UCHAR OBJMEM aName0x6085[] = "Quick stop deceleration"; /** @@ -935,23 +913,24 @@ OBJCONST UCHAR OBJMEM aName0x6085[] = "Quickstop Declaration"; */ OBJCONST TSDOINFOENTRYDESC OBJMEM asEntryDesc0x60C2[] = { {DEFTYPE_UNSIGNED8, 0x08, ACCESS_READ}, - {DEFTYPE_UNSIGNED8, 0x08, ACCESS_READWRITE}, - {DEFTYPE_INTEGER8, 0x08, ACCESS_READWRITE}}; + {DEFTYPE_UNSIGNED8, 0x08, (ACCESS_READWRITE | OBJACCESS_RXPDOMAPPING)}, + {DEFTYPE_INTEGER8, 0x08, (ACCESS_READWRITE | OBJACCESS_RXPDOMAPPING)}}; /** \brief Object 0x60C2 (Interpolation Time Period) object and entry names*/ -OBJCONST UCHAR OBJMEM aName0x60C2[] = "Interpolation Time Period\000Interpolation period \000Interpolation Index\000\377"; +OBJCONST UCHAR OBJMEM aName0x60C2[] = "Interpolation Time Period\000Interpolation time period value\000Interpolation time index\000\377"; /** \brief Object 0x60FF (Target Velocity) entry description*/ -OBJCONST TSDOINFOENTRYDESC OBJMEM sEntryDesc0x60FF = {DEFTYPE_INTEGER32, 0x20, (ACCESS_READWRITE|OBJACCESS_RXPDOMAPPING)}; +OBJCONST TSDOINFOENTRYDESC OBJMEM sEntryDesc0x60FF = {DEFTYPE_INTEGER32, 0x20, (ACCESS_READWRITE | OBJACCESS_RXPDOMAPPING)}; /** \brief Object 0x60FF (Target Velocity) object name*/ OBJCONST UCHAR OBJMEM aName0x60FF[] = "Target Velocity"; /** \brief Object 0x6502 (Supported Drive Modes) entry description*/ -OBJCONST TSDOINFOENTRYDESC OBJMEM sEntryDesc0x6502 = {DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ}; +OBJCONST TSDOINFOENTRYDESC OBJMEM sEntryDesc0x6502 = {DEFTYPE_UNSIGNED32, 0x20, (ACCESS_READ | OBJACCESS_TXPDOMAPPING )}; +/*ECATCHANGE_END(V5.13) CIA402 1*/ /** \brief Object 0x6502 (Supported Drive Modes) object name*/ OBJCONST UCHAR OBJMEM aName0x6502[] = "Supported Drive Modes"; /** @}*/ @@ -1004,7 +983,7 @@ OBJCONST UCHAR OBJMEM aName0xF010[] = "Module Profile List"; * SubIndex x * (x > 0) */ -OBJCONST TSDOINFOENTRYDESC OBJMEM asEntryDesc0xF030[3] = { +OBJCONST TSDOINFOENTRYDESC OBJMEM asEntryDesc0xF030[] = { {DEFTYPE_UNSIGNED8, 0x08, (ACCESS_READ|ACCESS_WRITE_PREOP)}, {DEFTYPE_UNSIGNED32, 0x20, (ACCESS_READ|ACCESS_WRITE_PREOP)}, {DEFTYPE_UNSIGNED32, 0x20, (ACCESS_READ|ACCESS_WRITE_PREOP)}}; @@ -1014,7 +993,7 @@ OBJCONST TSDOINFOENTRYDESC OBJMEM asEntryDesc0xF030[3] = { * * no entry names defined because the object is an array (for every entry > 0 "SubIndex xxx" is returned) */ -OBJCONST UCHAR OBJMEM aName0xF030[] = "Configured module Ident list"; +OBJCONST UCHAR OBJMEM aName0xF030[] = "Configured Module Ident List"; /** @@ -1148,15 +1127,11 @@ PROTO CiA402Objects DefCiA402ObjectValues #ifdef _CiA402_ = { {5, {0x60400010,0x607A0020,0x60FF0020,0x60600008,0x00000008}}, /* TOBJ1600*/ -/*ECATCHANGE_START(V5.12) CiA402 3*/ {3, {0x60400010,0x607A0020,0x00000010 }}, /*TOBJ1601*/ {3, {0x60400010,0x60FF0020,0x00000010 }}, /*TOBJ1602*/ -/*ECATCHANGE_END(V5.12) CiA402 3*/ {5, {0x60410010,0x60640020,0x606C0020,0x60610008,0x00000008}}, /*TOBJ1A00*/ -/*ECATCHANGE_START(V5.12) CiA402 3*/ {3, {0x60410010,0x60640020,0x00000010 }}, /*TOBJ1A01*/ {3, {0x60410010,0x60640020,0x00000010 }},/*TOBJ1A02*/ -/*ECATCHANGE_END(V5.12) CiA402 3*/ 0x0,/*(UINT16) ErrorCode 0x1001*/ 0x0,/*(UINT16) ControlWord 0x6040*/ 0x0,/*(UINT16) StatusWord 0x6041*/ @@ -1213,19 +1188,15 @@ PROTO TOBJECT OBJMEM DefCiA402AxisObjDic[] /* Object 0x1600 */ {NULL,NULL, 0x1600, {DEFTYPE_PDOMAPPING, 5 | (OBJCODE_REC << 8)}, asEntryDesc0x1600, aName0x1600, NULL, NULL, NULL, 0x0000 }, /* Object 0x1601 */ -/*ECATCHANGE_START(V5.12) CiA402 3*/ {NULL,NULL, 0x1601, {DEFTYPE_PDOMAPPING, 3 | (OBJCODE_REC << 8)}, asEntryDesc0x1601, aName0x1601,NULL, NULL, NULL, 0x0000 }, /* Object 0x1602 */ {NULL,NULL, 0x1602, {DEFTYPE_PDOMAPPING, 3 | (OBJCODE_REC << 8)}, asEntryDesc0x1602, aName0x1602, NULL, NULL, NULL, 0x0000 }, -/*ECATCHANGE_END(V5.12) CiA402 3*/ /* Object 0x1A00 */ {NULL,NULL, 0x1A00, {DEFTYPE_PDOMAPPING, 5 | (OBJCODE_REC << 8)}, asEntryDesc0x1A00, aName0x1A00, NULL, NULL, NULL, 0x0000 }, /* Object 0x1A01 */ -/*ECATCHANGE_START(V5.12) CiA402 3*/ {NULL,NULL, 0x1A01, {DEFTYPE_PDOMAPPING, 3 | (OBJCODE_REC << 8)}, asEntryDesc0x1A01, aName0x1A01, NULL, NULL, NULL, 0x0000 }, /* Object 0x1A02 */ {NULL,NULL, 0x1A02, {DEFTYPE_PDOMAPPING, 3 | (OBJCODE_REC << 8)}, asEntryDesc0x1A02, aName0x1A02, NULL, NULL, NULL, 0x0000 }, -/*ECATCHANGE_END(V5.12) CiA402 3*/ /* Object 0x603F */ {NULL,NULL, 0x603F, {DEFTYPE_UNSIGNED16 , 0 | (OBJCODE_VAR << 8)}, &sEntryDesc0x603F, aName0x603F, NULL, NULL, NULL, 0x0000 }, /* Object 0x6040 */ @@ -1267,7 +1238,7 @@ PROTO TOBJECT OBJMEM DefCiA402AxisObjDic[] ; PROTO void APPL_Application(void); -PROTO UINT16 APPL_GetDeviceID(void); +/*ET9300 Project Handler :(#if EXPLICIT_DEVICE_ID) lines 1248 to 1250 deleted*/ PROTO void APPL_AckErrorInd(UINT16 stateTrans); PROTO UINT16 APPL_StartMailboxHandler(void); diff --git a/coeappl.c b/coeappl.c index 8d4578c..baf3073 100644 --- a/coeappl.c +++ b/coeappl.c @@ -1,6 +1,7 @@ /* * This source file is part of the EtherCAT Slave Stack Code licensed by Beckhoff Automation GmbH & Co KG, 33415 Verl, Germany. * The corresponding license agreement applies. This hint shall not be removed. +* https://www.beckhoff.com/media/downloads/slave-stack-code/ethercat_ssc_license.pdf */ /** @@ -14,12 +15,19 @@ \brief Implementation This file contains an example for CoE services and the CoE object dictionary -\version 5.12.1 +\version 5.13 +
Changes to version V5.12:
+V5.13 CIA402 3: change define "CIA402_DEVICE" to "CiA402_SAMPLE_APPLICATION"
+V5.13 COE1: handling objects with 255 entries
+V5.13 COE10: change 0x10F1.1 access from "rw" to "ro"
+V5.13 COE2: handle Backup entries with the code VAR
+V5.13 COE6: add 0x10F0.2 (Backup parameter changed)
+V5.13 COE7: define 0x1C3x.13 Shift Time too short, just define variable because expected in DC mode but shift mode is not supported by the SSC

Changes to version V5.11:
V5.12 COE1: load backup value after the complete OD was initialized
-V5.12 COE4: add timestamp object (0x10F8) and update diagnosis handling
-V5.12 COE8: fix invalid sizecalculation to init backup entries
+V5.12 COE4: add time stamp object (0x10F8) and update diagnosis handling
+V5.12 COE8: fix invalid size calculation to init backup entries
V5.12 ECAT1: update SM Parameter measurement (based on the system time), enhancement for input only devices and no mailbox support, use only 16Bit pointer in process data length caluclation
V5.12 ECAT5: update Sync error counter/flag handling,check enum memory alignment depending on the processor,in case of a polled timer disable ESC interrupts during DC_CheckWatchdog

Changes to version V5.10:
@@ -31,7 +39,7 @@ V5.11 ECAT4: enhance SM/Sync monitoring for input/output only slaves
V5.10 COE1: Define one entry description for all 0x1C3x objects and change data type of SI11,12,13 to UINT16 (according ETG.1020)
V5.10 COE2: Change return value of Get ObjectSize to UINT32
Change object size to UINT32
-V5.10 ECAT13: Update Synchronisation handling (FreeRun,SM Sync, Sync0, Sync1)
+V5.10 ECAT13: Update Synchronization handling (FreeRun,SM Sync, Sync0, Sync1)
Compare DC UINT configuration (by ESC Config data) vs. DC activation register settings
Update 0x1C3x entries

Changes to version V5.0:
@@ -119,10 +127,14 @@ V4.00 ECAT 1: The handling of the Sync Manager Parameter was included according /*remove definition of _COEAPPL_ (#ifdef is used in coeappl.h)*/ #define _OBJD_ +/*ET9300 Project Handler :(#if DIAGNOSIS_SUPPORTED && !TEST_APPLICATION) lines 130 to 133 deleted*/ /*Add Application specific Objects*/ +/*ECATCHANGE_START(V5.13) CIA402 3*/ +/*ECATCHANGE_END(V5.13) CIA402 3*/ #include "cia402appl.h" +/*ET9300 Project Handler :(#elif EL9800_APPLICATION) lines 141 to 152 deleted*/ #undef _OBJD_ @@ -131,6 +143,7 @@ V4.00 ECAT 1: The handling of the Sync Manager Parameter was included according ------ Backup Parameter ------ -----------------------------------------------------------------------------------------*/ +/*ET9300 Project Handler :(#if BACKUP_PARAMETER_SUPPORTED) lines 161 to 168 deleted*/ /*----------------------------------------------------------------------------------------- ------ @@ -211,7 +224,7 @@ OBJCONST TSDOINFOENTRYDESC OBJMEM sEntryDesc0x1009 = {DEFTYPE_VISIBLESTRING,B /** * \brief 0x1009 (Hardware version) object name */ -OBJCONST UCHAR OBJMEM aName0x1009[] = "Hardware version"; +OBJCONST UCHAR OBJMEM aName0x1009[] = "Manufacturer Hardware version"; /*--------------------------------------------- @@ -223,16 +236,17 @@ OBJCONST UCHAR OBJMEM aName0x1009[] = "Hardware version"; CHAR acSoftwareversion[] = DEVICE_SW_VERSION; /** - * \brief 0x1009 (Hardware version) entry description + * \brief 0x100A (Software version) entry description */ OBJCONST TSDOINFOENTRYDESC OBJMEM sEntryDesc0x100A = {DEFTYPE_VISIBLESTRING,BYTE2BIT(DEVICE_SW_VERSION_LEN), ACCESS_READ}; /** - * \brief 0x1009 (Hardware version) object name + * \brief 0x100A (Software version) object name */ -OBJCONST UCHAR OBJMEM aName0x100A[] = "Software version"; +OBJCONST UCHAR OBJMEM aName0x100A[] = "Manufacturer Software version"; +/*ET9300 Project Handler :(#if BACKUP_PARAMETER_SUPPORTED) lines 271 to 397 deleted*/ /*--------------------------------------------- @@ -263,9 +277,10 @@ OBJCONST TSDOINFOENTRYDESC OBJMEM asEntryDesc0x1018[] = { /** * \brief 0x1018 (Identity) object and entry names */ -OBJCONST UCHAR OBJMEM aName0x1018[] = "Identity\000Vendor ID\000Product code\000Revision\000Serial number\000\377"; +OBJCONST UCHAR OBJMEM aName0x1018[] = "Identity Object\000Vendor ID\000Product Code\000Revision Number\000Serial Number\000\377"; +/*ET9300 Project Handler :(#if BACKUP_PARAMETER_SUPPORTED) lines 431 to 456 deleted*/ /*--------------------------------------------- - 0x10F1 @@ -278,7 +293,9 @@ OBJCONST UCHAR OBJMEM aName0x1018[] = "Identity\000Vendor ID\000Product code\000 */ OBJCONST TSDOINFOENTRYDESC OBJMEM asEntryDesc0x10F1[] = { {DEFTYPE_UNSIGNED8, 0x8, ACCESS_READ }, - {DEFTYPE_UNSIGNED32, 0x20, ACCESS_READWRITE}, +/*ECATCHANGE_START(V5.13) COE10*/ + {DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ}, +/*ECATCHANGE_END(V5.13) COE10*/ {DEFTYPE_UNSIGNED16, 0x10, ACCESS_READWRITE}}; /** @@ -290,7 +307,6 @@ OBJCONST UCHAR OBJMEM aName0x10F1[] = "Error Settings\000Local Error Reaction\00 //object declaration and initialization in objdef.h -/*ECATCHANGE_START(V5.12) COE4*/ /*--------------------------------------------- - 0x10F8 (Timestamp object) -----------------------------------------------*/ @@ -298,7 +314,6 @@ OBJCONST UCHAR OBJMEM aName0x10F1[] = "Error Settings\000Local Error Reaction\00 * \brief 0x10F8 (Timestamp object) entry description */ OBJCONST TSDOINFOENTRYDESC OBJMEM sEntryDesc0x10F8 = { DEFTYPE_UNSIGNED64, 0x40, ACCESS_READWRITE | OBJACCESS_TXPDOMAPPING } ; - /** * \brief 0x10F8 (Timestamp object) object name */ @@ -352,9 +367,10 @@ UINT8 Read0x10F8(UINT16 index, UINT8 subindex, UINT32 dataSize, UINT16 MBXMEM * return 0; } + ///////////////////////////////////////////////////////////////////////////////////////// /** -\brief This function updates the local timestamp object (0x10F8) and has to be called at least every 4.2sec to detect an 32Bit DC unit overrun. +\brief This function updates the local time stamp object (0x10F8) and has to be called at least every 4.2sec to detect an 32Bit DC unit overrun. Called from the Timer handler *//////////////////////////////////////////////////////////////////////////////////////// void COE_SyncTimeStamp(void) @@ -388,7 +404,6 @@ void COE_SyncTimeStamp(void) u32CheckForDcOverrunCnt = 0; } -/*ECATCHANGE_END(V5.12) COE4*/ @@ -406,9 +421,9 @@ void COE_SyncTimeStamp(void) * SI4 (SM3): Process data In (0x4) * */ - /*ECATCHANGE_START(V5.12)*/ + /*ECATCHANGE_START(V5.13)*/ TOBJ1C00 sSyncmanagertype = {0x04, {0x0201, 0x0403}}; -/*ECATCHANGE_END(V5.12)*/ +/*ECATCHANGE_END(V5.13)*/ /** @@ -436,6 +451,7 @@ OBJCONST UCHAR OBJMEM aName0x1C00[] = "Sync manager type"; */ OBJCONST TSDOINFOENTRYDESC OBJMEM asEntryDesc0x1C3x[] = { {DEFTYPE_UNSIGNED8, 0x8, ACCESS_READ }, /* Subindex 000 */ +/*ET9300 Project Handler :(#if !AL_EVENT_ENABLED && !DC_SUPPORTED) lines 635 to 637 deleted*/ {DEFTYPE_UNSIGNED16, 0x10, (ACCESS_READ | ACCESS_WRITE_PREOP)}, /* SubIndex 001: Synchronization Type */ {DEFTYPE_UNSIGNED32, 0x20, ACCESS_READ}, /* SubIndex 002: Cycle Time */ {0x0000, 0x20, 0}, /* SubIndex 003: Shift Time (not supported)*/ @@ -448,7 +464,9 @@ OBJCONST TSDOINFOENTRYDESC OBJMEM asEntryDesc0x1C3x[] = { {DEFTYPE_UNSIGNED32, 0x20, ACCESS_READWRITE}, /* SubIndex 010: Sync0 Cycle Time */ {DEFTYPE_UNSIGNED16, 0x10, ACCESS_READ}, /* SubIndex 011: SM-Event Missed */ {DEFTYPE_UNSIGNED16, 0x10, ACCESS_READ}, /* SubIndex 012: Cycle Time Too Small */ - {0x0000, 0x10, 0}, /* SubIndex 013: Shift Too Short Counter (not supported)*/ + /*ECATCHANGE_START(V5.13) COE7*/ + {DEFTYPE_UNSIGNED16, 0x10, ACCESS_READ}, /* SubIndex 013: Shift Too Short Counter*/ + /*ECATCHANGE_END(V5.13) COE7*/ {0x0000, 0x10, 0}, /* Subindex 014: RxPDO Toggle Failed (not supported)*/ {0x0000, 0x20, 0}, /* Subindex 015: Minimum Cycle Distance (not supported)*/ {0x0000, 0x20, 0}, /* Subindex 016: Maximum Cycle Distance (not supported)*/ @@ -472,12 +490,12 @@ OBJCONST TSDOINFOENTRYDESC OBJMEM asEntryDesc0x1C3x[] = { /** * \brief 0x1C32 (SyncManager 2 parameter) object and entry names */ -OBJCONST UCHAR OBJMEM aName0x1C32[] = "SM output parameter\000Synchronization Type\000Cycle Time\000\000Synchronization Types supported\000Minimum Cycle Time\000Calc and Copy Time\000\000Get Cycle Time\000Delay Time\000Sync0 Cycle Time\000SM-Event Missed\000Cycle Time Too Small\000Shift Time Too Short\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000Sync Error\000\377"; +OBJCONST UCHAR OBJMEM aName0x1C32[] = "SM output parameter\000Synchronization Type\000Cycle Time\000\000Synchronization Types supported\000Minimum Cycle Time\000Calc and Copy Time\000\000Get Cycle Time\000Delay Time\000Sync0 Cycle Time\000SM-Event Missed\000Cycle Time Too Small\000Shift Time Too Short Counter\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000Sync Error\000\377"; /** * \brief 0x1C33 (SyncManager 3 parameter) object and entry names */ -OBJCONST UCHAR OBJMEM aName0x1C33[] = "SM input parameter\000Synchronization Type\000Cycle Time\000\000Synchronization Types supported\000Minimum Cycle Time\000Calc and Copy Time\000\000Get Cycle Time\000Delay Time\000Sync0 Cycle Time\000SM-Event Missed\000Cycle Time Too Small\000Shift Time Too Short\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000Sync Error\000\377"; +OBJCONST UCHAR OBJMEM aName0x1C33[] = "SM input parameter\000Synchronization Type\000Cycle Time\000\000Synchronization Types supported\000Minimum Cycle Time\000Calc and Copy Time\000\000Get Cycle Time\000Delay Time\000Sync0 Cycle Time\000SM-Event Missed\000Cycle Time Too Small\000Shift Time Too Short Counter\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000Sync Error\000\377"; /****************************************************************************** ** Object Dictionary @@ -485,7 +503,7 @@ OBJCONST UCHAR OBJMEM aName0x1C33[] = "SM input parameter\000Synchronization Typ /** * \brief Object dictionary pointer */ -TOBJECT OBJMEM * ObjDicList = NULL; +TOBJECT OBJMEM * ObjDicList = NULL; /** * \brief List of generic application independent objects @@ -501,14 +519,15 @@ TOBJECT OBJMEM GenObjDic[] = { {NULL,NULL, 0x1009, {DEFTYPE_VISIBLESTRING, 0 | (OBJCODE_VAR << 8)}, &sEntryDesc0x1009, aName0x1009, acHardwareversion, NULL, NULL, 0x0000 }, /* Object 0x100A */ {NULL,NULL, 0x100A, {DEFTYPE_VISIBLESTRING, 0 | (OBJCODE_VAR << 8)}, &sEntryDesc0x100A, aName0x100A, acSoftwareversion, NULL, NULL, 0x0000 }, +/*ET9300 Project Handler :(#if BACKUP_PARAMETER_SUPPORTED) lines 711 to 716 deleted*/ /* Object 0x1018 */ {NULL,NULL, 0x1018, {DEFTYPE_IDENTITY, 4 | (OBJCODE_REC << 8)}, asEntryDesc0x1018, aName0x1018, &sIdentity, NULL, NULL, 0x0000 }, +/*ET9300 Project Handler :(#if BACKUP_PARAMETER_SUPPORTED) lines 719 to 724 deleted*/ /* Object 0x10F1 */ {NULL,NULL, 0x10F1, {DEFTYPE_RECORD, 2 | (OBJCODE_REC << 8)}, asEntryDesc0x10F1, aName0x10F1, &sErrorSettings, NULL, NULL, 0x0000 }, -/*ECATCHANGE_START(V5.12) COE4*/ /* Object 0x10F8 */ { NULL,NULL, 0x10F8,{ DEFTYPE_UNSIGNED64, 0 | (OBJCODE_VAR << 8) }, &sEntryDesc0x10F8, aName0x10F8, &u64Timestamp, Read0x10F8, NULL , 0x0000 }, -/*ECATCHANGE_END(V5.12) COE4*/ +/*ET9300 Project Handler :(#if DIAGNOSIS_SUPPORTED) lines 730 to 733 deleted*/ /* Object 0x1C00 */ {NULL,NULL, 0x1C00, {DEFTYPE_UNSIGNED8, 4 | (OBJCODE_ARR << 8)}, asEntryDesc0x1C00, aName0x1C00, &sSyncmanagertype, NULL, NULL, 0x0000 }, /* Object 0x1C32 */ @@ -519,6 +538,7 @@ TOBJECT OBJMEM GenObjDic[] = { /*end of entries*/ {NULL,NULL, 0xFFFF, {0, 0}, NULL, NULL, NULL, NULL, NULL, 0x000}}; +/*ET9300 Project Handler :(#if !STATIC_OBJECT_DIC #else) lines 749 to 820 deleted*/ /*----------------------------------------------------------------------------------------- ------ @@ -536,8 +556,8 @@ OBJCONST TOBJECT OBJMEM * COE_GetObjectDictionary(void) return (OBJCONST TOBJECT OBJMEM *) ObjDicList; } +/*ET9300 Project Handler :(#if BACKUP_PARAMETER_SUPPORTED) lines 838 to 1048 deleted*/ -/*ECATCHANGE_START(V5.12) ECAT5*/ ///////////////////////////////////////////////////////////////////////////////////////// /** \brief Update the Sync Error Indication @@ -545,6 +565,7 @@ OBJCONST TOBJECT OBJMEM * COE_GetObjectDictionary(void) void COE_UpdateSyncErrorStatus(void) { if (sSyncManOutPar.u16CycleExceededCounter > 0 || sSyncManOutPar.u16SmEventMissedCounter > sErrorSettings.u16SyncErrorCounterLimit) +/*ET9300 Project Handler :(#if !_PIC18 #else) lines 1059 to 1061 deleted*/ { sSyncManOutPar.u8SyncError = 1; } @@ -555,6 +576,7 @@ void COE_UpdateSyncErrorStatus(void) if (sSyncManInPar.u16CycleExceededCounter > 0 || sSyncManInPar.u16SmEventMissedCounter > sErrorSettings.u16SyncErrorCounterLimit) +/*ET9300 Project Handler :(#if !_PIC18 #else) lines 1075 to 1077 deleted*/ { sSyncManInPar.u8SyncError = 1; } @@ -564,7 +586,6 @@ void COE_UpdateSyncErrorStatus(void) } } -/*ECATCHANGE_END(V5.12) ECAT5*/ ///////////////////////////////////////////////////////////////////////////////////////// /** @@ -573,6 +594,7 @@ void COE_UpdateSyncErrorStatus(void) void COE_ObjInit(void) { + /* initialize the Sync Manager Output parameter object 0x1C32 */ sSyncManOutPar.subindex0 = 32; @@ -597,9 +619,7 @@ void COE_ObjInit(void) sSyncManOutPar.u16SyncTypesSupported = SYNCTYPE_FREERUNSUPP /* ECAT FreeRun Mode is supported */ #if (PD_OUTPUT_CALC_AND_COPY_TIME == 0) || (PD_INPUT_CALC_AND_COPY_TIME == 0) || (MIN_PD_CYCLE_TIME == 0) -/*ECATCHANGE_START(V5.12) ECAT1*/ | SYNCTYPE_TIMESVARIABLE /* the execution times depend on the connected modules */ -/*ECATCHANGE_END(V5.12) ECAT1*/ #endif | SYNCTYPE_SYNCHRONSUPP /* ECAT Synchron Mode is supported */ | SYNCTYPE_DCSYNC0SUPP /* DC Sync0 Mode is supported */ @@ -624,13 +644,11 @@ void COE_ObjInit(void) /*subindex 9: time from start driving outputs until outputs are valid*/ sSyncManOutPar.u32DelayTime = (PD_OUTPUT_DELAY_TIME); -/*ECATCHANGE_START(V5.12) ECAT5*/ /*subindex 11: reset the sm missed error counter*/ sSyncManOutPar.u16SmEventMissedCounter = 0; /*subindex 12: reset the cycle exceed error counter*/ sSyncManOutPar.u16CycleExceededCounter = 0; -/*ECATCHANGE_END(V5.12) ECAT5*/ /*subindex 32: indicates if a synchronisation error has occurred*/ sSyncManOutPar.u8SyncError = 0; @@ -643,29 +661,26 @@ void COE_ObjInit(void) /* subindex 2: same as 0x1C32:02 */ sSyncManInPar.u32CycleTime = sSyncManOutPar.u32CycleTime; +/*ET9300 Project Handler :(#if MAX_PD_OUTPUT_SIZE > 0 #else) lines 1173 to 1175 deleted*/ /* subindex 4: same as 0x1C32:04 */ sSyncManInPar.u16SyncTypesSupported = sSyncManOutPar.u16SyncTypesSupported; +/*ET9300 Project Handler :(#elif MAX_PD_INPUT_SIZE > 0) lines 1180 to 1198 deleted*/ /* subindex 5: same as 0x1C32:05 */ sSyncManInPar.u32MinCycleTime = MIN_PD_CYCLE_TIME; - /* subindex 6: delay read inputs, calculation and copy to SM buffer*/ sSyncManInPar.u32CalcAndCopyTime = (PD_INPUT_CALC_AND_COPY_TIME); - /*subindex 8: trigger cycle time measurement*/ sSyncManInPar.u16GetCycleTime = 0; - /*subindex 9: delay to prepare input latch*/ sSyncManInPar.u32DelayTime = (PD_INPUT_DELAY_TIME); -/*ECATCHANGE_START(V5.12) ECAT5*/ /*subindex 11: reset the sm missed error counter*/ sSyncManInPar.u16SmEventMissedCounter = 0; /*subindex 12: reset the cycle exceed error counter*/ sSyncManInPar.u16CycleExceededCounter = 0; -/*ECATCHANGE_END(V5.12) ECAT5*/ /*subindex 32: incremented if a synchronisation error has occurred*/ sSyncManInPar.u8SyncError = 0; @@ -682,36 +697,30 @@ void COE_ObjInit(void) } } - u8PendingSdo = 0; - bStoreCompleteAccess = FALSE; - u16StoreIndex = 0; - u8StoreSubindex = 0; - u32StoreDataSize = 0; - pStoreData = NULL; - pSdoPendFunc = NULL; +/*ET9300 Project Handler :(#if SDO_RES_INTERFACE) lines 1233 to 1241 deleted*/ - pSdoSegData = NULL; +/*ET9300 Project Handler :(#if SEGMENTED_SDO_SUPPORTED) lines 1243 to 1245 deleted*/ +/*ET9300 Project Handler :(#if BACKUP_PARAMETER_SUPPORTED) lines 1247 to 1259 deleted*/ -/*ECATCHANGE_START(V5.12) COE4*/ - UINT32 EscFeature = 0; - HW_EscReadDWord(EscFeature, ESC_FEATURES_OFFSET); - EscFeature = SWAPDWORD(EscFeature); - - if ((EscFeature & ESC_DC_32BIT_MASK) > 0) { - b32BitDc = FALSE; + UINT32 EscFeature = 0; + HW_EscReadDWord(EscFeature, ESC_FEATURES_OFFSET); + EscFeature = SWAPDWORD(EscFeature); + + if ((EscFeature & ESC_DC_32BIT_MASK) > 0) + { + b32BitDc = FALSE; + } + else + { + b32BitDc = TRUE; + + HW_EscReadDWord(u32LastDc32Value, ESC_SYSTEMTIME_OFFSET); + } + + u32CheckForDcOverrunCnt = CHECK_DC_OVERRUN_IN_MS; } - else - { - b32BitDc = TRUE; - - HW_EscReadDWord(u32LastDc32Value, ESC_SYSTEMTIME_OFFSET); - } - - u32CheckForDcOverrunCnt = CHECK_DC_OVERRUN_IN_MS; - - /*ECATCHANGE_END(V5.12) COE4*/ } ///////////////////////////////////////////////////////////////////////////////////////// @@ -903,45 +912,7 @@ UINT16 COE_ObjDictionaryInit(void) void COE_Main(void) { - UINT8 abort = 0; - - if(pSdoPendFunc != NULL) - { - abort = pSdoPendFunc(u16StoreIndex,u8StoreSubindex,u32StoreDataSize,pStoreData,bStoreCompleteAccess); - - if(abort != ABORTIDX_WORKING) - { - switch(u8PendingSdo) - { - case SDO_PENDING_SEG_WRITE: - if(pSdoSegData) - { - /* the allocated buffer can be released */ - FREEMEM( (UINT16 VARMEM *) pSdoSegData ); - pSdoSegData = NULL; - } - case SDO_PENDING_WRITE: - /*send SDO Download Response*/ - SDOS_SdoRes(abort, 0, NULL); - break; - - case SDO_PENDING_SEG_READ: - case SDO_PENDING_READ: - /* send SDO upload response */ - SDOS_SdoRes(abort, u32StoreDataSize, pStoreData); - break; - - } - - u8PendingSdo = 0; - u16StoreIndex = 0; - u8StoreSubindex = 0; - u32StoreDataSize = 0; - pStoreData = NULL; - bStoreCompleteAccess = 0; - pSdoPendFunc = NULL; - } - } +/*ET9300 Project Handler :(#if SDO_RES_INTERFACE) lines 1474 to 1516 deleted*/ } /** @} */ diff --git a/coeappl.h b/coeappl.h index 6b7685d..da7200c 100644 --- a/coeappl.h +++ b/coeappl.h @@ -1,6 +1,7 @@ /* * This source file is part of the EtherCAT Slave Stack Code licensed by Beckhoff Automation GmbH & Co KG, 33415 Verl, Germany. * The corresponding license agreement applies. This hint shall not be removed. +* https://www.beckhoff.com/media/downloads/slave-stack-code/ethercat_ssc_license.pdf */ /** @@ -12,8 +13,10 @@ \file coeappl.h \author EthercatSSC@beckhoff.com -\version 5.12 +\version 5.13 +
Changes to version V5.12:
+V5.13 COE6: add 0x10F0.2 (Backup parameter changed)

Changes to version V5.11:
V5.12 COE4: add timestamp object (0x10F8) and update diagnosis handling
V5.12 ECAT5: update Sync error counter/flag handling,check enum memory alignment depending on the processor,in case of a polled timer disable ESC interrupts during DC_CheckWatchdog
@@ -29,7 +32,7 @@ V5.01 : Start file change log ------ -----------------------------------------------------------------------------------------*/ #include "objdef.h" - +#include "ecatappl.h" #ifndef _COEAPPL_H_ #define _COEAPPL_H_ @@ -39,6 +42,7 @@ V5.01 : Start file change log ------ Defines and Types ------ -----------------------------------------------------------------------------------------*/ +/*ET9300 Project Handler :(#if BACKUP_PARAMETER_SUPPORTED) lines 44 to 69 deleted*/ /*--------------------------------------------- @@ -58,6 +62,7 @@ TOBJ1018; +/*ET9300 Project Handler :(#if BACKUP_PARAMETER_SUPPORTED) lines 89 to 105 deleted*/ /*--------------------------------------------- @@ -68,9 +73,7 @@ TOBJ1018; */ typedef struct OBJ_STRUCT_PACKED_START { UINT16 u16SubIndex0; /**< \brief SubIndex 0*/ -/*ECATCHANGE_START(V5.12)*/ UINT16 aEntries[2]; /**< \brief Entry buffer (one for two SyncManagers)*/ -/*ECATCHANGE_END(V5.12)*/ } OBJ_STRUCT_PACKED_END TOBJ1C00; @@ -90,13 +93,11 @@ TOBJ1C00; ------ -----------------------------------------------------------------------------------------*/ -/*ECATCHANGE_START(V5.12) COE4*/ PROTO UINT64 u64Timestamp #ifdef _COEAPPL_ = { 0 } #endif ; -/*ECATCHANGE_END(V5.12) COE4*/ PROTO UINT32 u32LastDc32Value; PROTO UINT32 u32CheckForDcOverrunCnt; @@ -105,9 +106,7 @@ PROTO UINT32 u32CheckForDcOverrunCnt; ------ Global functions ------ -----------------------------------------------------------------------------------------*/ -/*ECATCHANGE_START(V5.12) ECAT5*/ PROTO void COE_UpdateSyncErrorStatus(void); -/*ECATCHANGE_END(V5.12) ECAT5*/ PROTO void COE_ObjInit(void); PROTO void COE_Main(void); @@ -116,9 +115,7 @@ PROTO UINT16 COE_AddObjectToDic(TOBJECT OBJMEM * pNewObjEntry); PROTO void COE_RemoveDicEntry(UINT16 index); PROTO void COE_ClearObjDictionary(void); PROTO OBJCONST TOBJECT OBJMEM * COE_GetObjectDictionary(void); -/*ECATCHANGE_START(V5.12) COE4*/ PROTO void COE_SyncTimeStamp(void); -/*ECATCHANGE_END(V5.12) COE4*/ #undef PROTO /** @}*/ diff --git a/ecat_def.h b/ecat_def.h index 2ace97f..48f8acf 100644 --- a/ecat_def.h +++ b/ecat_def.h @@ -1,13 +1,14 @@ /* * This source file is part of the EtherCAT Slave Stack Code licensed by Beckhoff Automation GmbH & Co KG, 33415 Verl, Germany. * The corresponding license agreement applies. This hint shall not be removed. +* https://www.beckhoff.com/media/downloads/slave-stack-code/ethercat_ssc_license.pdf */ /*----------------------------------------------------------------------------------------- ------ ------ ecat_def.h ------- SSC version : 5.12 +------ SSC version : 5.13 -----------------------------------------------------------------------------------------*/ #ifndef _ECATDEF_H_ @@ -28,7 +29,7 @@ ------ -----------------------------------------------------------------------------------------*/ #define SSC_VERSION_MAJOR 5 -#define SSC_VERSION_MINOR 12 +#define SSC_VERSION_MINOR 13 /** @@ -37,7 +38,7 @@ EL9800_HW: Shall be set if the Slave code is executed on the PIC mounted on the This settings should also be enabled if the ESC is connected via a serial interface and no specific hardware access files are avilable yet.
NOTE: The PDI type needs also to be configured in the "ESC_CONFIG_DATA". */ #ifndef EL9800_HW -#define EL9800_HW 0 //This define was already evaluated by ET9300 Project Handler(V. 1.4.1.0)! +#define EL9800_HW 0 //This define was already evaluated by ET9300 Project Handler(V. 1.5.3.0)! #endif /** @@ -45,72 +46,78 @@ MCI_HW: Shall be set if the MCI of the ESC is connected.
This settings should also be enabled if the ESC is connected via a parallel interface and no specific hardware access files are avilable yet.
NOTE: The PDI type needs also to be configured in the "ESC_CONFIG_DATA". */ #ifndef MCI_HW -#define MCI_HW 0 //This define was already evaluated by ET9300 Project Handler(V. 1.4.1.0)! +#define MCI_HW 0 //This define was already evaluated by ET9300 Project Handler(V. 1.5.3.0)! #endif /** FC1100_HW: Shall be set if the EtherCAT slave controller is located on an FC1100 PCI card.
NOTE: The PDI type needs also to be configured in the "ESC_CONFIG_DATA". */ #ifndef FC1100_HW -#define FC1100_HW 0 //This define was already evaluated by ET9300 Project Handler(V. 1.4.1.0)! +#define FC1100_HW 0 //This define was already evaluated by ET9300 Project Handler(V. 1.5.3.0)! #endif /** TIESC_HW: Temporary define to support TI ICE/IDK development board (Shall be set if the Slave code shall executed on an AM335X ICE/IDK Evaluation Board
from Texas Instruments) */ #ifndef TIESC_HW -#define TIESC_HW 0 //This define was already evaluated by ET9300 Project Handler(V. 1.4.1.0)! +#define TIESC_HW 0 //This define was already evaluated by ET9300 Project Handler(V. 1.5.3.0)! #endif /** CONTROLLER_16BIT: Shall be set if the host controller is a 16Bit architecture */ #ifndef CONTROLLER_16BIT -#define CONTROLLER_16BIT 0 //This define was already evaluated by ET9300 Project Handler(V. 1.4.1.0)! +#define CONTROLLER_16BIT 0 //This define was already evaluated by ET9300 Project Handler(V. 1.5.3.0)! #endif /** CONTROLLER_32BIT: Shall be set if the host controller is a 32Bit architecture */ #ifndef CONTROLLER_32BIT -#define CONTROLLER_32BIT 0 //This define was already evaluated by ET9300 Project Handler(V. 1.4.1.0)! +#define CONTROLLER_32BIT 0 //This define was already evaluated by ET9300 Project Handler(V. 1.5.3.0)! +#endif + +/** +MEMORY_UNIT_16BIT: Shall be set if the smallest controller memory unit is 16bit */ +#ifndef MEMORY_UNIT_16BIT +#define MEMORY_UNIT_16BIT 0 //This define was already evaluated by ET9300 Project Handler(V. 1.5.3.0)! #endif /** _PIC18: Microchip PIC18F452 Specific Code
This processor is mounted on the Beckhoff Slave Evaluation Board (Hardware version up to EL9800_2). */ #ifndef _PIC18 -#define _PIC18 0 //This define was already evaluated by ET9300 Project Handler(V. 1.4.1.0)! +#define _PIC18 0 //This define was already evaluated by ET9300 Project Handler(V. 1.5.3.0)! #endif /** _PIC24: Microchip PIC24HJ128GP306 Specific Code
This processor is mounted on the Beckhoff Slave Evaluation Board (Hardware version up to EL9800_4A). */ #ifndef _PIC24 -#define _PIC24 0 //This define was already evaluated by ET9300 Project Handler(V. 1.4.1.0)! +#define _PIC24 0 //This define was already evaluated by ET9300 Project Handler(V. 1.5.3.0)! #endif /** ESC_16BIT_ACCESS: If the microcontroller only supports 16Bit access to the ESC. */ #ifndef ESC_16BIT_ACCESS -#define ESC_16BIT_ACCESS 0 //This define was already evaluated by ET9300 Project Handler(V. 1.4.1.0)! +#define ESC_16BIT_ACCESS 0 //This define was already evaluated by ET9300 Project Handler(V. 1.5.3.0)! #endif /** ESC_32BIT_ACCESS: If the microcontroller only supports 32Bit access to the ESC. */ #ifndef ESC_32BIT_ACCESS -#define ESC_32BIT_ACCESS 0 //This define was already evaluated by ET9300 Project Handler(V. 1.4.1.0)! +#define ESC_32BIT_ACCESS 0 //This define was already evaluated by ET9300 Project Handler(V. 1.5.3.0)! #endif /** MBX_16BIT_ACCESS: If the microcontroller only supports 16Bit access to local mailbox memory(access to ESC DPRAM is controlled by "ESC_16BIT_ACCESS"). If reset 8Bit access is used. */ #ifndef MBX_16BIT_ACCESS -#define MBX_16BIT_ACCESS 0 //This define was already evaluated by ET9300 Project Handler(V. 1.4.1.0)! +#define MBX_16BIT_ACCESS 0 //This define was already evaluated by ET9300 Project Handler(V. 1.5.3.0)! #endif /** BIG_ENDIAN_16BIT: If the microcontroller always make 16 bit access to external memory, operates in BigEndian format
and the switching of the high and low byte is done in hardware. */ #ifndef BIG_ENDIAN_16BIT -#define BIG_ENDIAN_16BIT 0 //This define was already evaluated by ET9300 Project Handler(V. 1.4.1.0)! +#define BIG_ENDIAN_16BIT 0 //This define was already evaluated by ET9300 Project Handler(V. 1.5.3.0)! #endif /** @@ -118,32 +125,32 @@ BIG_ENDIAN_FORMAT: If the microcontroller works with BigEndian format, then this and DWORD-accesses will make a BYTE- or WORD-swapping, the macros SWAPWORD and SWAPDWORD in ecatslv.h might be adapted.
If this switch is set, then BIG_ENDIAN_16BIT shall be reset. */ #ifndef BIG_ENDIAN_FORMAT -#define BIG_ENDIAN_FORMAT 0 //This define was already evaluated by ET9300 Project Handler(V. 1.4.1.0)! +#define BIG_ENDIAN_FORMAT 0 //This define was already evaluated by ET9300 Project Handler(V. 1.5.3.0)! #endif /** EXT_DEBUGER_INTERFACE: If this switch is set, the external debugger interface on the EL9800_4A (_PIC24) will be activated.
This define will be ignored if _PIC24 is not set. */ #ifndef EXT_DEBUGER_INTERFACE -#define EXT_DEBUGER_INTERFACE 0 //This define was already evaluated by ET9300 Project Handler(V. 1.4.1.0)! +#define EXT_DEBUGER_INTERFACE 0 #endif /** UC_SET_ECAT_LED: If set the EtherCAT Run and Error LEDs are set by the uController. If set ESC_SUPPORT_ECAT_LED shall be reset. */ #ifndef UC_SET_ECAT_LED -#define UC_SET_ECAT_LED 1 //This define was already evaluated by ET9300 Project Handler(V. 1.4.1.0)! +#define UC_SET_ECAT_LED 1 //This define was already evaluated by ET9300 Project Handler(V. 1.5.3.0)! #endif /** ESC_SUPPORT_ECAT_LED: This switch can be enabled if the connected ESC support Error and Run LED indication. See the ESC datasheet if the LED indication is supported. If set UC_SET_ECAT_LED shall be reset. */ #ifndef ESC_SUPPORT_ECAT_LED -#define ESC_SUPPORT_ECAT_LED 0 //This define was already evaluated by ET9300 Project Handler(V. 1.4.1.0)! +#define ESC_SUPPORT_ECAT_LED 0 //This define was already evaluated by ET9300 Project Handler(V. 1.5.3.0)! #endif /** ESC_EEPROM_EMULATION: If this switch is set EEPROM emulation is supported. Not all ESC types support EEPROM emulation. See ESC datasheet for more information. */ #ifndef ESC_EEPROM_EMULATION -#define ESC_EEPROM_EMULATION 0 //This define was already evaluated by ET9300 Project Handler(V. 1.4.1.0)! +#define ESC_EEPROM_EMULATION 0 //This define was already evaluated by ET9300 Project Handler(V. 1.5.3.0)! #endif /** @@ -163,106 +170,111 @@ AL_EVENT_ENABLED: If an interrupt routine shall be called when one of the Events this switch has to be defined to 1 (synchronous modes are supported).
If the AL Event register shall only be polled, this switch has to be defined to 0 (only free run mode is supported). */ #ifndef AL_EVENT_ENABLED -#define AL_EVENT_ENABLED 1 //This define was already evaluated by ET9300 Project Handler(V. 1.4.1.0)! +#define AL_EVENT_ENABLED 1 //This define was already evaluated by ET9300 Project Handler(V. 1.5.3.0)! #endif /** -DC_SUPPORTED: If distributed clocks should be supported by the slave, then this switch shall be set.
-If this switch is set, then also AL_EVENT_ENABLED shall be set.
+DC_SUPPORTED: If distributed clocks should be supported by the slave, this switch shall be set.
NOTE: The DC support needs also be set in the "ESC_CONFIG_DATA" settings. */ #ifndef DC_SUPPORTED -#define DC_SUPPORTED 1 //This define was already evaluated by ET9300 Project Handler(V. 1.4.1.0)! +#define DC_SUPPORTED 1 //This define was already evaluated by ET9300 Project Handler(V. 1.5.3.0)! #endif /** ECAT_TIMER_INT: If this switch is set, then the watchdog time for the EtherCAT watchdog will be checked in a timer interrupt routine. */ #ifndef ECAT_TIMER_INT -#define ECAT_TIMER_INT 0 //This define was already evaluated by ET9300 Project Handler(V. 1.4.1.0)! +#define ECAT_TIMER_INT 0 //This define was already evaluated by ET9300 Project Handler(V. 1.5.3.0)! #endif /** INTERRUPTS_SUPPORTED: If this switch is set the slave stack provides interrupt handling.
NOTE: value will be evaluated automatically!! */ #ifndef INTERRUPTS_SUPPORTED -#define INTERRUPTS_SUPPORTED 1 //This define was already evaluated by ET9300 Project Handler(V. 1.4.1.0)! +#define INTERRUPTS_SUPPORTED 1 //This define was already evaluated by ET9300 Project Handler(V. 1.5.3.0)! #endif /** TEST_APPLICATION: NOTE: THIS SETTING SHALL NOT BE USED TO CREATE A USER SPECIFIC APPLICATION!
Select this setting to test the slave stack or a master implementation. For further information about this application see the SSC Application Node. */ #ifndef TEST_APPLICATION -#define TEST_APPLICATION 0 //This define was already evaluated by ET9300 Project Handler(V. 1.4.1.0)! +#define TEST_APPLICATION 0 //This define was already evaluated by ET9300 Project Handler(V. 1.5.3.0)! +#endif + +/** +TEST_APPLICATION_REDUCED_MEMORY: This define reduces the memory footprint of the test application (should only be used if the default test application generates no memory errors when accessing the OD or FoE files) */ +#ifndef TEST_APPLICATION_REDUCED_MEMORY +#define TEST_APPLICATION_REDUCED_MEMORY //This define was already evaluated by ET9300 Project Handler(V. 1.5.3.0)! #endif /** EL9800_APPLICATION: Should be set if the Slave Sample Code runs on an EL9800_x Evaluation Board. */ #ifndef EL9800_APPLICATION -#define EL9800_APPLICATION 0 //This define was already evaluated by ET9300 Project Handler(V. 1.4.1.0)! +#define EL9800_APPLICATION 0 //This define was already evaluated by ET9300 Project Handler(V. 1.5.3.0)! #endif /** -CiA402_DEVICE: If this switch is set, then the sample implementation of CiA402 device profile will be activated. */ -#ifndef CiA402_DEVICE -#define CiA402_DEVICE 1 //This define was already evaluated by ET9300 Project Handler(V. 1.4.1.0)! +CiA402_SAMPLE_APPLICATION: If this switch is set, then the sample implementation of CiA402 device profile will be activated. */ +#ifndef CiA402_SAMPLE_APPLICATION +#define CiA402_SAMPLE_APPLICATION 1 //This define was already evaluated by ET9300 Project Handler(V. 1.5.3.0)! #endif /** SAMPLE_APPLICATION: Select this define if the hardware independent sample application shall be activated. */ #ifndef SAMPLE_APPLICATION -#define SAMPLE_APPLICATION 0 //This define was already evaluated by ET9300 Project Handler(V. 1.4.1.0)! +#define SAMPLE_APPLICATION 0 //This define was already evaluated by ET9300 Project Handler(V. 1.5.3.0)! #endif /** SAMPLE_APPLICATION_INTERFACE: Select this define to activate the Sample Application Interface. This provides an simple interface to create a static library and used in an external application.
NOTE: The file "EtherCATSampleLibrary.h" includes the library interface (maybe need to be adapted). */ #ifndef SAMPLE_APPLICATION_INTERFACE -#define SAMPLE_APPLICATION_INTERFACE 0 //This define was already evaluated by ET9300 Project Handler(V. 1.4.1.0)! +#define SAMPLE_APPLICATION_INTERFACE 0 //This define was already evaluated by ET9300 Project Handler(V. 1.5.3.0)! #endif /** BOOTLOADER_SAMPLE: Select this define to enable a small footprint application which only supports the BOOT state and FoE mailbox protocol. */ #ifndef BOOTLOADER_SAMPLE -#define BOOTLOADER_SAMPLE 0 //This define was already evaluated by ET9300 Project Handler(V. 1.4.1.0)! +#define BOOTLOADER_SAMPLE 0 //This define was already evaluated by ET9300 Project Handler(V. 1.5.3.0)! #endif /** USE_DEFAULT_MAIN: Set to 1 if the main function of a default application shall be used.
-Otherwise the Init functions and the mainloop handler shall be called for a user specific function (see ET9300 Application Note for further details www.beckhoff.com/english.asp?download/ethercat_development_products.htm?id=71003127100387). */ +Otherwise the Init functions and the mainloop handler shall be called for a user specific function (see ET9300 Application Note for further details https://www.beckhoff.com/de-de/support/downloadfinder/technische-dokumentationen/?q=ET1100). */ #ifndef USE_DEFAULT_MAIN -#define USE_DEFAULT_MAIN 1 //This define was already evaluated by ET9300 Project Handler(V. 1.4.1.0)! +#define USE_DEFAULT_MAIN 0 //This define was already evaluated by ET9300 Project Handler(V. 1.5.3.0)! #endif /** MAILBOX_QUEUE: If this switch is set, the mailbox services will be stored in a queue.
With this switch reset only one mailbox service can be processed in parallel. */ #ifndef MAILBOX_QUEUE -#define MAILBOX_QUEUE 1 //This define was already evaluated by ET9300 Project Handler(V. 1.4.1.0)! +#define MAILBOX_QUEUE 1 //This define was already evaluated by ET9300 Project Handler(V. 1.5.3.0)! #endif /** AOE_SUPPORTED: If the AoE services are supported, then this switch shall be set. */ #ifndef AOE_SUPPORTED -#define AOE_SUPPORTED 0 //This define was already evaluated by ET9300 Project Handler(V. 1.4.1.0)! +#define AOE_SUPPORTED 0 //This define was already evaluated by ET9300 Project Handler(V. 1.5.3.0)! #endif /** COE_SUPPORTED: If the CoE services are supported, then his switch shall be set. */ #ifndef COE_SUPPORTED -#define COE_SUPPORTED 1 //This define was already evaluated by ET9300 Project Handler(V. 1.4.1.0)! +#define COE_SUPPORTED 1 //This define was already evaluated by ET9300 Project Handler(V. 1.5.3.0)! #endif /** COMPLETE_ACCESS_SUPPORTED: If the complete SDO access (accessing all entries of an object with one SDO service, then this
switch shall be set. Furthermore,COE_SUPPORTED shall be set. */ #ifndef COMPLETE_ACCESS_SUPPORTED -#define COMPLETE_ACCESS_SUPPORTED 1 //This define was already evaluated by ET9300 Project Handler(V. 1.4.1.0)! +#define COMPLETE_ACCESS_SUPPORTED 0 //This define was already evaluated by ET9300 Project Handler(V. 1.5.3.0)! #endif /** SEGMENTED_SDO_SUPPORTED: If the segmented SDO services should be supported, then this switch shall be set.
Furthermore, COE_SUPPORTED shall be set. */ #ifndef SEGMENTED_SDO_SUPPORTED -#define SEGMENTED_SDO_SUPPORTED 1 //This define was already evaluated by ET9300 Project Handler(V. 1.4.1.0)! +#define SEGMENTED_SDO_SUPPORTED 0 //This define was already evaluated by ET9300 Project Handler(V. 1.5.3.0)! #endif /** @@ -271,26 +283,26 @@ a serial interface is needed), this switch should be set. In that case ABORTIDX_ returned from OBJ_Read or OBJ_Write and the response shall be sent by calling SDOS_SdoRes, when
the response is available. */ #ifndef SDO_RES_INTERFACE -#define SDO_RES_INTERFACE 1 //This define was already evaluated by ET9300 Project Handler(V. 1.4.1.0)! +#define SDO_RES_INTERFACE 0 //This define was already evaluated by ET9300 Project Handler(V. 1.5.3.0)! #endif /** USE_SINGLE_PDO_MAPPING_ENTRY_DESCR: If this setting is set a PDO mapping entry description just need to be defined for the first entry. For all furher entries the same description is used. */ #ifndef USE_SINGLE_PDO_MAPPING_ENTRY_DESCR -#define USE_SINGLE_PDO_MAPPING_ENTRY_DESCR 1 //This define was already evaluated by ET9300 Project Handler(V. 1.4.1.0)! +#define USE_SINGLE_PDO_MAPPING_ENTRY_DESCR 1 //This define was already evaluated by ET9300 Project Handler(V. 1.5.3.0)! #endif /** BACKUP_PARAMETER_SUPPORTED: If this switch is set, then the functions in the application example to load and
store backup parameter will be compiled. Furthermore, COE_SUPPORTED shall be set. */ #ifndef BACKUP_PARAMETER_SUPPORTED -#define BACKUP_PARAMETER_SUPPORTED 0 //This define was already evaluated by ET9300 Project Handler(V. 1.4.1.0)! +#define BACKUP_PARAMETER_SUPPORTED 0 //This define was already evaluated by ET9300 Project Handler(V. 1.5.3.0)! #endif /** STORE_BACKUP_PARAMETER_IMMEDIATELY: Objet values will be stored when they are written.This switch is only evaluated if "BACKUP_PARAMETER_SUPPORTED" is set. */ #ifndef STORE_BACKUP_PARAMETER_IMMEDIATELY -#define STORE_BACKUP_PARAMETER_IMMEDIATELY 0 //This define was already evaluated by ET9300 Project Handler(V. 1.4.1.0)! +#define STORE_BACKUP_PARAMETER_IMMEDIATELY 0 //This define was already evaluated by ET9300 Project Handler(V. 1.5.3.0)! #endif /** @@ -298,13 +310,13 @@ DIAGNOSIS_SUPPORTED: If this define is set the slave stack supports diagnosis me To support diagnosis messages COE_SUPPORTED shall be enabled and the platform shall support dynamic memory allocation.
NOTE: this feature is implemented according to ETG.1020 */ #ifndef DIAGNOSIS_SUPPORTED -#define DIAGNOSIS_SUPPORTED 0 //This define was already evaluated by ET9300 Project Handler(V. 1.4.1.0)! +#define DIAGNOSIS_SUPPORTED 0 //This define was already evaluated by ET9300 Project Handler(V. 1.5.3.0)! #endif /** EMERGENCY_SUPPORTED: If this define is set the slave stack supports emergency messages. COE_SUPPORTED or SOE_SUPPORTED shall be enabled */ #ifndef EMERGENCY_SUPPORTED -#define EMERGENCY_SUPPORTED 0 //This define was already evaluated by ET9300 Project Handler(V. 1.4.1.0)! +#define EMERGENCY_SUPPORTED 0 //This define was already evaluated by ET9300 Project Handler(V. 1.5.3.0)! #endif /** @@ -312,7 +324,7 @@ VOE_SUPPORTED: If the VoE services should be supported, then this switch shall b VoE functions in mailbox.c are implemented, but the VoE service functions have to be added. Furthermore, the example code cannot be linked
correctly, because these functions are missing. */ #ifndef VOE_SUPPORTED -#define VOE_SUPPORTED 0 //This define was already evaluated by ET9300 Project Handler(V. 1.4.1.0)! +#define VOE_SUPPORTED 0 //This define was already evaluated by ET9300 Project Handler(V. 1.5.3.0)! #endif /** @@ -320,44 +332,44 @@ SOE_SUPPORTED: If the SoE services should be supported, then this switch shall b SoE functions in mailbox.c are implemented, but the SoE service functions have to be added. Furthermore, the example code cannot be linked
correctly, because these functions are missing. */ #ifndef SOE_SUPPORTED -#define SOE_SUPPORTED 0 //This define was already evaluated by ET9300 Project Handler(V. 1.4.1.0)! +#define SOE_SUPPORTED 0 //This define was already evaluated by ET9300 Project Handler(V. 1.5.3.0)! #endif /** EOE_SUPPORTED: If the EoE services should be supported, then this switch shall be set. */ #ifndef EOE_SUPPORTED -#define EOE_SUPPORTED 0 //This define was already evaluated by ET9300 Project Handler(V. 1.4.1.0)! +#define EOE_SUPPORTED 0 //This define was already evaluated by ET9300 Project Handler(V. 1.5.3.0)! #endif /** STATIC_ETHERNET_BUFFER: If this switch is set a static buffer is used to store ethernet frames, otherwise the buffer is allocated on demand */ #ifndef STATIC_ETHERNET_BUFFER -#define STATIC_ETHERNET_BUFFER 0 //This define was already evaluated by ET9300 Project Handler(V. 1.4.1.0)! +#define STATIC_ETHERNET_BUFFER 0 //This define was already evaluated by ET9300 Project Handler(V. 1.5.3.0)! #endif /** FOE_SUPPORTED: If the FoE services should be supported, then this switch shall be set. */ #ifndef FOE_SUPPORTED -#define FOE_SUPPORTED 0 //This define was already evaluated by ET9300 Project Handler(V. 1.4.1.0)! +#define FOE_SUPPORTED 1 //This define was already evaluated by ET9300 Project Handler(V. 1.5.3.0)! #endif /** MAILBOX_SUPPORTED: This switch is set automatically if at least one mailbox protocol is enabled. */ #ifndef MAILBOX_SUPPORTED -#define MAILBOX_SUPPORTED 1 //This define was already evaluated by ET9300 Project Handler(V. 1.4.1.0)! +#define MAILBOX_SUPPORTED 1 //This define was already evaluated by ET9300 Project Handler(V. 1.5.3.0)! #endif /** BOOTSTRAPMODE_SUPPORTED: If the firmware update over FoE services should be supported, then this switch shall be set.
If this switch is set, then also "FOE_SUPPORTED" shall be set. */ #ifndef BOOTSTRAPMODE_SUPPORTED -#define BOOTSTRAPMODE_SUPPORTED 0 //This define was already evaluated by ET9300 Project Handler(V. 1.4.1.0)! +#define BOOTSTRAPMODE_SUPPORTED 0 //This define was already evaluated by ET9300 Project Handler(V. 1.5.3.0)! #endif /** OP_PD_REQUIRED: If this switch is reset the state transition SAFEOP_2_OP will also successful if no process data was received. The watchdog will only be active when first process data was received (bEcatFirstOutputsReceived) */ #ifndef OP_PD_REQUIRED -#define OP_PD_REQUIRED 1 //This define was already evaluated by ET9300 Project Handler(V. 1.4.1.0)! +#define OP_PD_REQUIRED 1 //This define was already evaluated by ET9300 Project Handler(V. 1.5.3.0)! #endif /** @@ -378,31 +390,31 @@ NOTE: Within the stack this value - 50ms will be used to react before the master CHECK_SM_PARAM_ALIGNMENT: If true the SyncManager length and start address will be checked according the ESC Access.
e.g. ESC_32BIT_ACCESS is set the length and address shall be to an even 4Byte address. */ #ifndef CHECK_SM_PARAM_ALIGNMENT -#define CHECK_SM_PARAM_ALIGNMENT 0 //This define was already evaluated by ET9300 Project Handler(V. 1.4.1.0)! +#define CHECK_SM_PARAM_ALIGNMENT 0 //This define was already evaluated by ET9300 Project Handler(V. 1.5.3.0)! #endif /** EXPLICIT_DEVICE_ID: If this switch is set Explicit device ID requests are handled. For further information about Explicit Device ID see ETG.1020 specification: www.ethercat.org/MemberArea/download_protocolenhancements.asp */ #ifndef EXPLICIT_DEVICE_ID -#define EXPLICIT_DEVICE_ID 1 //This define was already evaluated by ET9300 Project Handler(V. 1.4.1.0)! +#define EXPLICIT_DEVICE_ID 0 //This define was already evaluated by ET9300 Project Handler(V. 1.5.3.0)! #endif /** ESC_SM_WD_SUPPORTED: This switch should be set if the SyncManger watchdog provided by the ESC should be used. If reset the process data watchdog is triggered by a local timer */ #ifndef ESC_SM_WD_SUPPORTED -#define ESC_SM_WD_SUPPORTED 1 //This define was already evaluated by ET9300 Project Handler(V. 1.4.1.0)! +#define ESC_SM_WD_SUPPORTED 1 //This define was already evaluated by ET9300 Project Handler(V. 1.5.3.0)! #endif /** STATIC_OBJECT_DIC: If this switch is set, the object dictionary is "build" static (by default only PIC18 objects are added static) */ #ifndef STATIC_OBJECT_DIC -#define STATIC_OBJECT_DIC 0 //This define was already evaluated by ET9300 Project Handler(V. 1.4.1.0)! +#define STATIC_OBJECT_DIC 0 //This define was already evaluated by ET9300 Project Handler(V. 1.5.3.0)! #endif /** ESC_EEPROM_ACCESS_SUPPORT: If this switch is set the slave stack provides functions to access the EEPROM. */ #ifndef ESC_EEPROM_ACCESS_SUPPORT -#define ESC_EEPROM_ACCESS_SUPPORT 0 //This define was already evaluated by ET9300 Project Handler(V. 1.4.1.0)! +#define ESC_EEPROM_ACCESS_SUPPORT 0 //This define was already evaluated by ET9300 Project Handler(V. 1.5.3.0)! #endif @@ -821,37 +833,37 @@ OBJ_WORD_ALIGN: Shall be set if the object structures are not Byte aligned and 1 #endif /** -ENTER_MBX_CRITICAL: Marco which is called when a critical mailbox section is entered */ +ENTER_MBX_CRITICAL: Macro which is called when a critical mailbox section is entered */ #ifndef ENTER_MBX_CRITICAL #define ENTER_MBX_CRITICAL #endif /** -LEAVE_MBX_CRITICAL: Marco which is called when a critical mailbox section is left */ +LEAVE_MBX_CRITICAL: Macro which is called when a critical mailbox section is left */ #ifndef LEAVE_MBX_CRITICAL #define LEAVE_MBX_CRITICAL #endif /** -ENTER_AOE_CRITICAL: Marco which is called when a critical AoE section is entered */ +ENTER_AOE_CRITICAL: Macro which is called when a critical AoE section is entered */ #ifndef ENTER_AOE_CRITICAL #define ENTER_AOE_CRITICAL #endif /** -LEAVE_AOE_CRITICAL: Marco which is called when a critical AoE section is left */ +LEAVE_AOE_CRITICAL: Macro which is called when a critical AoE section is left */ #ifndef LEAVE_AOE_CRITICAL #define LEAVE_AOE_CRITICAL #endif /** -ENTER_EMCY_CRITICAL: Marco which is called when a critical emergency section is entered */ +ENTER_EMCY_CRITICAL: Macro which is called when a critical emergency section is entered */ #ifndef ENTER_EMCY_CRITICAL #define ENTER_EMCY_CRITICAL #endif /** -LEAVE_EMCY_CRITICAL: Marco which is called when a critical emergency section is left */ +LEAVE_EMCY_CRITICAL: Macro which is called when a critical emergency section is left */ #ifndef LEAVE_EMCY_CRITICAL #define LEAVE_EMCY_CRITICAL #endif @@ -898,7 +910,7 @@ REVISION_NUMBER: Object 0x1018 SI3 (EtherCAT product revision number) */ /** SERIAL_NUMBER: Object 0x1018 SI4 (EtherCAT product serial number) */ #ifndef SERIAL_NUMBER -#define SERIAL_NUMBER 0x00001419 +#define SERIAL_NUMBER 0x00001234 #endif /** @@ -998,7 +1010,7 @@ MAX_MBX_WRITE_ADDRESS: Maximum address for the write (receive) mailbox (Sync Man /** MAX_PD_INPUT_SIZE: Maximum size of the process input data (Sync Manager 3) for cyclic exchange. */ #ifndef MAX_PD_INPUT_SIZE -#define MAX_PD_INPUT_SIZE 0x0044 //This define was already evaluated by ET9300 Project Handler(V. 1.4.1.0)! +#define MAX_PD_INPUT_SIZE 0x0044 //This define was already evaluated by ET9300 Project Handler(V. 1.5.3.0)! #endif /** @@ -1016,7 +1028,7 @@ MAX_MBX_READ_ADDRESS: Maximum address for the read (send) mailbox (Sync Manager /** MAX_PD_OUTPUT_SIZE: Maximum size of the process output data (Sync Manager 2) for cyclic exchange. */ #ifndef MAX_PD_OUTPUT_SIZE -#define MAX_PD_OUTPUT_SIZE 0x044 //This define was already evaluated by ET9300 Project Handler(V. 1.4.1.0)! +#define MAX_PD_OUTPUT_SIZE 0x044 //This define was already evaluated by ET9300 Project Handler(V. 1.5.3.0)! #endif /** diff --git a/ecatappl.c b/ecatappl.c index fb13e1b..b3b0322 100644 --- a/ecatappl.c +++ b/ecatappl.c @@ -1,6 +1,7 @@ /* * This source file is part of the EtherCAT Slave Stack Code licensed by Beckhoff Automation GmbH & Co KG, 33415 Verl, Germany. * The corresponding license agreement applies. This hint shall not be removed. +* https://www.beckhoff.com/media/downloads/slave-stack-code/ethercat_ssc_license.pdf */ /** @@ -15,8 +16,18 @@ \brief Implementation This file contains the Process Data interface -\version 5.12 +\version 5.13 +
Changes to version V5.12:
+V5.13 CIA402 3: change define "CIA402_DEVICE" to "CiA402_SAMPLE_APPLICATION"
+V5.13 CIA402 4: decouple CIA402 state machine and application from ESM (according ETG.6010, clause 4)
+V5.13 COE4: update default entry name handling in case of 16Bit characters, add CoE Read/write indication functions
+V5.13 ECAT 5: check inputsize before calling PDO_InputMappingdo not call PDO_InputMapping in case of no available process data
+V5.13 ECAT 6: change input mapping trigger in case of DC Sync
+V5.13 ECAT1: handle Sync mapped to AL Event
+V5.13 ECAT4: set delay between EEPROM access retries to 10ms
+V5.13 EEPROM1: update eeprom reload in case of ESC 32Bit access (and the small eeprom emulation)
+V5.13 TEST6: add 0xA002 monitoring ob function calls

Changes to version V5.11:
V5.12 APPL1: add optional application function called from the main loop (after mbx and esm are executed)
V5.12 BOOT1: add a bootloader sample application (only the ESM and FoE is supported)
@@ -51,7 +62,7 @@ V5.10 ECAT13: Update Synchronisation handling (FreeRun,SM Sync, Sync0, Sync1)
V5.10 ECAT2: Prevent EEPROM data null pointer access (if the pointer is null an command error is set)
EEPROM emulation return command error if unknown command was received
-V5.10 ECAT4: Update alignment marco for 8 to 15 bit alignments (16 and 32 Bit controllers)
+V5.10 ECAT4: Update alignment macro for 8 to 15 bit alignments (16 and 32 Bit controllers)
Bugfix calculate LED blink frequency
V5.10 ECAT7: Add "bInitFinished" to indicate if the initialization is complete
V5.10 HW2: Change HW_GetTimer return value to UINT32
@@ -133,12 +144,16 @@ V4.00 APPL 6: The main function was split in MainInit and MainLoop #include "coeappl.h" +/*ET9300 Project Handler :(#if DIAGNOSIS_SUPPORTED) lines 148 to 150 deleted*/ #define _APPL_INTERFACE_ 1 #include "applInterface.h" #undef _APPL_INTERFACE_ +/*ECATCHANGE_START(V5.13) CIA402 3*/ +/*ECATCHANGE_END(V5.13) CIA402 3*/ #include "cia402appl.h" +/*ET9300 Project Handler :(#elif EL9800_APPLICATION) lines 160 to 173 deleted*/ @@ -148,6 +163,7 @@ V4.00 APPL 6: The main function was split in MainInit and MainLoop ------ --------------------------------------------------------------------------------------*/ +/*ET9300 Project Handler :(#if ESC_EEPROM_ACCESS_SUPPORT) lines 185 to 187 deleted*/ #ifndef ECAT_TIMER_INC_P_MS /** @@ -158,16 +174,14 @@ V4.00 APPL 6: The main function was split in MainInit and MainLoop -/*ECATCHANGE_START(V5.12) ECAT1*/ #define MEASUREMENT_ACTIVE (((sSyncManOutPar.u16GetCycleTime & 0x1) == 0x1) || ((sSyncManInPar.u16GetCycleTime & 0x1) == 0x1)) -/*ECATCHANGE_END(V5.12) ECAT1*/ +/*ET9300 Project Handler :(#elif MAX_PD_OUTPUT_SIZE > 0) lines 204 to 210 deleted*/ /*----------------------------------------------------------------------------------------- ------ ------ local variables and constants ------ -----------------------------------------------------------------------------------------*/ -/*ECATCHANGE_START(V5.12) ECAT1*/ /*variables required to calculate values for SM Synchronisation objects (0x1C3x)*/ UINT32 u32CycleTimeStartValue; /** <\brief contains the timer start value to measure the application cycle (used in freerun and SM2 sync)*/ @@ -180,15 +194,16 @@ BOOL bMinCycleTimeMeasurementStarted; /** <\brief Indicates if the min cycle mea UINT32 u32MinCycleTimeValue; /** <\brief tmp value of the min cycle time during measurement*/ -/*ECATCHANGE_END(V5.12) ECAT1*/ +/*ET9300 Project Handler :(#if ESC_EEPROM_EMULATION) lines 237 to 241 deleted*/ UINT16 aPdOutputData[(MAX_PD_OUTPUT_SIZE>>1)]; UINT16 aPdInputData[(MAX_PD_INPUT_SIZE>>1)]; /*variables are declared in ecatslv.c*/ +/*ET9300 Project Handler :(#if ESC_32BIT_ACCESS #elif ESC_16BIT_ACCESS) lines 252 to 256 deleted*/ extern VARVOLATILE UINT8 u8dummy; BOOL bInitFinished = FALSE; /** < \brief indicates if the initialization is finished*/ @@ -198,10 +213,8 @@ BOOL bInitFinished = FALSE; /** < \brief indicates if the initialization is fini ------ local functions ------ -----------------------------------------------------------------------------------------*/ -/*ECATCHANGE_START(V5.12) ECAT1*/ UINT32 GetSystemTimeDelay(UINT32 u32StartTime); void HandleCycleTimeMeasurement(void); -/*ECATCHANGE_END(V5.12) ECAT1*/ /*----------------------------------------------------------------------------------------- ------ @@ -212,21 +225,19 @@ void HandleCycleTimeMeasurement(void); /** \brief This function will copies the inputs from the local memory to the ESC memory *//////////////////////////////////////////////////////////////////////////////////////// +/*ET9300 Project Handler :(#if _PIC18 && AL_EVENT_ENABLED) lines 284 to 288 deleted*/ void PDO_InputMapping(void) { #if ((MIN_PD_CYCLE_TIME == 0) || (PD_INPUT_CALC_AND_COPY_TIME == 0)) - /*ECATCHANGE_START(V5.12) ECAT1*/ UINT32 u32TimeValue = 0; UINT16 ALEvent = HW_GetALEventRegister_Isr(); ALEvent = SWAPWORD(ALEvent); - if (MEASUREMENT_ACTIVE) { u32TimeValue = GetSystemTimeDelay(0); } - /*ECATCHANGE_END(V5.12) ECAT1*/ #endif /* ((MIN_PD_CYCLE_TIME == 0) || (PD_INPUT_CALC_AND_COPY_TIME == 0)) */ @@ -241,7 +252,6 @@ void PDO_InputMapping(void) #if ((MIN_PD_CYCLE_TIME == 0) || (PD_INPUT_CALC_AND_COPY_TIME == 0)) - /*ECATCHANGE_START(V5.12) ECAT1*/ if (MEASUREMENT_ACTIVE) { @@ -278,7 +288,6 @@ void PDO_InputMapping(void) #endif /* (MIN_PD_CYCLE_TIME == 0) */ } - /*ECATCHANGE_END(V5.12) ECAT1*/ #endif /* ((MIN_PD_CYCLE_TIME == 0) || (PD_INPUT_CALC_AND_COPY_TIME == 0)) */ } @@ -287,9 +296,9 @@ void PDO_InputMapping(void) \brief This function will copies the outputs from the ESC memory to the local memory. This function is only called in case of an SM2 (output process data) event. *//////////////////////////////////////////////////////////////////////////////////////// +/*ET9300 Project Handler :(#if _PIC18 && AL_EVENT_ENABLED) lines 371 to 375 deleted*/ void PDO_OutputMapping(void) { -/*ECATCHANGE_START(V5.12) ECAT1*/ UINT32 u32TimeValue = 0; if (MEASUREMENT_ACTIVE) { @@ -305,13 +314,11 @@ void PDO_OutputMapping(void) HandleCycleTimeMeasurement(); } -/*ECATCHANGE_END(V5.12) ECAT1*/ HW_EscReadIsr(((MEM_ADDR *)aPdOutputData), nEscAddrOutputData, nPdOutputSize ); APPL_OutputMapping((UINT16*) aPdOutputData); -/*ECATCHANGE_START(V5.12) ECAT1*/ #if ((MIN_PD_CYCLE_TIME == 0) || (PD_OUTPUT_CALC_AND_COPY_TIME == 0)) if (MEASUREMENT_ACTIVE) { @@ -330,7 +337,6 @@ void PDO_OutputMapping(void) #endif } #endif /* #if ((MIN_PD_CYCLE_TIME == 0) || (PD_OUTPUT_CALC_AND_COPY_TIME == 0)) */ -/*ECATCHANGE_END(V5.12) ECAT1*/ } ///////////////////////////////////////////////////////////////////////////////////////// @@ -350,16 +356,19 @@ void ECAT_CheckTimer(void) EsmTimeoutCounter--; } +/*ET9300 Project Handler :(#if !ESC_SM_WD_SUPPORTED) lines 444 to 449 deleted*/ ECAT_SetLedIndication(); DC_CheckWatchdog(); +/*ET9300 Project Handler :(#if ESC_EEPROM_EMULATION) lines 459 to 478 deleted*/ -/*ECATCHANGE_START(V5.12) COE4*/ +/*ECATCHANGE_START(V5.13) */ /* Increment the counter every ms between two updates based on the system time (32Bit overrun is handled in COE_SyncTimeStamp) */ - if (!b32BitDc || ((u64Timestamp & 0xFFFFFFFF) <= 4293000000)) + if (!b32BitDc || ((u64Timestamp & 0xFFFFFFFF) <= 4293000000UL)) +/*ECATCHANGE_END(V5.13) */ { /* the timestamp is stored in ns */ @@ -373,10 +382,11 @@ void ECAT_CheckTimer(void) } u32CheckForDcOverrunCnt++; -/*ECATCHANGE_END(V5.12) COE4*/ + + +/*ET9300 Project Handler :(#if TEST_APPLICATION && COE_SUPPORTED) lines 508 to 512 deleted*/ } -/*ECATCHANGE_START(V5.12) ECAT1*/ ///////////////////////////////////////////////////////////////////////////////////////// /** \brief In case of non DC synchronization the cycle time measurement is started and 0x1C3.2 (Cycle time) is updated @@ -453,16 +463,33 @@ UINT32 GetSystemTimeDelay(UINT32 u32StartTime) } return u32Delta; } -/*ECATCHANGE_END(V5.12) ECAT1*/ +/*ECATCHANGE_START(V5.13) ECAT1*/ +/*ECATCHANGE_END(V5.13) ECAT1*/ +/*ET9300 Project Handler :(#if _PIC18) lines 603 to 607 deleted*/ void PDI_Isr(void) { + /*ECATCHANGE_START(V5.13) ECAT1*/ + BOOL SyncAcknowledgePending = FALSE; + + /* get the AL event register */ + UINT16 ALEvent = HW_GetALEventRegister_Isr(); + ALEvent = SWAPWORD(ALEvent); + + + /* Check if Sync1 Isr has to be called */ + + if (ALEvent & SYNC1_EVENT) + { + Sync1_Isr(); + + SyncAcknowledgePending = TRUE; + } + /*ECATCHANGE_END(V5.13) ECAT1*/ + + if(bEscIntEnabled) { - /* get the AL event register */ - UINT16 ALEvent = HW_GetALEventRegister_Isr(); - ALEvent = SWAPWORD(ALEvent); - if ( ALEvent & PROCESS_OUTPUT_EVENT ) { if(bDcRunning && bDcSyncActive) @@ -475,15 +502,15 @@ void PDI_Isr(void) sSyncManOutPar.u16SmEventMissedCounter--; } -/*ECATCHANGE_START(V5.12) ECAT5*/ sSyncManInPar.u16SmEventMissedCounter = sSyncManOutPar.u16SmEventMissedCounter; -/*ECATCHANGE_END(V5.12) ECAT5*/ +/*ET9300 Project Handler :(#if COE_SUPPORTED #else) lines 654 to 659 deleted*/ /* Outputs were updated, set flag for watchdog monitoring */ bEcatFirstOutputsReceived = TRUE; +/*ET9300 Project Handler :(#if !ESC_SM_WD_SUPPORTED) lines 666 to 669 deleted*/ /* handle output process data event @@ -496,10 +523,12 @@ void PDI_Isr(void) else { /* Just acknowledge the process data event in the INIT,PreOP and SafeOP state */ +/*ET9300 Project Handler :(#if ESC_32BIT_ACCESS #elif ESC_16BIT_ACCESS) lines 682 to 688 deleted*/ HW_EscReadByteIsr(u8dummy,nEscAddrOutputData); HW_EscReadByteIsr(u8dummy,(nEscAddrOutputData+nPdOutputSize-1)); } } +/*ET9300 Project Handler :(#elif MAX_PD_INPUT_SIZE > 0) lines 694 to 718 deleted*/ /* Call ECAT_Application() in SM Sync mode @@ -509,9 +538,14 @@ void PDI_Isr(void) /* The Application is synchronized to process data Sync Manager event*/ ECAT_Application(); } +/*ET9300 Project Handler :(#elif MAX_PD_INPUT_SIZE > 0) lines 730 to 736 deleted*/ +/*ET9300 Project Handler :(#if COE_SUPPORTED #else) lines 737 to 744 deleted*/ - if ( bEcatInputUpdateRunning +/*ECATCHANGE_START(V5.13) ECAT 5*/ + if ( (bEcatInputUpdateRunning == TRUE) && (nPdInputSize > 0) +/*ECATCHANGE_END(V5.13) ECAT 5*/ && ((sSyncManInPar.u16SyncType == SYNCTYPE_SM_SYNCHRON) || (sSyncManInPar.u16SyncType == SYNCTYPE_SM2_SYNCHRON)) +/*ET9300 Project Handler :(#if COE_SUPPORTED #else) lines 752 to 754 deleted*/ ) { /* EtherCAT slave is at least in SAFE-OPERATIONAL, update inputs */ @@ -531,14 +565,31 @@ void PDI_Isr(void) sSyncManInPar.u16CycleExceededCounter = sSyncManOutPar.u16CycleExceededCounter; /* Acknowledge the process data event*/ +/*ET9300 Project Handler :(#if ESC_32BIT_ACCESS #elif ESC_16BIT_ACCESS) lines 780 to 786 deleted*/ HW_EscReadByteIsr(u8dummy,nEscAddrOutputData); HW_EscReadByteIsr(u8dummy,(nEscAddrOutputData+nPdOutputSize-1)); } +/*ET9300 Project Handler :(#elif MAX_PD_INPUT_SIZE > 0) lines 791 to 811 deleted*/ } //if(bEscIntEnabled) -/*ECATCHANGE_START(V5.12) ECAT5*/ + /*ECATCHANGE_START(V5.13) ECAT1*/ + if (ALEvent & SYNC0_EVENT) + { + Sync0_Isr(); + + SyncAcknowledgePending = TRUE; + } + + /* Read Sync0/1 Status Register to acknowledge the event bit in the AL Event register */ + if (SyncAcknowledgePending) + { + volatile UINT32 SyncState = 0; + HW_EscReadDWord(SyncState, ESC_DC_SYNC_STATUS); + + } + /*ECATCHANGE_END(V5.13) ECAT1*/ + COE_UpdateSyncErrorStatus(); -/*ECATCHANGE_END(V5.12) ECAT5*/ } @@ -548,11 +599,25 @@ void Sync0_Isr(void) if(bDcSyncActive) { +/*ECATCHANGE_START(V5.13) ECAT 6*/ + BOOL bCallInputMapping = FALSE; +/*ECATCHANGE_END(V5.13) ECAT 6*/ +/*ET9300 Project Handler :(#if !AL_EVENT_ENABLED) lines 853 to 896 deleted*/ - if ( bEcatInputUpdateRunning ) +/*ECATCHANGE_START(V5.13) ECAT 6*/ + if ((bEcatInputUpdateRunning == TRUE) && (LatchInputSync0Value > 0) && (nPdInputSize > 0)) { - LatchInputSync0Counter++; + if(LatchInputSync0Value > LatchInputSync0Counter) /* Inputs shall be latched on a specific Sync0 event */ + { + LatchInputSync0Counter++; + } + + if (LatchInputSync0Value == LatchInputSync0Counter) + { + bCallInputMapping = TRUE; + } } +/*ECATCHANGE_END(V5.13) ECAT 6*/ if(u16SmSync0Value > 0) { @@ -564,11 +629,12 @@ void Sync0_Isr(void) sSyncManOutPar.u16SmEventMissedCounter = sSyncManOutPar.u16SmEventMissedCounter + 3; } - if ((nPdInputSize > 0) && (nPdOutputSize == 0) && (sSyncManInPar.u16SmEventMissedCounter <= sErrorSettings.u16SyncErrorCounterLimit)) - { - sSyncManInPar.u16SmEventMissedCounter = sSyncManInPar.u16SmEventMissedCounter + 3; - } + if ((nPdInputSize > 0) && (nPdOutputSize == 0) && (sSyncManInPar.u16SmEventMissedCounter <= sErrorSettings.u16SyncErrorCounterLimit)) + { + sSyncManInPar.u16SmEventMissedCounter = sSyncManInPar.u16SmEventMissedCounter + 3; + } +/*ET9300 Project Handler :(#if COE_SUPPORTED #else) lines 937 to 942 deleted*/ } // if (u16SmSync0Counter > u16SmSync0Value) @@ -593,6 +659,7 @@ void Sync0_Isr(void) u16SmSync0Counter = 0; sSyncManInPar.u16SmEventMissedCounter = 0; +/*ET9300 Project Handler :(#if COE_SUPPORTED #else) lines 970 to 972 deleted*/ } } @@ -607,8 +674,8 @@ void Sync0_Isr(void) /* Application is synchronized to SYNC0 event*/ ECAT_Application(); - if ( bEcatInputUpdateRunning - && (LatchInputSync0Value > 0) && (LatchInputSync0Value == LatchInputSync0Counter) ) /* Inputs shall be latched on a specific Sync0 event */ +/*ECATCHANGE_START(V5.13) ECAT 6*/ + if (bCallInputMapping == TRUE) { /* EtherCAT slave is at least in SAFE-OPERATIONAL, update inputs */ PDO_InputMapping(); @@ -619,12 +686,11 @@ void Sync0_Isr(void) LatchInputSync0Counter = 0; } } +/*ECATCHANGE_END(V5.13) ECAT 6*/ } -/*ECATCHANGE_START(V5.12) ECAT5*/ COE_UpdateSyncErrorStatus(); -/*ECATCHANGE_END(V5.12) ECAT5*/ } @@ -632,7 +698,9 @@ void Sync1_Isr(void) { Sync1WdCounter = 0; - if ( bEcatInputUpdateRunning + /*ECATCHANGE_START(V5.13) ECAT 5*/ + if ( (bEcatInputUpdateRunning == TRUE) && (nPdInputSize > 0) +/*ECATCHANGE_END(V5.13) ECAT 5*/ && (sSyncManInPar.u16SyncType == SYNCTYPE_DCSYNC1) && (LatchInputSync0Value == 0)) /* Inputs are latched on Sync1 (LatchInputSync0Value == 0), if LatchInputSync0Value > 0 inputs are latched with Sync0 */ { @@ -846,25 +914,36 @@ UINT16 MainInit(void) #endif -/*ECATCHANGE_START(V5.12) ECAT8*/ /* Reset application function pointer*/ +/*ET9300 Project Handler :(#if ESC_EEPROM_EMULATION) lines 1240 to 1245 deleted*/ +/*ET9300 Project Handler :(#if EOE_SUPPORTED) lines 1248 to 1251 deleted*/ + pAPPL_FoeRead = NULL; + pAPPL_FoeReadData = NULL; + pAPPL_FoeError = NULL; + pAPPL_FoeWrite = NULL; + pAPPL_FoeWriteData = NULL; + + /* ECATCHANGE_START(V5.13) COE4*/ + pAPPL_CoeReadInd = NULL; + pAPPL_CoeWriteInd = NULL; + /* ECATCHANGE_END(V5.13) COE4*/ pAPPL_MainLoop = NULL; -/*ECATCHANGE_END(V5.12) ECAT8*/ /* initialize the EtherCAT Slave Interface */ ECAT_Init(); /* initialize the objects */ COE_ObjInit(); +/*ET9300 Project Handler :(#if DIAGNOSIS_SUPPORTED) lines 1277 to 1280 deleted*/ +/*ET9300 Project Handler :(#if ESC_EEPROM_ACCESS_SUPPORT) lines 1282 to 1315 deleted*/ /*indicate that the slave stack initialization finished*/ bInitFinished = TRUE; -/*ECATCHANGE_START(V5.12) ECAT1*/ bMinCycleTimeMeasurementStarted = FALSE; u32CycleTimeStartValue = 0; @@ -885,7 +964,7 @@ UINT16 MainInit(void) if (u32TimeValue <= u32Delta) { - u32Delta = u32Delta - u32TimeValue; + u32Delta = u32Delta - u32TimeValue; } else { @@ -909,8 +988,8 @@ UINT16 MainInit(void) } - /*ECATCHANGE_END(V5.12) ECAT1*/ +/*ET9300 Project Handler :(#if ESC_EEPROM_EMULATION) lines 1368 to 1391 deleted*/ /*Application Init need to be called from the application layer*/ return Error; @@ -933,16 +1012,19 @@ void MainLoop(void) return; } + + /* FreeRun-Mode: bEscIntEnabled = FALSE, bDcSyncActive = FALSE Synchron-Mode: bEscIntEnabled = TRUE, bDcSyncActive = FALSE DC-Mode: bEscIntEnabled = TRUE, bDcSyncActive = TRUE */ if ( (!bEscIntEnabled || !bEcatFirstOutputsReceived) /* SM-Synchronous, but not SM-event received */ +/*ET9300 Project Handler :(#if MAX_PD_OUTPUT_SIZE > 0 #else) lines 1422 to 1424 deleted*/ && !bDcSyncActive /* DC-Synchronous */ ) { /* if the application is running in ECAT Synchron Mode the function ECAT_Application is called - from the ESC interrupt routine (in mcihw.c or spihw.c), + from the ESC interrupt routine, in ECAT Synchron Mode it should be additionally checked, if the SM-event is received at least once (bEcatFirstOutputsReceived = 1), otherwise no interrupt is generated and the function ECAT_Application has to be called here (with interrupts disabled, @@ -958,6 +1040,7 @@ void MainLoop(void) { /* set the flag for the state machine behavior */ bEcatFirstOutputsReceived = TRUE; +/*ET9300 Project Handler :(#if !ESC_SM_WD_SUPPORTED) lines 1448 to 1451 deleted*/ if ( bEcatOutputUpdateRunning ) { /* update the outputs */ @@ -971,23 +1054,22 @@ void MainLoop(void) { /* Outputs were updated, set flag for watchdog monitoring */ bEcatFirstOutputsReceived = TRUE; +/*ET9300 Project Handler :(#if !ESC_SM_WD_SUPPORTED) lines 1466 to 1469 deleted*/ } } } -/*ECATCHANGE_START(V5.12) ECAT3*/ DISABLE_ESC_INT(); -/*ECATCHANGE_END(V5.12) ECAT3*/ ECAT_Application(); - if ( bEcatInputUpdateRunning ) - { +/*ECATCHANGE_START(V5.13) ECAT 5*/ + if ( (bEcatInputUpdateRunning == TRUE) && (nPdInputSize > 0)) +/*ECATCHANGE_END(V5.13) ECAT 5*/ + { /* EtherCAT slave is at least in SAFE-OPERATIONAL, update inputs */ PDO_InputMapping(); } -/*ECATCHANGE_START(V5.12) ECAT3*/ ENABLE_ESC_INT(); -/*ECATCHANGE_END(V5.12) ECAT3*/ } /* there is no interrupt routine for the hardware timer so check the timer register if the desired cycle elapsed*/ @@ -1002,12 +1084,10 @@ void MainLoop(void) } } -/*ECATCHANGE_START(V5.12) COE4*/ if (u32CheckForDcOverrunCnt >= CHECK_DC_OVERRUN_IN_MS) { COE_SyncTimeStamp(); } -/*ECATCHANGE_END(V5.12) COE4*/ /* call EtherCAT functions */ ECAT_Main(); @@ -1016,17 +1096,15 @@ void MainLoop(void) COE_Main(); CheckIfEcatError(); - if(bEcatInputUpdateRunning) - { + /*ECATCHANGE_START(V5.13) CIA402 4*/ + /*decouple CIA402 state machine from ESM*/ + /*ECATCHANGE_END(V5.13) CIA402 4*/ CiA402_StateMachine(); - } -/*ECATCHANGE_START(V5.12) APPL1*/ if (pAPPL_MainLoop != NULL) { pAPPL_MainLoop(); } -/*ECATCHANGE_END(V5.12) APPL1*/ } /*The main function was moved to the application files.*/ @@ -1035,12 +1113,13 @@ void MainLoop(void) \brief ECAT_Application (prev. SSC versions "COE_Application") this function calculates and the physical process signals and triggers the input mapping *//////////////////////////////////////////////////////////////////////////////////////// +/*ET9300 Project Handler :(#if _PIC18 && AL_EVENT_ENABLED) lines 1546 to 1550 deleted*/ void ECAT_Application(void) { #if (MIN_PD_CYCLE_TIME == 0) - /*ECATCHANGE_START(V5.12) ECAT1*/ UINT32 u32TimeValue = 0; + if (MEASUREMENT_ACTIVE) { u32TimeValue = GetSystemTimeDelay(0); @@ -1054,7 +1133,6 @@ void ECAT_Application(void) u32MinCycleTimeValue = 0; } } /* measurement started*/ -/*ECATCHANGE_END(V5.12) ECAT1*/ #endif /* (MIN_PD_CYCLE_TIME == 0)*/ if (MEASUREMENT_ACTIVE) @@ -1066,17 +1144,15 @@ void ECAT_Application(void) } } - /*Axis configuration is written in state change from PREOP to SAFEOP - => trigger CiA402 Application if device is in SAFEOP or OP - (Motion Controller function is only triggered if DC Synchronisation is active and valid mode of operation is set)*/ - if(bEcatInputUpdateRunning) - { - APPL_Application(); - } + + /*ECATCHANGE_START(V5.13) CIA402 4*/ + /*decouple CIA402 application from ESM*/ + /*ECATCHANGE_END(V5.13) CIA402 4*/ + APPL_Application(); + /* PDO Input mapping is called from the specific trigger ISR */ #if (MIN_PD_CYCLE_TIME == 0) -/*ECATCHANGE_START(V5.12) ECAT1*/ if (MEASUREMENT_ACTIVE) { @@ -1110,11 +1186,12 @@ void ECAT_Application(void) } }/* measurement started*/ -/*ECATCHANGE_END(V5.12) ECAT1*/ #endif /* #if MIN_PD_CYCLE_TIME == 0 */ } +/*ET9300 Project Handler :(#if ESC_EEPROM_ACCESS_SUPPORT) lines 1644 to 2002 deleted*/ +/*ET9300 Project Handler :(#if ESC_EEPROM_EMULATION) lines 2004 to 2224 deleted*/ /** @} */ diff --git a/ecatappl.h b/ecatappl.h index 5013dc0..6469783 100644 --- a/ecatappl.h +++ b/ecatappl.h @@ -1,6 +1,7 @@ /* * This source file is part of the EtherCAT Slave Stack Code licensed by Beckhoff Automation GmbH & Co KG, 33415 Verl, Germany. * The corresponding license agreement applies. This hint shall not be removed. +* https://www.beckhoff.com/media/downloads/slave-stack-code/ethercat_ssc_license.pdf */ /** @@ -22,7 +23,7 @@ V5.11 ECAT10: change PROTO handling to prevent compiler errors
V5.10 ECAT13: Update Synchronisation handling (FreeRun,SM Sync, Sync0, Sync1)
Compare DC UINT configuration (by ESC Config data) vs. DC activation register settings
Update 0x1C3x entries
-V5.10 ECAT4: Update alignment marco for 8 to 15 bit alignments (16 and 32 Bit controllers)
+V5.10 ECAT4: Update alignment macro for 8 to 15 bit alignments (16 and 32 Bit controllers)
Bugfix calculate LED blink frequency

Changes to version - :
V5.01 : Start file change log @@ -55,31 +56,33 @@ V5.01 : Start file change log ------ -----------------------------------------------------------------------------------------*/ -#define BOOLEAN(x) UINT8(x):1 /**< \brief Marco to define BOOLEAN object entry*/ -#define BIT1(x) UINT8(x):1 /**< \brief Marco to define BIT1 object entry*/ -#define BIT2(x) UINT8(x):2 /**< \brief Marco to define BIT2 object entry*/ -#define BIT3(x) UINT8(x):3 /**< \brief Marco to define BIT3 object entry*/ -#define BIT4(x) UINT8(x):4 /**< \brief Marco to define BIT4 object entry*/ -#define BIT5(x) UINT8(x):5 /**< \brief Marco to define BIT5 object entry*/ -#define BIT6(x) UINT8(x):6 /**< \brief Marco to define BIT5 object entry*/ -#define BIT7(x) UINT8(x):7 /**< \brief Marco to define BIT6 object entry*/ -#define BIT8(x) UINT8(x):8 /**< \brief Marco to define BIT7 object entry*/ +/*ET9300 Project Handler :(#if CONTROLLER_16BIT || CONTROLLER_32BIT) lines 58 to 85 deleted*/ +#define BOOLEAN(x) UINT8 x:1 /**< \brief Macro to define BOOLEAN object entry*/ +#define BIT1(x) UINT8 x:1 /**< \brief Macro to define BIT1 object entry*/ +#define BIT2(x) UINT8 x:2 /**< \brief Macro to define BIT2 object entry*/ +#define BIT3(x) UINT8 x:3 /**< \brief Macro to define BIT3 object entry*/ +#define BIT4(x) UINT8 x:4 /**< \brief Macro to define BIT4 object entry*/ +#define BIT5(x) UINT8 x:5 /**< \brief Macro to define BIT5 object entry*/ +#define BIT6(x) UINT8 x:6 /**< \brief Macro to define BIT5 object entry*/ +#define BIT7(x) UINT8 x:7 /**< \brief Macro to define BIT6 object entry*/ +#define BIT8(x) UINT8 x:8 /**< \brief Macro to define BIT7 object entry*/ #define ALIGN0(x) -#define ALIGN1(x) UINT8(x):1; /**< \brief Marco to define ALIGN1 object entry*/ -#define ALIGN2(x) UINT8(x):2; /**< \brief Marco to define ALIGN2 object entry*/ -#define ALIGN3(x) UINT8(x):3; /**< \brief Marco to define ALIGN3 object entry*/ -#define ALIGN4(x) UINT8(x):4; /**< \brief Marco to define ALIGN4 object entry*/ -#define ALIGN5(x) UINT8(x):5; /**< \brief Marco to define ALIGN5 object entry*/ -#define ALIGN6(x) UINT8(x):6; /**< \brief Marco to define ALIGN6 object entry*/ -#define ALIGN7(x) UINT8(x):7; /**< \brief Marco to define ALIGN7 object entry*/ -#define ALIGN8(x) UINT8(x):8; /**< \brief Marco to define ALIGN8 object entry*/ -#define ALIGN9(x) UINT16(x):9; /**< \brief Marco to define ALIGN9 object entry*/ -#define ALIGN10(x) UINT16(x):10; /**< \brief Marco to define ALIGN10 object entry*/ -#define ALIGN11(x) UINT16(x):11; /**< \brief Marco to define ALIGN11 object entry*/ -#define ALIGN12(x) UINT16(x):12; /**< \brief Marco to define ALIGN12 object entry*/ -#define ALIGN13(x) UINT16(x):13; /**< \brief Marco to define ALIGN13 object entry*/ -#define ALIGN14(x) UINT16(x):14; /**< \brief Marco to define ALIGN14 object entry*/ -#define ALIGN15(x) UINT16(x):15; /**< \brief Marco to define ALIGN15 object entry*/ +#define ALIGN1(x) UINT8 x:1; /**< \brief Macro to define ALIGN1 object entry*/ +#define ALIGN2(x) UINT8 x:2; /**< \brief Macro to define ALIGN2 object entry*/ +#define ALIGN3(x) UINT8 x:3; /**< \brief Macro to define ALIGN3 object entry*/ +#define ALIGN4(x) UINT8 x:4; /**< \brief Macro to define ALIGN4 object entry*/ +#define ALIGN5(x) UINT8 x:5; /**< \brief Macro to define ALIGN5 object entry*/ +#define ALIGN6(x) UINT8 x:6; /**< \brief Macro to define ALIGN6 object entry*/ +#define ALIGN7(x) UINT8 x:7; /**< \brief Macro to define ALIGN7 object entry*/ +#define ALIGN8(x) UINT8 x:8; /**< \brief Macro to define ALIGN8 object entry*/ +/*ET9300 Project Handler :(#if _PIC18) lines 104 to 112 deleted*/ +#define ALIGN9(x) UINT16 x:9; /**< \brief Macro to define ALIGN9 object entry*/ +#define ALIGN10(x) UINT16 x:10; /**< \brief Macro to define ALIGN10 object entry*/ +#define ALIGN11(x) UINT16 x:11; /**< \brief Macro to define ALIGN11 object entry*/ +#define ALIGN12(x) UINT16 x:12; /**< \brief Macro to define ALIGN12 object entry*/ +#define ALIGN13(x) UINT16 x:13; /**< \brief Macro to define ALIGN13 object entry*/ +#define ALIGN14(x) UINT16 x:14; /**< \brief Macro to define ALIGN14 object entry*/ +#define ALIGN15(x) UINT16 x:15; /**< \brief Macro to define ALIGN15 object entry*/ #endif //_ECATAPPL_H_ #if defined(_ECATAPPL_) && (_ECATAPPL_ == 1) @@ -96,6 +99,7 @@ V5.01 : Start file change log -----------------------------------------------------------------------------------------*/ +/*ET9300 Project Handler :(#if ESC_EEPROM_EMULATION) lines 138 to 140 deleted*/ PROTO BOOL bEcatWaitForInputUpdate; /**< \brief Wait for input update*/ PROTO BOOL bEtherCATRunLed; /**< \brief Current run LED value*/ @@ -104,6 +108,7 @@ PROTO BOOL bRunApplication; /**< \brief Indicates if the stack shall be running +/*ET9300 Project Handler :(#if ESC_EEPROM_EMULATION) lines 149 to 151 deleted*/ /*----------------------------------------------------------------------------------------- ------ ------ Global Functions @@ -124,7 +129,9 @@ PROTO void PDO_InputMapping(void); PROTO void ECAT_SetLedIndication(void); PROTO void CalcSMCycleTime(void); +/*ET9300 Project Handler :(#if ESC_EEPROM_ACCESS_SUPPORT) lines 178 to 181 deleted*/ +/*ET9300 Project Handler :(#if ESC_EEPROM_EMULATION) lines 183 to 185 deleted*/ diff --git a/ecatcoe.c b/ecatcoe.c index cc35981..29753cc 100644 --- a/ecatcoe.c +++ b/ecatcoe.c @@ -1,6 +1,7 @@ /* * This source file is part of the EtherCAT Slave Stack Code licensed by Beckhoff Automation GmbH & Co KG, 33415 Verl, Germany. * The corresponding license agreement applies. This hint shall not be removed. +* https://www.beckhoff.com/media/downloads/slave-stack-code/ethercat_ssc_license.pdf */ /** @@ -14,8 +15,11 @@ \brief Implementation This file contains the CoE mailbox interface -\version 5.11 +\version 5.13 +
Changes to version V5.11:
+V5.13 COE8: handle failure on continue indication
+V5.13 TEST4: memory leak on SDO response receive

Changes to version V5.0:
V5.11 COE4: "change prototype of ""COE_ContinueInd()"" return <> 0 if a failure occurred"
V5.11 ECAT10: change PROTO handling to prevent compiler errors
@@ -45,6 +49,7 @@ V4.08 MBX 1: If the switch MAILBOX_QUEUE was set, we have to put all SDO Info Re /*remove definition of _ECATCOE_ (#ifdef is used in ecatcoe.h)*/ +/*ET9300 Project Handler :(#if TEST_APPLICATION) lines 52 to 60 deleted*/ /*--------------------------------------------------------------------------------------- @@ -83,7 +88,7 @@ V4.08 MBX 1: If the switch MAILBOX_QUEUE was set, we have to put all SDO Info Re void COE_Init(void) { pCoeSendStored = 0; - nSdoInfoFragmentsLeft = 0; +/*ET9300 Project Handler :(#if SEGMENTED_SDO_SUPPORTED) lines 99 to 101 deleted*/ } ///////////////////////////////////////////////////////////////////////////////////////// @@ -107,6 +112,7 @@ UINT8 COE_ServiceInd(TCOEMBX MBXMEM *pCoeMbx) /* SDO-Request received, call SDOS_SdoInd to process the SDO-Request if an existing SDO-Stack shall be used, the corresponding function should be called */ +/*ET9300 Project Handler :(#if TEST_APPLICATION && EMERGENCY_SUPPORTED) lines 125 to 152 deleted*/ result = SDOS_SdoInd( (TINITSDOMBX MBXMEM *) pCoeMbx ); break; @@ -118,6 +124,7 @@ UINT8 COE_ServiceInd(TCOEMBX MBXMEM *pCoeMbx) case COESERVICE_SDORESPONSE: +/*ET9300 Project Handler :(#if TEST_APPLICATION) lines 164 to 178 deleted*/ case COESERVICE_EMERGENCY: case COESERVICE_TXPDO: case COESERVICE_RXPDO: @@ -149,8 +156,12 @@ UINT8 COE_ContinueInd(TMBX MBXMEM * pMbx) if (pCoeSendStored) { /* send the stored CoE service which could not be sent before */ - MBX_MailboxSendReq(pCoeSendStored, 0); - pCoeSendStored = 0; +/*ECATCHANGE_START(V5.13) COE8*/ + if (MBX_MailboxSendReq(pCoeSendStored, COE_SERVICE) == 0) + { + pCoeSendStored = 0; + } +/*ECATCHANGE_END(V5.13) COE8*/ } else { diff --git a/ecatcoe.h b/ecatcoe.h index 0c5a3f0..3cf31a7 100644 --- a/ecatcoe.h +++ b/ecatcoe.h @@ -1,6 +1,7 @@ /* * This source file is part of the EtherCAT Slave Stack Code licensed by Beckhoff Automation GmbH & Co KG, 33415 Verl, Germany. * The corresponding license agreement applies. This hint shall not be removed. +* https://www.beckhoff.com/media/downloads/slave-stack-code/ethercat_ssc_license.pdf */ /** @@ -61,6 +62,7 @@ V5.01 : Start file change log /*--------------------------------------------- - COE Structures -----------------------------------------------*/ +/*ET9300 Project Handler :(#if BIG_ENDIAN_FORMAT) lines 64 to 67 deleted*/ #define COEHEADER_COESERVICESHIFT 12 /**< \brief CoE service shift (within CoE header)*/ #define COEHEADER_COESERVICEMASK 0xF000 /**< \brief CoE service mask (within CoE header)*/ diff --git a/ecatfoe.c b/ecatfoe.c new file mode 100644 index 0000000..be5f71e --- /dev/null +++ b/ecatfoe.c @@ -0,0 +1,395 @@ +/* +* This source file is part of the EtherCAT Slave Stack Code licensed by Beckhoff Automation GmbH & Co KG, 33415 Verl, Germany. +* The corresponding license agreement applies. This hint shall not be removed. +* https://www.beckhoff.com/media/downloads/slave-stack-code/ethercat_ssc_license.pdf +*/ + +/** +\addtogroup FoE FileTransfer over EtherCAT +@{ +*/ + +/** +\file ecatfoe.c +\author EthercatSSC@beckhoff.com +\brief Implementation +This file contains the FoE mailbox interface + +\version 5.13 + +
Changes to version V5.12:
+V5.13 EOE1:
+V5.13 FOE1: handle failure on continue indication
+
Changes to version V5.11:
+V5.12 FOE2: handle 16bit only access
+V5.12 MBX4: in case of a disable mailbox queue and two consecutive foe uploads the mailbox receive handler is blocked
+
Changes to version V5.10:
+V5.11 FOE1: handle busy on a read request, change OPMode to OPCode (same terms as in the spec)
+
Changes to version V5.0:
+V5.10 MBX1: Remove multiple swapping of length filed in mailbox header
+
Changes to version V4.40:
+V5.0 FOE1: Free memory if FoE_ServciceInd() is left.
+V5.0 FOE2: Update error code (Bit 15 shall not be set).
+V5.0 FOE3: Update byte swapping for big endian and big endian 16 configurations.
+V5.0 FOE4: Update Error text handling for 16Bit operations.
+
Changes to version V4.11:
+V4.40 FOE1: correct FoE busy values
+V4.40 MBX2: HW_CopyToSendMailbox merge to a generic function (new: MBX_CopyToSendMailbox)
+
Changes to version V4.10:
+V4.11 FOE 1 fixed a problem with a huge FOE_MADATA define
+V4.11 FOE 2 u16PacketNo is now a 32bit variable (u32PacketNo) to conform with the spec
+
Changes to version V4.00:
+V4.10 FOE 1-3 when downloading the firmware the FoE state machine was not set to FOE_READY
+ when the last data segment was downloaded so that the next FoE service failed
+
Changes to version V3.20:
+V4.00 FOE 1 - if a FoE Error service is received it should not be acknowledged
+V4.00 FOE 2 - if a FoE service response could not be sent because the mailbox is full
+ it has to be re-transmit otherwise the response get lost
+ +*/ + +/*----------------------------------------------------------------------------------------- +------ +------ Includes +------ +-----------------------------------------------------------------------------------------*/ + +#include "ecat_def.h" + + + +#include "ecatslv.h" + +#define _ECATFOE_ 1 +#include "ecatfoe.h" +#undef _ECATFOE_ +#define _ECATFOE_ 0 + +#include "foeappl.h" +/*----------------------------------------------------------------------------------------- +------ +------ functions +------ +-----------------------------------------------------------------------------------------*/ + +///////////////////////////////////////////////////////////////////////////////////////// +/** + + \brief This function initialize the FoE Interface. +*//////////////////////////////////////////////////////////////////////////////////////// + +void FOE_Init(void) +{ + /* no file transmission sequence is running */ + u16FileAccessState = FOE_READY; + /* initialize the expected packet number */ + u32PacketNo = 0; + pFoeSendStored = NULL; +} + + +///////////////////////////////////////////////////////////////////////////////////////// +/** + \param pFoeInd Pointer to the received mailbox data from the master. + + \return result of the operation (0 (success) or mailbox error code (MBXERR_.... defined in + mailbox.h)) + + \brief This function is called when a FoE (File Access over EtherCAT) service is received from + the master. +*//////////////////////////////////////////////////////////////////////////////////////// + +UINT8 FOE_ServiceInd(TFOEMBX MBXMEM * pFoeInd) +{ + /* initialize the result of the service checking */ + UINT16 nextState = ECAT_FOE_ERRCODE_ILLEGAL; + /* dataSize contains the size of the file data */ + UINT16 dataSize = SWAPWORD(pFoeInd->MbxHeader.Length) - FOE_HEADER_SIZE; + + + /* it has to be checked if the mailbox protocol is correct, the sent mailbox data length has to + great enough for the service header of the FoE service */ + if ( SWAPWORD(pFoeInd->MbxHeader.Length) < FOE_HEADER_SIZE ) + { + return MBXERR_SIZETOOSHORT; + } + + switch ( SWAPWORD(pFoeInd->FoeHeader.OpCode) ) + { + case ECAT_FOE_OPCODE_RRQ: + /* file read is requested */ + if ( u16FileAccessState == FOE_READY ) + { + UINT32 u32Password = SWAPDWORD((((UINT32)pFoeInd->FoeHeader.Cmd.Password[FOE_COMMAND_LOWWORD]) | ((UINT32)pFoeInd->FoeHeader.Cmd.Password[FOE_COMMAND_HIGHWORD]) << 16)); + /* last FoE sequence was finished, call application function */ + nextState = FOE_Read((UINT16 MBXMEM *)pFoeInd->Data, dataSize, (UINT16*)pFoeInd->Data, u32Password); + + /* u32LastFileOffset contains the offset of the file which is sent now */ + u32LastFileOffset = 0; + + if (nextState <= FOE_MAXDATA) + { + /* the first data packet shall be sent */ + u32PacketNo = 1; + /* u32FileOffset contains the offset of the file which shall be sent when the next FoE ACK is received */ + u32FileOffset = nextState; + } + else if (nextState <= FOE_MAXBUSY) + { + u32PacketNo = 0; + u32FileOffset = 0; + u16FileAccessState = FOE_WAIT_FOR_ACK; + } + } + break; + + case ECAT_FOE_OPCODE_WRQ: + /* file write is requested */ + if ( u16FileAccessState == FOE_READY ) + { + UINT32 u32Password = SWAPDWORD((((UINT32)pFoeInd->FoeHeader.Cmd.Password[FOE_COMMAND_LOWWORD]) | ((UINT32)pFoeInd->FoeHeader.Cmd.Password[FOE_COMMAND_HIGHWORD]) << 16)); + /* last FoE sequence was finished, call application function */ + nextState = FOE_Write((UINT16 MBXMEM *)pFoeInd->Data, dataSize, u32Password); + if ( nextState == 0 ) + { + /* checking was successful, sent a FoE Ack service */ + nextState = FOE_ACK; + } + /* initialize the packet number */ + u32PacketNo = 0; + } + break; + + case ECAT_FOE_OPCODE_DATA: + /* file data is received */ + if ( u16FileAccessState == FOE_WAIT_FOR_DATA + || u16FileAccessState == FOE_WAIT_FOR_LAST_DATA ) + { + UINT32 u32CmdPacketNo = SWAPDWORD((((UINT32)pFoeInd->FoeHeader.Cmd.PacketNo[FOE_COMMAND_LOWWORD]) | ((UINT32)pFoeInd->FoeHeader.Cmd.PacketNo[FOE_COMMAND_HIGHWORD]) << 16)); + +/*ET9300 Project Handler :(#if BIG_ENDIAN_16BIT) lines 170 to 172 deleted*/ + /* we are waiting for file data, service is correct */ + if ( u32CmdPacketNo == u32PacketNo ) + { + /* the packet number is correct, call application function to store the file data */ + nextState = FOE_Data((UINT16 MBXMEM *)pFoeInd->Data, dataSize); + if ( nextState == 0 ) + { + /* checking was successful, sent a FoE Ack service */ + nextState = FOE_ACK; + } + } + else + { + nextState = ECAT_FOE_ERRCODE_PACKENO; + } + } + break; + + case ECAT_FOE_OPCODE_ACK: + /* acknowledge is received, next file part can be sent */ + if ( u16FileAccessState == FOE_WAIT_FOR_ACK ) + { + /* we are waiting for an acknowledge, service is correct, call the application function + to get the next part of the file */ + nextState = FOE_Ack( u32FileOffset, (UINT16 MBXMEM *)pFoeInd->Data ); + /* u32LastFileOffset contains the offset of the file which is sent now */ + u32LastFileOffset = u32FileOffset; + + if (nextState <= FOE_MAXDATA) + { + /* u32FileOffset contains the offset of the file which shall be sent when the next FoE ACK is received */ + u32FileOffset += nextState; + /* increment the packet number */ + u32PacketNo++; + } + } + else if ( u16FileAccessState == FOE_WAIT_FOR_LAST_ACK ) + { + /* we were waiting for the last acknowledge, now the sequence is finished */ + nextState = FOE_FINISHED_NOACK; + } + break; + + case ECAT_FOE_OPCODE_ERR: + /* a FoE Error service is received */ + if ( u16FileAccessState != FOE_READY ) + { + UINT32 u32CmdErrorCode = SWAPDWORD((((UINT32)pFoeInd->FoeHeader.Cmd.ErrorCode[FOE_COMMAND_LOWWORD]) | ((UINT32)pFoeInd->FoeHeader.Cmd.ErrorCode[FOE_COMMAND_HIGHWORD]) << 16)); + + /* a file transmission sequence is active, inform the application, that this sequence + was stopped */ + FOE_Error( u32CmdErrorCode ); + + nextState = FOE_FINISHED; + } + break; + + case ECAT_FOE_OPCODE_BUSY: + /* a FoE Busy service is received */ + if ( u16FileAccessState == FOE_WAIT_FOR_ACK + || u16FileAccessState == FOE_WAIT_FOR_LAST_ACK ) + { + /* we are waiting for an acknowledge, service is correct, call the application function + to resend the last part of the file */ + nextState = FOE_Busy( SWAPWORD(pFoeInd->FoeHeader.Cmd.Busy.Done), u32LastFileOffset, (UINT16 MBXMEM *)pFoeInd->Data ); + } + break; + + } + + if ( nextState <= FOE_MAXDATA ) + { + /* we send DATA and wait for ACK */ + UINT32 d = SWAPDWORD(u32PacketNo); + + /* store the OpCode in the mailbox buffer */ + pFoeInd->FoeHeader.OpCode = SWAPWORD(ECAT_FOE_OPCODE_DATA); + /* store the packet number in the mailbox buffer */ + pFoeInd->FoeHeader.Cmd.PacketNo[FOE_COMMAND_LOWWORD] = ((d & 0x0000FFFF)); + pFoeInd->FoeHeader.Cmd.PacketNo[FOE_COMMAND_HIGHWORD] = ((d & 0xFFFF0000) >> 16); + + /* store the size of the mailbox data in the mailbox buffer */ + pFoeInd->MbxHeader.Length = FOE_HEADER_SIZE + nextState; + + if ( nextState == u16SendMbxSize - FOE_HEADER_SIZE - MBX_HEADER_SIZE ) + { + /* packets still following, we wait for an ACK */ + u16FileAccessState = FOE_WAIT_FOR_ACK; + } + else + { + /* it was the last Packet, we wait for the last ACK */ + u16FileAccessState = FOE_WAIT_FOR_LAST_ACK; + } + } + else if ( nextState <= FOE_MAXBUSY ) + { + /* we are still storing the received file data (in flash for example) and + send BUSY and wait for the DATA to be sent again */ + /* store the OpCode in the mailbox buffer */ + pFoeInd->FoeHeader.OpCode = SWAPWORD(ECAT_FOE_OPCODE_BUSY); + /* store the information how much progress we made until we can receive file data again */ + pFoeInd->FoeHeader.Cmd.Busy.Done = SWAPWORD(nextState-FOE_MAXBUSY_ZERO); + + pFoeInd->FoeHeader.Cmd.Busy.Entire = 0; + /* store the size of the mailbox data in the mailbox buffer */ + + pFoeInd->MbxHeader.Length = FOE_HEADER_SIZE; + } + else if ( nextState == FOE_ACK || nextState == FOE_ACKFINISHED ) + { + /* we send ACK and wait for DATA + the next file data is expected with an incremented packet number, but + we have to acknowledge the old packet first */ + UINT32 d = SWAPDWORD(u32PacketNo); + u32PacketNo++; + + /* store the OpCode in the mailbox buffer */ + pFoeInd->FoeHeader.OpCode = SWAPWORD(ECAT_FOE_OPCODE_ACK); + /* store the packet number in the mailbox buffer */ + pFoeInd->FoeHeader.Cmd.PacketNo[FOE_COMMAND_LOWWORD] = ((d & 0x0000FFFF)); + pFoeInd->FoeHeader.Cmd.PacketNo[FOE_COMMAND_HIGHWORD] = ((d & 0xFFFF0000) >> 16); + + /* store the size of the mailbox data in the mailbox buffer */ + pFoeInd->MbxHeader.Length = SIZEOF(TFOEHEADER); + + /* we wait for the next data part */ + if ( nextState == FOE_ACK ) + { + /* we wait for the next data part */ + u16FileAccessState = FOE_WAIT_FOR_DATA; + } + else + { + /* the last data part was received */ + u16FileAccessState = FOE_READY; + } + } + else if ( nextState < FOE_ERROR ) + { + /* the file transmission sequence is finished, we have to send nothing */ + u16FileAccessState = FOE_READY; + APPL_FreeMailboxBuffer(pFoeInd); +/*ET9300 Project Handler :(#if MAILBOX_QUEUE #else) lines 317 to 320 deleted*/ + return 0; + } + else + { + UINT32 d = SWAPDWORD(nextState); + UINT8 b = 0; + + /* store the OpCode in the mailbox buffer */ + pFoeInd->FoeHeader.OpCode = SWAPWORD(ECAT_FOE_OPCODE_ERR); + /* store the ErrorCode in the mailbox buffer */ + pFoeInd->FoeHeader.Cmd.ErrorCode[FOE_COMMAND_LOWWORD] = ((d & 0x0000FFFF)); + pFoeInd->FoeHeader.Cmd.ErrorCode[FOE_COMMAND_HIGHWORD] = ((d & 0xFFFF0000) >> 16); + + /* store the size of the mailbox data in the mailbox buffer */ + pFoeInd->MbxHeader.Length = SIZEOF(TFOEHEADER); + + /* Error Text is returned in pFoeInd->Data */ + while (b < 32) + { + UINT16 data = ((UINT16 MBXMEM *) pFoeInd->Data)[(b >> 1)]; + + if ((data & 0x00FF) == 0) + { + break; + } + b++; + + if ((data & 0xFF00) == 0) + { + break; + } + b++; + } + if ( b < 32 ) + { + pFoeInd->MbxHeader.Length += b+1; + } + + /* the file transmission sequence is finished */ + u16FileAccessState = FOE_READY; + } + +/*ET9300 Project Handler :(#if BOOTSTRAPMODE_SUPPORTED) lines 363 to 385 deleted*/ + { + if ( MBX_MailboxSendReq((TMBX MBXMEM *) pFoeInd, FOE_SERVICE) != 0 ) + { + /* if the mailbox service could not be sent (or stored), the response will be + stored in the variable pFoeSendStored and will be sent automatically + from the mailbox handler (FOE_ContinueInd) when the send mailbox will be read + the next time from the master */ + pFoeSendStored = (TMBX MBXMEM *) pFoeInd; + } + } + + return 0; +} + + +///////////////////////////////////////////////////////////////////////////////////////// +/** + \param pMbx Pointer to the free mailbox buffer + + \brief This function is called when the next mailbox fragment can be sent. +*//////////////////////////////////////////////////////////////////////////////////////// + +void FOE_ContinueInd(TMBX MBXMEM * pMbx) +{ + if ( pFoeSendStored ) + { + /* send the stored FoE service which could not be sent before */ +/*ECATCHANGE_START(V5.13) FOE1*/ + if (MBX_MailboxSendReq(pFoeSendStored, FOE_SERVICE) == 0) + { + pFoeSendStored = 0; + } + } +/*ECATCHANGE_END(V5.13) EOE1*/ +} + +/** @} */ + diff --git a/ecatfoe.h b/ecatfoe.h new file mode 100644 index 0000000..b6f68b0 --- /dev/null +++ b/ecatfoe.h @@ -0,0 +1,171 @@ +/* +* This source file is part of the EtherCAT Slave Stack Code licensed by Beckhoff Automation GmbH & Co KG, 33415 Verl, Germany. +* The corresponding license agreement applies. This hint shall not be removed. +* https://www.beckhoff.com/media/downloads/slave-stack-code/ethercat_ssc_license.pdf +*/ + +/** + * \addtogroup FoE FileTransfer over EtherCAT + * @{ + */ + +/** +\file ecatfoe.h +\author EthercatSSC@beckhoff.com + +\version 5.12 + +
Changes to version V5.11:
+V5.12 FOE2: handle 16bit only access
+
Changes to version V5.10:
+V5.11 FOE1: handle busy on a read request, change OPMode to OPCode (same terms as in the spec)
+
Changes to version V5.01:
+V5.10 FOE1: Add new FoE error codes (0x800C,0x800D,0x800F)
+V5.10 FOE2: Update file handling to support File sizes greater than 0x8000 Bytes (change value of "FOE_MAXDATA")
+
Changes to version - :
+V5.01 : Start file change log + */ + +/*----------------------------------------------------------------------------------------- +------ +------ Includes +------ +-----------------------------------------------------------------------------------------*/ +#include "esc.h" +#include "mailbox.h" + +#ifndef _ECATFOE_H_ +#define _ECATFOE_H_ + +/*----------------------------------------------------------------------------------------- +------ +------ Defines and Types +------ +-----------------------------------------------------------------------------------------*/ + + + +/*--------------------------------------------- +- Services +-----------------------------------------------*/ +#define ECAT_FOE_OPCODE_RRQ 1 /**< \brief Read request*/ +#define ECAT_FOE_OPCODE_WRQ 2 /**< \brief Write request*/ +#define ECAT_FOE_OPCODE_DATA 3 /**< \brief Data datagram*/ +#define ECAT_FOE_OPCODE_ACK 4 /**< \brief Acknowledge datagram*/ +#define ECAT_FOE_OPCODE_ERR 5 /**< \brief Error datagram*/ +#define ECAT_FOE_OPCODE_BUSY 6 /**< \brief Busy datagram*/ + + +/*--------------------------------------------- +- States +-----------------------------------------------*/ +#define FOE_READY 0 /**< \brief Ready state*/ +#define FOE_WAIT_FOR_ACK 1 /**< \brief Wait for acknowledgement state*/ +#define FOE_WAIT_FOR_DATA 2 /**< \brief Wait for data state*/ +#define FOE_WAIT_FOR_RESET 3 /**< \brief Wait for reset state*/ +#define FOE_WAIT_FOR_LAST_ACK 4 /**< \brief Wait for last acknowledgement state*/ +#define FOE_PROGRAMMING 5 /**< \brief Programming state*/ +#define FOE_WAIT_FOR_LAST_DATA 6 /**< \brief Wait for last data state*/ + + +/*ET9300 Project Handler :(#if FC1100_HW) lines 71 to 73 deleted*/ + + + +/** \brief FoE header*/ +typedef struct MBX_STRUCT_PACKED_START +{ + UINT16 OpCode; /**< \brief OpCode + * + * 1 : RRQ
+ * 2 : WRQ
+ * 3 : DATA
+ * 4 : ACK
+ * 5 : ERR
+ * 6 : BUSY*/ + union MBX_STRUCT_PACKED_START + { + UINT16 Password[2]; /**< \brief Password (used in Read request and Write request). 0 if unknown*/ + UINT16 PacketNo[2]; /**< \brief Packet number (used in DATA and ACK datagram)*/ + UINT16 ErrorCode[2]; /**< \brief Error code (used in ERR datagram)*/ +/*ET9300 Project Handler :(#if BIG_ENDIAN_16BIT) lines 94 to 97 deleted*/ + #define FOE_COMMAND_LOWWORD 0 + #define FOE_COMMAND_HIGHWORD 1 + struct MBX_STRUCT_PACKED_START + { + UINT16 Done; /**< \brief Done indication (used in BUSY datagram)*/ + UINT16 Entire; /**< \brief Entire indication (used in BUSY datagram)*/ + }MBX_STRUCT_PACKED_END + Busy; /**< \brief Busy variable*/ + }MBX_STRUCT_PACKED_END + Cmd; /**< \brief Command field*/ + + +}MBX_STRUCT_PACKED_END +TFOEHEADER; + + +#define FOE_HEADER_SIZE SIZEOF(TFOEHEADER) /**< \brief FoE header size*/ + + /** \brief Complete FoE datagram*/ +typedef struct MBX_STRUCT_PACKED_START +{ + TMBXHEADER MbxHeader; /**< \brief Mailbox header*/ + TFOEHEADER FoeHeader; /**< \brief FoE header*/ + UINT16 Data[((MAX_MBX_DATA_SIZE)-(FOE_HEADER_SIZE)) >> 1]; /**< \brief FoE Data buffer*/ +}MBX_STRUCT_PACKED_END +TFOEMBX; + + +/*ET9300 Project Handler :(#if FC1100_HW) lines 128 to 130 deleted*/ + + +/*--------------------------------------------- +- Results +-----------------------------------------------*/ +#define FOE_ERROR 0x8000 /**< \brief Error result*/ +#define FOE_FINISHED ((FOE_ERROR)-1) /**< \brief Datagram finished*/ +#define FOE_FINISHED_NOACK ((FOE_FINISHED)-1) /**< \brief Datagram finished no acknowledgement*/ +#define FOE_ACK ((FOE_FINISHED_NOACK)-1) /**< \brief Acknowledgement*/ +#define FOE_ACKFINISHED ((FOE_ACK)-1) /**< \brief Acknowledgement finished*/ +#define FOE_WAIT ((FOE_ACKFINISHED)-1) /**< \brief Wait */ +#define FOE_MAXBUSY ((FOE_WAIT)-1) /**< \brief Max busy indication*/ +#define FOE_MAXBUSY_ZERO ((FOE_MAXBUSY)-100) /**< \brief Min busy indication*/ +#define FOE_MAXDATA ((FOE_MAXBUSY_ZERO)-1) /**< \brief Maximum data within one FoE Datagram*/ + +#endif //_ECATFOE_H_ + +#if _ECATFOE_ + #define PROTO +#else + #define PROTO extern +#endif + +/*----------------------------------------------------------------------------------------- +------ +------ Global Variables +------ +-----------------------------------------------------------------------------------------*/ +PROTO UINT32 u32PacketNo; /**< \brief Stores the actual packet number to be expected*/ +PROTO UINT32 u32FileOffset; /**< \brief Stores the next file offset to be sent */ +PROTO UINT32 u32LastFileOffset; /**< \brief Stores the actual sent file offset */ +PROTO UINT16 u16FileAccessState; /**< \brief Stores the actual state of the file transmission sequence */ +PROTO TMBX MBXMEM * pFoeSendStored; /**Changes to version V5.12:
+V5.13 BOOT1: support Init-to-Init transition in bootloader application
+V5.13 CIA402 3: change define "CIA402_DEVICE" to "CiA402_SAMPLE_APPLICATION"
+V5.13 CIA402 4: decouple CIA402 state machine and application from ESM (according ETG.6010, clause 4)
+V5.13 ECAT1: handle Sync mapped to AL Event
+V5.13 ECAT2: explicit device ID handling, the ID value shall only be latched on the rising edge of 0x120.5
+V5.13 ECAT3: reset local Error flag in case of two consecutive pending state response and the the first failes
+V5.13 ESM1: local error handling update, ECAT_StateChange triggers only transitions from Op->Any or reject/accept a pending transition
+V5.13 ESM2: support ErrorSafeOP to OP transition
+V5.13 ESM3: Safe-to-OP transition in DC mode, ack OP state if no error was detected
+V5.13 ESM4: implement disable sync error reaction 0x10F1.2 is set to 0
+V5.13 MBX1: change mbx_read flag handling to SM1 buffer state handling (required in case of a mbx read frame with an invalid CRC, the read flag would be set but the SM bufer is still locked)

Changes to version V5.11:
V5.12 BOOT1: add a bootloader sample application (only the ESM and FoE is supported)
V5.12 ECAT1: update SM Parameter measurement (based on the system time), enhancement for input only devices and no mailbox support, use only 16Bit pointer in process data length caluclation
@@ -194,17 +207,24 @@ V4.00 ECAT 7: The return values for the AL-StatusCode were changed to UINT16 #include "ecatappl.h" +/*ET9300 Project Handler :(#if BOOTSTRAPMODE_SUPPORTED) lines 209 to 211 deleted*/ +/*ET9300 Project Handler :(#if DIAGNOSIS_SUPPORTED) lines 214 to 216 deleted*/ #include "mailbox.h" #include "ecatcoe.h" #include "objdef.h" +/*ET9300 Project Handler :(#if EMERGENCY_SUPPORTED) lines 227 to 229 deleted*/ +/*ET9300 Project Handler :(#if AOE_SUPPORTED) lines 231 to 233 deleted*/ +/*ECATCHANGE_START(V5.13) CIA402 3*/ +/*ECATCHANGE_END(V5.13) CIA402 3*/ #include "cia402appl.h" +/*ET9300 Project Handler :(#elif TEST_APPLICATION) lines 239 to 252 deleted*/ /*-------------------------------------------------------------------------------------- ------ @@ -219,23 +239,30 @@ V4.00 ECAT 7: The return values for the AL-StatusCode were changed to UINT16 ------ -----------------------------------------------------------------------------------------*/ UINT16 u16ALEventMask; // Value which will be written to the 0x204 register (AL event mask) during the state transition PreOP to SafeOP +/*ET9300 Project Handler :(#if EXPLICIT_DEVICE_ID) lines 267 to 271 deleted*/ /*Dummy variable to trigger read or writes events in the ESC*/ +/*ET9300 Project Handler :(#if ESC_32BIT_ACCESS #elif ESC_16BIT_ACCESS) lines 274 to 278 deleted*/ VARVOLATILE UINT8 u8dummy; +/*ET9300 Project Handler :(#if !COE_SUPPORTED) lines 282 to 288 deleted*/ +/*ET9300 Project Handler :(#if ESC_32BIT_ACCESS #elif ESC_16BIT_ACCESS) lines 290 to 294 deleted*/ VARVOLATILE UINT8 SMActivate = 0; TSYNCMAN SyncManInfo; //indicates if the EEPORM was loaded correct BOOL EepromLoaded = FALSE; + + /*----------------------------------------------------------------------------------------- ------ ------ local functions ------ -----------------------------------------------------------------------------------------*/ - +/*ECATCHANGE_START(V5.13) ECAT1*/ +/*ECATCHANGE_END(V5.13) ECAT1*/ void ResetALEventMask(UINT16 intMask); ///////////////////////////////////////////////////////////////////////////////////////// @@ -246,15 +273,19 @@ void ResetALEventMask(UINT16 intMask); *//////////////////////////////////////////////////////////////////////////////////////// void ResetALEventMask(UINT16 intMask) { +/*ET9300 Project Handler :(#if ESC_32BIT_ACCESS) lines 322 to 330 deleted*/ UINT16 mask; HW_EscReadWord(mask, ESC_AL_EVENTMASK_OFFSET); +/*ET9300 Project Handler :(#if BIG_ENDIAN_FORMAT) lines 334 to 336 deleted*/ mask &= intMask; DISABLE_ESC_INT(); +/*ET9300 Project Handler :(#if ESC_32BIT_ACCESS) lines 345 to 350 deleted*/ +/*ET9300 Project Handler :(#if BIG_ENDIAN_FORMAT) lines 352 to 354 deleted*/ HW_EscWriteWord(mask, ESC_AL_EVENTMASK_OFFSET); ENABLE_ESC_INT(); } @@ -267,15 +298,19 @@ void ResetALEventMask(UINT16 intMask) *//////////////////////////////////////////////////////////////////////////////////////// void SetALEventMask(UINT16 intMask) { +/*ET9300 Project Handler :(#if ESC_32BIT_ACCESS) lines 368 to 376 deleted*/ UINT16 mask; HW_EscReadWord(mask, ESC_AL_EVENTMASK_OFFSET); +/*ET9300 Project Handler :(#if BIG_ENDIAN_FORMAT) lines 381 to 383 deleted*/ mask |= intMask; DISABLE_ESC_INT(); +/*ET9300 Project Handler :(#if ESC_32BIT_ACCESS) lines 391 to 396 deleted*/ +/*ET9300 Project Handler :(#if BIG_ENDIAN_FORMAT) lines 398 to 400 deleted*/ HW_EscWriteWord(mask, ESC_AL_EVENTMASK_OFFSET); ENABLE_ESC_INT(); } @@ -288,6 +323,7 @@ void SetALEventMask(UINT16 intMask) *//////////////////////////////////////////////////////////////////////////////////////// void UpdateEEPROMLoadedState(void) { +/*ET9300 Project Handler :(#if ESC_32BIT_ACCESS) lines 415 to 420 deleted*/ UINT16 TmpVar = 0; //read EEPROM loaded information HW_EscReadWord(TmpVar, ESC_EEPROM_CONTROL_OFFSET); @@ -328,6 +364,7 @@ TSYNCMAN ESCMEM * GetSyncMan( UINT8 channel ) HW_EscRead((MEM_ADDR *)&SyncManInfo, ESC_SYNCMAN_REG_OFFSET + (channel * SIZEOF_SM_REGISTER), SIZEOF_SM_REGISTER ); +/*ET9300 Project Handler :(#if BIG_ENDIAN_FORMAT) lines 462 to 474 deleted*/ return &SyncManInfo; } @@ -341,6 +378,7 @@ TSYNCMAN ESCMEM * GetSyncMan( UINT8 channel ) void DisableSyncManChannel(UINT8 channel) { UINT16 Offset; +/*ET9300 Project Handler :(#if ESC_32BIT_ACCESS #elif ESC_16BIT_ACCESS) lines 488 to 526 deleted*/ VARVOLATILE UINT8 smStatus = SM_SETTING_PDI_DISABLE; Offset = (ESC_SM_PDICONTROL_OFFSET + (SIZEOF_SM_REGISTER*channel)); @@ -362,6 +400,7 @@ void DisableSyncManChannel(UINT8 channel) void EnableSyncManChannel(UINT8 channel) { UINT16 Offset; +/*ET9300 Project Handler :(#if ESC_32BIT_ACCESS #elif ESC_16BIT_ACCESS) lines 549 to 589 deleted*/ VARVOLATILE UINT8 smStatus = 0x00; Offset = (ESC_SM_PDICONTROL_OFFSET + (SIZEOF_SM_REGISTER*channel)); @@ -374,7 +413,9 @@ void EnableSyncManChannel(UINT8 channel) }while((smStatus & SM_SETTING_PDI_DISABLE)); } +/*ET9300 Project Handler :(#if DIAGNOSIS_SUPPORTED) lines 603 to 661 deleted*/ +/*ET9300 Project Handler :(#if EMERGENCY_SUPPORTED && (COE_SUPPORTED || SOE_SUPPORTED)) lines 663 to 820 deleted*/ ///////////////////////////////////////////////////////////////////////////////////////// /** @@ -411,9 +452,11 @@ UINT8 CheckSmSettings(UINT8 maxChannel) /* check the Sync Manager Parameter for the Receive Mailbox (Sync Manager Channel 0) */ pSyncMan = GetSyncMan(MAILBOX_WRITE); +/*ET9300 Project Handler :(#if ESC_32BIT_ACCESS) lines 858 to 874 deleted*/ SMLength = pSyncMan->Length; SMAddress = pSyncMan->PhysicalStartAddress; +/*ET9300 Project Handler :(#if CHECK_SM_PARAM_ALIGNMENT) lines 878 to 891 deleted*/ if (!(pSyncMan->Settings[SM_SETTING_ACTIVATE_OFFSET] & SM_SETTING_ENABLE_VALUE)) @@ -452,15 +495,18 @@ UINT8 CheckSmSettings(UINT8 maxChannel) result = ALSTATUSCODE_INVALIDMBXCFGINPREOP; } +/*ET9300 Project Handler :(#if TEST_APPLICATION && COE_SUPPORTED) lines 931 to 937 deleted*/ if ( result == 0 ) { /* check the Sync Manager Parameter for the Send Mailbox (Sync Manager Channel 1) */ pSyncMan = GetSyncMan(MAILBOX_READ); +/*ET9300 Project Handler :(#if ESC_32BIT_ACCESS) lines 944 to 960 deleted*/ SMLength = pSyncMan->Length; SMAddress = pSyncMan->PhysicalStartAddress; +/*ET9300 Project Handler :(#if CHECK_SM_PARAM_ALIGNMENT) lines 964 to 977 deleted*/ if (!(pSyncMan->Settings[SM_SETTING_ACTIVATE_OFFSET] & SM_SETTING_ENABLE_VALUE)) { @@ -506,9 +552,11 @@ UINT8 CheckSmSettings(UINT8 maxChannel) /* check the Sync Manager Parameter for the Inputs (Sync Manager Channel 2 (0 in case if no mailbox is supported)) */ pSyncMan = GetSyncMan(PROCESS_DATA_IN); +/*ET9300 Project Handler :(#if ESC_32BIT_ACCESS) lines 1025 to 1041 deleted*/ SMLength = pSyncMan->Length; SMAddress = pSyncMan->PhysicalStartAddress; +/*ET9300 Project Handler :(#if CHECK_SM_PARAM_ALIGNMENT) lines 1045 to 1058 deleted*/ if ((pSyncMan->Settings[SM_SETTING_ACTIVATE_OFFSET] & SM_SETTING_ENABLE_VALUE) != 0 && SMLength == 0) @@ -561,10 +609,13 @@ UINT8 CheckSmSettings(UINT8 maxChannel) result = SYNCMANCHSIZE + 1; } +/*ET9300 Project Handler :(#if TEST_APPLICATION && COE_SUPPORTED) lines 1113 to 1119 deleted*/ +/*ET9300 Project Handler :(#if MAX_PD_INPUT_SIZE > 0 #else) lines 1121 to 1127 deleted*/ if ( result != 0 ) { +/*ET9300 Project Handler :(#if DIAGNOSIS_SUPPORTED #elif EMERGENCY_SUPPORTED && (COE_SUPPORTED || SOE_SUPPORTED)) lines 1131 to 1136 deleted*/ result = ALSTATUSCODE_INVALIDSMINCFG; } } @@ -573,12 +624,15 @@ UINT8 CheckSmSettings(UINT8 maxChannel) // else if (result == 0 && maxChannel > PROCESS_DATA_OUT) { +/*ET9300 Project Handler :(#if MAX_PD_INPUT_SIZE == 0) lines 1145 to 1148 deleted*/ /* check the Sync Manager Parameter for the Outputs (Sync Manager Channel 2) */ pSyncMan = GetSyncMan(PROCESS_DATA_OUT); +/*ET9300 Project Handler :(#if ESC_32BIT_ACCESS) lines 1152 to 1168 deleted*/ SMLength = pSyncMan->Length; SMAddress = pSyncMan->PhysicalStartAddress; +/*ET9300 Project Handler :(#if CHECK_SM_PARAM_ALIGNMENT) lines 1172 to 1185 deleted*/ if ((pSyncMan->Settings[SM_SETTING_ACTIVATE_OFFSET] & SM_SETTING_ENABLE_VALUE) != 0 && SMLength == 0) @@ -641,9 +695,12 @@ UINT8 CheckSmSettings(UINT8 maxChannel) /* output size is not zero although the SM2 channel is not enabled */ result = SYNCMANCHSIZE + 1; } +/*ET9300 Project Handler :(#if MAX_PD_OUTPUT_SIZE > 0 #else) lines 1250 to 1256 deleted*/ +/*ET9300 Project Handler :(#if TEST_APPLICATION && COE_SUPPORTED) lines 1258 to 1265 deleted*/ if ( result != 0 ) { +/*ET9300 Project Handler :(#if DIAGNOSIS_SUPPORTED #elif EMERGENCY_SUPPORTED && (COE_SUPPORTED || SOE_SUPPORTED)) lines 1268 to 1273 deleted*/ result = ALSTATUSCODE_INVALIDSMOUTCFG; } } @@ -655,6 +712,7 @@ UINT8 CheckSmSettings(UINT8 maxChannel) for (i = maxChannel; i < nMaxSyncMan; i++) { pSyncMan = GetSyncMan(i); +/*ET9300 Project Handler :(#if ESC_32BIT_ACCESS) lines 1285 to 1287 deleted*/ SMActivate = pSyncMan->Settings[SM_SETTING_ACTIVATE_OFFSET]; } } @@ -676,6 +734,8 @@ UINT8 CheckSmSettings(UINT8 maxChannel) UINT16 StartInputHandler(void) { TSYNCMAN ESCMEM * pSyncMan; + +/*ET9300 Project Handler :(#if ESC_32BIT_ACCESS #elif ESC_16BIT_ACCESS) lines 1312 to 1316 deleted*/ UINT8 dcControl; UINT16 wdiv = 0; @@ -693,6 +753,7 @@ UINT16 StartInputHandler(void) UINT16 u16MinSuppSyncType = 0xFFFF; /* Minimum supported Sync Types */ +/*ET9300 Project Handler :(#if MAX_PD_OUTPUT_SIZE == 0 && MAX_PD_INPUT_SIZE == 0) lines 1346 to 1348 deleted*/ u16MinSuppSyncType &= sSyncManOutPar.u16SyncTypesSupported; u16MinSuppSyncType &= sSyncManInPar.u16SyncTypesSupported; @@ -707,6 +768,7 @@ UINT16 StartInputHandler(void) /* get a pointer to the Sync Manager Channel 2 (Outputs) */ pSyncMan = GetSyncMan(PROCESS_DATA_OUT); /* store the address of the Sync Manager Channel 2 (Outputs) */ +/*ET9300 Project Handler :(#if ESC_32BIT_ACCESS) lines 1370 to 1372 deleted*/ nEscAddrOutputData = pSyncMan->PhysicalStartAddress; /* get the number of output buffer used for calculating the address areas */ if (pSyncMan->Settings[SM_SETTING_CONTROL_OFFSET] & SM_SETTING_MODE_ONE_BUFFER_VALUE) @@ -718,6 +780,7 @@ UINT16 StartInputHandler(void) /* get a pointer to the Sync Manager Channel 3 (Inputs) */ pSyncMan = GetSyncMan(PROCESS_DATA_IN); /* store the address of the Sync Manager Channel 3 (Inputs)*/ +/*ET9300 Project Handler :(#if ESC_32BIT_ACCESS) lines 1387 to 1389 deleted*/ nEscAddrInputData = pSyncMan->PhysicalStartAddress; @@ -733,6 +796,7 @@ UINT16 StartInputHandler(void) || ((nEscAddrInputData + nPdInputSize * nPdInputBuffer) > u16EscAddrReceiveMbx && (nEscAddrInputData < (u16EscAddrReceiveMbx + u16ReceiveMbxSize))) ) { +/*ET9300 Project Handler :(#if DIAGNOSIS_SUPPORTED #elif EMERGENCY_SUPPORTED && (COE_SUPPORTED || SOE_SUPPORTED)) lines 1407 to 1412 deleted*/ return ALSTATUSCODE_INVALIDSMINCFG; } @@ -746,14 +810,16 @@ UINT16 StartInputHandler(void) /* Sync Manager Channel 2 memory area (Outputs) overlaps the Sync Manager memory areas for the Mailbox or the Sync Manager Channel 3 memory area (Inputs) */ +/*ET9300 Project Handler :(#if DIAGNOSIS_SUPPORTED #elif EMERGENCY_SUPPORTED && (COE_SUPPORTED || SOE_SUPPORTED)) lines 1435 to 1440 deleted*/ return ALSTATUSCODE_INVALIDSMOUTCFG; } /* - --- Check configured synchronisation --- + --- Check configured synchronization --- */ /* Get the DC Control/Activation register value*/ +/*ET9300 Project Handler :(#if ESC_32BIT_ACCESS #elif ESC_16BIT_ACCESS) lines 1450 to 1459 deleted*/ /*Read register 0x981 (corresponding masks are adapted)*/ HW_EscReadByte(dcControl, ESC_DC_SYNC_ACTIVATION_OFFSET); @@ -776,11 +842,13 @@ UINT16 StartInputHandler(void) - 0x9A0:0x9A3 Sync0 Cycle - 0x9A4:0x9A7 Sync1 Cycle */ +/*ET9300 Project Handler :(#if !DC_SUPPORTED) lines 1492 to 1502 deleted*/ if((dcControl & (ESC_DC_SYNC_UNIT_ACTIVE_MASK | ESC_DC_SYNC_UNIT_AUTO_ACTIVE_MASK)) != 0) { /* DC unit is active at least one Sync signal shall be generated */ if((dcControl & (ESC_DC_SYNC0_ACTIVE_MASK | ESC_DC_SYNC1_ACTIVE_MASK)) == 0) { +/*ET9300 Project Handler :(#if DIAGNOSIS_SUPPORTED) lines 1508 to 1510 deleted*/ return ALSTATUSCODE_DCINVALIDSYNCCFG; } @@ -788,6 +856,7 @@ UINT16 StartInputHandler(void) if(((dcControl & ESC_DC_SYNC0_ACTIVE_MASK) == 0) && ((dcControl & ESC_DC_SYNC1_ACTIVE_MASK) != 0)) { +/*ET9300 Project Handler :(#if DIAGNOSIS_SUPPORTED) lines 1518 to 1520 deleted*/ return ALSTATUSCODE_DCINVALIDSYNCCFG; } @@ -797,21 +866,21 @@ UINT16 StartInputHandler(void) ||(((u16MinSuppSyncType & SYNCTYPE_DCSYNC1SUPP) == 0) && ((dcControl & ESC_DC_SYNC1_ACTIVE_MASK) != 0))) { /* Sync0 is not supported but will be generated*/ +/*ET9300 Project Handler :(#if DIAGNOSIS_SUPPORTED) lines 1531 to 1533 deleted*/ return ALSTATUSCODE_DCINVALIDSYNCCFG; } } { -/*ECATCHANGE_START(V5.12) ECAT1*/ UINT32 curMinCycleTime = MIN_PD_CYCLE_TIME; curMinCycleTime = sSyncManOutPar.u32MinCycleTime; +/*ET9300 Project Handler :(#elif MAX_PD_INPUT_SIZE > 0) lines 1544 to 1546 deleted*/ /*Check if Sync0 cycle time is supported*/ if (cycleTimeSync0 != 0 && (cycleTimeSync0 < curMinCycleTime || cycleTimeSync0 > MAX_PD_CYCLE_TIME)) { return ALSTATUSCODE_DCSYNC0CYCLETIME; } -/*ECATCHANGE_END(V5.12) ECAT1*/ } @@ -828,6 +897,7 @@ UINT16 StartInputHandler(void) /* Dump an error if subordinated cycles are configured but not supported */ if(bSubordinatedCycles && ((u16MinSuppSyncType & SYNCTYPE_SUBCYCLESUPP) == 0)) { +/*ET9300 Project Handler :(#if DIAGNOSIS_SUPPORTED) lines 1571 to 1573 deleted*/ return ALSTATUSCODE_DCINVALIDSYNCCFG; } } @@ -844,6 +914,7 @@ UINT16 StartInputHandler(void) if((SyncType0x1C32 == SYNCTYPE_DCSYNC0) || (SyncType0x1C32 == SYNCTYPE_DCSYNC1) ||(SyncType0x1C33 == SYNCTYPE_DCSYNC0) || (SyncType0x1C33 == SYNCTYPE_DCSYNC1)) { +/*ET9300 Project Handler :(#if DIAGNOSIS_SUPPORTED) lines 1594 to 1596 deleted*/ return ALSTATUSCODE_DCINVALIDSYNCCFG; } } //if((dcControl & (ESC_DC_SYNC_UNIT_ACTIVE_MASK | ESC_DC_SYNC_UNIT_AUTO_ACTIVE_MASK)) == 0) @@ -855,6 +926,7 @@ UINT16 StartInputHandler(void) if((SyncType0x1C32 == (UINT16)SYNCTYPE_DCSYNC1) ||(SyncType0x1C33 == (UINT16)SYNCTYPE_DCSYNC1)) { +/*ET9300 Project Handler :(#if DIAGNOSIS_SUPPORTED) lines 1611 to 1613 deleted*/ return ALSTATUSCODE_DCINVALIDSYNCCFG; } } //if((dcControl & ESC_DC_SYNC1_ACTIVE_MASK) == 0) @@ -865,10 +937,12 @@ UINT16 StartInputHandler(void) if((SyncType0x1C32 == (UINT16)SYNCTYPE_DCSYNC0) ||(SyncType0x1C33 == (UINT16)SYNCTYPE_DCSYNC0)) { +/*ET9300 Project Handler :(#if DIAGNOSIS_SUPPORTED) lines 1624 to 1626 deleted*/ return ALSTATUSCODE_DCINVALIDSYNCCFG; } } //if((dcControl & ESC_DC_SYNC0_ACTIVE_MASK) == 0) +/*ET9300 Project Handler :(#if !AL_EVENT_ENABLED) lines 1632 to 1654 deleted*/ } } //if(bSyncSetByUser) else @@ -902,6 +976,7 @@ UINT16 StartInputHandler(void) SyncType0x1C32 = SYNCTYPE_FREERUN; SyncType0x1C33 = SYNCTYPE_FREERUN; } +/*ET9300 Project Handler :(#if AL_EVENT_ENABLED #else) lines 1691 to 1696 deleted*/ } else @@ -947,7 +1022,6 @@ UINT16 StartInputHandler(void) /* Update Cycle time entries if DC Sync Mode enabled */ if(SyncType0x1C32 == SYNCTYPE_DCSYNC1) { -/*ECATCHANGE_START(V5.12) ECAT1*/ sSyncManOutPar.u32Sync0CycleTime = (UINT32)cycleTimeSync0; sSyncManOutPar.u32CycleTime = (UINT32)cycleTimeSync0; @@ -961,7 +1035,6 @@ UINT16 StartInputHandler(void) sSyncManInPar.u32Sync0CycleTime = (UINT32)cycleTimeSync0; sSyncManInPar.u32CycleTime = (UINT32)cycleTimeSync0; -/*ECATCHANGE_END(V5.12) ECAT1*/ } /* Set global flags based on Sync Type */ @@ -993,6 +1066,7 @@ UINT16 StartInputHandler(void) u16ALEventMask = PROCESS_INPUT_EVENT; } +/*ET9300 Project Handler :(#elif MAX_PD_INPUT_SIZE > 0) lines 1803 to 1808 deleted*/ } if ((SyncType0x1C32 == SYNCTYPE_DCSYNC0) || (SyncType0x1C32 == SYNCTYPE_DCSYNC1) @@ -1008,6 +1082,8 @@ UINT16 StartInputHandler(void) } } + + sSyncManOutPar.u16SyncType = SyncType0x1C32; sSyncManInPar.u16SyncType = SyncType0x1C33; @@ -1020,9 +1096,9 @@ UINT16 StartInputHandler(void) if(bSubordinatedCycles == TRUE) { -/*ECATCHANGE_START(V5.12) ECAT4*/ + UINT32 cycleTimeSync1 = (shiftTimeSync1 + cycleTimeSync0); -/*ECATCHANGE_END(V5.12) ECAT4*/ + /* get the number of Sync0 event within on SM cycle */ if(shiftTimeSync1 >= cycleTimeSync0) @@ -1075,12 +1151,14 @@ UINT16 StartInputHandler(void) */ /*get the watchdog time (register 0x420). if value is > 0 watchdog is active*/ +/*ET9300 Project Handler :(#if ESC_32BIT_ACCESS) lines 1909 to 1916 deleted*/ HW_EscReadWord(wd, ESC_PD_WD_TIME); wd = SWAPWORD(wd); if (nPdOutputSize > 0 && wd != 0 ) { /*get watchdog divider (register 0x400)*/ +/*ET9300 Project Handler :(#if ESC_32BIT_ACCESS) lines 1924 to 1932 deleted*/ HW_EscReadWord(wdiv, ESC_WD_DIVIDER_OFFSET); wdiv = SWAPWORD(wdiv); if ( wdiv != 0 ) @@ -1090,9 +1168,9 @@ UINT16 StartInputHandler(void) d *= wd; - /* store watchdog in ms in variable u16WdValue */ + /* store watchdog in ms in variable EcatWdValue */ /* watchdog value has to be rounded up */ - d += 24999; + d = (INT32)(d + 24999); d /= 25000; EcatWdValue = (UINT16) d; } @@ -1102,6 +1180,7 @@ UINT16 StartInputHandler(void) /* wd value has to be set to zero, if the wd is 0 */ EcatWdValue = 0; } +/*ET9300 Project Handler :(#if !ESC_SM_WD_SUPPORTED) lines 1955 to 1958 deleted*/ } else { @@ -1133,7 +1212,23 @@ UINT16 StartInputHandler(void) bSmSyncSequenceValid = FALSE; i16WaitForPllRunningTimeout = 0; -/*ECATCHANGE_START(V5.12) ECAT5*/ +/*ECATCHANGE_START(V5.13) ECAT1*/ + /*Get Sync mapped to AL Event indication*/ + { +/*ET9300 Project Handler :(#if ESC_32BIT_ACCESS || ESC_16BIT_ACCESS) lines 1997 to 2009 deleted*/ + UINT8 u8TmpVar = 0; + HW_EscReadByte(u8TmpVar, ESC_PDI_CONFIGURATION); + if ((u8TmpVar & ESC_SYNC0_MAPPED_TO_ALEVENT) > 0) + { + u16ALEventMask |= SYNC0_EVENT; + } + + if ((u8TmpVar & ESC_SYNC1_MAPPED_TO_ALEVENT) > 0) + { + u16ALEventMask |= SYNC1_EVENT; + } + } +/*ECATCHANGE_END(V5.13) ECAT1*/ sSyncManInPar.u16SmEventMissedCounter = 0; sSyncManInPar.u16CycleExceededCounter = 0; sSyncManInPar.u8SyncError = 0; @@ -1142,7 +1237,7 @@ UINT16 StartInputHandler(void) sSyncManOutPar.u16SmEventMissedCounter = 0; sSyncManOutPar.u16CycleExceededCounter = 0; sSyncManOutPar.u8SyncError = 0; -/*ECATCHANGE_END(V5.12) ECAT5*/ +/*ET9300 Project Handler :(#if COE_SUPPORTED #else) lines 2037 to 2039 deleted*/ /* calculate the Sync0/Sync1 watchdog timeouts */ if ( (dcControl & ESC_DC_SYNC0_ACTIVE_MASK) != 0 ) @@ -1179,9 +1274,7 @@ UINT16 StartInputHandler(void) else { /* Sync1 cycle is larger than Sync0 (e.g. subordinated Sync0 cycles) */ -/*ECATCHANGE_START(V5.12) ECAT4*/ UINT32 Sync1Cycle = (shiftTimeSync1 + cycleTimeSync0 )/100000; -/*ECATCHANGE_END(V5.12) ECAT4*/ if(Sync1Cycle < 5) { /*Sync0 cycle less than 500us*/ @@ -1189,9 +1282,7 @@ UINT16 StartInputHandler(void) } else { - /*ECATCHANGE_START(V5.12)*/ Sync1WdValue = (UINT16)((Sync1Cycle*2)/10); - /*ECATCHANGE_END(V5.12)*/ } /* add one Sync0 cycle because the Sync1 cycle starts on the next Sync0 after the Sync1 signal */ @@ -1210,6 +1301,7 @@ UINT16 StartInputHandler(void) EnableSyncManChannel(PROCESS_DATA_IN); } +/*ET9300 Project Handler :(#if TEST_APPLICATION && COE_SUPPORTED) lines 2109 to 2119 deleted*/ /*write initial input data*/ PDO_InputMapping(); @@ -1232,7 +1324,9 @@ UINT16 StartOutputHandler(void) required to support also masters which starts to send process data after the SO transition was triggered (if the master don't send process data within "SAFEOP2OPTIMEOUT" the transition is rejected)*/ UINT16 result = NOERROR_INWORK; - if(bLocalErrorFlag) + /*ECATCHANGE_START(V5.13) ESM1*/ + if(STATE_VALID(u8LocalErrorState)) +/*ECATCHANGE_END(V5.13) ESM1*/ { /*Local error still exists => skip state request to OP and response with "u16LocalErrorCode"*/ return u16LocalErrorCode; @@ -1249,7 +1343,6 @@ UINT16 StartOutputHandler(void) } -/*ECATCHANGE_START(V5.12) ECAT5*/ sSyncManOutPar.u16SmEventMissedCounter = 0; sSyncManOutPar.u8SyncError = 0; @@ -1258,7 +1351,7 @@ UINT16 StartOutputHandler(void) sSyncManInPar.u16SmEventMissedCounter = 0; sSyncManInPar.u8SyncError = 0; -/*ECATCHANGE_END(V5.12) ECAT5*/ +/*ET9300 Project Handler :(#if COE_SUPPORTED #else) lines 2178 to 2180 deleted*/ return result; } @@ -1299,6 +1392,8 @@ void StopInputHandler(void) } /* reset the events in the AL Event mask register (0x204) */ +/*ECATCHANGE_START(V5.13) ECAT1*/ +/*ECATCHANGE_END(V5.13) ECAT1*/ { UINT16 ResetMask = SYNC0_EVENT | SYNC1_EVENT; ResetMask |= PROCESS_OUTPUT_EVENT; @@ -1324,7 +1419,6 @@ void StopInputHandler(void) LatchInputSync0Value = 0; LatchInputSync0Counter = 0; - /*ECATCHANGE_START(V5.12) ECAT5*/ sSyncManOutPar.u16SmEventMissedCounter = 0; sSyncManOutPar.u16CycleExceededCounter = 0; @@ -1334,7 +1428,7 @@ void StopInputHandler(void) sSyncManInPar.u16SmEventMissedCounter = 0; sSyncManInPar.u16CycleExceededCounter = 0; sSyncManInPar.u8SyncError = 0; -/*ECATCHANGE_END(V5.12) ECAT5*/ +/*ET9300 Project Handler :(#if COE_SUPPORTED #else) lines 2279 to 2281 deleted*/ i16WaitForPllRunningTimeout = 0; @@ -1367,6 +1461,7 @@ void BackToInitTransition(void) void SetALStatus(UINT8 alStatus, UINT16 alStatusCode) { UINT16 Value = alStatusCode; +/*ET9300 Project Handler :(#if ESC_32BIT_ACCESS) lines 2318 to 2320 deleted*/ /*update global status variable if required*/ if(nAlStatus != alStatus) @@ -1374,24 +1469,17 @@ void SetALStatus(UINT8 alStatus, UINT16 alStatusCode) nAlStatus = alStatus; } - /*Handle Explicit Device ID is requested*/ - if(bExplicitDevIdRequested && !(nAlStatus & STATE_CHANGE) && alStatusCode == 0 && ((nAlStatus & STATE_MASK) != STATE_BOOT)) - { - Value = APPL_GetDeviceID(); - nAlStatus |= STATE_DEVID; - } - else - { - nAlStatus &= ~STATE_DEVID; - } +/*ET9300 Project Handler :(#if EXPLICIT_DEVICE_ID) lines 2328 to 2341 deleted*/ if (alStatusCode != 0xFFFF) { +/*ET9300 Project Handler :(#if ESC_32BIT_ACCESS) lines 2345 to 2349 deleted*/ Value = SWAPWORD(Value); HW_EscWriteWord(Value,ESC_AL_STATUS_CODE_OFFSET); } +/*ET9300 Project Handler :(#if ESC_32BIT_ACCESS) lines 2356 to 2361 deleted*/ Value = nAlStatus; Value = SWAPWORD(Value); HW_EscWriteWord(Value,ESC_AL_STATUS_OFFSET); @@ -1406,9 +1494,9 @@ void SetALStatus(UINT8 alStatus, UINT16 alStatusCode) else if((alStatusCode == ALSTATUSCODE_NOSYNCERROR) || (alStatusCode == ALSTATUSCODE_SYNCERROR) || (alStatusCode == ALSTATUSCODE_DCPLLSYNCERROR) -/*ECATCHANGE_START(V5.12) ECAT7*/ - || (bLocalErrorFlag == TRUE)) -/*ECATCHANGE_END(V5.12) ECAT7*/ +/*ECATCHANGE_START(V5.13) ESM1*/ + || (u8LocalErrorState > 0)) +/*ECATCHANGE_END(V5.13) ESM1*/ { u8EcatErrorLed = LED_SINGLEFLASH; } @@ -1420,12 +1508,13 @@ void SetALStatus(UINT8 alStatus, UINT16 alStatusCode) { u8EcatErrorLed = LED_BLINKING; } +/*ET9300 Project Handler :(#if ESC_SUPPORT_ECAT_LED) lines 2392 to 2435 deleted*/ } ///////////////////////////////////////////////////////////////////////////////////////// /** \param alControl requested new state - \param alStatusCode requested status code + \param alStatusCode requested status code \brief This function handles the EtherCAT State Machine. It is called * in case of an AL Control event (Bit 0 of AL-Event (Reg 0x220), @@ -1473,6 +1562,8 @@ void AL_ControlInd(UINT8 alControl, UINT16 alStatusCode) nAlStatus &= STATE_MASK; } + + /* generate a variable for the state transition (Bit 0-3: new state (AL Control), Bit 4-7: old state (AL Status) */ alControl &= STATE_MASK; @@ -1505,6 +1596,7 @@ void AL_ControlInd(UINT8 alControl, UINT16 alStatusCode) { break; } +/*ET9300 Project Handler :(#if (MAX_PD_OUTPUT_SIZE == 0) || (MAX_PD_INPUT_SIZE == 0)) lines 2527 to 2543 deleted*/ } case SAFEOP_2_OP: case OP_2_SAFEOP: @@ -1525,6 +1617,7 @@ void AL_ControlInd(UINT8 alControl, UINT16 alStatusCode) switch ( stateTrans ) { case INIT_2_BOOT : +/*ET9300 Project Handler :(#if BOOTSTRAPMODE_SUPPORTED) lines 2565 to 2624 deleted*/ result = ALSTATUSCODE_BOOTNOTSUPP; @@ -1532,6 +1625,7 @@ void AL_ControlInd(UINT8 alControl, UINT16 alStatusCode) break; case BOOT_2_INIT : +/*ET9300 Project Handler :(#if BOOTSTRAPMODE_SUPPORTED) lines 2633 to 2650 deleted*/ result = ALSTATUSCODE_BOOTNOTSUPP; BackToInitTransition(); @@ -1581,6 +1675,7 @@ void AL_ControlInd(UINT8 alControl, UINT16 alStatusCode) } } +/*ET9300 Project Handler :(#if MAILBOX_SUPPORTED #else) lines 2702 to 2704 deleted*/ break; case PREOP_2_SAFEOP: @@ -1593,6 +1688,8 @@ void AL_ControlInd(UINT8 alControl, UINT16 alStatusCode) if(result == 0) { +/*ECATCHANGE_START(V5.13) ECAT1*/ +/*ECATCHANGE_END(V5.13) ECAT1*/ /* initialize the AL Event Mask register (0x204) */ SetALEventMask( u16ALEventMask ); @@ -1615,6 +1712,22 @@ void AL_ControlInd(UINT8 alControl, UINT16 alStatusCode) break; case SAFEOP_2_OP: +/*ECATCHANGE_START(V5.13) ESM2*/ + /*enable SM if error was acknowledged*/ + if (bErrAck) + { + if (nPdOutputSize > 0) + { + EnableSyncManChannel(PROCESS_DATA_OUT); + } + else + if (nPdInputSize > 0) + { + EnableSyncManChannel(PROCESS_DATA_IN); + } + } + /*ECATCHANGE_END(V5.13) ESM2*/ + /* start the output handler (function is defined above) */ result = StartOutputHandler(); if(result == 0) @@ -1712,7 +1825,7 @@ void AL_ControlInd(UINT8 alControl, UINT16 alStatusCode) BackToInitTransition(); break; - +/*ET9300 Project Handler :(#if !BOOTLOADER_SAMPLE #else) lines 2865 to 2872 deleted*/ case INIT_2_INIT: BackToInitTransition(); case PREOP_2_PREOP: @@ -1723,7 +1836,6 @@ void AL_ControlInd(UINT8 alControl, UINT16 alStatusCode) APPL_AckErrorInd(stateTrans); } -/*ECATCHANGE_START(V5.12) ESM2*/ /*no local error flag is currently active, enable SM*/ if ( nAlStatus & (STATE_SAFEOP | STATE_OP)) @@ -1738,7 +1850,6 @@ void AL_ControlInd(UINT8 alControl, UINT16 alStatusCode) EnableSyncManChannel(PROCESS_DATA_IN); } } -/*ECATCHANGE_END(V5.12) ESM2*/ result = NOERROR_NOSTATECHANGE; break; @@ -1787,6 +1898,7 @@ void AL_ControlInd(UINT8 alControl, UINT16 alStatusCode) /*Disable SM1 (MBX In)*/ DisableSyncManChannel(MAILBOX_READ); +/*ET9300 Project Handler :(#if MAILBOX_SUPPORTED #else) lines 2956 to 2958 deleted*/ nAlStatus = STATE_INIT; } @@ -1820,9 +1932,7 @@ void AL_ControlInd(UINT8 alControl, UINT16 alStatusCode) EsmTimeoutCounter = 200; //Set default timeout value to 200ms break; } - /*ECATCHANGE_START(V5.12) ESM3*/ EsmTimeoutCounter -= (INT16) (EsmTimeoutCounter / 10); //subtract 10% from the timeout to react before the master runs into a timeout. - /*ECATCHANGE_END(V5.12) ESM3*/ } else if ( alControl != (nAlStatus & STATE_MASK) ) @@ -1893,10 +2003,9 @@ void AL_ControlInd(UINT8 alControl, UINT16 alStatusCode) if the the error bit was acknowledged */ SetALStatus(nAlStatus, 0); } - if((stateTrans & 0x80) && !(stateTrans & STATE_OP)) //state transition from OP to "not OP" - { - CiA402_LocalError(ERROR_COMMUNICATION); - } + /*ECATCHANGE_START(V5.13) CIA402 4*/ + /*decouple CIA402 state machine from ESM*/ + /*ECATCHANGE_END(V5.13) CIA402 4*/ } @@ -1931,7 +2040,9 @@ void AL_ControlRes(void) } MBX_StopMailboxHandler(); - if(bLocalErrorFlag) + /*ECATCHANGE_START(V5.13) ESM1*/ + if((u8LocalErrorState & STATE_MASK) == STATE_INIT) + /*ECATCHANGE_END(V5.13) ESM1*/ { /*Set application specified error*/ StatusCode = u16LocalErrorCode; @@ -1951,7 +2062,9 @@ void AL_ControlRes(void) StopInputHandler(); - if(bLocalErrorFlag) + /*ECATCHANGE_START(V5.13) ESM1*/ + if ((u8LocalErrorState & STATE_MASK) == STATE_PREOP) + /*ECATCHANGE_END(V5.13) ESM1*/ { /*Set application specified error*/ StatusCode = u16LocalErrorCode; @@ -1976,11 +2089,21 @@ void AL_ControlRes(void) /*no process data received*/ StatusCode = ALSTATUSCODE_SMWATCHDOG; } - else +/*ECATCHANGE_START(V5.13) ESM3*/ + else if (!bSmSyncSequenceValid) { /*SM/Sync Sequence is not valid*/ StatusCode = ALSTATUSCODE_SYNCERROR; } + else + { + /*Set valid state transition even if timeout expired*/ + Status = STATE_OP; + StatusCode = 0; + /* Slave is OPERATIONAL */ + bEcatOutputUpdateRunning = TRUE; + } +/*ECATCHANGE_END(V5.13) ESM3*/ } else { @@ -1990,11 +2113,21 @@ void AL_ControlRes(void) } else { - /*Set valid state transition even if timeout expired*/ - Status = STATE_OP; - StatusCode = 0; - /* Slave is OPERATIONAL */ - bEcatOutputUpdateRunning = TRUE; + /*ECATCHANGE_START(V5.13) ESM1*/ + if ((u8LocalErrorState & STATE_MASK) == STATE_SAFEOP) + { + /*Set application specified error*/ + StatusCode = u16LocalErrorCode; + } + else + /*ECATCHANGE_END(V5.13) ESM1*/ + { + /*Set valid state transition even if timeout expired*/ + Status = STATE_OP; + StatusCode = 0; + /* Slave is OPERATIONAL */ + bEcatOutputUpdateRunning = TRUE; + } } } @@ -2080,9 +2213,7 @@ void AL_ControlRes(void) i16WaitForPllRunningTimeout = 0; i16WaitForPllRunningCnt = 0; -/*ECATCHANGE_START(V5.12) ESM4*/ bApplEsmPending = FALSE; -/*ECATCHANGE_END(V5.12) ESM4*/ result = APPL_StartOutputHandler(); if(result == 0) @@ -2105,9 +2236,7 @@ void AL_ControlRes(void) { if(nPdOutputSize == 0 || bEcatFirstOutputsReceived) { -/*ECATCHANGE_START(V5.12) ESM4*/ bApplEsmPending = FALSE; -/*ECATCHANGE_END(V5.12) ESM4*/ result = APPL_StartOutputHandler(); if(result == 0) @@ -2146,6 +2275,7 @@ void AL_ControlRes(void) }// Pending state transition (bEcatWaitForAlControlRes == true) } +/*ET9300 Project Handler :(#if !ESC_SM_WD_SUPPORTED) lines 3363 to 3410 deleted*/ ///////////////////////////////////////////////////////////////////////////////////////// /** @@ -2156,9 +2286,7 @@ void AL_ControlRes(void) *//////////////////////////////////////////////////////////////////////////////////////// void DC_CheckWatchdog(void) { -/*ECATCHANGE_START(V5.12) ECAT5*/ DISABLE_ESC_INT(); -/*ECATCHANGE_END(V5.12) ECAT5*/ if(bDcSyncActive && bEcatInputUpdateRunning) { @@ -2196,7 +2324,11 @@ void DC_CheckWatchdog(void) } if(bDcRunning) { - if(sSyncManOutPar.u16SmEventMissedCounter < sErrorSettings.u16SyncErrorCounterLimit) +/*ECATCHANGE_START(V5.13) ESM4*/ + if((sErrorSettings.u16SyncErrorCounterLimit == 0) || (sSyncManOutPar.u16SmEventMissedCounter < sErrorSettings.u16SyncErrorCounterLimit)) +/*ET9300 Project Handler :(#elif(MAX_PD_INPUT_SIZE > 0)) lines 3467 to 3469 deleted*/ +/*ECATCHANGE_END(V5.13) ESM4*/ +/*ET9300 Project Handler :(#if COE_SUPPORTED && !_PIC18 #else) lines 3471 to 3473 deleted*/ { bSmSyncSequenceValid = TRUE; @@ -2222,9 +2354,7 @@ void DC_CheckWatchdog(void) bSmSyncSequenceValid = FALSE; } } - /*ECATCHANGE_START(V5.12) ECAT5*/ ENABLE_ESC_INT(); - /*ECATCHANGE_END(V5.12) ECAT5*/ } ///////////////////////////////////////////////////////////////////////////////////////// @@ -2235,11 +2365,12 @@ void DC_CheckWatchdog(void) *//////////////////////////////////////////////////////////////////////////////////////// void CheckIfEcatError(void) { - /*if the watchdog is enabled check the the process data watchdog in the ESC + /*if the watchdog is enabled check the process data watchdog in the ESC and set the AL status code 0x1B if the watchdog expired*/ if (EcatWdValue != 0) { /*watchdog time is set => watchdog is active*/ +/*ET9300 Project Handler :(#if ESC_32BIT_ACCESS) lines 3520 to 3526 deleted*/ UINT16 WdStatusOK = 0; HW_EscReadWord(WdStatusOK, ESC_PD_WD_STATE); @@ -2250,6 +2381,7 @@ void CheckIfEcatError(void) /*The device is in OP state*/ if (bEcatOutputUpdateRunning +/*ET9300 Project Handler :(#if !OP_PD_REQUIRED) lines 3539 to 3541 deleted*/ ) { AL_ControlInd(STATE_SAFEOP, ALSTATUSCODE_SMWATCHDOG); @@ -2284,7 +2416,7 @@ void CheckIfEcatError(void) } ///////////////////////////////////////////////////////////////////////////////////////// /** - \param alStatus: requested state + \param alStatus: requested state (ignored if the "alStatusCode" is 0) \param alStatusCode: value for the AL-Status register \brief This function changes the state of the EtherCAT slave if the requested state @@ -2295,6 +2427,20 @@ void ECAT_StateChange(UINT8 alStatus, UINT16 alStatusCode) { UINT8 Status = alStatus; + /*ECATCHANGE_START(V5.13) ESM1*/ + /*return in case of invalid parameters*/ + if (alStatusCode != 0 && !STATE_VALID(alStatus)) + { + return; + } + + /* call the application requested state transition only once*/ + if (bEcatWaitForAlControlRes == FALSE && u8LocalErrorState == alStatus && u16LocalErrorCode == alStatusCode) + { + return; + } + /*ECATCHANGE_END(V5.13) ESM1*/ + if(bEcatWaitForAlControlRes) { @@ -2306,10 +2452,17 @@ void ECAT_StateChange(UINT8 alStatus, UINT16 alStatusCode) In case on an local error force ESM timeout*/ if(alStatusCode != 0) { - bLocalErrorFlag = TRUE; + /*ECATCHANGE_START(V5.13) ESM1*/ + u8LocalErrorState = (alStatus & STATE_MASK); + /*ECATCHANGE_END(V5.13) ESM1*/ u16LocalErrorCode = alStatusCode; EsmTimeoutCounter = 0; } + else + { + u8LocalErrorState = 0; + u16LocalErrorCode = alStatusCode; + } } else { @@ -2317,7 +2470,9 @@ void ECAT_StateChange(UINT8 alStatus, UINT16 alStatusCode) if(alStatusCode != 0) { - bLocalErrorFlag = TRUE; + /*ECATCHANGE_START(V5.13) ESM1*/ + u8LocalErrorState = (alStatus & STATE_MASK); + /*ECATCHANGE_END(V5.13) ESM1*/ u16LocalErrorCode = alStatusCode; /*State transition failed due to local application reasons*/ @@ -2353,10 +2508,10 @@ void ECAT_StateChange(UINT8 alStatus, UINT16 alStatusCode) bMbxRunning = TRUE; break; case PREOP_2_SAFEOP: -/*ECATCHANGE_START(V5.12) ESM4*/ +/*ECATCHANGE_START(V5.13) ECAT1*/ +/*ECATCHANGE_END(V5.13) ECAT1*/ /* initialize the AL Event Mask register (0x204) */ SetALEventMask(u16ALEventMask); -/*ECATCHANGE_END(V5.12) ESM4*/ bEcatInputUpdateRunning = TRUE; break; case SAFEOP_2_OP: @@ -2364,7 +2519,8 @@ void ECAT_StateChange(UINT8 alStatus, UINT16 alStatusCode) break; } - /*In case of a failed state transition the */ + + Status = (UINT8)(nEcatStateTrans & STATE_MASK); } /*Pending state transition finished => write AL Status and AL Status Code*/ @@ -2374,34 +2530,45 @@ void ECAT_StateChange(UINT8 alStatus, UINT16 alStatusCode) { Status |= STATE_CHANGE; } +/*ECATCHANGE_START(V5.13) ECAT3*/ + else if (u8LocalErrorState != 0) + { + /*a local error is cleared*/ + /*ECATCHANGE_START(V5.13) ESM1*/ + u8LocalErrorState = 0; + /*ECATCHANGE_END(V5.13) ESM1*/ + u16LocalErrorCode = 0x00; + } +/*ECATCHANGE_END(V5.13) ECAT3*/ SetALStatus(Status,alStatusCode); - }// state transition need to be completed by the local application - }//State transition pending + }/*state transition need to be completed by the local application*/ + }/*State transition pending*/ else { - if ( alStatusCode != 0 ) + /*ECATCHANGE_START(V5.13) ESM1*/ + if ( alStatusCode != 0 && ((alStatus & STATE_MASK) != STATE_OP) && STATE_VALID(alStatus)) { - bLocalErrorFlag = TRUE; + u8LocalErrorState = (alStatus & STATE_MASK); + /*ECATCHANGE_END(V5.13) ESM1*/ u16LocalErrorCode = alStatusCode; -/*ECATCHANGE_START(V5.12) ESM1*/ - if (((nAlStatus & STATE_CHANGE) != STATE_CHANGE) || ((alStatus & STATE_MASK) < (nAlStatus & STATE_MASK))) + /*trigger state transition only state transition from OP to lower state (for all other transitions the corresponding state transition functions shall be used)*/ + if ((nAlStatus & STATE_MASK) == STATE_OP) { - /* Local error has happened, we change the state if necessary */ - /* no error pending and the target state is lower than the current one*/ AL_ControlInd(alStatus, alStatusCode); } -/*ECATCHANGE_END(V5.12) ESM1*/ } - else if (bLocalErrorFlag) + /*ECATCHANGE_START(V5.13) ESM1*/ + else if (u8LocalErrorState != 0) { /*a local error is gone*/ - bLocalErrorFlag = FALSE; + u8LocalErrorState = 0; u16LocalErrorCode = 0x00; } + /*ECATCHANGE_END(V5.13) ESM1*/ } } @@ -2414,14 +2581,16 @@ void ECAT_StateChange(UINT8 alStatus, UINT16 alStatusCode) void ECAT_Init(void) { UINT8 i; - /*Get Maximum Number of SyncManagers and supported DPRAM size*/ +/*ET9300 Project Handler :(#if ESC_32BIT_ACCESS #elif ESC_16BIT_ACCESS) lines 3756 to 3783 deleted*/ HW_EscReadByte(nMaxSyncMan, ESC_SM_CHANNELS_OFFSET); HW_EscReadWord(nMaxEscAddress, ESC_DPRAM_SIZE_OFFSET); //get max address (register + DPRAM size in Byte (in the register it is stored in KB)) nMaxEscAddress = (nMaxEscAddress << 10) + 0xFFF; +/*ET9300 Project Handler :(#if EXPLICIT_DEVICE_ID) lines 3791 to 3795 deleted*/ + /* Get EEPROM loaded information */ UpdateEEPROMLoadedState(); @@ -2435,20 +2604,25 @@ void ECAT_Init(void) MBX_Init(); /* initialize variables */ +/*ET9300 Project Handler :(#if BOOTSTRAPMODE_SUPPORTED) lines 3812 to 3814 deleted*/ bApplEsmPending = FALSE; bEcatWaitForAlControlRes = FALSE; bEcatFirstOutputsReceived = FALSE; bEcatOutputUpdateRunning = FALSE; bEcatInputUpdateRunning = FALSE; - bExplicitDevIdRequested = FALSE; +/*ET9300 Project Handler :(#if EXPLICIT_DEVICE_ID) lines 3822 to 3824 deleted*/ bWdTrigger = FALSE; EcatWdValue = 0; +/*ET9300 Project Handler :(#if !ESC_SM_WD_SUPPORTED) lines 3829 to 3831 deleted*/ Sync0WdCounter = 0; Sync0WdValue = 0; Sync1WdCounter = 0; Sync1WdValue = 0; bDcSyncActive = FALSE; - bLocalErrorFlag = FALSE; + + /*ECATCHANGE_START(V5.13) ESM1*/ + u8LocalErrorState = 0; + /*ECATCHANGE_END(V5.13) ESM1*/ u16LocalErrorCode = 0x00; u16ALEventMask = 0; @@ -2463,9 +2637,13 @@ void ECAT_Init(void) bEscIntEnabled = FALSE; +/*ET9300 Project Handler :(#if EMERGENCY_SUPPORTED && (COE_SUPPORTED || SOE_SUPPORTED)) lines 3859 to 3862 deleted*/ /* initialize the COE part */ COE_Init(); +/*ET9300 Project Handler :(#if AOE_SUPPORTED) lines 3867 to 3870 deleted*/ +/*ECATCHANGE_START(V5.13) ECAT1*/ +/*ECATCHANGE_END(V5.13) ECAT1*/ /*reset AL event mask*/ ResetALEventMask(0); } @@ -2479,42 +2657,59 @@ void ECAT_Main(void) { UINT16 ALEventReg; UINT16 EscAlControl = 0x0000; +/*ECATCHANGE_START(V5.13) MBX1*/ +/*ET9300 Project Handler :(#if ESC_32BIT_ACCESS #elif ESC_16BIT_ACCESS) lines 3891 to 3897 deleted*/ UINT8 sm1Activate = SM_SETTING_ENABLE_VALUE; + UINT8 sm1Status = 0; /*SM1 status need to be read (not MBX_READ_EVENT) to handle readframes with invalid CRCs*/ +/*ECATCHANGE_END(V5.13) MBX1*/ /* check if services are stored in the mailbox */ MBX_Main(); +/*ET9300 Project Handler :(#if COE_SUPPORTED && TEST_APPLICATION) lines 3909 to 3949 deleted*/ if ( bMbxRunning ) { /* Slave is at least in PREOP, Mailbox is running */ + +/*ECATCHANGE_START(V5.13) MBX1*/ +/*ET9300 Project Handler :(#if ESC_32BIT_ACCESS #elif ESC_16BIT_ACCESS) lines 3956 to 3968 deleted*/ /* get the Activate-Byte of SM 1 (Register 0x80E) to check if a mailbox repeat request was received */ HW_EscReadByte(sm1Activate,(ESC_SYNCMAN_ACTIVE_OFFSET + SIZEOF_SM_REGISTER)); + + HW_EscReadByte(sm1Status, (ESC_SYNCMAN_STATUS_OFFSET + SIZEOF_SM_REGISTER)); +/*ECATCHANGE_END(V5.13) MBX1*/ } /* Read AL Event-Register from ESC */ ALEventReg = HW_GetALEventRegister(); ALEventReg = SWAPWORD(ALEventReg); +/*ET9300 Project Handler :(#if ESC_EEPROM_EMULATION) lines 3982 to 3987 deleted*/ if ((ALEventReg & AL_CONTROL_EVENT) && !bEcatWaitForAlControlRes) { /* AL Control event is set, get the AL Control register sent by the Master to acknowledge the event (that the corresponding bit in the AL Event register will be reset) */ +/*ET9300 Project Handler :(#if ESC_32BIT_ACCESS #elif ESC_16BIT_ACCESS) lines 3993 to 4002 deleted*/ + HW_EscReadByte( EscAlControl, ESC_AL_CONTROL_OFFSET); EscAlControl = SWAPWORD(EscAlControl); - /*Evaluate if register 0x120 Bit5 (Request Explicit DeviceID) is set*/ - bExplicitDevIdRequested = ((EscAlControl & (UINT16)STATE_DEVID)>>5); +/*ET9300 Project Handler :(#if TEST_APPLICATION) lines 4008 to 4023 deleted*/ + +/*ET9300 Project Handler :(#if EXPLICIT_DEVICE_ID) lines 4025 to 4042 deleted*/ /* reset AL Control event and the SM Change event (because the Sync Manager settings will be checked in AL_ControlInd, too)*/ - ALEventReg &= ~((AL_CONTROL_EVENT) | (SM_CHANGE_EVENT)); + ALEventReg &= ~((AL_CONTROL_EVENT) | (SM_CHANGE_EVENT)); - AL_ControlInd((UINT8)EscAlControl, 0); /* in AL_ControlInd the state transition will be checked and done */ - - /* SM-Change-Event was handled too */ + AL_ControlInd((UINT8)EscAlControl, 0); /* in AL_ControlInd the state transition will be checked and done */ + + /* SM-Change-Event was handled too */ + +/*ET9300 Project Handler :(#if TEST_APPLICATION) lines 4052 to 4054 deleted*/ } if ( (ALEventReg & SM_CHANGE_EVENT) && !bEcatWaitForAlControlRes && (nAlStatus & STATE_CHANGE) == 0 && (nAlStatus & ~STATE_CHANGE) != STATE_INIT ) @@ -2546,11 +2741,15 @@ void ECAT_Main(void) AL_ControlInd(nAlStatus & STATE_MASK, 0); } - if ( ALEventReg & (MAILBOX_READ_EVENT) ) +/*ECATCHANGE_START(V5.13) MBX1*/ + if (((sm1Status & SM_STATUS_MBX_BUFFER_FULL) == 0) + && bSendMbxIsFull) +/*ECATCHANGE_END(V5.13) MBX1*/ { /* SM 1 (Mailbox Read) event is set, when the mailbox was read from the master, to acknowledge the event the first byte of the mailbox has to be written, by writing the first byte the mailbox is locked, too */ +/*ET9300 Project Handler :(#if ESC_32BIT_ACCESS #elif ESC_16BIT_ACCESS) lines 4095 to 4101 deleted*/ u8dummy = 0; HW_EscWriteByte(u8dummy,u16EscAddrSendMbx); @@ -2560,19 +2759,23 @@ void ECAT_Main(void) MBX_MailboxReadInd(); } - /* bMbxRepeatToggle holds the last state of the Repeat Bit (Bit 1) */ +/*ET9300 Project Handler :(#if TEST_APPLICATION) lines 4112 to 4115 deleted*/ + /* bMbxRepeatToggle holds the last state of the Repeat Bit (Bit 1) */ - if ( ( (sm1Activate & SM_SETTING_REPAET_REQ_MASK) && !bMbxRepeatToggle ) - ||( !(sm1Activate & SM_SETTING_REPAET_REQ_MASK) && bMbxRepeatToggle )) - { - /* Repeat Bit (Bit 1) has toggled, there is a repeat request, in MBX_MailboxRepeatReq the correct - response will put in the send mailbox again */ - MBX_MailboxRepeatReq(); - /* acknowledge the repeat request after the send mailbox was updated by writing the Repeat Bit - in the Repeat Ack Bit (Bit 1) of the PDI Ctrl-Byte of SM 1 (Register 0x80F) */ - sm1Activate &= SM_SETTING_REPEAT_ACK; - HW_EscWriteByte(sm1Activate,(ESC_SM_PDICONTROL_OFFSET + SIZEOF_SM_REGISTER)); - } + if (((sm1Activate & SM_SETTING_REPAET_REQ_MASK) && !bMbxRepeatToggle) + || (!(sm1Activate & SM_SETTING_REPAET_REQ_MASK) && bMbxRepeatToggle)) + { + /* Repeat Bit (Bit 1) has toggled, there is a repeat request, in MBX_MailboxRepeatReq the correct + response will put in the send mailbox again */ + MBX_MailboxRepeatReq(); + /* acknowledge the repeat request after the send mailbox was updated by writing the Repeat Bit + in the Repeat Ack Bit (Bit 1) of the PDI Ctrl-Byte of SM 1 (Register 0x80F) */ +/*ET9300 Project Handler :(#if ESC_32BIT_ACCESS #elif ESC_16BIT_ACCESS) lines 4126 to 4150 deleted*/ + sm1Activate &= SM_SETTING_REPEAT_ACK; + HW_EscWriteByte(sm1Activate, (ESC_SM_PDICONTROL_OFFSET + SIZEOF_SM_REGISTER)); + } + +/*ET9300 Project Handler :(#if TEST_APPLICATION) lines 4156 to 4162 deleted*/ /* Reload the AlEvent because it may be changed due to a SM disable, enable in case of an repeat request */ ALEventReg = HW_GetALEventRegister(); @@ -2588,6 +2791,7 @@ void ECAT_Main(void) ALEventReg &= ~(MAILBOX_WRITE_EVENT); MBX_CheckAndCopyMailbox(); +/*ET9300 Project Handler :(#if TEST_APPLICATION && !MAILBOX_QUEUE) lines 4178 to 4183 deleted*/ } } } diff --git a/ecatslv.h b/ecatslv.h index 2a2dab2..b97992f 100644 --- a/ecatslv.h +++ b/ecatslv.h @@ -1,6 +1,7 @@ /* * This source file is part of the EtherCAT Slave Stack Code licensed by Beckhoff Automation GmbH & Co KG, 33415 Verl, Germany. * The corresponding license agreement applies. This hint shall not be removed. +* https://www.beckhoff.com/media/downloads/slave-stack-code/ethercat_ssc_license.pdf */ /** @@ -12,8 +13,11 @@ \file ecatslv.h \author EthercatSSC@beckhoff.com -\version 5.12 +\version 5.13 +
Changes to version V5.12:
+V5.13 EMCY1: update emergency diagcodes for invalid sm configuration
+V5.13 ESM1: local error handling update, ECAT_StateChange triggers only transitions from Op->Any or reject/accept a pending transition

Changes to version V5.11:
V5.12 COE4: add timestamp object (0x10F8) and update diagnosis handling
V5.12 ECAT6: remove mailbox SyncManager if no mailbox is supported (SM0 Output, SM1 Input)
@@ -41,6 +45,7 @@ V5.01 : Start file change log #include "ecat_def.h" +/*ET9300 Project Handler :(#if EL9800_HW #elif FC1100_HW #elif MCI_HW) lines 47 to 53 deleted*/ #include "esc.h" #include "f2838x_cm_hw.h" @@ -60,6 +65,7 @@ V5.01 : Start file change log #define OBJGETNEXTSTR(p) ( (OBJCONST CHAR OBJMEM * )( &((p)[OBJSTRLEN( (OBJCONST CHAR OBJMEM *) (p) ) + 1]) ) ) /**< \brief Macro to get next name within the objetc name string*/ #endif +/*ET9300 Project Handler :(#if BIG_ENDIAN_FORMAT) lines 75 to 115 deleted*/ #ifndef LO_BYTE #define LO_BYTE 0 /**< \brief LowByte within an WORD*/ #endif @@ -133,19 +139,19 @@ V5.01 : Start file change log #endif #ifndef BIT2BYTE - #define BIT2BYTE(x) (((x)+7)>>3) /**< \brief Marco to convert Bit size to Byte size (round up)*/ + #define BIT2BYTE(x) (((x)+7)>>3) /**< \brief Macro to convert Bit size to Byte size (round up)*/ #endif #ifndef BYTE2BIT - #define BYTE2BIT(x) ((x)<<3) /**< \brief Marco to convert Byte size to Bit size*/ + #define BYTE2BIT(x) ((x)<<3) /**< \brief Macro to convert Byte size to Bit size*/ #endif #ifndef BIT2WORD - #define BIT2WORD(x) (((x)+15)>>4) /**< \brief Marco to convert Bit size to Word size (round up)*/ + #define BIT2WORD(x) (((x)+15)>>4) /**< \brief Macro to convert Bit size to Word size (round up)*/ #endif #ifndef BYTE2WORD - #define BYTE2WORD(x) (((x)+1)>>1) /**< \brief Marco to convert Bytes size to Word size (round up)*/ + #define BYTE2WORD(x) (((x)+1)>>1) /**< \brief Macro to convert Bytes size to Word size (round up)*/ #endif #ifndef ROUNDUPBYTE2WORD @@ -165,6 +171,7 @@ V5.01 : Start file change log #define STATE_MASK ((UINT8) 0x0F) /**< \brief State mask*/ #define STATE_CHANGE ((UINT8) 0x10) /**< \brief State change (Error indication/acknowledge) mask and value*/ #define STATE_DEVID ((UINT8) 0x20) /**< \brief Request/response Explicit device ID*/ +#define STATE_VALID(x) ((((x) & STATE_MASK) == STATE_INIT) || (((x) & STATE_MASK) == STATE_PREOP) || (((x) & STATE_MASK) == STATE_SAFEOP) || (((x) & STATE_MASK) == STATE_OP)) /**< \brief Check if one of the mandatory supported state values are set*/ #define BOOT_2_INIT ((UINT8)((STATE_BOOT) << 4) | (STATE_INIT)) /**< \brief State transition BOOT to INIT*/ #define BOOT_2_PREOP ((UINT8)((STATE_BOOT) << 4) | (STATE_PREOP)) /**< \brief State transition BOOT to INIT*/ @@ -202,16 +209,16 @@ V5.01 : Start file change log ESM transition error codes */ - -#define SYNCMANCHODDADDRESS 0x00 /**< \brief Emergency and Diagnosis code for an odd SyncManager address*/ +/*ECATCHANGE_START(V5.13) EMCY1*/ +#define SYNCMANCHSIZE 0x00 /**< \brief Emergency and Diagnosis code for an invalid SyncManager size*/ #define SYNCMANCHADDRESS 0x01 /**< \brief Emergency and Diagnosis code for an invalid SyncManager address*/ -#define SYNCMANCHSIZE 0x02 /**< \brief Emergency and Diagnosis code for an invalid SyncManager size*/ -#define SYNCMANCHSETTINGS 0x03 /**< \brief Emergency and Diagnosis code for an invalid SyncManager settings*/ -#define ERROR_SYNCMANCH(code, channel) ((code)+((channel)<<2)) /**< \brief Marco to add SyncManager channel*/ -#define ERROR_SYNCMANCHODDADDRESS(channel) ((SYNCMANCHODDADDRESS)+((channel)<<2)) /**< \brief Marco to add SyncManager channel*/ -#define ERROR_SYNCMANCHADDRESS(channel) ((SYNCMANCHADDRESS)+((channel)<<2)) /**< \brief Marco to add SyncManager channel*/ -#define ERROR_SYNCMANCHSIZE(channel) ((SYNCMANCHSIZE)+((channel)<<2)) /**< \brief Marco to add SyncManager channel*/ -#define ERROR_SYNCMANCHSETTINGS(channel) ((SYNCMANCHSETTINGS)+((channel)<<2)) /**< \brief Marco to add SyncManager channel*/ +#define SYNCMANCHSETTINGS 0x02 /**< \brief Emergency and Diagnosis code for an invalid SyncManager settings*/ +#define ERROR_SYNCMANCH(code, channel) ((code)+((channel)<<2)) /**< \brief Macro to add SyncManager channel*/ + +/*ECATCHANGE_END(V5.13) EMCY1*/ +#define ERROR_SYNCMANCHADDRESS(channel) ((SYNCMANCHADDRESS)+((channel)<<2)) /**< \brief Macro to add SyncManager channel*/ +#define ERROR_SYNCMANCHSIZE(channel) ((SYNCMANCHSIZE)+((channel)<<2)) /**< \brief Macro to add SyncManager channel*/ +#define ERROR_SYNCMANCHSETTINGS(channel) ((SYNCMANCHSETTINGS)+((channel)<<2)) /**< \brief Macro to add SyncManager channel*/ #define ERROR_SYNCTYPES 0x80 /**< \brief Emergency and Diagnosis code for an invalid Sync types*/ #define ERROR_DCSYNCCONTROL 0x81 /**< \brief Emergency and Diagnosis code for an invalid DC Sync control*/ #define ERROR_DCSYNC0CYCLETIME 0x82 /**< \brief Emergency and Diagnosis code for an invalid Sync0 cycle time*/ @@ -294,8 +301,8 @@ V5.01 : Start file change log #define ALSTATUSCODE_MODULE_ID_LIST_NOT_MATCH 0x0070 /**< \brief Detected Module Ident List (0xF030) and Configured Module Ident List (0xF050) does not match*/ #define ALSTATUSCODE_SUPPLY_VOLTAGE_TOO_LOW 0x0080 /**< \brief The slave supply voltage is too low*/ #define ALSTATUSCODE_SUPPLY_VOLTAGE_TOO_HIGH 0x0081 /**< \brief The slave supply voltage is too high*/ -#define ALSTATUSCODE_TEMPERATURE_TOO_LOW 0x0080 /**< \brief The slave temperature is too low*/ -#define ALSTATUSCODE_TEMPERATURE_TOO_HIGH 0x0081 /**< \brief The slave temperature is too high*/ +#define ALSTATUSCODE_TEMPERATURE_TOO_LOW 0x0082 /**< \brief The slave temperature is too low*/ +#define ALSTATUSCODE_TEMPERATURE_TOO_HIGH 0x0083 /**< \brief The slave temperature is too high*/ @@ -321,11 +328,13 @@ V5.01 : Start file change log #define MAILBOX_READ_EVENT ((UINT16) 0x0200) /**< \brief MBoxIn read event*/ #define PROCESS_OUTPUT_EVENT ((UINT16) 0x0400) /**< \brief Output process data write event*/ #define PROCESS_INPUT_EVENT ((UINT16) 0x0800) /**< \brief Input process data read event*/ +/*ET9300 Project Handler :(#if MAILBOX_SUPPORTED #else) lines 380 to 383 deleted*/ #define MAILBOX_WRITE 0 /**< \brief SyncManager ID for MBoxOut (master to slave)*/ #define MAILBOX_READ 1 /**< \brief SyncManager ID for MBoxIn (slave to master)*/ #define PROCESS_DATA_OUT 2 /**< \brief SyncManager ID for output process data (master to slave)*/ #define PROCESS_DATA_IN 3 /**< \brief SyncManager ID for input process data (slave to master)*/ +/*ET9300 Project Handler :(#if MAILBOX_SUPPORTED #else) lines 390 to 393 deleted*/ @@ -345,6 +354,7 @@ V5.01 : Start file change log #define LED_INVERT_DOUBLEFLASH 0xC2 /**< \brief LED invert double flash*/ #define LED_ON 0x01 /**< \brief LED on*/ +/*ET9300 Project Handler :(#elif ESC_SUPPORT_ECAT_LED) lines 414 to 422 deleted*/ #define MEMORY_START_ADDRESS 0x1000 /**< \brief ESC DPRAM start address*/ @@ -355,6 +365,7 @@ V5.01 : Start file change log #endif #ifndef DC_EVENT_MASK #define DC_EVENT_MASK PROCESS_OUTPUT_EVENT /**< \brief AL Event mask (value of register 0x204) in case of DC synchronisation*/ +/*ET9300 Project Handler :(#if MAX_PD_OUTPUT_SIZE > 0 #else) lines 434 to 436 deleted*/ #endif @@ -370,6 +381,7 @@ V5.01 : Start file change log ------ Global Variables ------ -----------------------------------------------------------------------------------------*/ +/*ET9300 Project Handler :(#if BOOTSTRAPMODE_SUPPORTED) lines 452 to 454 deleted*/ PROTO BOOL bEcatOutputUpdateRunning; /**< \brief Indicates the OP state, will be set in StartOutputHandler and reset in StopOutputHandler*/ @@ -409,9 +421,9 @@ PROTO UINT16 Sync1WdValue; /**< \brief Sync1 watchdog PROTO UINT16 LatchInputSync0Value; /**< \brief Sync0 event on which the inputs shall be latched and copied to the ESC buffer. If the inputs shall be latched base don Sync1 the value is set to 0.*/ PROTO UINT16 LatchInputSync0Counter; /**< \brief Sync0 counter used to get the Sync0 event to latch the Inputs. */ -/*ECATCHANGE_START(V5.12) COE4*/ PROTO BOOL b32BitDc; -/*ECATCHANGE_END(V5.12) COE4*/ + +/*ET9300 Project Handler :(#if !COE_SUPPORTED) lines 500 to 502 deleted*/ PROTO BOOL bEscIntEnabled; /**< \brief Indicates that the ESC interrupt is enabled (SM2/3 or SYNC0/1-event), @@ -419,8 +431,10 @@ PROTO BOOL bEscIntEnabled; /**< \brief Indicates th PROTO BOOL b3BufferMode; /**< \brief Indicates that inputs and outputs are running in 3-Buffer-Mode*/ -PROTO BOOL bLocalErrorFlag; /**< \brief Contains the information if the application has a local error*/ +/*ECATCHANGE_START(V5.13) ESM1*/ PROTO UINT16 u16LocalErrorCode; /**< \brief Reason for local error*/ +PROTO UINT8 u8LocalErrorState; /**< \brief State of the current local error (lower state could be set by the master)*/ +/*ECATCHANGE_END(V5.13) ESM1*/ PROTO BOOL bApplEsmPending; /**< \brief Indicates if the local application ESM function need to be called from Al_ConntrolRes (is true if NOERR_INWORK is returned by generic ESM function)*/ PROTO BOOL bEcatWaitForAlControlRes; /**< \brief Contains the information that the state machine waits for an acknowledge for the last AL_ControlInd from the application/generic stack*/ @@ -441,10 +455,11 @@ PROTO UINT16 nMaxEscAddress; /**< \brief Max supporte PROTO UINT8 nAlStatus; /**< \brief Contains the actual AL Status, will be written in AL_ControlInd*/ -PROTO BOOL bExplicitDevIdRequested; /**< \brief Indicates if 0x0120.5 is set*/ +/*ET9300 Project Handler :(#if EXPLICIT_DEVICE_ID) lines 536 to 538 deleted*/ PROTO UINT16 EcatWdValue; /**< \brief Contains the value of the watchdog in ms, will be written in StartInputHandler. In case that the ESC watchdog feature is used this variable just indicates if the watchdog is enabled or disabled*/ +/*ET9300 Project Handler :(#if !ESC_SM_WD_SUPPORTED) lines 542 to 546 deleted*/ PROTO UINT16 nEscAddrOutputData; /**< \brief Contains the SM address for the output process data*/ PROTO UINT16 nEscAddrInputData; /**< \brief Contains the SM address for the input process data*/ @@ -459,6 +474,7 @@ PROTO void DisableSyncManChannel(UINT8 channel); PROTO TSYNCMAN ESCMEM *GetSyncMan(UINT8 channel); PROTO void SetALStatus(UINT8 alStatus, UINT16 alStatusCode); PROTO void AL_ControlInd(UINT8 alControl, UINT16 alStatusCode); +/*ET9300 Project Handler :(#if !ESC_SM_WD_SUPPORTED) lines 565 to 569 deleted*/ PROTO void DC_CheckWatchdog(void); PROTO void CheckIfEcatError(void); PROTO void ECAT_Init(void); diff --git a/esc.h b/esc.h index e7bde6a..6fd056f 100644 --- a/esc.h +++ b/esc.h @@ -1,6 +1,7 @@ /* * This source file is part of the EtherCAT Slave Stack Code licensed by Beckhoff Automation GmbH & Co KG, 33415 Verl, Germany. * The corresponding license agreement applies. This hint shall not be removed. +* https://www.beckhoff.com/media/downloads/slave-stack-code/ethercat_ssc_license.pdf */ /** @@ -45,18 +46,21 @@ V5.01 : Start file change log #define BL_PAGE_SIZE 512 /*--------------------------------------------- -- ESC Offsets (Detailed Information about the registers are located in the ESC Datasheets e.g. ET1100 Datasheet www.beckhoff.com/english.asp?download/ethercat_development_products.htm?id=71003127100387) +- ESC Offsets (Detailed Information about the registers are located in the ESC Datasheets e.g. ET1100 Datasheet http://www.beckhoff.com/english.asp?download/ethercat_development_products.htm?id=71003127100387) -----------------------------------------------*/ #define ESC_INFO_OFFSET 0x0000 /**< \brief ESC information registers startoffset*/ #define ESC_COMM_INFO_OFFSET 0x0004 /**< \brief Communication information registers startoffset*/ +/*ET9300 Project Handler :(#if ESC_32BIT_ACCESS) lines 54 to 59 deleted*/ #define ESC_DPRAM_SIZE_OFFSET 0x0006 /**< \brief Register Description: Size of the supported DPRAM in KB*/ +/*ET9300 Project Handler :(#if ESC_16BIT_ACCESS) lines 61 to 65 deleted*/ #define ESC_SM_CHANNELS_OFFSET 0x0005 /**< \brief Register Description: Number of supported SyncManager channels (or entities) of the EtherCAT Slave Controller*/ #define ESC_FEATURES_OFFSET 0x0008 /**< \brief Register indicating ESC features*/ #define ESC_DC_32BIT_MASK 0x00000008 /**< \brief register 0x0008.3 indicates if the DC Unit supports 32Bit/64Bit DC*/ +/*ET9300 Project Handler :(#if ESC_32BIT_ACCESS) lines 73 to 75 deleted*/ #define ESC_SLAVE_ADDRESS_OFFSET 0x0010 /**< \brief Register Description: Address used for node addressing (FPxx commands)*/ @@ -70,8 +74,15 @@ V5.01 : Start file change log #define ESC_ERROR_LED_OVERRIDE 0x0139 /**< \brief Register Description: Set Ecat Error indication via ESC. (not all ESC types support this feature)*/ #define ESC_PDI_CONTROL_OFFSET 0x0140 /**< \brief Register Description: Specifies the process data interface*/ +/*ET9300 Project Handler :(#if ESC_32BIT_ACCESS) lines 89 to 91 deleted*/ #define ESC_DEVICE_EMULATION 0x0100 /**< \brief Device emulation bit*/ +/*ET9300 Project Handler :(#if ESC_32BIT_ACCESS || ESC_16BIT_ACCESS) lines 95 to 99 deleted*/ +#define ESC_PDI_CONFIGURATION 0x0151 /**< \brief Register Description: PDI configuration register (values defined by the ESC configuration data)*/ +#define ESC_SYNC0_MAPPED_TO_ALEVENT 0x08 /**< \brief bit indicating if the Sync0 event is mapped to the AL Event register*/ +#define ESC_SYNC1_MAPPED_TO_ALEVENT 0x80 /**< \brief bit indicating if the Sync1 event is mapped to the AL Event register*/ + + #define ESC_AL_EVENTMASK_OFFSET 0x0204 /**< \brief Register Description: AL Event masking of the AL Event Request register Events for mapping to PDI IRQ signal*/ #define ESC_AL_EVENT_OFFSET 0x0220 /**< \brief Register Description: "Mirror" register for ESC events*/ @@ -79,9 +90,11 @@ V5.01 : Start file change log #define ESC_PD_WD_TIME 0x0420 /**< \brief Register Description: Number of basic watchdog increments (Default value with Watchdog divider 100us means 100ms Watchdog)*/ #define ESC_PD_WD_STATE 0x0440 /**< \brief Register Description: Watchdog Status of Process Data (triggered by SyncManagers)*/ +/*ET9300 Project Handler :(#if ESC_32BIT_ACCESS) lines 113 to 115 deleted*/ #define ESC_PD_WD_TRIGGER_MASK 0x0001 /**< \brief Trigger state of the process data watchdog*/ #define ESC_EEPROM_CONFIG_OFFSET 0x0500 /**< \brief Register Description: EEPROM Access Configuration*/ +/*ET9300 Project Handler :(#if ESC_32BIT_ACCESS) lines 120 to 138 deleted*/ /*EEPROM config and access state bit mask (based on "ESC_EEPROM_CONFIG_OFFSET") - START*/ #define ESC_EEPROM_ASSIGN_TO_PDI_MASK 0x0001 /**< \brief Description (0x500.0): PDI has EEPROM control*/ #define ESC_EEPROM_LOCKED_BY_PDI_MASK 0x0100 /**< \brief Description (0x500.8): PDI locked EEPROM access*/ @@ -115,34 +128,41 @@ V5.01 : Start file change log #define ESC_SYSTEMTIME_OFFSET 0x0910 /**< \brief Register Description: Local copy of the System Time*/ #define ESC_DC_UNIT_CONTROL_OFFSET 0x0980 /**< \brief Register Description: Control registers for Cycle and Sync Unit (can be predefined with the "AssignActivate" Element in the device description, for further information see ETG.2000)*/ +/*ET9300 Project Handler :(#if ESC_32BIT_ACCESS #elif ESC_16BIT_ACCESS) lines 179 to 190 deleted*/ #define ESC_DC_SYNC_ACTIVATION_OFFSET 0x0981 /**< \brief Register Description: Sync Configuration*/ #define ESC_DC_SYNC_UNIT_ACTIVE_MASK 0x01 /**< \brief Description (0x981.0): Sync Out Unit is activated*/ #define ESC_DC_SYNC0_ACTIVE_MASK 0x02 /**< \brief Description (0x981.1): Sync0 generation is activated*/ #define ESC_DC_SYNC1_ACTIVE_MASK 0x04 /**< \brief Description (0x981.2): Sync1 generation is activated*/ #define ESC_DC_SYNC_UNIT_AUTO_ACTIVE_MASK 0x08 /**< \brief Description (0x980.11): Sync Out Unit is activated automatic when System time was written*/ +#define ESC_DC_SYNC_STATUS 0x098C /**< \brief Register Description: register 0x98E and 0x98F reflecting the status of Sync0 and Sync1*/ + #define ESC_DC_SYNC0_CYCLETIME_OFFSET 0x09A0 /**< \brief Register Description: 32Bit Time between two consecutive SYNC0 pulses in ns*/ #define ESC_DC_SYNC1_CYCLETIME_OFFSET 0x09A4 /**< \brief Register Description: 32Bit Time between two consecutive SYNC1 pulses in ns*/ +/*ET9300 Project Handler :(#if FC1100_HW) lines 205 to 207 deleted*/ /*--------------------------------------------- - Sync Manager -----------------------------------------------*/ -/** \brief SyncManager Register struture*/ +/** \brief SyncManager register structure*/ typedef struct STRUCT_PACKED_START { +/*ET9300 Project Handler :(#if ESC_32BIT_ACCESS) lines 217 to 259 deleted*/ UINT16 PhysicalStartAddress; /**< \brief SyncManager address*/ UINT16 Length; /**< \brief SyncManager length*/ +/*ET9300 Project Handler :(#if ESC_16BIT_ACCESS) lines 264 to 303 deleted*/ //ESC_8BIT ACCESS UINT8 Settings[4]; /**< \brief Register values 0x0804 : 0x0807*/ /*Defines to access : * - SM Control register 0x0804 */ +/*ET9300 Project Handler :(#if BIG_ENDIAN_16BIT) lines 310 to 312 deleted*/ #define SM_SETTING_CONTROL_OFFSET 0 /**< \brief Offset to value of register 0x0804*/ #define SM_SETTING_MODE_MASK 0x02 /**< \brief SyncManager mode mask*/ #define SM_SETTING_MODE_THREE_BUFFER_VALUE 0x00 /**< \brief SyncManager 3Buffer mode value*/ @@ -155,11 +175,13 @@ typedef struct STRUCT_PACKED_START /*Defines to access : * - SM Status register 0x0805 */ +/*ET9300 Project Handler :(#if BIG_ENDIAN_16BIT) lines 326 to 328 deleted*/ #define SM_SETTING_STATUS_OFFSET 1 /**< \brief Offset to value of register 0x0805*/ #define SM_STATUS_MBX_BUFFER_FULL 0x08 /**< \brief Indicates in one buffer mode if buffer was completely written (based on "ESC_SYNCMAN_STATUS_OFFSET")*/ /*Defines to access : * - SM Active register 0x0806 */ +/*ET9300 Project Handler :(#if BIG_ENDIAN_16BIT) lines 335 to 337 deleted*/ #define SM_SETTING_ACTIVATE_OFFSET 2 /**< \brief Offset to value of register 0x0806*/ #define SM_SETTING_ENABLE_VALUE 0x01 /**< \brief SyncManager enable*/ #define SM_SETTING_REPAET_REQ_MASK 0x02 /**< \brief SyncManager Repeat request*/ @@ -168,6 +190,7 @@ typedef struct STRUCT_PACKED_START /*Defines to access : * - SM PDI COntrol register 0x0807 */ +/*ET9300 Project Handler :(#if BIG_ENDIAN_16BIT) lines 347 to 349 deleted*/ #define SM_SETTING_PDICONTROL_OFFSET 3 /**< \brief Offset to value of register 0x0807*/ #define SM_SETTING_PDI_DISABLE 0x01 /**< \brief Bit0 of register 0x0807 (if 1 SM is disabled from PDI)*/ #define SM_SETTING_REPEAT_ACK 0x02 /**< \brief Bit1 of register 0x0807*/ @@ -175,6 +198,7 @@ typedef struct STRUCT_PACKED_START TSYNCMAN; +/*ET9300 Project Handler :(#if FC1100_HW) lines 361 to 363 deleted*/ #endif //_ESC_H_ /** @}*/ diff --git a/foeappl.c b/foeappl.c new file mode 100644 index 0000000..6fe86d9 --- /dev/null +++ b/foeappl.c @@ -0,0 +1,299 @@ +/* +* This source file is part of the EtherCAT Slave Stack Code licensed by Beckhoff Automation GmbH & Co KG, 33415 Verl, Germany. +* The corresponding license agreement applies. This hint shall not be removed. +* https://www.beckhoff.com/media/downloads/slave-stack-code/ethercat_ssc_license.pdf +*/ + +/** +\addtogroup FoE FileTransfer over EtherCAT +@{ +*/ + +/** +\file foeappl.c +\author EthercatSSC@beckhoff.com +\brief Implementation +This file contains an example how to use the FoE services + +\version 5.12 + +
Changes to version V5.11:
+V5.12 FOE1: update new interface,move the FoE sample to sampleappl,add FoE application callback functions
+
Changes to version V5.10:
+V5.11 FOE2: FoE_Read() check File name buffer before store the requested file name, add string terminator
+V5.11 TEST5: send a FoE busy on a FoE read request
+V5.11 TEST9: "add behaviour 0x2020.7 (SDO requests on 0x3006.0 are set to pending until an FoE read request on ""UnlockSdoResp"" is received or in case that no mbx queue is supported when a new mbx request was received)"
+
Changes to version V5.0:
+V5.10 FOE2: Update file handling to support File sizes greater than 0x8000 Bytes (change value of "FOE_MAXDATA")
+
Changes to version V4.20:
+V5.0 FOE3: Add additional file name copy operation to provide name byte swapping
+V5.0 FOE5: Add FoE test operation (FOE_SAVE_FILES need to be disabled). On download only the files size is save. On upload a file with incrementing content and the previous downloaded size will be created.
+V5.0 FOE6: Save file if MBX 16Bit access is enabled
+
Changes to version V4.11:
+V4.20 FOE 2: Add File store compiler switch
+V4.20 FOE 1: Removed FILESUPPORT
+V4.11 FOE 1: nFileWriteOffset is now a 32bit variable to extend the maximum file size
+
Changes to version V3.20:
+V4.10 FOE 1-14: Filetransfer over FoE: Files can be read and stored to harddisk
+ without any filesizelimitation (FILESUPPORT must defined) +*/ + +/*----------------------------------------------------------------------------------------- +------ +------ Includes +------ +-----------------------------------------------------------------------------------------*/ + +#include "ecat_def.h" + + +#include "ecatslv.h" + +#include "ecatfoe.h" + +#define _FOEAPPL_ 1 + #include "foeappl.h" +#undef _FOEAPPL_ +#define _FOEAPPL_ 0 + +/*ET9300 Project Handler :(#if BOOTSTRAPMODE_SUPPORTED) lines 59 to 61 deleted*/ + + +/*ET9300 Project Handler :(#if TEST_APPLICATION) lines 64 to 66 deleted*/ + +#include "applInterface.h" + +/*----------------------------------------------------------------------------------------- +------ +------ internal Types and Defines +------ +-----------------------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------------------- +------ +------ Module internal function declarations +------ +-----------------------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------------------- +------ +------ Module internal variable definitions +------ +-----------------------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------------------- +------ +------ Functions +------ +-----------------------------------------------------------------------------------------*/ + +///////////////////////////////////////////////////////////////////////////////////////// +/** + \param pName Pointer to the name of the file + \param nameSize Length of the file name + \param pData Pointer to the response data + \param password Password for the file read + + \return size of the data to be sent, busy or an error code + 1..FOE_MAXBUSY-101 (size of data to be sent) + FOE_MAXBUSY-100 (0%) (busy) + FOE_MAXBUSY (100%) (busy) + ECAT_FOE_ERRCODE_NOTDEFINED (error) + ECAT_FOE_ERRCODE_NOTFOUND (error) + ECAT_FOE_ERRCODE_ACCESS (error) + ECAT_FOE_ERRCODE_DISKFULL (error) + ECAT_FOE_ERRCODE_ILLEGAL (error) + ECAT_FOE_ERRCODE_PACKENO (error) + ECAT_FOE_ERRCODE_EXISTS (error) + ECAT_FOE_ERRCODE_NOUSER (error) + + \brief The function starts a file reading + +*//////////////////////////////////////////////////////////////////////////////////////// + +UINT16 FOE_Read(UINT16 MBXMEM * pName, UINT16 nameSize, UINT16 MBXMEM * pData, UINT32 password) +{ + + if (pAPPL_FoeRead != NULL) + { + return pAPPL_FoeRead(pName, nameSize, password, u16FoeMaxSendBlockSize, pData); + } + + + return ECAT_FOE_ERRCODE_NOTDEFINED; +} + + +///////////////////////////////////////////////////////////////////////////////////////// +/** + \param pName Pointer to the name of the file + \param nameSize Length of the file name + \param password Password for the file read + + \return okay, busy or an error code + 0 (okay) + ECAT_FOE_ERRCODE_NOTDEFINED (error) + ECAT_FOE_ERRCODE_NOTFOUND (error) + ECAT_FOE_ERRCODE_ACCESS (error) + ECAT_FOE_ERRCODE_DISKFULL (error) + ECAT_FOE_ERRCODE_ILLEGAL (error) + ECAT_FOE_ERRCODE_PACKENO (error) + ECAT_FOE_ERRCODE_EXISTS (error) + ECAT_FOE_ERRCODE_NOUSER (error) + + (no busy response shall be returned by this function. + If the slave stack requires some time to handle the incoming data the function FOE_Data() should return busy) + + \brief The function starts a file writing + +*//////////////////////////////////////////////////////////////////////////////////////// + +UINT16 FOE_Write(UINT16 MBXMEM * pName, UINT16 nameSize, UINT32 password) +{ + if (pAPPL_FoeWrite != NULL) + { + return pAPPL_FoeWrite(pName,nameSize,password); + } + + return ECAT_FOE_ERRCODE_NOTDEFINED; +} + + +///////////////////////////////////////////////////////////////////////////////////////// +/** + \param pData Received file data + \param Size Length of received file data + + \return okay, busy or an error code + 0 (okay) + FOE_MAXBUSY-100 (0%) (busy) + FOE_MAXBUSY (100%) (busy) + ECAT_FOE_ERRCODE_NOTDEFINED (error) + ECAT_FOE_ERRCODE_NOTFOUND (error) + ECAT_FOE_ERRCODE_ACCESS (error) + ECAT_FOE_ERRCODE_DISKFULL (error) + ECAT_FOE_ERRCODE_ILLEGAL (error) + ECAT_FOE_ERRCODE_PACKENO (error) + ECAT_FOE_ERRCODE_EXISTS (error) + ECAT_FOE_ERRCODE_NOUSER (error) + + \brief The function is called to write the next part of a file + +*//////////////////////////////////////////////////////////////////////////////////////// + +UINT16 FOE_Data(UINT16 MBXMEM * pData, UINT16 Size) +{ + BOOL bDataFollowing = FALSE; + + if(Size == (u16ReceiveMbxSize - MBX_HEADER_SIZE - FOE_HEADER_SIZE) ) + { + bDataFollowing = TRUE; + } + + if(pAPPL_FoeWriteData != NULL) + { + UINT16 error = 0; + error = pAPPL_FoeWriteData(pData, Size, bDataFollowing); + + if (error > 0) + { + return error; + } + else if (bDataFollowing == FALSE) + { + return FOE_ACKFINISHED; + } + + return 0; + } + + + return ECAT_FOE_ERRCODE_NOTDEFINED; + +} + + +///////////////////////////////////////////////////////////////////////////////////////// +/** + \param fileOffset Offset of the next file data to be sent + \param pData Buffer for file data to be sent + + \return size of the data to be sent, busy or an error code + 0 (all data was sent before) + 1..MAX_FILE_SIZE (size of data to be sent) + FOE_MAXBUSY-100 (0%) (busy) + FOE_MAXBUSY (100%) (busy) + ECAT_FOE_ERRCODE_NOTDEFINED (error) + ECAT_FOE_ERRCODE_NOTFOUND (error) + ECAT_FOE_ERRCODE_ACCESS (error) + ECAT_FOE_ERRCODE_DISKFULL (error) + ECAT_FOE_ERRCODE_ILLEGAL (error) + ECAT_FOE_ERRCODE_PACKENO (error) + ECAT_FOE_ERRCODE_EXISTS (error) + ECAT_FOE_ERRCODE_NOUSER (error) + + \brief The function is called when the reading of a part of a file is acknowledged + +*//////////////////////////////////////////////////////////////////////////////////////// + +UINT16 FOE_Ack(UINT32 fileOffset, UINT16 MBXMEM * pData) +{ + + if (pAPPL_FoeReadData != NULL) + { + return pAPPL_FoeReadData(fileOffset, u16FoeMaxSendBlockSize, pData); + } + + return ECAT_FOE_ERRCODE_NOTDEFINED; +} + + +///////////////////////////////////////////////////////////////////////////////////////// +/** + \param done Indicates how much of the busy action is done + \param fileOffset Offset of the next file data to be sent + \param pData Buffer for file data to be sent + + \return size of the data to be sent, busy or an error code + 0 (all data was sent before) + 1..MAX_FILE_SIZE (size of data to be sent) + FOE_MAXBUSY-100 (0%) (busy) + FOE_MAXBUSY (100%) (busy) + ECAT_FOE_ERRCODE_NOTDEFINED (error) + ECAT_FOE_ERRCODE_NOTFOUND (error) + ECAT_FOE_ERRCODE_ACCESS (error) + ECAT_FOE_ERRCODE_DISKFULL (error) + ECAT_FOE_ERRCODE_ILLEGAL (error) + ECAT_FOE_ERRCODE_PACKENO (error) + ECAT_FOE_ERRCODE_EXISTS (error) + ECAT_FOE_ERRCODE_NOUSER (error) + + \brief The function is called when the reading of a part of a file should be repeated + +*//////////////////////////////////////////////////////////////////////////////////////// + +UINT16 FOE_Busy(UINT16 done, UINT32 fileOffset, UINT16 MBXMEM * pData) +{ + /* send last part again */ + return FOE_Ack(fileOffset, pData); +} + +///////////////////////////////////////////////////////////////////////////////////////// +/** + \param errorCode error code + + \brief The function is called when a file transfer is aborted from the other station + +*//////////////////////////////////////////////////////////////////////////////////////// + +void FOE_Error(UINT32 errorCode) +{ + if (pAPPL_FoeError != NULL) + { + pAPPL_FoeError(errorCode); + } +} + + +/** @} */ + diff --git a/foeappl.h b/foeappl.h new file mode 100644 index 0000000..c927525 --- /dev/null +++ b/foeappl.h @@ -0,0 +1,89 @@ +/* +* This source file is part of the EtherCAT Slave Stack Code licensed by Beckhoff Automation GmbH & Co KG, 33415 Verl, Germany. +* The corresponding license agreement applies. This hint shall not be removed. +* https://www.beckhoff.com/media/downloads/slave-stack-code/ethercat_ssc_license.pdf +*/ + +/** + * \addtogroup FoE FileTransfer over EtherCAT + * @{ + */ + +/** +\file foeappl.h +\author EthercatSSC@beckhoff.com + +\version 5.12 + +
Changes to version V5.01:
+V5.12 FOE1: update new interface,move the FoE sample to sampleappl,add FoE application callback functions
+
Changes to version - :
+V5.01 : Start file change log + */ + +/*----------------------------------------------------------------------------------------- +------ +------ Includes +------ +-----------------------------------------------------------------------------------------*/ +#include "ecat_def.h" + +#ifndef _FOEAPPL_H_ +#define _FOEAPPL_H_ + +/*----------------------------------------------------------------------------------------- +------ +------ Defines and Types +------ +-----------------------------------------------------------------------------------------*/ +/*--------------------------------------------- +- Error Codes +-----------------------------------------------*/ +#define ECAT_FOE_ERRCODE_NOTDEFINED 0x8000 /**< \brief Not defined*/ +#define ECAT_FOE_ERRCODE_NOTFOUND 0x8001 /**< \brief The file requested by an FoE upload service could not be found on the server*/ +#define ECAT_FOE_ERRCODE_ACCESS 0x8002 /**< \brief Read or write access to this file not allowed (e.g. due to local control).*/ +#define ECAT_FOE_ERRCODE_DISKFULL 0x8003 /**< \brief Disk to store file is full or memory allocation exceeded*/ +#define ECAT_FOE_ERRCODE_ILLEGAL 0x8004 /**< \brief Illegal FoE operation, e.g. service identifier invalid*/ +#define ECAT_FOE_ERRCODE_PACKENO 0x8005 /**< \brief FoE packet number invalid*/ +#define ECAT_FOE_ERRCODE_EXISTS 0x8006 /**< \brief The file which is requested to be downloaded does already exist*/ +#define ECAT_FOE_ERRCODE_NOUSER 0x8007 /**< \brief No User*/ +#define ECAT_FOE_ERRCODE_BOOTSTRAPONLY 0x8008 /**< \brief FoE only supported in Bootstrap*/ +#define ECAT_FOE_ERRCODE_NOTINBOOTSTRAP 0x8009 /**< \brief This file may not be accessed in BOOTSTRAP state*/ +#define ECAT_FOE_ERRCODE_NORIGHTS 0x800A /**< \brief Password invalid*/ +#define ECAT_FOE_ERRCODE_PROGERROR 0x800B /**< \brief Generic programming error. Should only be returned if error reason cannot be distinguished*/ +#define ECAT_FOE_ERRCODE_INVALID_CHECKSUM 0x800C /**< \brief checksum included in the file is invalid*/ +#define ECAT_FOE_ERRCODE_INVALID_FIRMWARE 0x800D /**< \brief The hardware does not support the downloaded firmware*/ +#define ECAT_FOE_ERRCODE_NO_FILE 0x800F /**< \brief Do not use (identical with 0x8001)*/ +#define ECAT_FOE_ERRCODE_NO_FILE_HEADER 0x8010 /**< \brief Missing file header of error in file header*/ +#define ECAT_FOE_ERRCODE_FLASH_ERROR 0x8011 /**< \brief Flash cannot be accessed*/ + +#endif //_FOEAPPL_H_ + +#ifdef _FOEAPPL_ + #define PROTO +#else + #define PROTO extern +#endif + + +/*----------------------------------------------------------------------------------------- +------ +------ Global Variables +------ +-----------------------------------------------------------------------------------------*/ + + +/*----------------------------------------------------------------------------------------- +------ +------ Global Functions +------ +-----------------------------------------------------------------------------------------*/ +PROTO UINT16 FOE_Read(UINT16 MBXMEM * pName, UINT16 nameSize, UINT16 MBXMEM * pData, UINT32 password); +PROTO UINT16 FOE_Write(UINT16 MBXMEM * pName, UINT16 nameSize, UINT32 password); +PROTO UINT16 FOE_Data(UINT16 MBXMEM * pData, UINT16 Size); +PROTO UINT16 FOE_Ack(UINT32 fileOffset, UINT16 MBXMEM * pData); +PROTO UINT16 FOE_Busy(UINT16 done, UINT32 fileOffset, UINT16 MBXMEM * pData); +PROTO void FOE_Error(UINT32 errorCode); + +#undef PROTO +/** @}*/ diff --git a/mailbox.c b/mailbox.c index 9408266..a1c124c 100644 --- a/mailbox.c +++ b/mailbox.c @@ -1,6 +1,7 @@ /* * This source file is part of the EtherCAT Slave Stack Code licensed by Beckhoff Automation GmbH & Co KG, 33415 Verl, Germany. * The corresponding license agreement applies. This hint shall not be removed. +* https://www.beckhoff.com/media/downloads/slave-stack-code/ethercat_ssc_license.pdf */ /** @@ -71,8 +72,13 @@ psRepeatMbx will be set to 0.
When the repeated mailbox service was sent (call of MBX_MailboxReadInd), psReadMbx will be stored in psRepeatMbx
and psStoreMbx will be sent (in MBX_CopyToSendMailbox) and stored in psReadMbx, psStoreMbx will be set to 0. -\version 5.12 +\version 5.13 +
Changes to version V5.12:
+V5.13 EOE1:
+V5.13 MBX2: clear unused bytes before write mailbox response
+V5.13 MBX3: fix potential double free memory and lost of last read mailbox data
+V5.13 TEST3: 0x2040.4 send ARP on unsupported mailbox request

Changes to version V5.11:
V5.12 EOE5: free pending buffer in EoE_Init, EoE_Init is called on startup and PI transition
V5.12 MBX1: use only 16Bit variables to write the last byte of the mailbox buffer in case of ESC_16BIT_Access,update clear message queue in case of stop mailbox handler
@@ -134,6 +140,7 @@ V4.07 ECAT 1: The sources for SPI and MCI were merged (in ecat_def.h
#include "ecatslv.h" +/*ET9300 Project Handler :(#if TEST_APPLICATION) lines 143 to 145 deleted*/ #define _MAILBOX_ 1 @@ -141,10 +148,13 @@ V4.07 ECAT 1: The sources for SPI and MCI were merged (in ecat_def.h
#undef _MAILBOX_ /*remove definition of _MAILBOX_ (#ifdef is used in mailbox.h)*/ +/*ET9300 Project Handler :(#if SOE_SUPPORTED) lines 153 to 155 deleted*/ +/*ET9300 Project Handler :(#if AOE_SUPPORTED) lines 156 to 158 deleted*/ #include "ecatcoe.h" -/* ECATCHANGE_START(V5.12) MBX3*/ -#include "sdoserv.h" -/* ECATCHANGE_END(V5.12) MBX3*/ +/*ET9300 Project Handler :(#if SDO_RES_INTERFACE || SEGMENTED_SDO_SUPPORTED) lines 161 to 163 deleted*/ +/*ET9300 Project Handler :(#if EOE_SUPPORTED) lines 165 to 167 deleted*/ +#include "ecatfoe.h" +/*ET9300 Project Handler :(#if EMERGENCY_SUPPORTED) lines 171 to 173 deleted*/ /*-------------------------------------------------------------------------------------- @@ -159,6 +169,7 @@ V4.07 ECAT 1: The sources for SPI and MCI were merged (in ecat_def.h
------ --------------------------------------------------------------------------------------*/ /*variables are declared in ecatslv.c*/ +/*ET9300 Project Handler :(#if ESC_32BIT_ACCESS #elif ESC_16BIT_ACCESS) lines 188 to 192 deleted*/ extern VARVOLATILE UINT8 u8dummy; BOOL bNoMbxMemoryAvailable; /**< \brief Indicates if enough dynamic memory is available to handle at least one mailbox datagram */ @@ -264,7 +275,9 @@ void MBX_Init(void) sMbxSendQueue.lastInQueue = 0; sMbxSendQueue.maxQueueSize = MAX_MBX_QUEUE_SIZE; psWriteMbx = NULL; +/*ET9300 Project Handler :(#if MAILBOX_QUEUE #else) lines 304 to 306 deleted*/ +/*ET9300 Project Handler :(#if EOE_SUPPORTED) lines 308 to 310 deleted*/ psRepeatMbx = NULL; psReadMbx = NULL; @@ -272,6 +285,7 @@ void MBX_Init(void) bMbxRepeatToggle = FALSE; /*Reset Repeat acknowledge bit of SyncManager1 (0x80F bit 2)*/ +/*ET9300 Project Handler :(#if ESC_32BIT_ACCESS #elif ESC_16BIT_ACCESS) lines 318 to 332 deleted*/ { UINT8 sm1Activate = 0; HW_EscReadByte(sm1Activate,(ESC_SM_PDICONTROL_OFFSET + SIZEOF_SM_REGISTER)); @@ -284,6 +298,7 @@ void MBX_Init(void) u8MailboxSendReqStored = 0; u8MbxWriteCounter = 0; u8MbxReadCounter = 0; +/*ET9300 Project Handler :(#if !MAILBOX_QUEUE) lines 346 to 348 deleted*/ } ///////////////////////////////////////////////////////////////////////////////////////// @@ -303,6 +318,7 @@ UINT16 MBX_StartMailboxHandler(void) /* get address of the receive mailbox sync manager (SM0) */ TSYNCMAN ESCMEM * pSyncMan = (TSYNCMAN ESCMEM *)GetSyncMan(MAILBOX_WRITE); +/*ET9300 Project Handler :(#if ESC_32BIT_ACCESS) lines 368 to 373 deleted*/ /* store size of the receive mailbox */ u16ReceiveMbxSize = pSyncMan->Length; /* store the address of the receive mailbox */ @@ -311,6 +327,7 @@ UINT16 MBX_StartMailboxHandler(void) /* get address of the send mailbox sync manager (SM1) */ pSyncMan =(TSYNCMAN ESCMEM *) GetSyncMan(MAILBOX_READ); +/*ET9300 Project Handler :(#if ESC_32BIT_ACCESS) lines 383 to 388 deleted*/ /* store the size of the send mailbox */ u16SendMbxSize = pSyncMan->Length; /* store the address of the send mailbox */ @@ -321,7 +338,9 @@ UINT16 MBX_StartMailboxHandler(void) { return ALSTATUSCODE_INVALIDMBXCFGINPREOP; } +/*ET9300 Project Handler :(#if AOE_SUPPORTED) lines 400 to 408 deleted*/ + u16FoeMaxSendBlockSize = (u16SendMbxSize - SIZEOF(TFOEHEADER) - MBX_HEADER_SIZE); /* enable the receive mailbox sync manager channel */ EnableSyncManChannel(MAILBOX_WRITE); @@ -390,10 +409,13 @@ void MBX_StopMailboxHandler(void) APPL_FreeMailboxBuffer(psReadMbx); } +/*ET9300 Project Handler :(#if MAILBOX_QUEUE #else) lines 486 to 488 deleted*/ - SODS_ClearPendingResponse(); +/*ET9300 Project Handler :(#if SDO_RES_INTERFACE || SEGMENTED_SDO_SUPPORTED) lines 490 to 492 deleted*/ +/*ET9300 Project Handler :(#if EOE_SUPPORTED) lines 494 to 496 deleted*/ + FOE_Init(); psWriteMbx = NULL; psRepeatMbx = NULL; @@ -402,6 +424,7 @@ void MBX_StopMailboxHandler(void) bMbxRepeatToggle = FALSE; /*Reset Repeat acknowledge bit of SyncManager1 (0x080F bit 2)*/ +/*ET9300 Project Handler :(#if ESC_32BIT_ACCESS #elif ESC_16BIT_ACCESS) lines 511 to 525 deleted*/ { UINT8 sm1Activate = 0; HW_EscReadByte(sm1Activate,(ESC_SM_PDICONTROL_OFFSET + SIZEOF_SM_REGISTER)); @@ -420,8 +443,6 @@ void MBX_StopMailboxHandler(void) if (pMbx) { APPL_FreeMailboxBuffer(pMbx); -/*ECATCHANGE_START(V5.12) MBX1*/ -/*ECATCHANGE_END(V5.12) MBX1*/ } } while (pMbx != NULL); @@ -431,11 +452,11 @@ void MBX_StopMailboxHandler(void) if (pMbx) { APPL_FreeMailboxBuffer(pMbx); -/*ECATCHANGE_START(V5.12) MBX1*/ -/*ECATCHANGE_END(V5.12) MBX1*/ } } while (pMbx != NULL); +/*ET9300 Project Handler :(#if MAILBOX_QUEUE #else) lines 557 to 559 deleted*/ +/*ET9300 Project Handler :(#if EMERGENCY_SUPPORTED) lines 561 to 563 deleted*/ } ///////////////////////////////////////////////////////////////////////////////////////// @@ -450,15 +471,27 @@ UINT8 MailboxServiceInd(TMBX MBXMEM *pMbx) { UINT8 result; +/*ET9300 Project Handler :(#if BOOTSTRAPMODE_SUPPORTED) lines 578 to 584 deleted*/ switch ( (pMbx->MbxHeader.Flags[MBX_OFFS_TYPE] & MBX_MASK_TYPE) >> MBX_SHIFT_TYPE ) { +/*ET9300 Project Handler :(#if AOE_SUPPORTED) lines 588 to 594 deleted*/ case MBX_TYPE_COE: /* CoE datagram received */ result = COE_ServiceInd((TCOEMBX MBXMEM *) pMbx); break; +/*ET9300 Project Handler :(#if SOE_SUPPORTED) lines 602 to 608 deleted*/ +/*ET9300 Project Handler :(#if EOE_SUPPORTED) lines 609 to 619 deleted*/ + case MBX_TYPE_FOE: + /* FoE datagram received */ + result = FOE_ServiceInd((TFOEMBX MBXMEM *) pMbx); + break; + +/*ET9300 Project Handler :(#if VOE_SUPPORTED) lines 627 to 633 deleted*/ default: + +/*ET9300 Project Handler :(#if TEST_APPLICATION && EOE_SUPPORTED) lines 636 to 704 deleted*/ result = MBXERR_UNSUPPORTEDPROTOCOL; break; } @@ -499,6 +532,7 @@ void MBX_MailboxWriteInd(TMBX MBXMEM *pMbx) and unchanged */ if ( mbxCounter == 0 || mbxCounter != u8MbxWriteCounter ) { +/*ET9300 Project Handler :(#if TEST_APPLICATION) lines 745 to 769 deleted*/ /* new mailbox service received */ /* mbxCounter = 0: old EtherCAT master */ /* new MBX service received, store the new mailbox counter */ @@ -508,6 +542,7 @@ void MBX_MailboxWriteInd(TMBX MBXMEM *pMbx) /* check the protocol type and call the XXXX_ServiceInd-function */ result = PutInMbxQueue(pMbx, &sMbxReceiveQueue); +/*ET9300 Project Handler :(#if MAILBOX_QUEUE #else) lines 780 to 782 deleted*/ } if ( result != 0 ) @@ -526,6 +561,7 @@ void MBX_MailboxWriteInd(TMBX MBXMEM *pMbx) APPL_FreeMailboxBuffer(pMbx); pMbx = NULL; +/*ET9300 Project Handler :(#if MAILBOX_QUEUE #else) lines 802 to 805 deleted*/ } } @@ -538,13 +574,21 @@ void MBX_MailboxReadInd(void) { bSendMbxIsFull = FALSE; +/*ET9300 Project Handler :(#if TEST_APPLICATION && EOE_SUPPORTED) lines 818 to 823 deleted*/ // HBu 02.05.06: the pointer psRepeatMbx is only free if there is no stored // mailbox service from the last repeat - if ( psRepeatMbx && psStoreMbx == NULL ) + if (psRepeatMbx && psStoreMbx == NULL) { - /* the last sent service is not stored for repeat any longer */ - APPL_FreeMailboxBuffer(psRepeatMbx); - psRepeatMbx = NULL; + /* the last sent service is not stored for repeat any longer */ +/*ECATCHANGE_START(V5.13) MBX3*/ + if (psReadMbx != psRepeatMbx) + { + APPL_FreeMailboxBuffer(psRepeatMbx); + psRepeatMbx = NULL; + } +/*ECATCHANGE_END(V5.13) MBX3*/ + +/*ET9300 Project Handler :(#if MAILBOX_QUEUE #else) lines 838 to 840 deleted*/ } /* the actual sent service has to be stored for repeat */ @@ -559,7 +603,9 @@ void MBX_MailboxReadInd(void) } else { - TMBX MBXMEM *pMbx = GetOutOfMbxQueue(&sMbxSendQueue); + TMBX MBXMEM* pMbx = GetOutOfMbxQueue(&sMbxSendQueue); + + if (pMbx) { MBX_CopyToSendMailbox(pMbx); @@ -569,6 +615,7 @@ void MBX_MailboxReadInd(void) if ( u8MailboxSendReqStored ) { /* there are mailbox services stored to be sent */ +/*ET9300 Project Handler :(#if EMERGENCY_SUPPORTED) lines 869 to 880 deleted*/ if ( u8MailboxSendReqStored & COE_SERVICE ) { UINT8 result = 0; @@ -585,6 +632,21 @@ void MBX_MailboxReadInd(void) } } else +/*ET9300 Project Handler :(#if SOE_SUPPORTED) lines 899 to 908 deleted*/ + if ( u8MailboxSendReqStored & FOE_SERVICE ) + { + /* reset the flag indicating that FoE service to be sent was stored */ + u8MailboxSendReqStored &= ~FOE_SERVICE; + /* call FoE function that will send the stored FoE service */ + FOE_ContinueInd(psWriteMbx); + } + else +/*ET9300 Project Handler :(#if VOE_SUPPORTED) lines 919 to 928 deleted*/ +/*ECATCHANGE_START(V5.13) EOE1*/ +/*pending EoE commands are handled from the MBX_Main function*/ +/*ECATCHANGE_END(V5.13) EOE1*/ + +/*ET9300 Project Handler :(#if MAILBOX_QUEUE #else) lines 934 to 944 deleted*/ { } } @@ -623,6 +685,7 @@ void MBX_MailboxRepeatReq(void) bSendMbxIsFull = FALSE; } +/*ET9300 Project Handler :(#if BIG_ENDIAN_FORMAT) lines 983 to 987 deleted*/ MBX_CopyToSendMailbox(pMbx); // HBu 17.06.06: psRepeatMbx has to be set to 0, when it was repeated, otherwise it would be returned twice @@ -699,6 +762,7 @@ UINT8 MBX_MailboxSendReq( TMBX MBXMEM * pMbx, UINT8 flags ) { u8MbxReadCounter++; } +/*ET9300 Project Handler :(#if MAILBOX_QUEUE #else) lines 1067 to 1070 deleted*/ } /* HBu 13.02.06: Repeat-Counter was incremented too much if the mailbox service could not be sent */ else @@ -706,6 +770,7 @@ UINT8 MBX_MailboxSendReq( TMBX MBXMEM * pMbx, UINT8 flags ) u8MbxReadCounter++; } +/*ET9300 Project Handler :(#if TEST_APPLICATION) lines 1078 to 1104 deleted*/ if ( flags & FRAGMENTS_FOLLOW ) { /* store the mailbox service that the corresponding XXX_ContinueInd function will @@ -730,6 +795,7 @@ void MBX_CheckAndCopyMailbox( void ) { UINT16 mbxLen; +/*ET9300 Project Handler :(#if ESC_32BIT_ACCESS) lines 1129 to 1137 deleted*/ /* get the size of the received mailbox command and acknowledge the event*/ HW_EscReadWord(mbxLen,u16EscAddrReceiveMbx); @@ -768,6 +834,7 @@ void MBX_CheckAndCopyMailbox( void ) ||( u8MailboxSendReqStored ) /* a mailbox service to be sent is still stored so the received mailbox service will not be processed until all stored mailbox services are sent */ +/*ET9300 Project Handler :(#if !MAILBOX_QUEUE) lines 1179 to 1181 deleted*/ ) { /* set flag that the processing of the mailbox service will be checked in the @@ -801,15 +868,18 @@ void MBX_CheckAndCopyMailbox( void ) /* copy the mailbox header and data*/ HW_EscReadMbxMem((MEM_ADDR MBXMEM *) psWriteMbx,u16EscAddrReceiveMbx,mbxLen); +/*ET9300 Project Handler :(#if !MAILBOX_QUEUE) lines 1217 to 1219 deleted*/ { /*Read Control and Status of SyncManager 0 to check if the buffer is unlocked*/ +/*ET9300 Project Handler :(#if ESC_32BIT_ACCESS #elif ESC_16BIT_ACCESS) lines 1223 to 1231 deleted*/ VARVOLATILE UINT8 smstate = 0x00; HW_EscReadByte(smstate,ESC_SYNCMAN_STATUS_OFFSET); if(smstate & SM_STATUS_MBX_BUFFER_FULL) { /*Unlock the mailbox SyncManger buffer*/ +/*ET9300 Project Handler :(#if ESC_32BIT_ACCESS #elif ESC_16BIT_ACCESS) lines 1239 to 1245 deleted*/ u8dummy = 0; HW_EscReadByte(u8dummy,(u16EscAddrReceiveMbx + u16ReceiveMbxSize - 1)); @@ -855,23 +925,47 @@ UINT8 MBX_CopyToSendMailbox( TMBX MBXMEM *pMbx ) { /* the variable mbxSize contains the size of the mailbox data to be sent */ UINT16 mbxSize = pMbx->MbxHeader.Length; +/*ET9300 Project Handler :(#if BIG_ENDIAN_FORMAT) lines 1292 to 1295 deleted*/ +/*ECATCHANGE_START(V5.13) MBX2*/ + /*Reset the not used mailbox memory*/ + { + UINT16 LastUsedAddr = u16EscAddrSendMbx + mbxSize + MBX_HEADER_SIZE; + UINT16 LastAddrToReset = (u16EscAddrSendMbx + u16SendMbxSize); +/*ET9300 Project Handler :(#if ESC_32BIT_ACCESS #elif ESC_16BIT_ACCESS) lines 1301 to 1326 deleted*/ + LastAddrToReset = LastAddrToReset - 1; + u8dummy = 0; + + /*clear all unused bytes*/ + while (LastUsedAddr < LastAddrToReset) /*reset all bytes until the second last valid address*/ + { + HW_EscWriteByte(u8dummy, LastUsedAddr); + LastUsedAddr = LastUsedAddr + 1; + } + } +/*ECATCHANGE_END(V5.13) MBX2*/ + HW_EscWriteMbxMem((MEM_ADDR *)pMbx, u16EscAddrSendMbx, (mbxSize + MBX_HEADER_SIZE)); -/* ECATCHANGE_HW(V5.10) HW1*/ + { /*Read Control and Status of SyncManager 1 to check if the buffer is still marked as empty*/ +/*ET9300 Project Handler :(#if ESC_32BIT_ACCESS #elif ESC_16BIT_ACCESS) lines 1345 to 1353 deleted*/ VARVOLATILE UINT8 smstate = 0x00; HW_EscReadByte(smstate,(ESC_SYNCMAN_STATUS_OFFSET + SIZEOF_SM_REGISTER)); if(!(smstate & SM_STATUS_MBX_BUFFER_FULL)) { + +/*ET9300 Project Handler :(#if ESC_32BIT_ACCESS || ESC_16BIT_ACCESS) lines 1361 to 1363 deleted*/ /*Write last Byte to trigger mailbox full flag*/ +/*ET9300 Project Handler :(#if ESC_32BIT_ACCESS #elif ESC_16BIT_ACCESS) lines 1366 to 1397 deleted*/ u8dummy = 0; - HW_EscWriteByte(u8dummy,(u16EscAddrSendMbx + u16SendMbxSize - 1)); + HW_EscWriteByte(u8dummy, (u16EscAddrSendMbx + u16SendMbxSize - 1)); } } +/*ET9300 Project Handler :(#if !MAILBOX_QUEUE) lines 1404 to 1413 deleted*/ /* store last send mailbox service for a possible repeat one buffer includes the last send service (psRepeatMbx), the other one the actual service to be sent (psReadMbx), @@ -883,13 +977,13 @@ UINT8 MBX_CopyToSendMailbox( TMBX MBXMEM *pMbx ) { psWriteMbx = NULL; } - // HBu 17.06.06: psRepeatMbx was already updated in MBX_MailboxReadInd - // psRepeatMbx = psReadMbx; +/*ET9300 Project Handler :(#if !MAILBOX_QUEUE) lines 1425 to 1431 deleted*/ psReadMbx = pMbx; /* set flag that send mailbox is full now */ bSendMbxIsFull = TRUE; +/*ET9300 Project Handler :(#if !MAILBOX_QUEUE) lines 1437 to 1440 deleted*/ return 0; } @@ -897,9 +991,8 @@ UINT8 MBX_CopyToSendMailbox( TMBX MBXMEM *pMbx ) ///////////////////////////////////////////////////////////////////////////////////////// /** - \brief This function is called cyclically to check if a received - Mailbox service was stored. - + \brief This function is called cyclically to check if a received Mailbox service was + stored. *//////////////////////////////////////////////////////////////////////////////////////// void MBX_Main(void) @@ -920,21 +1013,33 @@ void MBX_Main(void) { /* Mailbox error response: type 0 (mailbox service protocol) */ pMbx->MbxHeader.Length = 4; - pMbx->MbxHeader.Flags[MBX_OFFS_TYPE] &= ~(MBX_MASK_TYPE); + pMbx->MbxHeader.Flags[MBX_OFFS_TYPE] &= ~(MBX_MASK_TYPE); pMbx->Data[0] = SWAPWORD(MBXSERVICE_MBXERRORCMD); pMbx->Data[1] = SWAPWORD(result); MBX_MailboxSendReq(pMbx, 0); } } while ( pMbx != NULL ); +/*ET9300 Project Handler :(#if MAILBOX_QUEUE #else) lines 1478 to 1480 deleted*/ +/*ET9300 Project Handler :(#if EMERGENCY_SUPPORTED) lines 1482 to 1489 deleted*/ - if ( bReceiveMbxIsLocked ) - { - /* the work on the receive mailbox is locked, check if it can be - unlocked (if all mailbox commands has been sent */ - MBX_CheckAndCopyMailbox(); - } + if (bReceiveMbxIsLocked) + { + /* the work on the receive mailbox is locked, check if it can be unlocked (if all + mailbox commands has been sent */ + MBX_CheckAndCopyMailbox(); + } + + /*ECATCHANGE_START(V5.13) EOE1*/ + /*Try to send pending Mailbox data, + could be to pending previously due to local (memory) limitations which are no available*/ + if (u8MailboxSendReqStored) + { + /* there are mailbox services stored to be sent */ +/*ET9300 Project Handler :(#if EOE_SUPPORTED) lines 1505 to 1513 deleted*/ + } +/*ECATCHANGE_END(V5.13) EOE1*/ } /** @} */ diff --git a/mailbox.h b/mailbox.h index d095141..7446ce3 100644 --- a/mailbox.h +++ b/mailbox.h @@ -1,6 +1,7 @@ /* * This source file is part of the EtherCAT Slave Stack Code licensed by Beckhoff Automation GmbH & Co KG, 33415 Verl, Germany. * The corresponding license agreement applies. This hint shall not be removed. +* https://www.beckhoff.com/media/downloads/slave-stack-code/ethercat_ssc_license.pdf */ /** @@ -98,7 +99,9 @@ typedef struct MBX_STRUCT_PACKED_START UINT16 Length; /**< \brief Length*/ UINT16 Address; /**< \brief Address*/ +/*ET9300 Project Handler :(#if MBX_16BIT_ACCESS) lines 103 to 120 deleted*/ UINT8 Flags[2]; /**< \brief Flags*/ +/*ET9300 Project Handler :(#if BIG_ENDIAN_16BIT) lines 122 to 125 deleted*/ #define MBX_OFFS_TYPE 1 /**< \brief Protocol type offset*/ #define MBX_OFFS_COUNTER 1 /**< \brief Protocol counter offset*/ #define MBX_MASK_TYPE 0x0F /**< \brief Protocol type mask*/ @@ -162,11 +165,13 @@ PROTO UINT16 u16EscAddrReceiveMbx; /**< \brief Receive mailbox PROTO UINT16 u16EscAddrSendMbx; /**< \brief Send mailbox address (default SM1)*/ PROTO UINT8 u8MbxWriteCounter; /**< \brief Write mailbox counter*/ PROTO UINT8 u8MbxReadCounter; /**< \brief Read mailbox counter*/ +/*ET9300 Project Handler :(#if !MAILBOX_QUEUE) lines 193 to 195 deleted*/ PROTO UINT8 u8MailboxSendReqStored; /**< \brief Mailbox send request stored*/ PROTO TMBX MBXMEM * psWriteMbx; /**< \brief Pointer to write mailbox buffer*/ PROTO TMBX MBXMEM * psReadMbx; /**< \brief Pointer to read mailbox buffer*/ PROTO TMBX MBXMEM * psRepeatMbx; /**< \brief Pointer to repeat mailbox buffer*/ PROTO TMBX MBXMEM * psStoreMbx; /**< \brief Pointer to store mailbox buffer*/ +/*ET9300 Project Handler :(#if !MAILBOX_QUEUE) lines 201 to 203 deleted*/ PROTO TMBXQUEUE MBXMEM sMbxSendQueue; /**< \brief Send mailbox queue*/ PROTO TMBXQUEUE MBXMEM sMbxReceiveQueue; /**< \brief Receive mailbox queue*/ diff --git a/objdef.c b/objdef.c index 05ea603..76b7797 100644 --- a/objdef.c +++ b/objdef.c @@ -1,6 +1,7 @@ /* * This source file is part of the EtherCAT Slave Stack Code licensed by Beckhoff Automation GmbH & Co KG, 33415 Verl, Germany. * The corresponding license agreement applies. This hint shall not be removed. +* https://www.beckhoff.com/media/downloads/slave-stack-code/ethercat_ssc_license.pdf */ /** @@ -14,8 +15,13 @@ \brief Implementation This file contains the object dictionary access functions -\version 5.12 +\version 5.13 +
Changes to version V5.12:
+V5.13 COE1: handling objects with 255 entries
+V5.13 COE4: update default entry name handling in case of 16Bit characters, add CoE Read/write indication functions
+V5.13 COE9: prevent compiler warning in get entry description if char is 8bit
+V5.13 TEST7: add entries with bit9-16 types

Changes to version V5.11:
V5.12 COE10: update object entry string handling
V5.12 COE3: update entry access right handling
@@ -47,7 +53,7 @@ V5.10 ECAT13: Update Synchronisation handling (FreeRun,SM Sync, Sync0, Sync1)
Update 0x1C3x entries
V5.10 ECAT3: Add new datatype handling (BITARRxx)
- Use read/write marco to access STRING entries
+ Use read/write macro to access STRING entries
V5.10 SDO1: Handle access to enums on odd memory addresses (only for MBX_16BIT_ACCESS)
V5.10 SDO2: Check for termination char in every substring
V5.10 SDO5: Check also for PDO mapping object if the subindex 0 was set to 0 before the entries will be changed.
@@ -111,7 +117,7 @@ V4.00 COEAPPL 2: The handling of backup parameters was included according to
*/ -#define OBJDEF 0x4000 +#define OBJDEF 0x4000 #define OBJDEFMAX 0x0A /*--------------------------------------------------------------------------------------- @@ -132,7 +138,11 @@ V4.00 COEAPPL 2: The handling of backup parameters was included according to
#undef _OBJDEF_ /*remove definition of _OBJDEF_ (#ifdef is used in objdef.h)*/ +#include "applInterface.h" +/*ET9300 Project Handler :(#if TEST_APPLICATION) lines 143 to 145 deleted*/ + +/*ET9300 Project Handler :(#if DIAGNOSIS_SUPPORTED) lines 147 to 149 deleted*/ @@ -183,6 +193,7 @@ OBJCONST TOBJECT OBJMEM * OBJ_GetObjectHandle( UINT16 index ) OBJCONST TOBJECT OBJMEM * pObjEntry = (OBJCONST TOBJECT OBJMEM *) COE_GetObjectDictionary(); while (pObjEntry!= NULL) +/*ET9300 Project Handler :(#if !STATIC_OBJECT_DIC #else) lines 201 to 203 deleted*/ { if (pObjEntry->Index == index) @@ -190,6 +201,7 @@ OBJCONST TOBJECT OBJMEM * OBJ_GetObjectHandle( UINT16 index ) return pObjEntry; } pObjEntry = (TOBJECT OBJMEM *) pObjEntry->pNext; +/*ET9300 Project Handler :(#if !STATIC_OBJECT_DIC #else) lines 212 to 214 deleted*/ } return 0; } @@ -213,65 +225,12 @@ UINT32 OBJ_GetObjectLength( UINT16 index, UINT8 subindex, OBJCONST TOBJECT OBJME /* get the information of ObjCode and MaxSubindex in local variables to support different types of microcontroller */ UINT8 objCode = (pObjEntry->ObjDesc.ObjFlags & OBJFLAGS_OBJCODEMASK) >> OBJFLAGS_OBJCODESHIFT; -/*ECATCHANGE_START(V5.12) COE6*/ UINT8 maxSubindex = (pObjEntry->ObjDesc.ObjFlags & OBJFLAGS_MAXSUBINDEXMASK) >> OBJFLAGS_MAXSUBINDEXSHIFT; -/*ECATCHANGE_END(V5.12) COE6*/ - UINT32 size = 0; - - if ( bCompleteAccess ) - { - if ( objCode == OBJCODE_VAR ) - { - return 0; - } - else if ((objCode == OBJCODE_ARR) - || (IS_RX_PDO(pObjEntry->Index) || IS_TX_PDO(pObjEntry->Index)) - ) - { - - /* we have to get the maxSubindex from the actual value of subindex 0, - which is stored as UINT16 at the beginning of the object's variable */ - maxSubindex = (UINT8) ((UINT16 MBXMEM *) (pObjEntry->pVarPtr))[0]; - - - size = pObjEntry->pEntryDesc[1].BitLength *maxSubindex; - -/* no padding required: Bit entries within an array object may overlap byte borders*/ - - /* we have to convert the size in bytes */ - size = BIT2BYTE(size); - - if ( subindex == 0 ) - { - /* add size for subindex 0 (is transmitted as UINT16) */ - size += 2; - } - return size; - } - else - { - UINT8 i; - - /* add the sizes of all entries */ - for (i = 1; i <= maxSubindex; i++) - { - size += pObjEntry->pEntryDesc[i].BitLength; - } - /* we have to convert the size in bytes */ - size = BIT2BYTE(size); - - if ( subindex == 0 ) - { - /* add size for subindex 0 (is transmitted as UINT16) */ - size += 2; - } - return size; - } - } - else +/*ET9300 Project Handler :(#if COMPLETE_ACCESS_SUPPORTED) lines 239 to 314 deleted*/ { if ( objCode == OBJCODE_VAR ) { +/*ET9300 Project Handler :(#if TEST_APPLICATION) lines 318 to 326 deleted*/ return (BIT2BYTE(pObjEntry->pEntryDesc->BitLength)); @@ -283,14 +242,15 @@ UINT32 OBJ_GetObjectLength( UINT16 index, UINT8 subindex, OBJCONST TOBJECT OBJME } else if((objCode == OBJCODE_ARR) || (IS_RX_PDO(pObjEntry->Index) || IS_TX_PDO(pObjEntry->Index)) +/*ET9300 Project Handler :(#if TEST_APPLICATION) lines 340 to 343 deleted*/ ) { return (BIT2BYTE(pObjEntry->pEntryDesc[1].BitLength)); } else { +/*ET9300 Project Handler :(#if DIAGNOSIS_SUPPORTED) lines 350 to 356 deleted*/ { -/*ECATCHANGE_START(V5.12) COE6*/ if (maxSubindex < subindex) { return 0; @@ -300,7 +260,6 @@ UINT32 OBJ_GetObjectLength( UINT16 index, UINT8 subindex, OBJCONST TOBJECT OBJME { return (BIT2BYTE(pObjEntry->pEntryDesc[subindex].BitLength)); } -/*ECATCHANGE_END(V5.12) COE6*/ } } } @@ -350,8 +309,10 @@ UINT16 OBJ_GetNoOfObjects(UINT8 listType) OBJCONST TOBJECT OBJMEM * pObjEntry = (OBJCONST TOBJECT OBJMEM *) COE_GetObjectDictionary(); UINT16 n = 0; +/*ET9300 Project Handler :(#if TEST_APPLICATION) lines 416 to 422 deleted*/ while (pObjEntry != NULL) +/*ET9300 Project Handler :(#if !STATIC_OBJECT_DIC #else) lines 426 to 428 deleted*/ { /* count the objects of the requested list type */ if ( pObjEntry->Index >= 0x1000 ) @@ -379,6 +340,7 @@ UINT16 OBJ_GetNoOfObjects(UINT8 listType) } /* next object in object dictionary */ pObjEntry = (TOBJECT OBJMEM *) pObjEntry->pNext; +/*ET9300 Project Handler :(#if !STATIC_OBJECT_DIC #else) lines 457 to 459 deleted*/ } return n; @@ -407,6 +369,7 @@ UINT16 OBJ_GetObjectList(UINT16 listType, UINT16 *pIndex, UINT16 size, UINT16 UINT16 listFlags = 0x0020 << listType; OBJCONST TOBJECT OBJMEM * pObjEntry; +/*ET9300 Project Handler :(#if TEST_APPLICATION) lines 488 to 500 deleted*/ if ( pIndex[0] == 0x1000 ) { @@ -427,6 +390,7 @@ UINT16 OBJ_GetObjectList(UINT16 listType, UINT16 *pIndex, UINT16 size, UINT16 if ( pObjEntry != NULL ) { while (pObjEntry != NULL && size > 1 ) +/*ET9300 Project Handler :(#if !STATIC_OBJECT_DIC #else) lines 522 to 524 deleted*/ { /* get the next index of the requested object list if there is enough space in the mailbox buffer */ if ( pObjEntry->Index >= 0x1000 ) @@ -436,11 +400,13 @@ UINT16 OBJ_GetObjectList(UINT16 listType, UINT16 *pIndex, UINT16 size, UINT16 if ( t ) { UINT8 maxSubindex = (pObjEntry->ObjDesc.ObjFlags & OBJFLAGS_MAXSUBINDEXMASK) >> OBJFLAGS_MAXSUBINDEXSHIFT; - UINT8 i = 0; +/*ECATCHANGE_START(V5.13) COE1*/ + UINT16 i = 0; +/*ECATCHANGE_END(V5.13) COE1*/ while ( t && i <= maxSubindex ) { - if ( OBJ_GetEntryDesc(pObjEntry, i)->ObjAccess & listFlags ) + if ( OBJ_GetEntryDesc(pObjEntry, (UINT8)i)->ObjAccess & listFlags ) { t = 0; } @@ -456,6 +422,7 @@ UINT16 OBJ_GetObjectList(UINT16 listType, UINT16 *pIndex, UINT16 size, UINT16 } } pObjEntry = (TOBJECT OBJMEM *) pObjEntry->pNext; +/*ET9300 Project Handler :(#if !STATIC_OBJECT_DIC #else) lines 557 to 559 deleted*/ } } @@ -528,19 +495,23 @@ UINT16 OBJ_GetDesc( UINT16 index, UINT8 subindex, OBJCONST TOBJECT OBJMEM * pObj { if ( objCode == OBJCODE_REC ) { +/*ET9300 Project Handler :(#if TEST_APPLICATION) lines 632 to 653 deleted*/ { // get pointer to description of subindex 1 : // 16bit variable to avoid overflow if subindex 0xFF is read UINT16 i = 1; UINT16 tmpSubindex = subindex; +/*ET9300 Project Handler :(#if DIAGNOSIS_SUPPORTED) lines 660 to 666 deleted*/ { OBJCONST UCHAR OBJMEM * pSubDesc = (OBJCONST UCHAR OBJMEM *) OBJGETNEXTSTR( pDesc ); -/* ECATCHANGE_START(V5.12) COE10*/ while (( i <= tmpSubindex ) - &&( pSubDesc[0] != 0xFF && pSubDesc[0] != 0xFE && pSubDesc[0] != 0xFFFF)) -/* ECATCHANGE_END(V5.12) COE10*/ + &&( pSubDesc[0] != 0xFF && pSubDesc[0] != 0xFE +/* ECATCHANGE_START(V5.13) COE9*/ +/*ET9300 Project Handler :(#if MEMORY_UNIT_16BIT) lines 673 to 676 deleted*/ +/* ECATCHANGE_END(V5.13) COE9*/ + )) { if ( i == tmpSubindex ) { @@ -569,7 +540,9 @@ UINT16 OBJ_GetDesc( UINT16 index, UINT8 subindex, OBJCONST TOBJECT OBJMEM * pObj if ( pData ) { UCHAR OBJMEM TmpDescr[13]; - OBJSTRCPY(TmpDescr,aSubindexDesc,SIZEOF(TmpDescr)); + /* ECATCHANGE_START(V5.13) COE4*/ + MEMCPY(TmpDescr, aSubindexDesc, SIZEOF(TmpDescr)); + /* ECATCHANGE_END(V5.13) COE4*/ OBJ_CopyNumberToString( &TmpDescr[9], subindex ); MBXSTRCPY( pData, TmpDescr, SIZEOF(TmpDescr) ); @@ -600,6 +573,7 @@ OBJCONST TSDOINFOENTRYDESC OBJMEM * OBJ_GetEntryDesc(OBJCONST TOBJECT OBJMEM * p if ((objCode == OBJCODE_ARR) || (IS_RX_PDO(pObjEntry->Index) || IS_TX_PDO(pObjEntry->Index)) +/*ET9300 Project Handler :(#if TEST_APPLICATION) lines 742 to 746 deleted*/ ) { /* object is an array */ @@ -616,6 +590,7 @@ OBJCONST TSDOINFOENTRYDESC OBJMEM * OBJ_GetEntryDesc(OBJCONST TOBJECT OBJMEM * p } else { +/*ET9300 Project Handler :(#if DIAGNOSIS_SUPPORTED) lines 763 to 771 deleted*/ { /* object is a variable or a record return the corresponding entry */ pEntry = &pObjEntry->pEntryDesc[Subindex]; @@ -710,8 +685,10 @@ UINT16 OBJ_GetEntryOffset(UINT8 subindex, OBJCONST TOBJECT OBJMEM * pObjEntry) { bitOffset += pEntry->BitLength; } - - bitOffset += 16; + else + { + bitOffset += 16; + } } break; case DEFTYPE_UNSIGNED32: @@ -744,6 +721,26 @@ UINT16 OBJ_GetEntryOffset(UINT8 subindex, OBJCONST TOBJECT OBJMEM * pObjEntry) } } break; + + case DEFTYPE_REAL64: + case DEFTYPE_INTEGER64: + case DEFTYPE_UNSIGNED64: +#if OBJ_DWORD_ALIGN + /* the 64-bit variables in the structure are dword-aligned, + align the actual bitOffset to a dword */ + bitOffset = (bitOffset + 31) & 0xFFE0; +#elif OBJ_WORD_ALIGN + /* the 64-bit variables in the structure are word-aligned, + align the actual bitOffset to a word */ + bitOffset = (bitOffset + 15) & 0xFFF0; +#endif + + if (i < subindex) + { + + bitOffset += 64; + } + break; default: /* align the actual bitOffset to a byte */ if (i < subindex) @@ -855,10 +852,7 @@ UINT8 OBJ_Read( UINT16 index, UINT8 subindex, UINT32 objSize, OBJCONST TOBJECT O UINT8 objCode = (pObjEntry->ObjDesc.ObjFlags & OBJFLAGS_OBJCODEMASK) >> OBJFLAGS_OBJCODESHIFT; UINT16 maxSubindex = (pObjEntry->ObjDesc.ObjFlags & OBJFLAGS_MAXSUBINDEXMASK) >> OBJFLAGS_MAXSUBINDEXSHIFT; OBJCONST TSDOINFOENTRYDESC OBJMEM *pEntry; - /* lastSubindex is used for complete access to make loop over the requested entries - to be read, we initialize this variable with the requested subindex that only - one loop will be done for a single access */ - UINT16 lastSubindex = subindex; +/*ET9300 Project Handler :(#if COMPLETE_ACCESS_SUPPORTED) lines 1053 to 1058 deleted*/ if ( objCode != OBJCODE_VAR && index >= 0x1000 ) { @@ -867,21 +861,10 @@ UINT8 OBJ_Read( UINT16 index, UINT8 subindex, UINT32 objSize, OBJCONST TOBJECT O object's variable */ maxSubindex = (*((UINT16 *) (pObjEntry->pVarPtr))) & 0x00FF; +/*ET9300 Project Handler :(#if TEST_APPLICATION) lines 1067 to 1080 deleted*/ } - if ( bCompleteAccess ) - { - if ( objCode == OBJCODE_VAR || index < 0x1000 ) - { - /* complete access is not supported with simple objects or ENUM descriptions */ - return ABORTIDX_UNSUPPORTED_ACCESS; - } - - - /* we read until the maximum subindex */ - lastSubindex = maxSubindex; - } - else +/*ET9300 Project Handler :(#if COMPLETE_ACCESS_SUPPORTED) lines 1083 to 1097 deleted*/ if ( subindex > maxSubindex ) { /* the maximum subindex is reached */ @@ -897,9 +880,7 @@ UINT8 OBJ_Read( UINT16 index, UINT8 subindex, UINT32 objSize, OBJCONST TOBJECT O { /* check if we have read access (bits 0-2 (PREOP, SAFEOP, OP) of ObjAccess) by comparing with the actual state (bits 1-3 (PREOP, SAFEOP, OP) of AL Status) */ -/*ECATCHANGE_START(V5.12) COE3*/ if (0 == (((UINT8) ((pEntry->ObjAccess & ACCESS_READ)<<1)) & (nAlStatus & STATE_MASK))) -/*ECATCHANGE_END(V5.12) COE3*/ { /* we don't have read access */ if ( (pEntry->ObjAccess & ACCESS_READ) == 0 ) @@ -914,13 +895,21 @@ UINT8 OBJ_Read( UINT16 index, UINT8 subindex, UINT32 objSize, OBJCONST TOBJECT O } } } -/* ECATCHANGE_START(V5.12) COE7*/ else { return ABORTIDX_UNSUPPORTED_ACCESS; } -/* ECATCHANGE_END(V5.12) COE7*/ + +/*ET9300 Project Handler :(#if TEST_APPLICATION) lines 1133 to 1140 deleted*/ } + + /* ECATCHANGE_START(V5.13) COE4*/ + if (pAPPL_CoeReadInd != NULL) + { + pAPPL_CoeReadInd(index, subindex, bCompleteAccess); + } + /* ECATCHANGE_END(V5.13) COE4*/ + if ( pObjEntry->Read != NULL ) { /* Read function is defined, we call the object specific read function */ @@ -940,12 +929,19 @@ UINT8 OBJ_Read( UINT16 index, UINT8 subindex, UINT32 objSize, OBJCONST TOBJECT O p = (CHAR **) pVarPtr; pVarPtr = (UINT16 MBXMEM *)p[subindex-1]; + /*ECATCHANGE_START(V5.13) */ +/*ET9300 Project Handler :(#if MBX_16BIT_ACCESS && !MEMORY_UNIT_16BIT) lines 1170 to 1200 deleted*/ { // Get enum value (first 32Bit) +/*ECATCHANGE_START(V5.13) */ +/*ET9300 Project Handler :(#if MEMORY_UNIT_16BIT) lines 1204 to 1210 deleted*/ + +/*ET9300 Project Handler :(#if (BIG_ENDIAN_16BIT || BIG_ENDIAN_FORMAT)) lines 1212 to 1215 deleted*/ pData[0] = pVarPtr[0]; pData[1] = pVarPtr[1]; pData += 2; pVarPtr += 2; +/*ECATCHANGE_END(V5.13) */ // Get enum description OBJTOMBXSTRCPY(pData,pVarPtr,size-4); @@ -958,7 +954,7 @@ UINT8 OBJ_Read( UINT16 index, UINT8 subindex, UINT32 objSize, OBJCONST TOBJECT O /* a variable object is read */ - for (i = subindex; i <= lastSubindex; i++) +/*ET9300 Project Handler :(#if COMPLETE_ACCESS_SUPPORTED) lines 1235 to 1237 deleted*/ { /* if only a single entry is requested, this loop will only be done once */ UINT16 MBXMEM *pVarPtr = (UINT16 MBXMEM *) pObjEntry->pVarPtr; @@ -980,9 +976,7 @@ UINT8 OBJ_Read( UINT16 index, UINT8 subindex, UINT32 objSize, OBJCONST TOBJECT O /* get the corresponding entry description */ pEntry = OBJ_GetEntryDesc(pObjEntry, (UINT8)i); -/*ECATCHANGE_START(V5.12) COE3*/ if (0 != (((UINT8) ((pEntry->ObjAccess & ACCESS_READ)<<1)) & (nAlStatus & STATE_MASK)) ) -/*ECATCHANGE_END(V5.12) COE3*/ { if ( i == subindex /* requested entry */ || (bCompleteAccess && i >= subindex) ) /* complete access and entry should be read */ @@ -993,6 +987,7 @@ UINT8 OBJ_Read( UINT16 index, UINT8 subindex, UINT32 objSize, OBJCONST TOBJECT O if ( i == 0 && objCode != OBJCODE_VAR ) { /* we read subindex 0 of an array or record */ +/*ET9300 Project Handler :(#if TEST_APPLICATION) lines 1270 to 1276 deleted*/ { pData[0] = SWAPWORD((UINT16)maxSubindex); } @@ -1053,6 +1048,7 @@ UINT8 OBJ_Read( UINT16 index, UINT8 subindex, UINT32 objSize, OBJCONST TOBJECT O case DEFTYPE_BIT6: case DEFTYPE_BIT7: case DEFTYPE_BIT8: +/*ET9300 Project Handler :(#if TEST_APPLICATION) lines 1337 to 1348 deleted*/ case DEFTYPE_BITARR8: /* in this example the objects are defined in that way, that the bit types are always inside a 16-bit field, @@ -1126,6 +1122,7 @@ UINT8 OBJ_Read( UINT16 index, UINT8 subindex, UINT32 objSize, OBJCONST TOBJECT O /* in this example the objects are defined in that way, that the 32 bit type are always starting at an exact WORD offset */ +/*ET9300 Project Handler :(#if BIG_ENDIAN_16BIT || BIG_ENDIAN_FORMAT) lines 1422 to 1425 deleted*/ pData[0] = pVarPtr[0]; pData[1] = pVarPtr[1]; pData += 2; @@ -1141,6 +1138,7 @@ UINT8 OBJ_Read( UINT16 index, UINT8 subindex, UINT32 objSize, OBJCONST TOBJECT O /* in this example the objects are defined in that way, that the 64 bit type are always starting at an exact WORD offset */ +/*ET9300 Project Handler :(#if BIG_ENDIAN_16BIT || BIG_ENDIAN_FORMAT) lines 1442 to 1447 deleted*/ pData[0] = pVarPtr[0]; pData[1] = pVarPtr[1]; pData[2] = pVarPtr[2]; @@ -1270,7 +1268,7 @@ UINT8 OBJ_Read( UINT16 index, UINT8 subindex, UINT32 objSize, OBJCONST TOBJECT O object shall be done or not \return result of the write operation (0 (success) or an abort code (ABORTIDX_.... defined in - sdosrv.h)) + sdoserv.h)) \brief This function writes the requested object *//////////////////////////////////////////////////////////////////////////////////////// @@ -1284,10 +1282,7 @@ UINT8 OBJ_Write( UINT16 index, UINT8 subindex, UINT32 dataSize, OBJCONST TOBJECT UINT16 maxConfiguredSubindex = (pObjEntry->ObjDesc.ObjFlags & OBJFLAGS_MAXSUBINDEXMASK) >> OBJFLAGS_MAXSUBINDEXSHIFT; //required to check if value for Subindex0 is valid OBJCONST TSDOINFOENTRYDESC OBJMEM *pEntry; BOOL bClearSubindex0Required = FALSE; - /* lastSubindex is used for complete access to make loop over the requested entries - to be read, we initialize this variable with the requested subindex that only - one loop will be done for a single access */ - UINT16 lastSubindex = subindex; +/*ET9300 Project Handler :(#if COMPLETE_ACCESS_SUPPORTED) lines 1592 to 1597 deleted*/ /* if subindex 0 is writable, the maximum subindex should be checked in an object specific function, because for the PDO mapping and PDO assign the object shall only be written if subindex 0 is 0. */ @@ -1298,35 +1293,15 @@ UINT8 OBJ_Write( UINT16 index, UINT8 subindex, UINT32 dataSize, OBJCONST TOBJECT object's variable */ maxSubindex = (UINT8) ((UINT16 MBXMEM *) (pObjEntry->pVarPtr))[0]; -/*ECATCHANGE_START(V5.12) COE9*/ /*If the subindex0 of a PDO assign or PDO mapping object is 0 the maximum subindex is specified by the object description*/ if(maxSubindex == 0 && (IS_PDO_ASSIGN(index) || IS_RX_PDO(index) || IS_TX_PDO(index) || (index == 0xF030))) -/*ECATCHANGE_END(V5.12) COE9*/ { maxSubindex = maxConfiguredSubindex; } } - if ( bCompleteAccess ) - { - if ( objCode == OBJCODE_VAR ) - { - /* complete access is not supported with simple objects */ - return ABORTIDX_UNSUPPORTED_ACCESS; - } - - if ((subindex == 0) && (dataSize > 0)) - { - /* we change the subindex 0 */ - maxSubindex = (UINT8) SWAPWORD(pData[0]); - } - - - /* we write until the maximum subindex */ - lastSubindex = maxSubindex; - } - else +/*ET9300 Project Handler :(#if COMPLETE_ACCESS_SUPPORTED) lines 1616 to 1636 deleted*/ if (subindex > maxSubindex) { /* the maximum subindex is reached */ @@ -1342,19 +1317,15 @@ UINT8 OBJ_Write( UINT16 index, UINT8 subindex, UINT32 dataSize, OBJCONST TOBJECT /* check if we have write access (bits 3-5 (PREOP, SAFEOP, OP) of ObjAccess) by comparing with the actual state (bits 1-3 (PREOP, SAFEOP, OP) of AL Status) */ -/*ECATCHANGE_START(V5.12) COE3*/ if (0 == (((UINT8)((pEntry->ObjAccess & ACCESS_WRITE) >> 2)) & (nAlStatus & STATE_MASK) )) -/*ECATCHANGE_END(V5.12) COE3*/ { /* we don't have write access */ if ( (pEntry->ObjAccess & ACCESS_WRITE) == 0 ) { -/* ECATCHANGE_START(V5.12) COE7*/ if (pEntry->ObjAccess == 0) { return ABORTIDX_UNSUPPORTED_ACCESS; } -/* ECATCHANGE_END(V5.12) COE7*/ else { /* it is a read only entry */ @@ -1367,14 +1338,15 @@ UINT8 OBJ_Write( UINT16 index, UINT8 subindex, UINT32 dataSize, OBJCONST TOBJECT return ABORTIDX_IN_THIS_STATE_DATA_CANNOT_BE_READ_OR_STORED; } } + +/*ET9300 Project Handler :(#if TEST_APPLICATION) lines 1674 to 1681 deleted*/ + } /* Subindex 0 shall be set to zero if a single PDO / PDO assign entry is written or a complete access without subindex0 is requested */ -/*ECATCHANGE_START(V5.12) COE9*/ if((subindex > 0) && (IS_PDO_ASSIGN(index) || IS_RX_PDO(index)|| IS_TX_PDO(index) || (index == 0xF030)) -/*ECATCHANGE_END(V5.12) COE9*/ ) { /*Check if Subindex0 was cleared before*/ @@ -1388,7 +1360,18 @@ UINT8 OBJ_Write( UINT16 index, UINT8 subindex, UINT32 dataSize, OBJCONST TOBJECT if ( pObjEntry->Write != NULL ) { /* Write function is defined, we call the object specific write function */ - return pObjEntry->Write(index, subindex, dataSize, pData, bCompleteAccess); + /* ECATCHANGE_START(V5.13) COE4*/ + UINT8 result = 0; + + result = pObjEntry->Write(index, subindex, dataSize, pData, bCompleteAccess); + + if ((result == 0) && (pAPPL_CoeWriteInd != NULL)) + { + pAPPL_CoeWriteInd(index, subindex, bCompleteAccess); + } + + return result; + /* ECATCHANGE_END(V5.13) COE4*/ } else { @@ -1400,8 +1383,9 @@ UINT8 OBJ_Write( UINT16 index, UINT8 subindex, UINT32 dataSize, OBJCONST TOBJECT return 0; //no error } +/*ET9300 Project Handler :(#if TEST_APPLICATION) lines 1725 to 1731 deleted*/ /* we use the standard write function */ - for (i = subindex; i <= lastSubindex; i++) +/*ET9300 Project Handler :(#if COMPLETE_ACCESS_SUPPORTED) lines 1733 to 1735 deleted*/ { /* if only a single entry is requested, this loop will only be done once */ UINT16 MBXMEM *pVarPtr = (UINT16 MBXMEM *) pObjEntry->pVarPtr; @@ -1415,9 +1399,7 @@ UINT8 OBJ_Write( UINT16 index, UINT8 subindex, UINT32 dataSize, OBJCONST TOBJECT /* we check if we have write access (bits 3-5 (PREOP, SAFEOP, OP) of ObjAccess) by comparing with the actual state (bits 1-3 (PREOP, SAFEOP, OP) of AL Status) */ -/*ECATCHANGE_START(V5.12) COE3*/ if (0 != (((UINT8)((pEntry->ObjAccess & ACCESS_WRITE) >> 2)) & (nAlStatus & STATE_MASK) )) -/*ECATCHANGE_END(V5.12) COE3*/ { /* we have write access for this entry */ if (i != 0) @@ -1500,6 +1482,7 @@ UINT8 OBJ_Write( UINT16 index, UINT8 subindex, UINT32 dataSize, OBJCONST TOBJECT case DEFTYPE_BIT6: case DEFTYPE_BIT7: case DEFTYPE_BIT8: +/*ET9300 Project Handler :(#if TEST_APPLICATION) lines 1832 to 1843 deleted*/ case DEFTYPE_BITARR8: /* in this example the objects are defined in that way, that the bit types are always inside a 16-bit field, @@ -1596,7 +1579,6 @@ UINT8 OBJ_Write( UINT16 index, UINT8 subindex, UINT32 dataSize, OBJCONST TOBJECT bSyncSetByUser = TRUE; } -/*ECATCHANGE_START(V5.12) ECAT1*/ if (i == 8) /* "Get Cycle Time" written*/ { @@ -1621,7 +1603,6 @@ UINT8 OBJ_Write( UINT16 index, UINT8 subindex, UINT32 dataSize, OBJCONST TOBJECT sSyncManInPar.u8SyncError = 0; } } /* Subindex 8 written*/ -/*ECATCHANGE_END(V5.12) ECAT1*/ } pVarPtr[0] = u16NewData; @@ -1642,6 +1623,7 @@ UINT8 OBJ_Write( UINT16 index, UINT8 subindex, UINT32 dataSize, OBJCONST TOBJECT /* in this example the objects are defined in that way, that the 32 bit type are always starting at an exact WORD offset */ +/*ET9300 Project Handler :(#if BIG_ENDIAN_16BIT || BIG_ENDIAN_FORMAT) lines 1992 to 2003 deleted*/ if(bClearSubindex0Required && ((pVarPtr[0] != pData[0]) || (pVarPtr[1] != pData[1]))) @@ -1654,6 +1636,7 @@ UINT8 OBJ_Write( UINT16 index, UINT8 subindex, UINT32 dataSize, OBJCONST TOBJECT pVarPtr[1] = pData[1]; pData += 2; } +/*ET9300 Project Handler :(#if TEST_APPLICATION && DIAGNOSIS_SUPPORTED) lines 2017 to 2028 deleted*/ break; case DEFTYPE_REAL64: case DEFTYPE_INTEGER64: @@ -1665,6 +1648,7 @@ UINT8 OBJ_Write( UINT16 index, UINT8 subindex, UINT32 dataSize, OBJCONST TOBJECT } /* in this example the objects are defined in that way, that the 64 bit type are always starting at an exact WORD offset */ +/*ET9300 Project Handler :(#if BIG_ENDIAN_16BIT || BIG_ENDIAN_FORMAT) lines 2040 to 2045 deleted*/ pVarPtr[0] = pData[0]; pVarPtr[1] = pData[1]; pVarPtr[2] = pData[2]; @@ -1709,6 +1693,7 @@ UINT8 OBJ_Write( UINT16 index, UINT8 subindex, UINT32 dataSize, OBJCONST TOBJECT /* set flag */ bWritten = 1; +/*ET9300 Project Handler :(#if STORE_BACKUP_PARAMETER_IMMEDIATELY && BACKUP_PARAMETER_SUPPORTED) lines 2091 to 2098 deleted*/ } } else @@ -1743,6 +1728,13 @@ UINT8 OBJ_Write( UINT16 index, UINT8 subindex, UINT32 dataSize, OBJCONST TOBJECT } } + /* ECATCHANGE_START(V5.13) COE4*/ + if (pAPPL_CoeWriteInd != NULL) + { + pAPPL_CoeWriteInd(index, subindex, bCompleteAccess); + } + /* ECATCHANGE_END(V5.13) COE4*/ + return 0; } /** @} */ diff --git a/objdef.h b/objdef.h index aca0ac0..be74ddc 100644 --- a/objdef.h +++ b/objdef.h @@ -1,6 +1,7 @@ /* * This source file is part of the EtherCAT Slave Stack Code licensed by Beckhoff Automation GmbH & Co KG, 33415 Verl, Germany. * The corresponding license agreement applies. This hint shall not be removed. +* https://www.beckhoff.com/media/downloads/slave-stack-code/ethercat_ssc_license.pdf */ /** @@ -134,9 +135,9 @@ V5.01 : Start file change log #define SYNCTYPE_TIMESVARIABLE 0x4000 /**< \brief Dynamic Cycle Times supported*/ -#define IS_PDO_ASSIGN(x) ((x >= 0x1C10) && (x <= 0x1C2F)) /**< \brief Marco to check if object index is SyncManager assign object*/ -#define IS_RX_PDO(x) (((x) >= 0x1600) && ((x) <= 0x17FF)) /**< \brief Marco to check if object index RxPDO mapping object*/ -#define IS_TX_PDO(x) (((x) >= 0x1A00) && ((x) <= 0x1BFF)) /**< \brief Marco to check if object index TxPDO mapping object*/ +#define IS_PDO_ASSIGN(x) ((x >= 0x1C10) && (x <= 0x1C2F)) /**< \brief Macro to check if object index is SyncManager assign object*/ +#define IS_RX_PDO(x) (((x) >= 0x1600) && ((x) <= 0x17FF)) /**< \brief Macro to check if object index RxPDO mapping object*/ +#define IS_TX_PDO(x) (((x) >= 0x1A00) && ((x) <= 0x1BFF)) /**< \brief Macro to check if object index TxPDO mapping object*/ /** @@ -177,7 +178,7 @@ typedef struct OBJ_STRUCT_PACKED_START UINT32 u32Sync0CycleTime; /**< \brief SunbIndex 010: Sync0 cycle time*/ UINT16 u16SmEventMissedCounter; /**< \brief SunbIndex 011: SyncManager event missed counter*/ UINT16 u16CycleExceededCounter; /**< \brief SunbIndex 012: Cycle exceed counter*/ - UINT16 u16Si13Reserved; /**< \brief SunbIndex 013: Shift too short (not supported, only padding)*/ + UINT16 u16ShiftTooShort; /**< \brief SunbIndex 013: Shift too short*/ UINT16 u16Si14Reserved; /**< \brief SubIndex14 not supported*/ UINT32 u32Si15Reserved; /**< \brief SubIndex15 not supported*/ UINT32 u32Si16Reserved; /**< \brief SubIndex16 not supported*/ diff --git a/sdoserv.c b/sdoserv.c index 337bd8e..564f8df 100644 --- a/sdoserv.c +++ b/sdoserv.c @@ -1,6 +1,7 @@ /* * This source file is part of the EtherCAT Slave Stack Code licensed by Beckhoff Automation GmbH & Co KG, 33415 Verl, Germany. * The corresponding license agreement applies. This hint shall not be removed. +* https://www.beckhoff.com/media/downloads/slave-stack-code/ethercat_ssc_license.pdf */ /** @@ -14,8 +15,10 @@ \brief Implementation The SDO server handles all sdo and sdo information services -\version 5.12 +\version 5.13 +
Changes to version V5.12:
+V5.13 COE5: handle complete access if segmented transfer is required, handle unsupported segmented uploads

Changes to version V5.11:
V5.12 COE2: do not clear the object index low byte in case of creating a SDO Abort
V5.12 COE5: updates in case of MBX_16BIT_ACCESS == 0
@@ -37,7 +40,7 @@ V5.10 SDO4: Block SDO Info services for indices less 0x1000
V5.10 SDO7: Correct mailbox length calculation on segmented or normal SDO upload response
V5.10 SDO8: Fix invalid fragment calculation on SdoInfo list response
V5.10 TEST5: test 0x2020.1 change limit from 10 to 16 Byte
- Add test object 0x3009/0x300A (huge array and record objects)
+ Add test object 0x3009/0x300A (huge array and record objects)

Changes to version V5.0:
V5.01 MBX1: Allocate always complete 16Bit memory areas
V5.01 SDO2: Prevent invalid memory access in case of 8Bit mailbox memory handling
@@ -76,26 +79,26 @@ V4.08 SDO 2: For a segmented response the command was wrong in the response

Changes to version V4.06:
V4.07 SDO 1: In SdoRes the command specifier was not set correctly in case of an abort
V4.07 ECAT 1: The sources for SPI and MCI were merged (in ecat_def.h
- set the switch MCI_HW to 1 when using the MCI,
- set the switch SPI_HW to 1 when using the SPI
+ set the switch MCI_HW to 1 when using the MCI,
+ set the switch SPI_HW to 1 when using the SPI

Changes to version V4.05:
V4.06 SDO 1: The variable dataSize was used wrong in function SdoRes

Changes to version V4.03:
V4.04 SDO 1: The SDO interface was changed in that way that a SDO response
- could be sent by the application to a later time. In that case
- the functions OBJ_Read and OBJ_Write shall return the value
- ABORTIDX_WORKING. To send the SDO response the new function SDOS_SdoRes
- has to be called by the application. While waiting for the call
- of SDOS_SdoRes the SDO interface will answer to another SDO request
- with the error MBXERR_SERVICEINWORK in the mailbox protocol
+ could be sent by the application to a later time. In that case
+ the functions OBJ_Read and OBJ_Write shall return the value
+ ABORTIDX_WORKING. To send the SDO response the new function SDOS_SdoRes
+ has to be called by the application. While waiting for the call
+ of SDOS_SdoRes the SDO interface will answer to another SDO request
+ with the error MBXERR_SERVICEINWORK in the mailbox protocol

Changes to version V3.20:
V4.00 SDO 1: The size of the written data in case of a SDO Download will be
- in the function OBJ_Write to be more flexible
+ in the function OBJ_Write to be more flexible
V4.00 SDO 2: The object lists will be generated in the functions OBJ_GetNoOfObjects
- and OBJ_GetObjectList in objdef.c to decouple the SDO services from
- the implementation of the object dictionary
+ and OBJ_GetObjectList in objdef.c to decouple the SDO services from
+ the implementation of the object dictionary
V4.00 SDO 3: The name of an object or entry description will only be transmitted
- if it fits in the mailbox because the fragmentation is not supported in the sample code.
+ if it fits in the mailbox because the fragmentation is not supported in the sample code.
V4.00 SDO 4: SDOs with size greater than 65535 were not handled correctly, that is fixed now */ @@ -116,11 +119,13 @@ V4.00 SDO 4: SDOs with size greater than 65535 were not handled correctly, that /*remove definition of _SDOSERV_ (#ifdef is used in objdef.h)*/ +/*ET9300 Project Handler :(#if TEST_APPLICATION) lines 122 to 124 deleted*/ +/*ET9300 Project Handler :(#if TEST_APPLICATION && EOE_SUPPORTED) lines 126 to 128 deleted*/ extern OBJCONST TOBJECT OBJMEM asObjDef[]; -extern UINT16 OBJ_GetDesc( UINT16 index, UINT8 subindex, OBJCONST TOBJECT OBJMEM * pObjEntry, UINT16 MBXMEM * pData ); +extern UINT16 OBJ_GetDesc(UINT16 index, UINT8 subindex, OBJCONST TOBJECT OBJMEM * pObjEntry, UINT16 MBXMEM * pData); extern OBJCONST TSDOINFOENTRYDESC OBJMEM * OBJ_GetEntryDesc(OBJCONST TOBJECT OBJMEM * pObjEntry, UINT8 Subindex); extern OBJCONST TSDOINFOOBJDESC OBJMEM * OBJ_GetObjDesc(OBJCONST TOBJECT OBJMEM * pObjEntry); @@ -132,357 +137,62 @@ extern OBJCONST TSDOINFOOBJDESC OBJMEM * OBJ_GetObjDesc(OBJCONST TOBJECT OBJMEM const UINT32 MBXMEM cAbortCode[] = { - ABORT_NOERROR, - ABORT_TOGGLE_BIT_NOT_CHANGED, - ABORT_SDO_PROTOCOL_TIMEOUT, - ABORT_COMMAND_SPECIFIER_UNKNOWN, - ABORT_OUT_OF_MEMORY, - ABORT_UNSUPPORTED_ACCESS, - ABORT_WRITE_ONLY_ENTRY, - ABORT_READ_ONLY_ENTRY, - ABORT_OBJECT_NOT_EXISTING, - ABORT_OBJECT_CANT_BE_PDOMAPPED, - ABORT_MAPPED_OBJECTS_EXCEED_PDO, - ABORT_PARAM_IS_INCOMPATIBLE, - ABORT_INTERNAL_DEVICE_INCOMPATIBILITY, - ABORT_HARDWARE_ERROR, - ABORT_PARAM_LENGTH_ERROR, - ABORT_PARAM_LENGTH_TOO_LONG, - ABORT_PARAM_LENGTH_TOO_SHORT, - ABORT_SUBINDEX_NOT_EXISTING, - ABORT_VALUE_EXCEEDED, - ABORT_VALUE_TOO_GREAT, - ABORT_VALUE_TOO_SMALL, - ABORT_MODULE_ID_LIST_NOT_MATCH, - ABORT_MAX_VALUE_IS_LESS_THAN_MIN_VALUE, - ABORT_GENERAL_ERROR, - ABORT_DATA_CANNOT_BE_READ_OR_STORED, - ABORT_DATA_CANNOT_BE_READ_OR_STORED_BECAUSE_OF_LOCAL_CONTROL, - ABORT_DATA_CANNOT_BE_READ_OR_STORED_IN_THIS_STATE, - ABORT_NO_OBJECT_DICTIONARY_IS_PRESENT, - ABORT_ENTRY_CANT_BE_WRITTEN_SI0_NOT_0, - ABORT_COMPLETE_ACCESS_NOT_SUPPORTED + ABORT_NOERROR, + ABORT_TOGGLE_BIT_NOT_CHANGED, + ABORT_SDO_PROTOCOL_TIMEOUT, + ABORT_COMMAND_SPECIFIER_UNKNOWN, + ABORT_OUT_OF_MEMORY, + ABORT_UNSUPPORTED_ACCESS, + ABORT_WRITE_ONLY_ENTRY, + ABORT_READ_ONLY_ENTRY, + ABORT_OBJECT_NOT_EXISTING, + ABORT_OBJECT_CANT_BE_PDOMAPPED, + ABORT_MAPPED_OBJECTS_EXCEED_PDO, + ABORT_PARAM_IS_INCOMPATIBLE, + ABORT_INTERNAL_DEVICE_INCOMPATIBILITY, + ABORT_HARDWARE_ERROR, + ABORT_PARAM_LENGTH_ERROR, + ABORT_PARAM_LENGTH_TOO_LONG, + ABORT_PARAM_LENGTH_TOO_SHORT, + ABORT_SUBINDEX_NOT_EXISTING, + ABORT_VALUE_EXCEEDED, + ABORT_VALUE_TOO_GREAT, + ABORT_VALUE_TOO_SMALL, + ABORT_MODULE_ID_LIST_NOT_MATCH, + ABORT_MAX_VALUE_IS_LESS_THAN_MIN_VALUE, + ABORT_GENERAL_ERROR, + ABORT_DATA_CANNOT_BE_READ_OR_STORED, + ABORT_DATA_CANNOT_BE_READ_OR_STORED_BECAUSE_OF_LOCAL_CONTROL, + ABORT_DATA_CANNOT_BE_READ_OR_STORED_IN_THIS_STATE, + ABORT_NO_OBJECT_DICTIONARY_IS_PRESENT, + ABORT_ENTRY_CANT_BE_WRITTEN_SI0_NOT_0, + ABORT_COMPLETE_ACCESS_NOT_SUPPORTED }; UINT16 VARMEM nSdoInfoIndex; OBJCONST TOBJECT OBJMEM * VARMEM pSdoInfoObjEntry; -TINITSDOMBX MBXMEM * VARMEM pSdoResStored; -BOOL VARMEM bSdoInWork = FALSE; - -UINT8 VARMEM nSdoSegService; -UINT8 VARMEM bSdoSegFollows; -UINT8 VARMEM bSdoSegAccess; -UINT16 VARMEM nSdoSegIndex; -UINT8 VARMEM nSdoSegSubindex; -UINT32 VARMEM nSdoSegBytesToHandle; -UINT8 VARMEM bSdoSegLastToggle; -UINT32 VARMEM nSdoSegCompleteSize; -OBJCONST TOBJECT OBJMEM * VARMEM pSdoSegObjEntry; +/*ET9300 Project Handler :(#if SDO_RES_INTERFACE) lines 179 to 182 deleted*/ +/*ET9300 Project Handler :(#if SEGMENTED_SDO_SUPPORTED) lines 184 to 203 deleted*/ /*--------------------------------------------------------------------------------------- ------ ------ module internal function declarations ------ ---------------------------------------------------------------------------------------*/ -static UINT8 SdoDownloadSegmentInd(TDOWNLOADSDOSEGREQMBX MBXMEM * pSdoInd); -static UINT8 SdoUploadSegmentInd(TUPLOADSDOSEGREQMBX MBXMEM * pSdoInd); +/*ET9300 Project Handler :(#if SEGMENTED_SDO_SUPPORTED) lines 209 to 212 deleted*/ /*--------------------------------------------------------------------------------------- ------ ------ Functions ------ ---------------------------------------------------------------------------------------*/ -///////////////////////////////////////////////////////////////////////////////////////// -/** - \param pSdoInd Pointer to the received mailbox data from the master. - - \return Indicates if an error occurred while the operation ( good = 0 ). - - \brief This function is called when a Download SDO Segment request - service is received from the master. If its the last segment - the data will be written to the object dictionary. The - function sends a response by itself. -*//////////////////////////////////////////////////////////////////////////////////////// - -static UINT8 SdoDownloadSegmentInd( TDOWNLOADSDOSEGREQMBX MBXMEM * pSdoInd ) -{ - UINT8 abort = 0; - UINT32 bytesToSave = 0; - -/* ECATCHANGE_START(V5.12) ECAT2*/ - if ( SWAPWORD(pSdoInd->SdoHeader.SegHeader & SEGHEADER_TOGGLE) == bSdoSegLastToggle ) -/* ECATCHANGE_END(V5.12) ECAT2*/ - { - /* toggle bit has not toggled... */ - abort = ABORTIDX_TOGGLE_BIT_NOT_CHANGED; - } - else - { - /* maxData contains the maximum data to be received with a SDO-DownloadSegment */ - UINT16 maxData = u16ReceiveMbxSize - MBX_HEADER_SIZE - SEGMENT_NORM_HEADER_SIZE; - /* the new toggle bit is stored in bSdoSegLastToggle */ - /* ECATCHANGE_START(V5.12) ECAT2*/ - bSdoSegLastToggle = SWAPWORD(pSdoInd->SdoHeader.SegHeader & SEGHEADER_TOGGLE); - /* ECATCHANGE_END(V5.12) ECAT2*/ - - /* a SDO-Download Segment is only allowed if a SDO-Download Request was received before, - in that case a buffer for the received data was allocated in SDOS_SdoInd before */ - if ( pSdoSegData ) - { - /* bytesToSave contains the remaining data with this and maybe the following - SDO-Download Segment services */ - bytesToSave = nSdoSegCompleteSize - nSdoSegBytesToHandle; - - if ( pSdoInd->SdoHeader.SegHeader & SEGHEADER_NOMOREFOLLOWS ) - { - /* the last segment is received, check if the length of the remaining data is the - same as the length of the received data */ - if ( bytesToSave <= maxData ) - { - UINT16 mbxSize = SWAPWORD(pSdoInd->MbxHeader.Length); - - /* for the check it is distinguished if the remaining bytes are less than 8 (in that - case 7 data bytes were sent and the SDO-Download Segment header contains the information - how much bytes are valid (CAN-compatibility)), otherwise the length has to match exactly - and the SDO-Download Segment-Headerbyte is ignored */ - if (((bytesToSave <= (UINT32)(mbxSize - SEGMENT_NORM_HEADER_SIZE)) - &&( bytesToSave == ((UINT16) (MIN_SEGMENTED_DATA - ((pSdoInd->SdoHeader.SegHeader & SEGHEADER_SEGDATASIZE) >> SEGHEADERSHIFT_SEGDATASIZE))) ) - ) - ||( ( bytesToSave > MIN_SEGMENTED_DATA ) - && (bytesToSave == (UINT32)(mbxSize - SEGMENT_NORM_HEADER_SIZE)) - ) ) - { - /* length is correct */ - bSdoSegFollows = FALSE; - } - else - { - abort = ABORTIDX_PARAM_LENGTH_ERROR; - } - } - else - { - abort = ABORTIDX_PARAM_LENGTH_ERROR; - } - } - else - { - /* its not the last segment */ - bSdoSegFollows = TRUE; - /* we have to check if we expect less bytes than the maximum size which can be send with a single - SDO Download Segment */ - if ( bytesToSave <= maxData ) - { - abort = ABORTIDX_PARAM_LENGTH_ERROR; - } - else - { - /* length is okay, bytesToSave contains the data size to be copied */ - bytesToSave = maxData; - } - } - - if ( abort == 0 ) - { - /* the received data is copied in the buffer */ - MBXMEMCPY( ((UINT8*)pSdoSegData) + (nSdoSegBytesToHandle), pSdoInd->SdoHeader.Data, bytesToSave ); - - if ( bSdoSegFollows == FALSE ) - { - /* it was the last segment, OBJ_Write will called to make the Write-operation */ - abort = OBJ_Write( nSdoSegIndex, nSdoSegSubindex, nSdoSegCompleteSize, pSdoSegObjEntry, (UINT16 MBXMEM *) pSdoSegData, bSdoSegAccess ); - if ( abort == ABORTIDX_WORKING ) - { - /* the application generates the SDO-Response later on by calling SDOS_SdoRes (only possible if object access function pointer is defined) */ - u8PendingSdo = SDO_PENDING_SEG_WRITE; - bStoreCompleteAccess = bSdoSegAccess; - u8StoreSubindex = nSdoSegSubindex; - u16StoreIndex = nSdoSegIndex; - u32StoreDataSize = nSdoSegCompleteSize; - pStoreData = pSdoSegData; - - pSdoPendFunc = pSdoSegObjEntry->Write; - - bSdoInWork = TRUE; - pSdoResStored = (TINITSDOMBX MBXMEM *) pSdoInd; - - bSdoSegFollows = FALSE; - nSdoSegService = 0; - nSdoSegBytesToHandle = 0; - - return ABORTIDX_WORKING; - } - else - { - /* the allocated buffer can be released */ - FREEMEM( (UINT16 VARMEM *) pSdoSegData ); - pSdoSegData = NULL; - } - } - } - } - else - { - abort = ABORTIDX_COMMAND_SPECIFIER_UNKNOWN; - } - } - - if ( abort == 0) - { - /* send the SDO Download Segment response */ - pSdoInd->MbxHeader.Length = SEGMENT_NORM_RES_SIZE; - pSdoInd->CoeHeader &= ~COEHEADER_COESERVICEMASK; - pSdoInd->CoeHeader |= ((UINT16)COESERVICE_SDORESPONSE) << COEHEADER_COESERVICESHIFT; - /* the SDO Download Segment header depends if it was the last segment or not */ -/* ECATCHANGE_START(V5.12) ECAT2*/ - if ( bSdoSegLastToggle ) - { - pSdoInd->SdoHeader.SegHeader = SWAPWORD(SDOSERVICE_DOWNLOADSEGMENTRES|SEGHEADER_TOGGLE); - } - else - { - pSdoInd->SdoHeader.SegHeader = SWAPWORD(SDOSERVICE_DOWNLOADSEGMENTRES); - } -/* ECATCHANGE_END(V5.12) ECAT2*/ - - if ( bSdoSegFollows == TRUE ) - { - /* segments are still expected, nSdoSegBytesToHandle contains the number of received data bytes */ - nSdoSegBytesToHandle += bytesToSave; - } - else - { - /* the last segment was received, the variables are reset */ - nSdoSegBytesToHandle = 0; - nSdoSegService = 0; - } - } - else - { - /* the Abort-Response will be sent in SDOS_SdoInd*/ - bSdoSegFollows = FALSE; - nSdoSegService = 0; - if (pSdoSegData) - { - /* the memory has to be released if it is not released before. - In case of AbortIdx_Working the buffer will be freed in SDOS_SdoRes*/ - FREEMEM( (UINT16 VARMEM *) pSdoSegData ); - pSdoSegData = NULL; - } - - nSdoSegBytesToHandle = 0; - } - - return abort; -} - -///////////////////////////////////////////////////////////////////////////////////////// -/** - \param pSdoInd Pointer to the received mailbox data from the master. - - \return Indicates if an error occurred while the operation ( good = 0 ). - - \brief This function is called when a Upload SDO Segment request service - is received from the master. It prepares and operates the - response and sends it by itself. -*//////////////////////////////////////////////////////////////////////////////////////// - -static UINT8 SdoUploadSegmentInd( TUPLOADSDOSEGREQMBX MBXMEM * pSdoInd ) -{ - UINT8 abort = 0; - TUPLOADSDOSEGRESMBX MBXMEM * pSdoSegRes = (TUPLOADSDOSEGRESMBX MBXMEM *)pSdoInd; - -/* ECATCHANGE_START(V5.12) ECAT2*/ - if ( SWAPWORD(pSdoInd->SegHeader & SEGHEADER_TOGGLE) == bSdoSegLastToggle ) -/* ECATCHANGE_END(V5.12) ECAT2*/ - { - /* toggle bit has not toggled... */ - abort = ABORTIDX_TOGGLE_BIT_NOT_CHANGED; - } - else - { - /* maxData contains the maximum data to be sent with a SDO-Upload Segment response */ - - UINT32 size = 0; - UINT16 maxData; - - { - maxData = u16SendMbxSize - MBX_HEADER_SIZE - SEGMENT_NORM_HEADER_SIZE; - } - - /* the new toggle bit is stored in bSdoSegLastToggle */ - bSdoSegLastToggle = pSdoInd->SegHeader & SEGHEADER_TOGGLE; - - if ( nSdoSegCompleteSize < (nSdoSegBytesToHandle + maxData) ) - { - /* the remaining data can be send with one SDO Upload Segment response, - size contains the data to be copied */ - size = nSdoSegCompleteSize - nSdoSegBytesToHandle; - bSdoSegFollows = FALSE; - } - else - { - /* more data will follow, size contains the data to be copied */ - size = maxData; - bSdoSegFollows = TRUE; - } - - /* copy the object data in the SDO Upload segment response */ - MBXMEMCPY( pSdoSegRes->SdoHeader.Data, &(((UINT8*)pSdoSegData)[nSdoSegBytesToHandle]), size ); - - /* the SDO Upload Segment header depends if there is still data to be sent */ - pSdoSegRes->CoeHeader &= ~COEHEADER_COESERVICEMASK; - pSdoSegRes->CoeHeader |= ((UINT16)COESERVICE_SDORESPONSE) << COEHEADER_COESERVICESHIFT; - - /*Clear SDO header*/ - pSdoSegRes->SdoHeader.SegHeader &= ~SEGHEADER_MASK; -/* ECATCHANGE_START(V5.12) ECAT2*/ - if (bSdoSegFollows) - { - pSdoSegRes->SdoHeader.SegHeader |= SWAPWORD(SDOSERVICE_UPLOADSEGMENTRES | bSdoSegLastToggle); - } - else - { - pSdoSegRes->SdoHeader.SegHeader |= SWAPWORD(SDOSERVICE_UPLOADSEGMENTRES | bSdoSegLastToggle | SEGHEADER_NOMOREFOLLOWS); - } -/* ECATCHANGE_END(V5.12) ECAT2*/ - - // operate CAN specific flag segDataSize: - /* HBu 06.02.06: the sizes were wrong */ - if ( size < MIN_SEGMENTED_DATA ) - { - // at least MIN_SEGMENTED_DATA bytes have to be send: - pSdoSegRes->MbxHeader.Length = SEGMENT_NORM_RES_SIZE; - pSdoSegRes->SdoHeader.SegHeader |= (MIN_SEGMENTED_DATA - size) << SEGHEADERSHIFT_SEGDATASIZE; - } - else - { - pSdoSegRes->MbxHeader.Length = ((UINT16) size) + SEGMENT_NORM_HEADER_SIZE; - } - - if ( bSdoSegFollows == TRUE ) - { - // updating the value of send bytes: - nSdoSegBytesToHandle += size; - } - else - { - FREEMEM( (UINT16 VARMEM *) pSdoSegData ); - pSdoSegData = NULL; - nSdoSegBytesToHandle = 0; - nSdoSegService = 0; - } - } - - return abort; -} - +/*ET9300 Project Handler :(#if SEGMENTED_SDO_SUPPORTED) lines 219 to 561 deleted*/ ///////////////////////////////////////////////////////////////////////////////////////// /** \param abort Result of the SDO access - \param command SDO command index + \param command SDO command index \param completeAccess Indicates if complete access was requested \param dataSize Available data buffer in the response \param objLength Complete size of the object @@ -493,82 +203,83 @@ static UINT8 SdoUploadSegmentInd( TUPLOADSDOSEGREQMBX MBXMEM * pSdoInd ) void SdoRes(UINT8 abort, UINT8 command, UINT8 completeAccess, UINT16 dataSize, UINT32 objLength, TINITSDOMBX MBXMEM *pSdoRes) { - /* for an upload segment response the toggle bit was overwritten */ - if ((command != SDOSERVICE_UPLOADSEGMENTREQ) && (command != SDOSERVICE_DOWNLOADSEGMENTREQ)) - { - pSdoRes->SdoHeader.Sdo[SDOHEADER_COMMANDOFFSET] = 0; - } - if ( abort == 0 ) - { - /* SDO-Download or SDO-Upload was successful, generate the SDO- and CoE-Header */ - pSdoRes->CoeHeader &= ~COEHEADER_COESERVICEMASK; - pSdoRes->CoeHeader |= ((UINT16)COESERVICE_SDORESPONSE) << COEHEADER_COESERVICESHIFT; - if ( command == SDOSERVICE_INITIATEUPLOADREQ ) - { - // HBu 06.02.06: Complete Access Bit in the SDO-Upload-Response too */ - if ( (objLength <= 4) && (objLength > 0) ) - { - /* Expedited Upload Response */ - pSdoRes->MbxHeader.Length = EXPEDITED_FRAME_SIZE; - pSdoRes->SdoHeader.Sdo[SDOHEADER_COMMANDOFFSET] |= SDOHEADER_SIZEINDICATOR | - SDOHEADER_TRANSFERTYPE | - completeAccess | - ((MAX_EXPEDITED_DATA - ((UINT8)objLength)) << SDOHEADERSHIFT_DATASETSIZE) | - SDOSERVICE_INITIATEUPLOADRES; - } - else - { - /* Normal or Segmented Upload Response */ - if (dataSize < objLength) - { - pSdoRes->MbxHeader.Length = UPLOAD_NORM_RES_SIZE+dataSize; - } - else - { - pSdoRes->MbxHeader.Length = UPLOAD_NORM_RES_SIZE+((UINT16)objLength); - } - ((TINITSDOUPLOADNORMRESMBX MBXMEM *) pSdoRes)->CompleteSize[0] = SWAPWORD((UINT16)objLength); - ((TINITSDOUPLOADNORMRESMBX MBXMEM *) pSdoRes)->CompleteSize[1] = SWAPWORD((UINT16)(objLength>>16)); - pSdoRes->SdoHeader.Sdo[SDOHEADER_COMMANDOFFSET] |= SDOHEADER_SIZEINDICATOR | - completeAccess | - SDOSERVICE_INITIATEUPLOADRES; + /* for an upload segment response the toggle bit was overwritten */ + if ((command != SDOSERVICE_UPLOADSEGMENTREQ) && (command != SDOSERVICE_DOWNLOADSEGMENTREQ)) + { +/*ET9300 Project Handler :(#if MBX_16BIT_ACCESS) lines 580 to 586 deleted*/ + pSdoRes->SdoHeader.Sdo[SDOHEADER_COMMANDOFFSET] = 0; + } + if (abort == 0) + { + /* SDO-Download or SDO-Upload was successful, generate the SDO- and CoE-Header */ + pSdoRes->CoeHeader &= ~COEHEADER_COESERVICEMASK; + pSdoRes->CoeHeader |= ((UINT16)COESERVICE_SDORESPONSE) << COEHEADER_COESERVICESHIFT; + if (command == SDOSERVICE_INITIATEUPLOADREQ) + { + // HBu 06.02.06: Complete Access Bit in the SDO-Upload-Response too */ + if ((objLength <= 4) && (objLength > 0)) + { + /* Expedited Upload Response */ + pSdoRes->MbxHeader.Length = EXPEDITED_FRAME_SIZE; +/*ET9300 Project Handler :(#if MBX_16BIT_ACCESS) lines 602 to 608 deleted*/ + pSdoRes->SdoHeader.Sdo[SDOHEADER_COMMANDOFFSET] |= SDOHEADER_SIZEINDICATOR | + SDOHEADER_TRANSFERTYPE | + completeAccess | + ((MAX_EXPEDITED_DATA - ((UINT8)objLength)) << SDOHEADERSHIFT_DATASETSIZE) | + SDOSERVICE_INITIATEUPLOADRES; + } + else + { + /* Normal or Segmented Upload Response */ +/*ET9300 Project Handler :(#if SEGMENTED_SDO_SUPPORTED) lines 619 to 625 deleted*/ + { + pSdoRes->MbxHeader.Length = UPLOAD_NORM_RES_SIZE + ((UINT16)objLength); + } + ((TINITSDOUPLOADNORMRESMBX MBXMEM *) pSdoRes)->CompleteSize[0] = SWAPWORD((UINT16)objLength); + ((TINITSDOUPLOADNORMRESMBX MBXMEM *) pSdoRes)->CompleteSize[1] = SWAPWORD((UINT16)(objLength >> 16)); +/*ET9300 Project Handler :(#if MBX_16BIT_ACCESS) lines 631 to 635 deleted*/ + pSdoRes->SdoHeader.Sdo[SDOHEADER_COMMANDOFFSET] |= SDOHEADER_SIZEINDICATOR | + completeAccess | + SDOSERVICE_INITIATEUPLOADRES; - } - } - /* for a segmented response the command was wrong in the response */ - else if ( command == SDOSERVICE_DOWNLOADSEGMENTREQ ) - { - /* Download segmented response */ - pSdoRes->MbxHeader.Length = DOWNLOAD_NORM_RES_SIZE; - pSdoRes->SdoHeader.Sdo[SDOHEADER_COMMANDOFFSET] |= SDOSERVICE_DOWNLOADSEGMENTRES; - } - else if ( command != SDOSERVICE_UPLOADSEGMENTREQ ) - { - /* Download response */ - pSdoRes->MbxHeader.Length = DOWNLOAD_NORM_RES_SIZE; - pSdoRes->SdoHeader.Sdo[SDOHEADER_COMMANDOFFSET] |= SDOSERVICE_INITIATEDOWNLOADRES; - } - } - else - { - /* generate a SDO-Abort-Request */ - pSdoRes->MbxHeader.Length = ABORT_NORM_RES_SIZE; - pSdoRes->CoeHeader &= ~COEHEADER_COESERVICEMASK; - pSdoRes->CoeHeader |= ((UINT16)COESERVICE_SDOREQUEST) << COEHEADER_COESERVICESHIFT; - /* ECATCHANGE_START(V5.12) COE2*/ - pSdoRes->SdoHeader.Sdo[SDOHEADER_COMMANDOFFSET] |= SDOSERVICE_ABORTTRANSFER; - /* ECATCHANGE_END(V5.12) COE2*/ + } + } + /* for a segmented response the command was wrong in the response */ + else if (command == SDOSERVICE_DOWNLOADSEGMENTREQ) + { + /* Download segmented response */ + pSdoRes->MbxHeader.Length = DOWNLOAD_NORM_RES_SIZE; +/*ET9300 Project Handler :(#if MBX_16BIT_ACCESS) lines 648 to 650 deleted*/ + pSdoRes->SdoHeader.Sdo[SDOHEADER_COMMANDOFFSET] |= SDOSERVICE_DOWNLOADSEGMENTRES; + } + else if (command != SDOSERVICE_UPLOADSEGMENTREQ) + { + /* Download response */ + pSdoRes->MbxHeader.Length = DOWNLOAD_NORM_RES_SIZE; +/*ET9300 Project Handler :(#if MBX_16BIT_ACCESS) lines 658 to 660 deleted*/ + pSdoRes->SdoHeader.Sdo[SDOHEADER_COMMANDOFFSET] |= SDOSERVICE_INITIATEDOWNLOADRES; + } + } + else + { + /* generate a SDO-Abort-Request */ + pSdoRes->MbxHeader.Length = ABORT_NORM_RES_SIZE; + pSdoRes->CoeHeader &= ~COEHEADER_COESERVICEMASK; + pSdoRes->CoeHeader |= ((UINT16)COESERVICE_SDOREQUEST) << COEHEADER_COESERVICESHIFT; +/*ET9300 Project Handler :(#if MBX_16BIT_ACCESS) lines 671 to 673 deleted*/ + pSdoRes->SdoHeader.Sdo[SDOHEADER_COMMANDOFFSET] |= SDOSERVICE_ABORTTRANSFER; - ((TABORTSDOTRANSFERREQMBX MBXMEM *) pSdoRes)->AbortCode = SWAPDWORD(cAbortCode[abort]); - } +/*ET9300 Project Handler :(#if BIG_ENDIAN_16BIT) lines 677 to 680 deleted*/ + ((TABORTSDOTRANSFERREQMBX MBXMEM *) pSdoRes)->AbortCode = SWAPDWORD(cAbortCode[abort]); + } - // HBu 02.05.06: if the CoE-response could not be sent because the - // send mailbox is full it should be stored - if (MBX_MailboxSendReq((TMBX MBXMEM *) pSdoRes, COE_SERVICE) != 0) - { - /* we store the CoE mailbox service to send it later (in COE_ContinueInd) when the mailbox is read */ - pCoeSendStored = (TMBX MBXMEM *) pSdoRes; - } + // HBu 02.05.06: if the CoE-response could not be sent because the + // send mailbox is full it should be stored + if (MBX_MailboxSendReq((TMBX MBXMEM *) pSdoRes, COE_SERVICE) != 0) + { + /* we store the CoE mailbox service to send it later (in COE_ContinueInd) when the mailbox is read */ + pCoeSendStored = (TMBX MBXMEM *) pSdoRes; + } } ///////////////////////////////////////////////////////////////////////////////////////// @@ -578,491 +289,244 @@ void SdoRes(UINT8 abort, UINT8 command, UINT8 completeAccess, UINT16 dataSize, U \return Indicates if an error occurred while the operation ( good = 0 ). \brief This function is called when a SDO request service - is received from the master and calls depending from - the command the concerning function. + is received from the master and calls depending from + the command the concerning function. *//////////////////////////////////////////////////////////////////////////////////////// UINT8 SDOS_SdoInd(TINITSDOMBX MBXMEM *pSdoInd) { - UINT8 abort = 0; - UINT8 sdoHeader = (pSdoInd->SdoHeader.Sdo[SDOHEADER_COMMANDOFFSET] & SDOHEADER_COMMANDMASK); - /* the SDO-command is in bit 5-7 of the first SDO-Byte */ - UINT8 command = (sdoHeader & SDOHEADER_COMMAND); - /* mbxSize contains the size of the mailbox (CoE-Header (2 Bytes) + SDO-Header (8 Bytes) + SDO-Data (if the data length is greater than 4)) */ - UINT16 mbxSize = SWAPWORD(pSdoInd->MbxHeader.Length); - UINT16 index; - UINT8 subindex; - OBJCONST TOBJECT OBJMEM * pObjEntry; - /* this variable contains the information, if all entries of an object will be read (bCompleteAccess > 0) or a single entry */ - UINT8 bCompleteAccess = 0; - UINT32 objLength = 0; - UINT32 dataSize = 0; + UINT8 abort = 0; +/*ET9300 Project Handler :(#if MBX_16BIT_ACCESS) lines 708 to 710 deleted*/ + UINT8 sdoHeader = (pSdoInd->SdoHeader.Sdo[SDOHEADER_COMMANDOFFSET] & SDOHEADER_COMMANDMASK); + /* the SDO-command is in bit 5-7 of the first SDO-Byte */ + UINT8 command = (sdoHeader & SDOHEADER_COMMAND); + /* mbxSize contains the size of the mailbox (CoE-Header (2 Bytes) + SDO-Header (8 Bytes) + SDO-Data (if the data length is greater than 4)) */ + UINT16 mbxSize = SWAPWORD(pSdoInd->MbxHeader.Length); + UINT16 index; + UINT8 subindex; + OBJCONST TOBJECT OBJMEM * pObjEntry; + /* this variable contains the information, if all entries of an object will be read (bCompleteAccess > 0) or a single entry */ + UINT8 bCompleteAccess = 0; + UINT32 objLength = 0; + UINT32 dataSize = 0; - if ( bSdoInWork ) - { - /* the last SDO is still in work */ - return MBXERR_SERVICEINWORK; - } +/*ET9300 Project Handler :(#if SDO_RES_INTERFACE) lines 725 to 731 deleted*/ + +/* ECATCHANGE_START(V5.13) COE5*/ + if (sdoHeader & SDOHEADER_COMPLETEACCESS) + { + bCompleteAccess = 1; + } +/* ECATCHANGE_END(V5.13) COE5*/ + + switch (command) + { + case SDOSERVICE_INITIATEDOWNLOADREQ: + case SDOSERVICE_INITIATEUPLOADREQ: + /* the variable index contains the requested index of the SDO service */ +/*ET9300 Project Handler :(#if MBX_16BIT_ACCESS) lines 745 to 747 deleted*/ + index = ((UINT16)(pSdoInd->SdoHeader.Sdo[SDOHEADER_INDEXHIOFFSET] & SDOHEADER_INDEXHIMASK)); + index <<= 8; +/*ET9300 Project Handler :(#if MBX_16BIT_ACCESS) lines 753 to 757 deleted*/ + index += (pSdoInd->SdoHeader.Sdo[SDOHEADER_INDEXLOOFFSET]); + /* the variable subindex contains the requested subindex of the SDO service */ + subindex = pSdoInd->SdoHeader.Sdo[SDOHEADER_SUBINDEXOFFSET]; - switch (command) - { - case SDOSERVICE_INITIATEDOWNLOADREQ: - case SDOSERVICE_INITIATEUPLOADREQ: - /* the variable index contains the requested index of the SDO service */ -/*ECATCHANGE_START(V5.12) COE5*/ - index = ((UINT16)(pSdoInd->SdoHeader.Sdo[SDOHEADER_INDEXHIOFFSET] & SDOHEADER_INDEXHIMASK)); -/*ECATCHANGE_END(V5.12) COE5*/ -/* ECATCHANGE_START(V5.12) ECAT2*/ - index <<= 8; -/*ECATCHANGE_START(V5.12) COE5*/ - index += (pSdoInd->SdoHeader.Sdo[SDOHEADER_INDEXLOOFFSET]); - /* the variable subindex contains the requested subindex of the SDO service */ - subindex = pSdoInd->SdoHeader.Sdo[SDOHEADER_SUBINDEXOFFSET]; -/*ECATCHANGE_END(V5.12) COE5*/ - -/* ECATCHANGE_END(V5.12) ECAT2*/ +/*ET9300 Project Handler :(#if TEST_APPLICATION && EOE_SUPPORTED) lines 764 to 834 deleted*/ +/*ET9300 Project Handler :(#if TEST_APPLICATION) lines 837 to 855 deleted*/ + /* OBJ_GetObjectHandle checks if the requested index is defined in the object dictionary */ + pObjEntry = OBJ_GetObjectHandle(index); - /* OBJ_GetObjectHandle checks if the requested index is defined in the object dictionary */ - pObjEntry = OBJ_GetObjectHandle( index ); + if (pObjEntry) + { + /* transferType contains the information if the SDO Download Request or the SDO Upload Response + can be an expedited service (SDO data length <= 4, that means the data is stored in the + SDO-Header completely */ + UINT8 bTransferType = 0; + /* pData is the pointer to the received (SDO-Download) or sent (SDO-Upload) SDO data in the mailbox */ + UINT16 MBXMEM * pData = NULL; +/*ET9300 Project Handler :(#if SEGMENTED_SDO_SUPPORTED) lines 868 to 870 deleted*/ - if ( pObjEntry ) - { - /* transferType contains the information if the SDO Download Request or the SDO Upload Response - can be an expedited service (SDO data length <= 4, that means the data is stored in the - SDO-Header completely */ - UINT8 bTransferType = 0; - /* pData is the pointer to the received (SDO-Download) or sent (SDO-Upload) SDO data in the mailbox */ - UINT16 MBXMEM * pData = NULL; - UINT8 segTransfer = 0; + { + UINT8 maxSubindex = (pObjEntry->ObjDesc.ObjFlags & OBJFLAGS_MAXSUBINDEXMASK) >> OBJFLAGS_MAXSUBINDEXSHIFT; - { -/*ECATCHANGE_START(V5.12) COE6*/ - UINT8 maxSubindex = (pObjEntry->ObjDesc.ObjFlags & OBJFLAGS_MAXSUBINDEXMASK) >> OBJFLAGS_MAXSUBINDEXSHIFT; + if (subindex > maxSubindex) + { + abort = ABORTIDX_SUBINDEX_NOT_EXISTING; + } + else + { + dataSize = objLength = OBJ_GetObjectLength(index, subindex, pObjEntry, (UINT8)(sdoHeader & SDOHEADER_COMPLETEACCESS)); + } - if (subindex > maxSubindex) - { - abort = ABORTIDX_SUBINDEX_NOT_EXISTING; - } - else - { - dataSize = objLength = OBJ_GetObjectLength(index, subindex, pObjEntry, (UINT8)(sdoHeader & SDOHEADER_COMPLETEACCESS)); - } + if (abort == 0) + { + if (command == SDOSERVICE_INITIATEUPLOADREQ) + { + /* SDO Upload */ + if (mbxSize != EXPEDITED_FRAME_SIZE) + { + /* a SDO Upload request has always a fixed size (2 Byte CoE-Header plus 8 Byte SDO-Header) */ + return MBXERR_INVALIDSIZE; + } + /* distinguish between expedited and normal upload response within the length of the response data */ + if ((objLength <= MAX_EXPEDITED_DATA) && objLength != 0) + { + /* Expedited Upload */ + bTransferType = 1; + /* pData is the pointer where the object data has to be copied for the response */ + pData = (UINT16 MBXMEM *) ((TINITSDOUPLOADEXPRESMBX MBXMEM *) pSdoInd)->Data; + /* initialize the 4 data bytes of the SDO upload response because the requested object data + could be less than 4 */ + pData[0] = 0; + pData[1] = 0; + } + else + { +/*ET9300 Project Handler :(#if SEGMENTED_SDO_SUPPORTED) lines 908 to 930 deleted*/ +/* ECATCHANGE_START(V5.13) COE5*/ + dataSize = u16SendMbxSize - MBX_HEADER_SIZE - UPLOAD_NORM_RES_SIZE; + if (dataSize < objLength) + { + /* Segmented Upload */ + if (bCompleteAccess) + { + abort = ABORTIDX_COMPLETE_ACCESS_NOT_SUPPORTED; + } + else + { + abort = ABORTIDX_PARAM_LENGTH_ERROR; + } + } +/* ECATCHANGE_END(V5.13) COE5*/ + else + { + /* Normal Upload */ - if( abort == 0) -/*ECATCHANGE_END(V5.12) COE6*/ - { - if (command == SDOSERVICE_INITIATEUPLOADREQ) - { - /* SDO Upload */ - if (mbxSize != EXPEDITED_FRAME_SIZE) - { - /* a SDO Upload request has always a fixed size (2 Byte CoE-Header plus 8 Byte SDO-Header) */ - return MBXERR_INVALIDSIZE; - } - /* distinguish between expedited and normal upload response within the length of the response data */ - if ((objLength <= MAX_EXPEDITED_DATA) && objLength != 0) - { - /* Expedited Upload */ - bTransferType = 1; - /* pData is the pointer where the object data has to be copied for the response */ - /* ECATCHANGE_START(V5.12)*/ - pData = (UINT16 MBXMEM *) ((TINITSDOUPLOADEXPRESMBX MBXMEM *) pSdoInd)->Data; - /* ECATCHANGE_END(V5.12)*/ - /* initialize the 4 data bytes of the SDO upload response because the requested object data - could be less than 4 */ - pData[0] = 0; - pData[1] = 0; - } - else - { - /* HBu 06.02.06: the variable dataSize has to be set to the available size in one mailbox */ - dataSize = u16SendMbxSize - MBX_HEADER_SIZE - UPLOAD_NORM_RES_SIZE; - if (dataSize < objLength) - { - /* Segmented Upload */ - segTransfer = 1; - } - else - { - /* Normal Upload */ - /* ECATCHANGE_START(V5.12)*/ - pData = (UINT16 MBXMEM *) ((TINITSDOUPLOADNORMRESMBX MBXMEM *) pSdoInd)->Data; - /* ECATCHANGE_END(V5.12)*/ - } - } - } - else - { - /* SDO-Download: store if the request is a expedited or normal request */ - bTransferType = sdoHeader & SDOHEADER_TRANSFERTYPE; - } - } - } + /* pData is the pointer where the object data has to be copied for the response */ + pData = (UINT16 MBXMEM *) ((TINITSDOUPLOADNORMRESMBX MBXMEM *) pSdoInd)->Data; + } + } + } + else + { + /* SDO-Download: store if the request is a expedited or normal request */ + bTransferType = sdoHeader & SDOHEADER_TRANSFERTYPE; + } + } + } -/*ECATCHANGE_START(V5.12) COE6*/ - if ((abort == 0 ) && (command == SDOSERVICE_INITIATEDOWNLOADREQ )) -/*ECATCHANGE_END(V5.12) COE6*/ - { - /* SDO Download */ - if ( bTransferType ) - { - /* Expedited Download */ - if ( mbxSize != EXPEDITED_FRAME_SIZE ) - { - /* an Expedited SDO Download request has always a fixed size (2 Byte CoE-Header plus 8 Byte SDO-Header) */ - return MBXERR_INVALIDSIZE; - } - /* dataSize gets the real size of the downloaded object data (1,2,3 or 4) */ - dataSize = MAX_EXPEDITED_DATA - ((sdoHeader & SDOHEADER_DATASETSIZE) >> SDOHEADERSHIFT_DATASETSIZE); - /* pData is the pointer to the downloaded object data */ - pData = (UINT16 MBXMEM *) &pSdoInd[1]; - } - else - { - /* Normal Download */ - /* downloadSize gets the real size of the downloaded data */ - /* '&' operator was too much */ + if ((abort == 0) && (command == SDOSERVICE_INITIATEDOWNLOADREQ)) + { + /* SDO Download */ + if (bTransferType) + { + /* Expedited Download */ + if (mbxSize != EXPEDITED_FRAME_SIZE) + { + /* an Expedited SDO Download request has always a fixed size (2 Byte CoE-Header plus 8 Byte SDO-Header) */ + return MBXERR_INVALIDSIZE; + } + /* dataSize gets the real size of the downloaded object data (1,2,3 or 4) */ + dataSize = MAX_EXPEDITED_DATA - ((sdoHeader & SDOHEADER_DATASETSIZE) >> SDOHEADERSHIFT_DATASETSIZE); + /* pData is the pointer to the downloaded object data */ + pData = (UINT16 MBXMEM *) &pSdoInd[1]; + } + else + { + /* Normal Download */ + /* downloadSize gets the real size of the downloaded data */ + /* '&' operator was too much */ - UINT32 downloadSize = ((UINT32)(SWAPWORD(((TINITSDODOWNLOADNORMREQMBX MBXMEM *) pSdoInd)->CompleteSize[1]))<<16) + (SWAPWORD(((TINITSDODOWNLOADNORMREQMBX MBXMEM *) pSdoInd)->CompleteSize[0])); + UINT32 downloadSize = ((UINT32)(SWAPWORD(((TINITSDODOWNLOADNORMREQMBX MBXMEM *) pSdoInd)->CompleteSize[1])) << 16) + (SWAPWORD(((TINITSDODOWNLOADNORMREQMBX MBXMEM *) pSdoInd)->CompleteSize[0])); - /* HBu 29.03.06: if it is a segmented download the mbxSize has to be the complete mailbox size */ - if ( (MBX_HEADER_SIZE+EXPEDITED_FRAME_SIZE+downloadSize) > u16ReceiveMbxSize ) - { - if ( mbxSize != (u16ReceiveMbxSize-MBX_HEADER_SIZE) ) - { - return MBXERR_INVALIDSIZE; - } - } - else - { - if ( mbxSize != (EXPEDITED_FRAME_SIZE+downloadSize) ) - { - /* the mbxSize and the downloadSize are not consistent (mbxSize = downloadSize + 2 byte CoE-Header + 8 byte SDO Header */ - return MBXERR_INVALIDSIZE; - } - } + /* HBu 29.03.06: if it is a segmented download the mbxSize has to be the complete mailbox size */ + if ((MBX_HEADER_SIZE + EXPEDITED_FRAME_SIZE + downloadSize) > u16ReceiveMbxSize) + { + if (mbxSize != (u16ReceiveMbxSize - MBX_HEADER_SIZE)) + { + return MBXERR_INVALIDSIZE; + } + } + else + { + if (mbxSize != (EXPEDITED_FRAME_SIZE + downloadSize)) + { + /* the mbxSize and the downloadSize are not consistent (mbxSize = downloadSize + 2 byte CoE-Header + 8 byte SDO Header */ + return MBXERR_INVALIDSIZE; + } + } - /* pData is the pointer to the downloaded object data */ - pData = (UINT16 MBXMEM *) ((TINITSDODOWNLOADNORMREQMBX MBXMEM *) pSdoInd)->Data; - /* the received dataSize will be checked in the object specific functions called from - OBJ_Write (in objdef.c) */ - dataSize = downloadSize; - if ( dataSize > (UINT32)(mbxSize - DOWNLOAD_NORM_REQ_SIZE) ) - { - /* Segmented Download */ - segTransfer = 1; - } - } - } + /* pData is the pointer to the downloaded object data */ + pData = (UINT16 MBXMEM *) ((TINITSDODOWNLOADNORMREQMBX MBXMEM *) pSdoInd)->Data; + /* the received dataSize will be checked in the object specific functions called from + OBJ_Write (in objdef.c) */ + dataSize = downloadSize; + if (dataSize > (UINT32)(mbxSize - DOWNLOAD_NORM_REQ_SIZE)) + { +/*ET9300 Project Handler :(#if SEGMENTED_SDO_SUPPORTED) lines 1012 to 1015 deleted*/ + abort = ABORTIDX_PARAM_LENGTH_ERROR; + } + } + } -/*ECATCHANGE_START(V5.12) COE6*/ - if ((abort == 0) && (sdoHeader & SDOHEADER_COMPLETEACCESS )) -/*ECATCHANGE_END(V5.12) COE6*/ - { - bCompleteAccess = 1; - // HBu 02.05.06: Complete Access is only supported with subindex 0 and 1 - if (subindex > 1) - { - abort = ABORTIDX_UNSUPPORTED_ACCESS; - } - } +/* ECATCHANGE_START(V5.13) COE5*/ + if ((abort == 0) && (bCompleteAccess == 1)) +/* ECATCHANGE_END(V5.13) COE5*/ +/*ET9300 Project Handler :(#if COMPLETE_ACCESS_SUPPORTED) lines 1025 to 1033 deleted*/ + { + abort = ABORTIDX_UNSUPPORTED_ACCESS; + } - if ( abort == 0 ) - { - if ( segTransfer ) - { - bSdoSegFollows = TRUE; - bSdoSegLastToggle = 1; - bSdoSegAccess = bCompleteAccess; - nSdoSegIndex = index; - nSdoSegSubindex = subindex; - pSdoSegObjEntry = pObjEntry; - if ( command == SDOSERVICE_INITIATEUPLOADREQ ) - { - nSdoSegCompleteSize = objLength; - } - else - { - nSdoSegCompleteSize = dataSize; - } + if (abort == 0) + { +/*ET9300 Project Handler :(#if SEGMENTED_SDO_SUPPORTED) lines 1041 to 1126 deleted*/ + { +/*ET9300 Project Handler :(#if SEGMENTED_SDO_SUPPORTED) lines 1128 to 1139 deleted*/ + if (command == SDOSERVICE_INITIATEUPLOADREQ) + { + /* Expedited or Normal Upload */ + abort = OBJ_Read(index, subindex, objLength, pObjEntry, pData, bCompleteAccess); +/*ET9300 Project Handler :(#if SDO_RES_INTERFACE) lines 1144 to 1165 deleted*/ + } + else + { + /* Expedited or Normal Download */ + abort = OBJ_Write(index, subindex, dataSize, pObjEntry, pData, bCompleteAccess); +/*ET9300 Project Handler :(#if SDO_RES_INTERFACE) lines 1171 to 1192 deleted*/ + } + } /* else if ( objLength == 0 ) */ + } /* if ( abort == 0 ) */ - if (pSdoSegData != NULL) - { - FREEMEM( (UINT16 VARMEM *) pSdoSegData); - pSdoSegData = NULL; - } - pSdoSegData = (UINT16 VARMEM *) ALLOCMEM( ROUNDUPBYTE2WORD(nSdoSegCompleteSize) ); + } //if(pObjEntry) (Object handle found) + else + { + abort = ABORTIDX_OBJECT_NOT_EXISTING; + } + break; - if ( pSdoSegData == NULL ) - { - if(bCompleteAccess) - { - abort = ABORTIDX_UNSUPPORTED_ACCESS; - } - else - { - abort = ABORTIDX_OUT_OF_MEMORY; - } - } - else - { - if ( command == SDOSERVICE_INITIATEUPLOADREQ ) - { - /* Segmented Upload */ - abort = OBJ_Read( index, subindex, objLength, pObjEntry, (UINT16 MBXMEM *) pSdoSegData, bCompleteAccess ); - if ( abort == 0 ) - { -/* ECATCHANGE_START(V5.12)*/ - MBXMEMCPY((UINT16 *) ((TINITSDOUPLOADNORMRESMBX MBXMEM *) pSdoInd)->Data, pSdoSegData, dataSize ); -/* ECATCHANGE_END(V5.12)*/ - nSdoSegService = SDOSERVICE_UPLOADSEGMENTREQ; - } - else if ( abort == ABORTIDX_WORKING ) - { - /* the application generates the SDO-Response later on by calling SDOS_SdoRes (only possible if object access function pointer is defined) */ - u8PendingSdo = SDO_PENDING_SEG_READ; - bStoreCompleteAccess = bCompleteAccess; - u8StoreSubindex = subindex; - u16StoreIndex = index; - u32StoreDataSize = objLength; - pStoreData = pSdoSegData; - pSdoPendFunc = pObjEntry->Read; +/*ET9300 Project Handler :(#if SEGMENTED_SDO_SUPPORTED) lines 1204 to 1224 deleted*/ + default: + abort = ABORTIDX_COMMAND_SPECIFIER_UNKNOWN; + break; + } - bSdoInWork = TRUE; - /* we have to store the buffer and the response header */ - pSdoResStored = pSdoInd; +/*ET9300 Project Handler :(#if SDO_RES_INTERFACE) lines 1230 to 1232 deleted*/ + { + /* type cast was added because of warning */ + SdoRes(abort, command, (UINT8)(sdoHeader & SDOHEADER_COMPLETEACCESS), (UINT16)dataSize, objLength, pSdoInd); + } - /*update command field*/ - pSdoResStored->SdoHeader.Sdo[SDOHEADER_COMMANDOFFSET] &= ~SDOHEADER_COMMANDMASK; - pSdoResStored->SdoHeader.Sdo[SDOHEADER_COMMANDOFFSET] |= (sdoHeader & (SDOHEADER_COMPLETEACCESS | SDOHEADER_COMMAND)); - nSdoSegService = SDOSERVICE_UPLOADSEGMENTREQ; - return 0; - } - } - else - { - /* Segmented Download */ -/* ECATCHANGE_START(V5.12)*/ - MBXMEMCPY( pSdoSegData, (UINT16 *)((TINITSDODOWNLOADNORMREQMBX MBXMEM *) pSdoInd)->Data, mbxSize-DOWNLOAD_NORM_REQ_SIZE ); -/* ECATCHANGE_END(V5.12)*/ - nSdoSegService = SDOSERVICE_DOWNLOADSEGMENTREQ; - dataSize = (mbxSize-DOWNLOAD_NORM_REQ_SIZE); - } - - nSdoSegBytesToHandle = dataSize; - } - } - else - { - if ( objLength == 0 ) - { - /* the objLength is not known, therefore the variables for a possible segmented transfer - should be initialized */ - nSdoSegIndex = index; - nSdoSegSubindex = subindex; - pSdoSegObjEntry = pObjEntry; - } - if ( command == SDOSERVICE_INITIATEUPLOADREQ ) - { - /* Expedited or Normal Upload */ - abort = OBJ_Read( index, subindex, objLength, pObjEntry, pData, bCompleteAccess ); - if ( abort == ABORTIDX_WORKING ) - { - /* the application generates the SDO-Response later on by calling SDOS_SdoRes (only possible if object access function pointer is defined) */ - u8PendingSdo = SDO_PENDING_READ; - bStoreCompleteAccess = bCompleteAccess; - u8StoreSubindex = subindex; - u16StoreIndex = index; - u32StoreDataSize = objLength; - pStoreData = pData; - pSdoPendFunc = pObjEntry->Read; - - bSdoInWork = TRUE; - /* we have to store the buffer and the response header */ - pSdoResStored = pSdoInd; - - /*update command field*/ - pSdoResStored->SdoHeader.Sdo[SDOHEADER_COMMANDOFFSET] &= ~SDOHEADER_COMMANDMASK; - pSdoResStored->SdoHeader.Sdo[SDOHEADER_COMMANDOFFSET] |= (sdoHeader & (SDOHEADER_COMPLETEACCESS | SDOHEADER_COMMAND)); - return 0; - } - } - else - { - /* Expedited or Normal Download */ - abort = OBJ_Write( index, subindex, dataSize, pObjEntry, pData, bCompleteAccess ); - if ( abort == ABORTIDX_WORKING ) - { - /* the application generates the SDO-Response later on by calling SDOS_SdoRes (only possible if object access function pointer is defined) */ - u8PendingSdo = SDO_PENDING_WRITE; - bStoreCompleteAccess = bCompleteAccess; - u8StoreSubindex = subindex; - u16StoreIndex = index; - u32StoreDataSize = dataSize; - pStoreData = pData; - pSdoPendFunc = pObjEntry->Write; - - bSdoInWork = TRUE; - /* we have to store the buffer and the response header */ - pSdoResStored = pSdoInd; - - /*update command field*/ - pSdoResStored->SdoHeader.Sdo[SDOHEADER_COMMANDOFFSET] &= ~SDOHEADER_COMMANDMASK; - pSdoResStored->SdoHeader.Sdo[SDOHEADER_COMMANDOFFSET] |= (sdoHeader & (SDOHEADER_COMPLETEACCESS | SDOHEADER_COMMAND)); - return 0; - } - } - } /* else if ( objLength == 0 ) */ - } /* if ( abort == 0 ) */ - - } //if(pObjEntry) (Object handle found) - else - { - abort = ABORTIDX_OBJECT_NOT_EXISTING; - } - break; - - case SDOSERVICE_DOWNLOADSEGMENTREQ: - case SDOSERVICE_UPLOADSEGMENTREQ: - if ( command == nSdoSegService ) - { - if ( command == SDOSERVICE_DOWNLOADSEGMENTREQ ) - { - abort = SdoDownloadSegmentInd( (TDOWNLOADSDOSEGREQMBX MBXMEM *) pSdoInd ); - } - else - { - abort = SdoUploadSegmentInd( (TUPLOADSDOSEGREQMBX MBXMEM *) pSdoInd ); - } - } - else - { - abort = ABORTIDX_COMMAND_SPECIFIER_UNKNOWN; - } - break; - - default: - abort = ABORTIDX_COMMAND_SPECIFIER_UNKNOWN; - break; - } - - if(abort != ABORTIDX_WORKING) - { - /* type cast was added because of warning */ - SdoRes(abort, command, (UINT8) (sdoHeader & SDOHEADER_COMPLETEACCESS), (UINT16) dataSize, objLength, pSdoInd); - } - - return 0; + return 0; } -///////////////////////////////////////////////////////////////////////////////////////// -/** - \param abort Result of the SDO access - \param objLength Complete size of the object - \param pData Pointer to the mailbox buffer +/*ET9300 Project Handler :(#if SDO_RES_INTERFACE) lines 1241 to 1308 deleted*/ - \brief This function is called when a SDO response shall be sent -*//////////////////////////////////////////////////////////////////////////////////////// - -void SDOS_SdoRes(UINT8 abort, UINT32 objLength, UINT16 MBXMEM *pData) -{ - UINT16 dataSize = 0; - - if (bSdoInWork) - { - /* SDO-Response is expected */ - UINT8 command = pSdoResStored->SdoHeader.Sdo[SDOHEADER_COMMANDOFFSET] & SDOHEADER_COMMAND; - UINT8 completeAccess = pSdoResStored->SdoHeader.Sdo[SDOHEADER_COMMANDOFFSET] & SDOHEADER_COMPLETEACCESS; - - if ( command == SDOSERVICE_INITIATEUPLOADREQ ) - { - /* dataSize contains the available size in one mailbox */ - dataSize = u16SendMbxSize - MBX_HEADER_SIZE - UPLOAD_NORM_RES_SIZE; - if ( dataSize < objLength ) - { - /* Segmented Upload, the variables for the segmented transfer should be initialized */ - bSdoSegFollows = TRUE; - bSdoSegLastToggle = 1; - bSdoSegAccess = completeAccess; - nSdoSegCompleteSize = objLength; - nSdoSegService = SDOSERVICE_UPLOADSEGMENTREQ; - pSdoSegData = (UINT16 VARMEM *) pData; - /* the first segment shall be copied */ -/* ECATCHANGE_START(V5.12)*/ - MBXMEMCPY((UINT16 *)((TINITSDOUPLOADNORMRESMBX MBXMEM *) pSdoResStored)->Data, pData, dataSize); -/* ECATCHANGE_END(V5.12)*/ - nSdoSegBytesToHandle = dataSize; - } - else - if ( (objLength <= 4) && (objLength > 0) ) - { - /* Expedited response */ - if ( pData != ((TINITSDOUPLOADEXPRESMBX MBXMEM *) pSdoResStored)->Data ) - { - /* the data is not in the response buffer yet, it shall be copied */ -/* ECATCHANGE_START(V5.12)*/ - MBXMEMCPY((UINT16 *)((TINITSDOUPLOADEXPRESMBX MBXMEM *) pSdoResStored)->Data, pData, objLength); -/* ECATCHANGE_END(V5.12)*/ - } - } - else - { - /* Normal response */ - if ( pData != ((TINITSDOUPLOADNORMRESMBX MBXMEM *) pSdoResStored)->Data ) - { - /* the data is not in the response buffer yet, it shall be copied */ -/* ECATCHANGE_START(V5.12)*/ - MBXMEMCPY((UINT16 *)((TINITSDOUPLOADNORMRESMBX MBXMEM *) pSdoResStored)->Data, pData, objLength); -/* ECATCHANGE_END(V5.12)*/ - } - } - } - - /* SDO access is finished, send the response */ - bSdoInWork = FALSE; - SdoRes(abort, command, completeAccess, dataSize, objLength, pSdoResStored); - } -} - -/* ECATCHANGE_START(V5.12) MBX3*/ -///////////////////////////////////////////////////////////////////////////////////////// -/** -\brief Clear the variables handling a pending SDO Response - This function shall be called before the other mailbox data pointer are set to NULL -*//////////////////////////////////////////////////////////////////////////////////////// - -void SODS_ClearPendingResponse() -{ - if ((bSdoInWork == TRUE) && (pSdoResStored != NULL) && (((TMBX MBXMEM *)pSdoResStored) != psRepeatMbx) && (((TMBX MBXMEM *)pSdoResStored) != psStoreMbx)) - { - APPL_FreeMailboxBuffer(pSdoResStored); - pSdoResStored = NULL; - } - - u8PendingSdo = 0; - bStoreCompleteAccess = FALSE; - u16StoreIndex = 0; - u8StoreSubindex = 0; - u32StoreDataSize = 0; - pStoreData = NULL; - pSdoPendFunc = NULL; - bSdoInWork = FALSE; - - if (pSdoSegData != NULL) - { - FREEMEM((UINT16 VARMEM *) pSdoSegData); - pSdoSegData = NULL; - } - - nSdoSegBytesToHandle = 0; - nSdoSegService = 0; - -} -/* ECATCHANGE_END(V5.12) MBX3*/ +/*ET9300 Project Handler :(#if SDO_RES_INTERFACE || SEGMENTED_SDO_SUPPORTED) lines 1310 to 1350 deleted*/ ///////////////////////////////////////////////////////////////////////////////////////// /** @@ -1071,303 +535,274 @@ void SODS_ClearPendingResponse() \return Indicates if an error occurred while the operation ( good = 0 ). \brief This function is called when a SDO-Info request service - is received from the master and calls depending from - the opcode the concerning function. + is received from the master and calls depending from + the opcode the concerning function. *//////////////////////////////////////////////////////////////////////////////////////// -UINT8 SDOS_SdoInfoInd( TSDOINFORMATION MBXMEM *pSdoInfoInd ) +UINT8 SDOS_SdoInfoInd(TSDOINFORMATION MBXMEM *pSdoInfoInd) { - UINT8 abort = 0; - /* the variable opCode contains the requested SDO Information type */ - UINT8 opCode = (UINT8) ((pSdoInfoInd->SdoHeader.InfoHead & INFOHEAD_OPCODE_MASK) >> INFOHEAD_OPCODE_SHIFT); - OBJCONST TOBJECT OBJMEM * pObjEntry; - UINT16 index; - UINT8 flags = COE_SERVICE; + UINT8 abort = 0; + /* the variable opCode contains the requested SDO Information type */ + UINT8 opCode = (UINT8)((pSdoInfoInd->SdoHeader.InfoHead & INFOHEAD_OPCODE_MASK) >> INFOHEAD_OPCODE_SHIFT); + OBJCONST TOBJECT OBJMEM * pObjEntry; + UINT16 index; + UINT8 flags = COE_SERVICE; - /* it has to be checked if the mailbox protocol is correct, the sent mailbox data length has to - great enough for the service header of the requested SDO Information type */ - if ( opCode == SDOINFOSERVICE_ENTRYDESCRIPTION_Q ) - { - if ( pSdoInfoInd->MbxHeader.Length < SIZEOF_SDOINFOENTRYREQSTRUCT ) - { - return MBXERR_SIZETOOSHORT; - } - } - else - { - if ( pSdoInfoInd->MbxHeader.Length < SIZEOF_SDOINFOLISTSTRUCT ) - { - return MBXERR_SIZETOOSHORT; - } - } + /* it has to be checked if the mailbox protocol is correct, the sent mailbox data length has to + great enough for the service header of the requested SDO Information type */ + if (opCode == SDOINFOSERVICE_ENTRYDESCRIPTION_Q) + { + if (pSdoInfoInd->MbxHeader.Length < SIZEOF_SDOINFOENTRYREQSTRUCT) + { + return MBXERR_SIZETOOSHORT; + } + } + else + { + if (pSdoInfoInd->MbxHeader.Length < SIZEOF_SDOINFOLISTSTRUCT) + { + return MBXERR_SIZETOOSHORT; + } + } - switch (opCode) - { - case SDOINFOSERVICE_OBJDICTIONARYLIST_Q: - /* an object list is requested, check if the list type is supported */ - if (SWAPWORD(pSdoInfoInd->SdoHeader.Data.List.ListType) <= INFO_LIST_TYPE_MAX) - { - UINT16 size = 0; - /* the variable listType contains the requested listType */ - UINT8 listType = (UINT8)SWAPWORD(pSdoInfoInd->SdoHeader.Data.List.ListType); + switch (opCode) + { + case SDOINFOSERVICE_OBJDICTIONARYLIST_Q: + /* an object list is requested, check if the list type is supported */ + if (SWAPWORD(pSdoInfoInd->SdoHeader.Data.List.ListType) <= INFO_LIST_TYPE_MAX) + { + UINT16 size = 0; + /* the variable listType contains the requested listType */ + UINT8 listType = (UINT8)SWAPWORD(pSdoInfoInd->SdoHeader.Data.List.ListType); - /* the SDO Information Header has to be stored because this function will be - called again if the response could not be sent with one mailbox service, the - variable nSdoInfoFragmentsLeft is 0 zero for the first call and unequal 0 - for the following calls */ - MBXMEMCPY(aSdoInfoHeader, pSdoInfoInd, SDO_INFO_HEADER_BYTE_SIZE); - if (listType-- == 0) - { - /* List-Type 0: length of the lists */ - UINT8 i; + /* the SDO Information Header has to be stored because this function will be + called again if the response could not be sent with one mailbox service, the + variable nSdoInfoFragmentsLeft is 0 zero for the first call and unequal 0 + for the following calls */ + MBXMEMCPY(aSdoInfoHeader, pSdoInfoInd, SDO_INFO_HEADER_BYTE_SIZE); + if (listType-- == 0) + { + /* List-Type 0: length of the lists */ + UINT8 i; - /* the needed mailbox size for List-Type 0 response is just 24 bytes, the mailbox has always - to be at least 24 bytes to support the SDO Information service */ - nSdoInfoFragmentsLeft = 0; - for (i = 0; i < INFO_LIST_TYPE_MAX; i++) - { - UINT16 n = OBJ_GetNoOfObjects(i); + /* the needed mailbox size for List-Type 0 response is just 24 bytes, the mailbox has always + to be at least 24 bytes to support the SDO Information service */ +/*ET9300 Project Handler :(#if SEGMENTED_SDO_SUPPORTED) lines 1411 to 1413 deleted*/ + for (i = 0; i < INFO_LIST_TYPE_MAX; i++) + { + UINT16 n = OBJ_GetNoOfObjects(i); - /* copy the number of objects of the list type in the SDO Information response */ - ((UINT16 MBXMEM *) &pSdoInfoInd->CoeHeader)[(SIZEOF_SDOINFOLISTSTRUCT >> 1) + i] = SWAPWORD(n); - } + /* copy the number of objects of the list type in the SDO Information response */ + ((UINT16 MBXMEM *) &pSdoInfoInd->CoeHeader)[(SIZEOF_SDOINFOLISTSTRUCT >> 1) + i] = SWAPWORD(n); + } - /* size of the mailbox service response */ - size = (INFO_LIST_TYPE_MAX << 1) + SIZEOF_SDOINFOLISTSTRUCT; - } - else - { - /* object list with indexes is requested */ - UINT16 MBXMEM * pData; - UINT16 n = 0; + /* size of the mailbox service response */ + size = (INFO_LIST_TYPE_MAX << 1) + SIZEOF_SDOINFOLISTSTRUCT; + } + else + { + /* object list with indexes is requested */ + UINT16 MBXMEM * pData; + UINT16 n = 0; - if (nSdoInfoFragmentsLeft) - { - /* the next fragment of the SDO Information response shall be sent */ - /* initialize size with the maximum size fits into one mailbox service */ - { - size = u16SendMbxSize - SIZEOF_SDOINFO - MBX_HEADER_SIZE; - } - /* initialize pData with the pointer where the fragment has to be copied */ - pData = &((UINT16 MBXMEM *) &pSdoInfoInd->CoeHeader)[SIZEOF_SDOINFO >> 1]; - /* initialize index with the next index to be sent */ - index = nSdoInfoIndex; - /* decrement the number of fragments to be sent */ - nSdoInfoFragmentsLeft--; - } - else - { - /* the first fragment of the SDO Information response has to be sent */ - /* get the number of objects of the requested object list */ - n = OBJ_GetNoOfObjects(listType); - /* we start with index 0x1000 */ - index = 0x1000; - /* initialize size with the maximum size fits into one mailbox service */ - { - size = u16SendMbxSize - SIZEOF_SDOINFOLISTSTRUCT - MBX_HEADER_SIZE; - } - /* initialize pData with the pointer where the fragment has to be copied */ - pData = &((UINT16 MBXMEM *) &pSdoInfoInd->CoeHeader)[SIZEOF_SDOINFOLISTSTRUCT >> 1]; - /*Check if List need to be send in fragments*/ - if ((n << 1) > size) - { - /*number of Bytes to transmit don't fit into one mailbox datagram*/ +/*ET9300 Project Handler :(#if SEGMENTED_SDO_SUPPORTED) lines 1431 to 1455 deleted*/ + { + /* the first fragment of the SDO Information response has to be sent */ + /* get the number of objects of the requested object list */ + n = OBJ_GetNoOfObjects(listType); + /* we start with index 0x1000 */ + index = 0x1000; + /* initialize size with the maximum size fits into one mailbox service */ +/*ET9300 Project Handler :(#if TEST_APPLICATION) lines 1463 to 1470 deleted*/ + { + size = u16SendMbxSize - SIZEOF_SDOINFOLISTSTRUCT - MBX_HEADER_SIZE; + } + /* initialize pData with the pointer where the fragment has to be copied */ + pData = &((UINT16 MBXMEM *) &pSdoInfoInd->CoeHeader)[SIZEOF_SDOINFOLISTSTRUCT >> 1]; + /*Check if List need to be send in fragments*/ + if ((n << 1) > size) +/*ET9300 Project Handler :(#if SEGMENTED_SDO_SUPPORTED) lines 1478 to 1493 deleted*/ + { + abort = ABORTIDX_UNSUPPORTED_ACCESS; + } + } - /*calculate number of fragments which need to be send - total number of bytes - bytes which will be transmitted with the current response plus the fragment size - 1 (to round up) divided by the size of the following fragments - */ - UINT16 Fragsize = size + 2; - - nSdoInfoFragmentsLeft = (((n << 1) - size + (Fragsize - 1)) / Fragsize); - } - else - { - nSdoInfoFragmentsLeft = 0; - } - } + /* get the next part of the requested object list */ + size = OBJ_GetObjectList(listType, &index, size, pData, &abort); - /* get the next part of the requested object list */ - size = OBJ_GetObjectList(listType, &index, size, pData, &abort); + /* store index for next fragment */ + nSdoInfoIndex = index; + /* size contains before the instruction the size still available in the mailbox buffer + and shall contain the size of the mailbox response data after the next instruction */ +/*ET9300 Project Handler :(#if TEST_APPLICATION) lines 1507 to 1514 deleted*/ + { + size = u16SendMbxSize - size - MBX_HEADER_SIZE; + } + } - /* store index for next fragment */ - nSdoInfoIndex = index; - /* size contains before the instruction the size still available in the mailbox buffer - and shall contain the size of the mailbox response data after the next instruction */ - { - size = u16SendMbxSize - size - MBX_HEADER_SIZE; - } - } + /* size of the mailbox response data */ + pSdoInfoInd->MbxHeader.Length = size; - /* size of the mailbox response data */ - pSdoInfoInd->MbxHeader.Length = size; + if (abort == 0) + { + pSdoInfoInd->SdoHeader.InfoHead &= ~INFOHEAD_OPCODE_MASK; + pSdoInfoInd->SdoHeader.InfoHead |= (UINT16)(SDOINFOSERVICE_OBJDICTIONARYLIST_S << INFOHEAD_OPCODE_SHIFT); + pSdoInfoInd->SdoHeader.FragmentsLeft = 0; +/*ET9300 Project Handler :(#if !SEGMENTED_SDO_SUPPORTED #else) lines 1529 to 1545 deleted*/ + } + } + break; - if (abort == 0) - { - pSdoInfoInd->SdoHeader.InfoHead &= ~INFOHEAD_OPCODE_MASK; - pSdoInfoInd->SdoHeader.InfoHead |= (UINT16)(SDOINFOSERVICE_OBJDICTIONARYLIST_S << INFOHEAD_OPCODE_SHIFT); - /* number of fragments still has to be sent */ - pSdoInfoInd->SdoHeader.FragmentsLeft = SWAPWORD(nSdoInfoFragmentsLeft); + case SDOINFOSERVICE_OBJDESCRIPTION_Q: + case SDOINFOSERVICE_ENTRYDESCRIPTION_Q: + /* get the requested index */ + index = SWAPWORD(pSdoInfoInd->SdoHeader.Data.Obj.Index); - if (nSdoInfoFragmentsLeft) - { - /* there still are fragments to be sent, - the InComplete flag in the SDO Information response has to be sent */ - pSdoInfoInd->SdoHeader.InfoHead &= ~INFOHEADER_INCOMPLETE_MASK; - pSdoInfoInd->SdoHeader.InfoHead |= (UINT16)(SDOINFOSERVICE_INCOMPLETE << INFOHEAD_OPCODE_SHIFT); - /* the FRAGMENTS_FOLLOW flag has to be set for the function MBX_MailboxSendReq to - indicate the mailbox handler that still fragments has to be sent so that this - function shall be called again from COE_ContinueInd when the actual mailbox buffer - was sent */ - flags = FRAGMENTS_FOLLOW | COE_SERVICE; - } - } - } - break; +/*ET9300 Project Handler :(#if TEST_APPLICATION && EOE_SUPPORTED) lines 1555 to 1623 deleted*/ - case SDOINFOSERVICE_OBJDESCRIPTION_Q: - case SDOINFOSERVICE_ENTRYDESCRIPTION_Q: - /* get the requested index */ - index = SWAPWORD(pSdoInfoInd->SdoHeader.Data.Obj.Index); +/*ET9300 Project Handler :(#if TEST_APPLICATION) lines 1625 to 1642 deleted*/ + + if (index < 0x1000) + { + /*SDO Info access is only allowed for objects >= 0x1000*/ + abort = ABORTIDX_UNSUPPORTED_ACCESS; + } + else + { + /* get the object handle of the requested index */ + pObjEntry = OBJ_GetObjectHandle(index); + + if (pObjEntry) + { + /* object exists */ + UINT16 size = 0; + + if (opCode == SDOINFOSERVICE_OBJDESCRIPTION_Q) + { + /* object description is requested */ +/*ET9300 Project Handler :(#if BIG_ENDIAN_FORMAT) lines 1662 to 1666 deleted*/ + OBJTOMBXMEMCPY(&pSdoInfoInd->SdoHeader.Data.Obj.Res, OBJ_GetObjDesc(pObjEntry), SDO_INFO_OBJ_DESC_SIZE); +/*ET9300 Project Handler :(#if TEST_APPLICATION) lines 1671 to 1683 deleted*/ + /* the mailbox should be big enough that the maximum object description + fits in the mailbox (the fragmentation is not done in the sample code), + so it will be checked only if the object description fits */ + size = OBJ_GetDesc(index, 0, pObjEntry, NULL) + SIZEOF_SDOINFOOBJSTRUCT; - if(index < 0x1000) - { - /*SDO Info access is only allowed for objects >= 0x1000*/ - abort = ABORTIDX_UNSUPPORTED_ACCESS; - } - else - { - /* get the object handle of the requested index */ - pObjEntry = OBJ_GetObjectHandle( index ); + if (size > (u16SendMbxSize - MBX_HEADER_SIZE)) + { + /* size of the object description does not fit in the mailbox, + the object description will be sent without the name */ + size = SIZEOF_SDOINFOOBJSTRUCT; + } + else + { + /* object description fits in the mailbox, get the name of the object */ + size = OBJ_GetDesc(index, 0, pObjEntry, ((UINT16 MBXMEM *) &(&pSdoInfoInd->SdoHeader.Data.Obj.Res)[1])) + SIZEOF_SDOINFOOBJSTRUCT; + } + } + else + { + /* entry description is requested, + get the requested subindex */ + UINT8 subindex = (UINT8)((pSdoInfoInd->SdoHeader.Data.Entry.Info & ENTRY_MASK_SUBINDEX) >> ENTRY_SUBINDEX_SHIFT); - if ( pObjEntry ) - { - /* object exists */ - UINT16 size = 0; - - if ( opCode == SDOINFOSERVICE_OBJDESCRIPTION_Q ) - { - /* object description is requested */ - OBJTOMBXMEMCPY(&pSdoInfoInd->SdoHeader.Data.Obj.Res, OBJ_GetObjDesc(pObjEntry), SDO_INFO_OBJ_DESC_SIZE); + /* get the maximum subindex */ + UINT8 maxSubindex = (OBJ_GetObjDesc(pObjEntry)->ObjFlags & OBJFLAGS_MAXSUBINDEXMASK) >> OBJFLAGS_MAXSUBINDEXSHIFT; + if (subindex <= maxSubindex) + { + UINT16 ObjectFlags; + /* requested subindex is not too great */ + /* get the entry description of the requested entry */ +/*ET9300 Project Handler :(#if BIG_ENDIAN_FORMAT) lines 1715 to 1720 deleted*/ + OBJTOMBXMEMCPY(&pSdoInfoInd->SdoHeader.Data.Entry.Res, OBJ_GetEntryDesc(pObjEntry, subindex), SIZEOF(TSDOINFOENTRYDESC)); - /* the mailbox should be big enough that the maximum object description - fits in the mailbox (the fragmentation is not done in the sample code), - so it will be checked only if the object description fits */ - size = OBJ_GetDesc(index, 0, pObjEntry, NULL) + SIZEOF_SDOINFOOBJSTRUCT; + /* the transmission of the value info is not supported yet of the sample code */ + pSdoInfoInd->SdoHeader.Data.Entry.Info &= ~ENTRY_MASK_VALUEINFO; + ObjectFlags = OBJ_GetObjDesc(pObjEntry)->ObjFlags; + ObjectFlags = (ObjectFlags & OBJFLAGS_OBJCODEMASK) >> OBJFLAGS_OBJCODESHIFT; - if ( size > (u16SendMbxSize - MBX_HEADER_SIZE) ) - { - /* size of the object description does not fit in the mailbox, - the object description will be sent without the name */ - size = SIZEOF_SDOINFOOBJSTRUCT; - } - else - { - /* object description fits in the mailbox, get the name of the object */ - size = OBJ_GetDesc(index, 0, pObjEntry, ((UINT16 MBXMEM *) &(&pSdoInfoInd->SdoHeader.Data.Obj.Res)[1])) + SIZEOF_SDOINFOOBJSTRUCT; - } - } - else - { - /* entry description is requested, - get the requested subindex */ - UINT8 subindex = (UINT8) ((pSdoInfoInd->SdoHeader.Data.Entry.Info & ENTRY_MASK_SUBINDEX) >> ENTRY_SUBINDEX_SHIFT); + if (((ObjectFlags == OBJCODE_ARR) || (ObjectFlags == OBJCODE_REC)) && (subindex == 0)) + { + OBJTOMBXSTRCPY(((UINT16 MBXMEM *) &(&pSdoInfoInd->SdoHeader.Data.Entry.Res)[1]), aSubindexDesc, SIZEOF(aSubindexDesc)); + size = 12 + SIZEOF_SDOINFO + SIZEOF(TSDOINFOENTRY); // 12: Length of "SubIndex 000" + } + else + { + /* the mailbox should be big enough that the maximum entry description + fits in the mailbox (the fragmentation is not done in the sample code), + so it will be checked only if the entry description fits */ + size = OBJ_GetDesc(index, subindex, pObjEntry, NULL) + SIZEOF_SDOINFO + SIZEOF(TSDOINFOENTRY); + if (size > (u16SendMbxSize - MBX_HEADER_SIZE)) + { + /* size of the object description does not fit in the mailbox, + the object description will be sent without the name */ + size = SIZEOF_SDOINFO + SIZEOF(TSDOINFOENTRY); + } + else + { + /* object description fits in the mailbox, get the name of the entry */ + size = OBJ_GetDesc(index, subindex, pObjEntry, ((UINT16 MBXMEM *) &(&pSdoInfoInd->SdoHeader.Data.Entry.Res)[1])) + SIZEOF_SDOINFO + SIZEOF(TSDOINFOENTRY); + } + } + } + else + { + abort = ABORTIDX_SUBINDEX_NOT_EXISTING; + } + } - /* get the maximum subindex */ - UINT8 maxSubindex = (OBJ_GetObjDesc(pObjEntry)->ObjFlags & OBJFLAGS_MAXSUBINDEXMASK) >> OBJFLAGS_MAXSUBINDEXSHIFT; + if (abort == 0) + { + { + /* for the object and entry description the sample code does not support the fragmentation, + the mailbox has to be big enough */ + pSdoInfoInd->SdoHeader.FragmentsLeft = 0; + /* store the size of the mailbox data in the mailbox buffer */ + pSdoInfoInd->MbxHeader.Length = size; + /* set the opCode of the SDO Information response */ + pSdoInfoInd->SdoHeader.InfoHead &= ~INFOHEAD_OPCODE_MASK; + pSdoInfoInd->SdoHeader.InfoHead |= (UINT16)((opCode + 1) << INFOHEAD_OPCODE_SHIFT); + } + } + } + else + { + abort = ABORTIDX_OBJECT_NOT_EXISTING; + } + } + break; + default: + abort = ABORTIDX_COMMAND_SPECIFIER_UNKNOWN; + } - if ( subindex <= maxSubindex ) - { - UINT16 ObjectFlags; - /* requested subindex is not too great */ - /* get the entry description of the requested entry */ - OBJTOMBXMEMCPY(&pSdoInfoInd->SdoHeader.Data.Entry.Res, OBJ_GetEntryDesc(pObjEntry, subindex), SIZEOF(TSDOINFOENTRYDESC)); + if (abort) + { + /* send a SDO Information Error response */ + pSdoInfoInd->MbxHeader.Length = SIZEOF_SDOINFOERRORSTRUCT; - /* the transmission of the value info is not supported yet of the sample code */ - pSdoInfoInd->SdoHeader.Data.Entry.Info &= ~ENTRY_MASK_VALUEINFO; - ObjectFlags = OBJ_GetObjDesc(pObjEntry)->ObjFlags; - ObjectFlags = (ObjectFlags & OBJFLAGS_OBJCODEMASK) >> OBJFLAGS_OBJCODESHIFT; + pSdoInfoInd->SdoHeader.InfoHead &= ~INFOHEAD_OPCODE_MASK; + pSdoInfoInd->SdoHeader.InfoHead |= (UINT16)((SDOINFOSERVICE_ERROR_Q) << INFOHEAD_OPCODE_SHIFT); - if(((ObjectFlags == OBJCODE_ARR) || (ObjectFlags == OBJCODE_REC)) && (subindex == 0) ) - { - OBJTOMBXSTRCPY( ((UINT16 MBXMEM *) &(&pSdoInfoInd->SdoHeader.Data.Entry.Res)[1]), aSubindexDesc, SIZEOF(aSubindexDesc) ); - size = 12 + SIZEOF_SDOINFO + SIZEOF(TSDOINFOENTRY); // 12: Length of "SubIndex 000" - } - else - { - /* the mailbox should be big enough that the maximum entry description - fits in the mailbox (the fragmentation is not done in the sample code), - so it will be checked only if the entry description fits */ - size = OBJ_GetDesc(index, subindex, pObjEntry, NULL) + SIZEOF_SDOINFO + SIZEOF(TSDOINFOENTRY); - if ( size > (u16SendMbxSize - MBX_HEADER_SIZE) ) - { - /* size of the object description does not fit in the mailbox, - the object description will be sent without the name */ - size = SIZEOF_SDOINFO + SIZEOF(TSDOINFOENTRY); - } - else - { - /* object description fits in the mailbox, get the name of the entry */ - size = OBJ_GetDesc(index, subindex, pObjEntry, ((UINT16 MBXMEM *) &(&pSdoInfoInd->SdoHeader.Data.Entry.Res)[1])) + SIZEOF_SDOINFO + SIZEOF(TSDOINFOENTRY); - } - } - } - else - { - abort = ABORTIDX_SUBINDEX_NOT_EXISTING; - } - } + pSdoInfoInd->SdoHeader.FragmentsLeft = 0; +/*ET9300 Project Handler :(#if BIG_ENDIAN_16BIT) lines 1792 to 1795 deleted*/ + pSdoInfoInd->SdoHeader.Data.Error.ErrorCode = SWAPDWORD(cAbortCode[abort]); - if ( abort == 0 ) - { - { - /* for the object and entry description the sample code does not support the fragmentation, - the mailbox has to be big enough */ - pSdoInfoInd->SdoHeader.FragmentsLeft = 0; - /* store the size of the mailbox data in the mailbox buffer */ - pSdoInfoInd->MbxHeader.Length = size; - /* set the opCode of the SDO Information response */ - pSdoInfoInd->SdoHeader.InfoHead &= ~INFOHEAD_OPCODE_MASK; - pSdoInfoInd->SdoHeader.InfoHead |= (UINT16)((opCode + 1) << INFOHEAD_OPCODE_SHIFT); - } - } - } - else - { - abort = ABORTIDX_OBJECT_NOT_EXISTING; - } - } - break; - default: - abort = ABORTIDX_COMMAND_SPECIFIER_UNKNOWN; - } +/*ET9300 Project Handler :(#if SEGMENTED_SDO_SUPPORTED) lines 1799 to 1801 deleted*/ + } - if ( abort ) - { - /* send a SDO Information Error response */ - pSdoInfoInd->MbxHeader.Length = SIZEOF_SDOINFOERRORSTRUCT; + if (MBX_MailboxSendReq((TMBX MBXMEM *) pSdoInfoInd, flags) != 0) + { + /* if the mailbox response could not be sent (or stored), the response will be + stored in the variable pCoeSendStored and will be sent automatically + from the mailbox handler (COE_ContinueInd) when the send mailbox will be read + the next time from the master */ + pCoeSendStored = (TMBX MBXMEM *) pSdoInfoInd; + } - pSdoInfoInd->SdoHeader.InfoHead &= ~INFOHEAD_OPCODE_MASK; - pSdoInfoInd->SdoHeader.InfoHead |= (UINT16) ((SDOINFOSERVICE_ERROR_Q) << INFOHEAD_OPCODE_SHIFT); - - pSdoInfoInd->SdoHeader.FragmentsLeft = 0; - pSdoInfoInd->SdoHeader.Data.Error.ErrorCode = SWAPDWORD(cAbortCode[abort]); - - nSdoInfoFragmentsLeft = 0; - } - - if (MBX_MailboxSendReq((TMBX MBXMEM *) pSdoInfoInd, flags) != 0) - { - /* if the mailbox response could not be sent (or stored), the response will be - stored in the variable pCoeSendStored and will be sent automatically - from the mailbox handler (COE_ContinueInd) when the send mailbox will be read - the next time from the master */ - pCoeSendStored = (TMBX MBXMEM *) pSdoInfoInd; - } - - return 0; + return 0; } /** @} */ diff --git a/sdoserv.h b/sdoserv.h index 9e5223f..04372a4 100644 --- a/sdoserv.h +++ b/sdoserv.h @@ -1,6 +1,7 @@ /* * This source file is part of the EtherCAT Slave Stack Code licensed by Beckhoff Automation GmbH & Co KG, 33415 Verl, Germany. * The corresponding license agreement applies. This hint shall not be removed. +* https://www.beckhoff.com/media/downloads/slave-stack-code/ethercat_ssc_license.pdf */ /** @@ -98,7 +99,9 @@ V5.01 : Start file change log */ typedef struct MBX_STRUCT_PACKED_START { +/*ET9300 Project Handler :(#if MBX_16BIT_ACCESS) lines 101 to 128 deleted*/ UINT8 Sdo[4]; /**< \brief 32Bit SDO header buffer*/ +/*ET9300 Project Handler :(#if BIG_ENDIAN_16BIT) lines 130 to 135 deleted*/ #define SDOHEADER_COMMANDOFFSET 0 /**< \brief Memory offset for the command*/ #define SDOHEADER_INDEXLOOFFSET 1 /**< \brief Memory offset for the low Byte of the object index*/ #define SDOHEADER_INDEXHIOFFSET 2 /**< \brief Memory offset for the high Byte of the object index*/ @@ -144,6 +147,7 @@ TINITSDOMBX; */ typedef struct MBX_STRUCT_PACKED_START { +/*ET9300 Project Handler :(#if MBX_16BIT_ACCESS) lines 183 to 209 deleted*/ UINT8 SegHeader; /**< \brief 8Bit header buffer*/ #define SEGHEADER_MASK ((UINT8) 0xFF) /**< \brief SDO header mask*/ #define SEGHEADER_NOMOREFOLLOWS ((UINT8) 0x01) /**< \brief More segments follow flag*/ @@ -498,6 +502,7 @@ typedef struct MBX_STRUCT_PACKED_START { UINT16 Index; /**< \brief Index of the parent object*/ UINT16 Info; /**< \brief Info data including the subindex and identifier for the payload data*/ +/*ET9300 Project Handler :(#if BIG_ENDIAN_FORMAT) lines 565 to 570 deleted*/ #define ENTRY_MASK_SUBINDEX 0x00FF /**< \brief Subindex mask*/ #define ENTRY_SUBINDEX_SHIFT 0 /**< \brief Subindex shift*/ #define ENTRY_MASK_VALUEINFO 0xFF00 /**< \brief Value info mask*/ @@ -527,6 +532,7 @@ TSDOINFOERROR; typedef struct MBX_STRUCT_PACKED_START { UINT16 InfoHead; /**< \brief Opcode, Incomplete flag and 8 reserved bits*/ +/*ET9300 Project Handler :(#if BIG_ENDIAN_FORMAT) lines 601 to 606 deleted*/ #define INFOHEAD_OPCODE_MASK 0x007F /**< \brief Opcode mask*/ #define INFOHEAD_OPCODE_SHIFT 0 /**< \brief Opcode shift*/ #define INFOHEADER_INCOMPLETE_MASK 0x0080 /**< \brief Incomplete mask*/ @@ -575,17 +581,7 @@ TSDOINFORMATION; /** @}*/ -/** - * \addtogroup SdoPendingHandler SDO Pending Response - * @{ - * If this feature is enabled (SDO_RES_INTERFACE 1) a SDO request may set to pending and is completed afterwards. - * This can be used to forward the read/write request an additional thread, uController. - */ -#define SDO_PENDING_WRITE 0x1 /**< \brief SDO write request is pending*/ -#define SDO_PENDING_SEG_WRITE 0x2 /**< \brief SDO segmented write request is pending*/ -#define SDO_PENDING_READ 0x3 /**< \brief SDO read request is pending*/ -#define SDO_PENDING_SEG_READ 0x4 /**< \brief SDO segmented read request is pending*/ -/** @}*/ +/*ET9300 Project Handler :(#if SDO_RES_INTERFACE) lines 656 to 668 deleted*/ #endif //_SDOSRV_H_ @@ -601,30 +597,13 @@ TSDOINFORMATION; #define PROTO extern #endif -/** - * \addtogroup SdoPendingHandler SDO Pending Response - *@{ - */ -PROTO UINT8 u8PendingSdo; /**< \brief Identifier for the pending SDO service (see SDO_PENDING_XXX defines)*/ -PROTO BOOL bStoreCompleteAccess; /**< \brief Indicates if the pending SDO service is an complete access*/ -PROTO UINT8 u8StoreSubindex; /**< \brief Contains the subindex for the pending SDO request*/ -PROTO UINT16 u16StoreIndex; /**< \brief Contains the Index for the pending SDO request*/ -PROTO UINT32 u32StoreDataSize; /**< \brief Complete data size to be handled*/ -PROTO UINT16 MBXMEM *pStoreData; /**< \brief Pointer to the buffer to be handled*/ -PROTO UINT8 (* pSdoPendFunc)( UINT16 Index, UINT8 Subindex, UINT32 Size, UINT16 MBXMEM * pData, UINT8 bCompleteAccess ); /**< \brief Function pointer for the SDO pending request handler*/ -/** @}*/ +/*ET9300 Project Handler :(#if SDO_RES_INTERFACE) lines 684 to 697 deleted*/ PROTO MEM_ADDR VARMEM aSdoInfoHeader[GET_MEM_SIZE(SDO_INFO_HEADER_BYTE_SIZE)]; /**< \brief SDO Info buffer*/ -/** - * \addtogroup SegmentedSdo Segmented SDO - * @{ - */ -PROTO UINT16 VARMEM * VARMEM pSdoSegData; /**< \brief Pointer to the buffer handling to full object/entry data*/ -PROTO UINT16 VARMEM nSdoInfoFragmentsLeft; /**< \brief Number of fragments which need to be transmitted*/ -/** @}*/ +/*ET9300 Project Handler :(#if SEGMENTED_SDO_SUPPORTED) lines 703 to 711 deleted*/ /*----------------------------------------------------------------------------------------- @@ -635,10 +614,8 @@ PROTO UINT16 VARMEM nSdoInfoFragmentsLeft; /**< \brief N PROTO UINT8 SDOS_SdoInfoInd(TSDOINFORMATION MBXMEM *pSdoInfoInd); PROTO UINT8 SDOS_SdoInd(TINITSDOMBX MBXMEM *pSdoInd); -PROTO void SDOS_SdoRes(UINT8 abort, UINT32 objLength, UINT16 MBXMEM *pData); -/* ECATCHANGE_START(V5.12) MBX3*/ -PROTO void SODS_ClearPendingResponse(); -/* ECATCHANGE_END(V5.12) MBX3*/ +/*ET9300 Project Handler :(#if SDO_RES_INTERFACE) lines 722 to 724 deleted*/ +/*ET9300 Project Handler :(#if SDO_RES_INTERFACE || SEGMENTED_SDO_SUPPORTED) lines 725 to 727 deleted*/ #undef PROTO diff --git a/tiescfoe.c b/tiescfoe.c new file mode 100644 index 0000000..0175c80 --- /dev/null +++ b/tiescfoe.c @@ -0,0 +1,208 @@ +/* + * Copyright (C) 2021 Texas Instruments Incorporated + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* ========================================================================== */ +/* Include Files */ +/* ========================================================================== */ + +#include +#include + +#include /* for memset */ +#include + +/* ========================================================================== */ +/* Macros & Typedefs */ +/* ========================================================================== */ + +/* ========================================================================== */ +/* Global Variables */ +/* ========================================================================== */ + +#if FOE_SUPPORTED + +extern unsigned char bBootMode; /**< \brief Indicates in slave is in BOOT mode*/ + +static uint8_t foe_download_flag; +static uint8_t file_write_offset; + +/*Section of RAM chosen to store FoE Data*/ +#define S0RAM_BASE 0x20000000U; + +uint8_t *ptr = S0RAM_BASE; + +#endif /* FOE_SUPPORTED */ + +/* ========================================================================== */ +/* Function Declarations */ +/* ========================================================================== */ + +/*----------------------------------------------------------------------------------------- +------ +------ application specific functions +------ +-----------------------------------------------------------------------------------------*/ + +#if FOE_SUPPORTED +/** +* \brief This function should be called when a firmware download command is received +* from EtherCAT master +* +* \param password password received from master +*/ +void tiesc_start_foe_download(uint32_t password); + +/** +* \brief Stores the received data as part of firmware download from EtherCAT master. +* This may get called multiple times during firmware download. This function +* performs OSPI flash writes for every 256-bytes received from master. +* +* \param pData Pointer to data buffer +* \param Size Number of bytes received +*/ + +void tiesc_store_foe_data(uint16_t *pData, uint16_t Size); + +uint16_t tiesc_foe_read(uint16_t *pName, uint16_t nameSize, uint32_t password, + uint16_t maxBlockSize, uint16_t *pData); + +uint16_t tiesc_foe_read_data(uint32_t offset, uint16_t maxBlockSize, + uint16_t *pData); + +uint16_t tiesc_foe_read_data(uint32_t offset, uint16_t maxBlockSize, + uint16_t *pData); + +uint16_t tiesc_foe_write_data(uint16_t *pData, uint16_t Size, + unsigned char bDataFollowing); + +uint16_t tiesc_foe_write(uint16_t *pName, uint16_t nameSize, uint32_t password); +#endif /* FOE_SUPPORTED */ + +/* ========================================================================== */ +/* Function Defintions */ +/* ========================================================================== */ + +/*----------------------------------------------------------------------------------------- +------ +------ generic functions +------ +-----------------------------------------------------------------------------------------*/ + +#if FOE_SUPPORTED + +void tiesc_start_foe_download(uint32_t password) +{ + foe_download_flag = 1; +} + +/* Function to store Data received from FoE operation*/ +void tiesc_store_foe_data(uint16_t *pData, uint16_t Size) +{ + int i; + + for(i=0;i> 8; + uint8_t b = pData[i]; + memset(ptr + file_write_offset, b, 1); + file_write_offset++; + memset(ptr + file_write_offset, a, 1); + file_write_offset++; + } +} + +void tiesc_boot_2_init_handler() +{ + if(foe_download_flag) + { + /* Reset the flag */ + foe_download_flag = 0; + } +} + +/*Dummy function defined, functionality not supported here*/ +uint16_t tiesc_foe_read(uint16_t *pName, uint16_t nameSize, uint32_t password, + uint16_t maxBlockSize, uint16_t *pData) +{ + return TIESC_ECAT_FOE_ERRCODE_NOTFOUND; +} + +/*Dummy function defined, functionality not supported here*/ +uint16_t tiesc_foe_read_data(uint32_t offset, uint16_t maxBlockSize, + uint16_t *pData) +{ + return maxBlockSize; +} + +/* Function called Subsequently for every FoE Write Block*/ +uint16_t tiesc_foe_write_data(uint16_t *pData, uint16_t Size, + unsigned char bDataFollowing) +{ + if(bBootMode) + { + tiesc_store_foe_data(pData, Size); + return 0; + } + else + { + return TIESC_ECAT_FOE_ERRCODE_BOOTSTRAPONLY; + } +} + +/* Function called to initiate FoE Write Operation*/ +uint16_t tiesc_foe_write(uint16_t *pName, uint16_t nameSize, uint32_t password) +{ + if(bBootMode) + { + tiesc_start_foe_download(password); + return 0; + } + else + { + return TIESC_ECAT_FOE_ERRCODE_BOOTSTRAPONLY; + } +} + +#endif /* FOE_SUPPORTED */ + +/* Initialises FoE Related functions to be called by the stack*/ +void tiesc_foe_init(void) +{ +#if FOE_SUPPORTED + pAPPL_FoeRead = tiesc_foe_read; + pAPPL_FoeReadData = tiesc_foe_read_data; + pAPPL_FoeWriteData = tiesc_foe_write_data; + pAPPL_FoeWrite = tiesc_foe_write; + foe_download_flag = 0; +#endif +} diff --git a/tiescfoe.h b/tiescfoe.h new file mode 100644 index 0000000..d6231fd --- /dev/null +++ b/tiescfoe.h @@ -0,0 +1,63 @@ +/* + * Copyright (C) 2021 Texas Instruments Incorporated + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * Neither the name of Texas Instruments Incorporated nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _TIESC_FOE_H_ +#define _TIESC_FOE_H_ + +/* ========================================================================== */ +/* Macros & Typedefs */ +/* ========================================================================== */ + +#if FOE_SUPPORTED + +#define TIESC_ECAT_FOE_ERRCODE_NOTFOUND 0x8001 /**< The file requested by an FoE upload service could not be found on the server*/ +#define TIESC_ECAT_FOE_ERRCODE_BOOTSTRAPONLY 0x8008 /**< FoE only supported in Bootstrap*/ +#define TIESC_ECAT_FOE_ERRCODE_NOTINBOOTSTRAP 0x8009 /**< This file may not be accessed in BOOTSTRAP state*/ + +#endif /* FOE_SUPPORTED */ + +/* ========================================================================== */ +/* Structure Declarations */ +/* ========================================================================== */ + +/* ========================================================================== */ +/* Function Declarations */ +/* ========================================================================== */ + +/** +* \brief This function is called when the state is switched from BOOT to Init +*/ +void tiesc_boot_2_init_handler(); + +void tiesc_foe_init(void); + +#endif /* _TIESC_FOE_H_*/