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

Hard fault at misaligned memcpy memset

we made some simple tests with STM32F100 Value Line Eval Board:

//------------------------------------------------------------------------------
// Variables
static unsigned char sDstBuf[1024]; // 1KiB
static unsigned char sSrcBuf[sizeof(sDstBuf)];

printf("Copying words from misaligned src to aligned dst buffer... ");
memset(sDstBuf, 0xcd, sizeof(sDstBuf));

with optimize Level 3, optimize for time this takes
120usec

with optimize Level 0
155usec

almost the same if memcpy is used:
memcpy(sDstBuf, (const void *)0xcd, sizeof(sDstBuf));

It runs into hard fault, if optimize Level >=1 and optimise for time is not set.

I think this is a compiler error..

We ran into this before with MDK 4.60, now we use 4.70A

Werner

Parents
  • What he should do is stop expecting a compiler to magically turn badly flawed source code into working machine code. The problem here is not in the compiler ... it's in that source code, because that code wilfully disregards both the programming language's and the target architecture's properties.

    oh, how often do we see the "what the #$#$ is that, I do not need to know about stupid hardware I am a software person"

    If that is your attitude STAY OUT OF EMBEDDED.

    Erik

Reply
  • What he should do is stop expecting a compiler to magically turn badly flawed source code into working machine code. The problem here is not in the compiler ... it's in that source code, because that code wilfully disregards both the programming language's and the target architecture's properties.

    oh, how often do we see the "what the #$#$ is that, I do not need to know about stupid hardware I am a software person"

    If that is your attitude STAY OUT OF EMBEDDED.

    Erik

Children
No data