This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Bootloader, Application, Structures and deep pointer

Bootloader: C:0x0000 - C:0x7FFF
Manages CAN-Communication and in-field update.
Application C:0x8000 - C:0xEFFF
Applications is controlled with bootloader over CAN 2.0.

Compiled both seperatly and merge the Hex-file. Interrupts and function calls work.

At level of 8 successive funtions calls the acces to an struct in Applications XDATA mem is incorrect. The expected pointer is not given.

Any adwise?

Parents
  • tXSDevice_DeviceEntry xdata * deviceEntryPtr
    
    A lot of Linker Errors with different Datatypes and Unresolved Externals. I change my typedef from
    typedef struct _XSIMDEVICE {
    
      tXS_UINT8 numEvents;             /**< Event entry count for the device.*/
      tXS_UINT8 groupCount;                     /**< Group entry count for the device.*/
    
      tXSEvent_SourcePtr eventListPtr; /**< Event group pointer. */
      struct _XSIMDEVICEGROUPINFO groupList[0x10u]; /**< Pointer to list of group entries. */
    
    } tXSDevice_DeviceEntry;
    
    to
    typedef xdata struct _XSIMDEVICE {
    
      tXS_UINT8 numEvents;             /**< Event entry count for the device.*/
      tXS_UINT8 groupCount;                     /**< Group entry count for the device.*/
    
      tXSEvent_SourcePtr eventListPtr; /**< Event group pointer. */
      struct _XSIMDEVICEGROUPINFO groupList[0x10u]; /**< Pointer to list of group entries. */
    
    } tXSDevice_DeviceEntry;
    

    But do not work.

Reply
  • tXSDevice_DeviceEntry xdata * deviceEntryPtr
    
    A lot of Linker Errors with different Datatypes and Unresolved Externals. I change my typedef from
    typedef struct _XSIMDEVICE {
    
      tXS_UINT8 numEvents;             /**< Event entry count for the device.*/
      tXS_UINT8 groupCount;                     /**< Group entry count for the device.*/
    
      tXSEvent_SourcePtr eventListPtr; /**< Event group pointer. */
      struct _XSIMDEVICEGROUPINFO groupList[0x10u]; /**< Pointer to list of group entries. */
    
    } tXSDevice_DeviceEntry;
    
    to
    typedef xdata struct _XSIMDEVICE {
    
      tXS_UINT8 numEvents;             /**< Event entry count for the device.*/
      tXS_UINT8 groupCount;                     /**< Group entry count for the device.*/
    
      tXSEvent_SourcePtr eventListPtr; /**< Event group pointer. */
      struct _XSIMDEVICEGROUPINFO groupList[0x10u]; /**< Pointer to list of group entries. */
    
    } tXSDevice_DeviceEntry;
    

    But do not work.

Children