I'm using RTT to print out a heartbeat from time to time (several seconds!) after a number of printouts I get a memory exception at the first call to "memcpy" in the function below.
static void _WriteNoCheck(SEGGER_RTT_BUFFER_UP* pRing, const char* pData, unsigned NumBytes) {
unsigned NumBytesAtOnce;
unsigned WrOff;
unsigned Rem;
WrOff = pRing->WrOff;
Rem = pRing->SizeOfBuffer - WrOff;
if (Rem > NumBytes) {
//
// All data fits before wrap around
//
memcpy(pRing->pBuffer + WrOff, pData, NumBytes);
pRing->WrOff = WrOff + NumBytes;
} else {
//
// We reach the end of the buffer, so need to wrap around
//
NumBytesAtOnce = Rem;
memcpy(pRing->pBuffer + WrOff, pData, NumBytesAtOnce);
NumBytesAtOnce = NumBytes - Rem;
memcpy(pRing->pBuffer, pData + Rem, NumBytesAtOnce);
pRing->WrOff = NumBytesAtOnce;
}
}
Any idea what the reason could be?
static void _WriteNoCheck(SEGGER_RTT_BUFFER_UP* pRing, const char* pData, unsigned NumBytes) {
unsigned NumBytesAtOnce;
unsigned WrOff;
unsigned Rem;
WrOff = pRing->WrOff;
Rem = pRing->SizeOfBuffer - WrOff;
if (Rem > NumBytes) {
//
// All data fits before wrap around
//
memcpy(pRing->pBuffer + WrOff, pData, NumBytes);
pRing->WrOff = WrOff + NumBytes;
} else {
//
// We reach the end of the buffer, so need to wrap around
//
NumBytesAtOnce = Rem;
memcpy(pRing->pBuffer + WrOff, pData, NumBytesAtOnce);
NumBytesAtOnce = NumBytes - Rem;
memcpy(pRing->pBuffer, pData + Rem, NumBytesAtOnce);
pRing->WrOff = NumBytesAtOnce;
}
}
Any idea what the reason could be?