Writing internal flash with dfu-util to set EEPROM defaults

May I suggest you use my eeprom library flashee - I think this will make life a lot simpler, since it avoids having to reverse engineer the wear leveling.

If you require just read-only access, then writing the data via dfu-util and then accessing that via the Devices::userFlash() is the simplest way.

If you need read/write access, then create the read/write device X pages from the start, where X is large enough to accommodate the configuration data you write with dfu-util. E.g.

    FlashDevice& user = Devices::userFlash(); // here you can read the config data. 
    FlashDevice* device = Devices::createAddressErase(user.pageSize()*10, user.length()); // use the remaining space for read/write

You can then write to the user region with dfu-util to populate the first 10 pages.
You could then copy from the read-only area to the read-write area, if you wanted the config data to be mutable.

Like the built-in eeprom library, this library supports eeprom emulation in flash, allowing inplace rewrites over the whole of the external flash memory.

I hope that helps!