Skip to content

Commit 8987631

Browse files
author
Cruz Monrreal
authored
Merge pull request #7176 from KariHaapalehto/data_aligment
Fix data aligment problem at STM32F4 hash write
2 parents 0eac433 + 0c3047f commit 8987631

File tree

2 files changed

+10
-6
lines changed

2 files changed

+10
-6
lines changed

targets/TARGET_STM/TARGET_STM32F4/device/stm32f4xx_hal_hash.c

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -223,12 +223,14 @@ static void HASH_DMAError(DMA_HandleTypeDef *hdma)
223223
static void HASH_WriteData(uint8_t *pInBuffer, uint32_t Size)
224224
{
225225
uint32_t buffercounter;
226-
uint32_t inputaddr = (uint32_t) pInBuffer;
227226

228227
for(buffercounter = 0U; buffercounter < Size; buffercounter+=4)
229228
{
230-
HASH->DIN = *(uint32_t*)inputaddr;
231-
inputaddr+=4U;
229+
uint32_t data = (uint32_t) *pInBuffer++;
230+
data |= (uint32_t) *pInBuffer++ << 8;
231+
data |= (uint32_t) *pInBuffer++ << 16;
232+
data |= (uint32_t) *pInBuffer++ << 24;
233+
HASH->DIN = data;
232234
}
233235
}
234236

targets/TARGET_STM/TARGET_STM32F4/device/stm32f4xx_hal_hash_ex.c

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -137,12 +137,14 @@ static void HASHEx_DMAError(DMA_HandleTypeDef *hdma);
137137
static void HASHEx_WriteData(uint8_t *pInBuffer, uint32_t Size)
138138
{
139139
uint32_t buffercounter;
140-
uint32_t inputaddr = (uint32_t) pInBuffer;
141140

142141
for(buffercounter = 0U; buffercounter < Size; buffercounter+=4U)
143142
{
144-
HASH->DIN = *(uint32_t*)inputaddr;
145-
inputaddr+=4U;
143+
uint32_t data = (uint32_t) *pInBuffer++;
144+
data |= (uint32_t) *pInBuffer++ << 8;
145+
data |= (uint32_t) *pInBuffer++ << 16;
146+
data |= (uint32_t) *pInBuffer++ << 24;
147+
HASH->DIN = data;
146148
}
147149
}
148150

0 commit comments

Comments
 (0)