Yo en el curro estoy utilizando unas memorias flash también para cargar la imagen de un programa en un microcontrolador avr.
Generalmente permiten el borrado por páginas, es decir por bloques de datos, las que yo utilizo pueden borrar un mínimo de 4kbytes.
La putada es que si solo quieres borrar un dato, debes leer la memoria, guardarlo en un array de 4k, modificar el dato, borrar el bloque en la flash y escribir la flash con el dato modificado jeje.
Una vez te has acostumbrado son fáciles de usar, cada tecnologia tiene sus "PRO" y sus "CONTRA".
Yo para esos menesteres prefiero utilizar una tarjeta MicroSD, es muy fácil de manejar (por SPI), son baratas, con gigas de espacio, no hay que borrar nada antes de actualizar y se pueden reemplazar con facilidad, además puedes montar FAT o FAT32 y simular un disco duro. Las utilizo en mi booloader con SD, para cargar nuevo firmware, y también como disco duro para que el usuario pueda configurar o personalizar su aplicativo.
La flash del PIC, también la modifico en todos mis bootloader encriptados, para personalizar cada placa con nº de serie único, codigo de producto, versión de firmware, etc.., desgraciadamente los PIC32 no tiene memoria eeprom, así que toca lidiar con la flash, también aquí hay que trabajar con páginas de 4096 bytes, que previamente hay que guardar en un array, borrar y actualizar, un auténtico coñazo. Además la flash tiene un tiempo de vida relativamente corto, solo 1000 ciclos de borrado/escritura.