diff --git a/src/drivers/boards/common/kinetis/board_identity.c b/src/drivers/boards/common/kinetis/board_identity.c index bc86b156d9..5cea3f50c5 100644 --- a/src/drivers/boards/common/kinetis/board_identity.c +++ b/src/drivers/boards/common/kinetis/board_identity.c @@ -51,10 +51,12 @@ static const uint16_t soc_arch_id = PX4_SOC_ARCH_ID; void board_get_uuid(uuid_byte_t uuid_bytes) { uint32_t *chip_uuid = (uint32_t *) KINETIS_SIM_UIDH; - uint32_t *uuid_words = (uint32_t *) uuid_bytes; + uint32_t *uuid_words = (uint32_t *) uuid_bytes; for (unsigned int i = 0; i < PX4_CPU_UUID_WORD32_LENGTH; i++) { - *uuid_words++ = SWAP_UINT32(chip_uuid[i]); + uint32_t current_uuid_bytes = SWAP_UINT32(chip_uuid[i]); + memcpy(uuid_words, ¤t_uuid_bytes, sizeof(uint32_t)); + ++uuid_words; } } diff --git a/src/drivers/boards/common/samv7/board_identity.c b/src/drivers/boards/common/samv7/board_identity.c index fa1b302939..cb2bf2f17a 100644 --- a/src/drivers/boards/common/samv7/board_identity.c +++ b/src/drivers/boards/common/samv7/board_identity.c @@ -53,10 +53,12 @@ const uint32_t DUMMY_SIM_UIDH[4] = {0x12345678, 0x12345678, 0x12345678, 0x123456 void board_get_uuid(uuid_byte_t uuid_bytes) { uint32_t *chip_uuid = (uint32_t *) DUMMY_SIM_UIDH; - uint32_t *uuid_words = (uint32_t *) uuid_bytes; + uint32_t *uuid_words = (uint32_t *) uuid_bytes; for (unsigned int i = 0; i < PX4_CPU_UUID_WORD32_LENGTH; i++) { - *uuid_words++ = SWAP_UINT32(chip_uuid[i]); + uint32_t current_uuid_bytes = SWAP_UINT32(chip_uuid[i]); + memcpy(uuid_words, ¤t_uuid_bytes, sizeof(uint32_t)); + ++uuid_words; } } diff --git a/src/drivers/boards/common/stm32/board_identity.c b/src/drivers/boards/common/stm32/board_identity.c index 5060f31adb..92cc347948 100644 --- a/src/drivers/boards/common/stm32/board_identity.c +++ b/src/drivers/boards/common/stm32/board_identity.c @@ -141,7 +141,9 @@ int board_get_px4_guid(px4_guid_t px4_guid) uint32_t *chip_uuid = (uint32_t *) STM32_SYSMEM_UID; for (unsigned i = 0; i < PX4_CPU_UUID_WORD32_LENGTH; i++) { - *rv++ = SWAP_UINT32(chip_uuid[(PX4_CPU_UUID_WORD32_LENGTH - 1) - i]); + uint32_t uuid_bytes = SWAP_UINT32(chip_uuid[(PX4_CPU_UUID_WORD32_LENGTH - 1) - i]); + memcpy(rv, &uuid_bytes, sizeof(uint32_t)); + ++rv; } return PX4_GUID_BYTE_LENGTH;