From c9da65117fbad677344de730b86e66ff12d1d6fa Mon Sep 17 00:00:00 2001 From: Armel FAUVEAU Date: Thu, 30 Jul 2026 02:56:06 +0200 Subject: [PATCH] Avoid unnecessary flash sector erases --- App/driver/py25q16.c | 8 ++++++-- archive/f4hwn.fusion.development.bin | Bin 104196 -> 104068 bytes 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/App/driver/py25q16.c b/App/driver/py25q16.c index 11e5f737..3d9990a1 100644 --- a/App/driver/py25q16.c +++ b/App/driver/py25q16.c @@ -284,9 +284,13 @@ void PY25Q16_WriteBuffer(uint32_t Address, const void *pBuffer, uint32_t Size, b if (0 != memcmp(pBuffer, (char *)SectorCache + SecOffset, SecSize)) { bool Erase = false; + const uint8_t *oldData = SectorCache + SecOffset; + const uint8_t *newData = (const uint8_t *)pBuffer; + for (uint32_t i = 0; i < SecSize; i++) { - if (0xff != SectorCache[SecOffset + i]) + // NOR flash programming can only change bits from 1 to 0. + if ((oldData[i] & newData[i]) != newData[i]) { Erase = true; break; @@ -491,4 +495,4 @@ void DMA1_Channel4_5_6_7_IRQHandler() TC_Flag = true; } -} \ No newline at end of file +} diff --git a/archive/f4hwn.fusion.development.bin b/archive/f4hwn.fusion.development.bin index 54cce14f90b10ddc2453d3e9bd50974db55f3a65..242c0493eedbfd55735aae677b400ba713381791 100755 GIT binary patch delta 17062 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 delta 17190 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

UDcP)bz&e&OTEV9sjaRG=B_ObZlc8X0% zL%S;6r!Xy3^@|ysGpQbcYziDK6kNl+4e-uVN;r z%0Oivlt~`4OMHb>uNq~opBM?=KEkvWk239{$Cx&9!r$xt4B~kcnf8kfO#1+s{Q}e8 zK|ZBS%Os|~3FJ&>+UJq~4B!C<1BZ~-0$86R?UFU5-MO7