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

Type struct pointer issue

Hello,
I'm stuck with hardfault handler.

When I try to execute read value from pointer address:

struct S2E_Packet { uint8_t module_type[3]; uint8_t fw_ver[3];
} __attribute__((packed)) S2E_Packet;

struct S2E_Packet s2e_packet;

AddressSrc=(uint32_t)&s2e_packet;
uint32_t test = *(uint32_t*)AddressSrc;
HAL_FLASH_Unlock();
HAL_FLASH_Program(TYPEPROGRAM_WORD, AddressDes, test);

program goes to hardfault handler.
No errors or warnings during compilation.

I have no idea.....

Parents
  • Note that you are playing with packed data.

    Then you type-cast into a pointer that does not know anything about the data being packet. So if AddressSrc isn't a 32-bit-aligned value then you will get into troubles when reading/writing using your pointer.

    Be very, very careful when playing with type casts. Especially that you don't strip some volatile, packed or other important attribute.

Reply
  • Note that you are playing with packed data.

    Then you type-cast into a pointer that does not know anything about the data being packet. So if AddressSrc isn't a 32-bit-aligned value then you will get into troubles when reading/writing using your pointer.

    Be very, very careful when playing with type casts. Especially that you don't strip some volatile, packed or other important attribute.

Children
No data