Merge pull request #7176 from KariHaapalehto/data_aligment

Fix data aligment problem at STM32F4 hash write
pull/6962/head
Cruz Monrreal 2018-06-11 21:27:50 -05:00 committed by GitHub
commit 89876311ae
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 6 deletions

View File

@ -223,12 +223,14 @@ static void HASH_DMAError(DMA_HandleTypeDef *hdma)
static void HASH_WriteData(uint8_t *pInBuffer, uint32_t Size) static void HASH_WriteData(uint8_t *pInBuffer, uint32_t Size)
{ {
uint32_t buffercounter; uint32_t buffercounter;
uint32_t inputaddr = (uint32_t) pInBuffer;
for(buffercounter = 0U; buffercounter < Size; buffercounter+=4) for(buffercounter = 0U; buffercounter < Size; buffercounter+=4)
{ {
HASH->DIN = *(uint32_t*)inputaddr; uint32_t data = (uint32_t) *pInBuffer++;
inputaddr+=4U; data |= (uint32_t) *pInBuffer++ << 8;
data |= (uint32_t) *pInBuffer++ << 16;
data |= (uint32_t) *pInBuffer++ << 24;
HASH->DIN = data;
} }
} }

View File

@ -137,12 +137,14 @@ static void HASHEx_DMAError(DMA_HandleTypeDef *hdma);
static void HASHEx_WriteData(uint8_t *pInBuffer, uint32_t Size) static void HASHEx_WriteData(uint8_t *pInBuffer, uint32_t Size)
{ {
uint32_t buffercounter; uint32_t buffercounter;
uint32_t inputaddr = (uint32_t) pInBuffer;
for(buffercounter = 0U; buffercounter < Size; buffercounter+=4U) for(buffercounter = 0U; buffercounter < Size; buffercounter+=4U)
{ {
HASH->DIN = *(uint32_t*)inputaddr; uint32_t data = (uint32_t) *pInBuffer++;
inputaddr+=4U; data |= (uint32_t) *pInBuffer++ << 8;
data |= (uint32_t) *pInBuffer++ << 16;
data |= (uint32_t) *pInBuffer++ << 24;
HASH->DIN = data;
} }
} }