You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Ender3V2S1/Marlin/lib
Miguel Risco-Castillo ff35dc6d3f Added an exclusion zone in the EEPROM.
That zone is used by some boot loaders to save flags that control the flashing at boot process.

The exclusion zone should be defined in the **.INI** board environments that require it by:
```log
 -DEEPROM_EXCL_ZONE=100,200
```
or in the board pin file by:
```c++
#define EEPROM_EXCL_ZONE 100,200  // Test a range
or
#define EEPROM_EXCL_ZONE 333      // Test a single byte
```
For example, in the Ender-3S1 F4: Marlin\src\pins\stm32f4\pins_CREALITY_V24S1_301F4.h:
```c++
#define EEPROM_EXCL_ZONE 919,926  // Test a range
```

### Related Issues

In the Ender-3 S1 with the STM32F401 SoC the range of exclusion is from 919 to 926. Even if the zone is filled with 0xFF values, the boot loader changes it when the printer is rebooted:

```log
0370: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0380: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0390: FF FF FF FF 00 FF FF FF FF FF FF FF FF 66 FF FF
03A0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
03B0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
```
If the zone is not excluded, the boot loader may not allow flashing new firmware and may also cause CRC EEPROM corruption.

Perhaps related to:
https://github.com/mriscoc/Ender3V2S1/issues/125
https://github.com/mriscoc/Ender3V2S1/issues/1180
https://github.com/MarlinFirmware/Marlin/issues/26144
4 months ago
..
proui Added an exclusion zone in the EEPROM. 4 months ago
readme.txt **New Year 2024 (20240107)** 5 months ago

readme.txt

This directory is intended for the project specific (private) libraries.
PlatformIO will compile them to static libraries and link to executable file.

The source code of each library should be placed in separate directory, like
"lib/private_lib/[here are source files]".

For example, see how can be organized `Foo` and `Bar` libraries:

|--lib
|  |--Bar
|  |  |--docs
|  |  |--examples
|  |  |--src
|  |     |- Bar.c
|  |     |- Bar.h
|  |--Foo
|  |  |- Foo.c
|  |  |- Foo.h
|  |- readme.txt --> THIS FILE
|- platformio.ini
|--src
   |- main.c

Then in `src/main.c` you should use:

#include <Foo.h>
#include <Bar.h>

// rest H/C/CPP code

PlatformIO will find your libraries automatically, configure preprocessor's
include paths and build them.

More information about PlatformIO Library Dependency Finder
- https://docs.platformio.org/page/librarymanager/ldf.html