Зачем "весь" и зачем "64К"?
Определяете минимальную порцию данных (страницу) которую может писать/стирать данная флешка (256/512/2048 байт) и все операции записи реализуете через эти страницы. Дальше - обычный write-back буфер страниц в ОЗУ CPU под некоторое кол-во этих страниц с вытеснением при переполнении наиболее старых страниц из ОЗУ во флеш.
И надо ещё предусмотреть сигнал аварии питания, по которому у вас при отключении питания CPU успеет всё содержимое буфера скинуть во флеш. Упреждение прихода сигнала относительно формирования RESET на CPU должно быть достаточным для сброса буфера. Для ускорения этого процесса, можно во флеш предусмотреть необходимое кол-во заранее стёртых страниц для такой аварийной записи (так как запись во флеш без стирания много быстрее чем со стиранием).
Цитата(Dmitrich @ Jan 16 2013, 01:20)

Нужно делать следующий шаг - перенести буфер во флеш. Для начала - хотя бы во внутреннюю флеш процессора.
Не знаю как для STM32, но по LPC могу сказать что внутренняя флеш - не лучший выбор:
1. На порядок меньший ресурс перезаписи по сравнению с обычными SPI флеш.
2. Неудобный размер минимальных порций записи/стирания. И причём они разного размера.
3. Во время операций записи/стирания нельзя выполнять код из флеш. Соответственно если у вас в это время работает USB стек (и прочие ISR/задачи), то он
весь должен быть в ОЗУ.