Во-первых, еще раз проверьте техническое описание устройства. Обычно устройства Spansion позволяют иметь размер страницы 64 КБ вместо 256 КБ. Это может помочь вам, а может и не помочь, но в целом вам поможет повышенная степень детализации.
Во-вторых, вы не можете избежать цикла «стереть перед записью», когда вы хотите изменить биты с 0 на 1. Однако вы всегда можете изменить биты с 1 на 0 побайтно.
Вы можете либо переосмыслить свою текущую 3-байтовую структуру, чтобы увидеть, пригодится ли она вам, либо перейти к структуре размером 32 байта (которая является степенью 2 и, таким образом, немного более разумной IMO). Затем, чтобы удалить, вы можете просто установить первый байт на 0x00 из 0xFF, в который будет установлен обычный стертый байт. Это означает, что у вас останутся пустые слоты.
Подобно тому, как работает сборщик мусора, вы можете затем реорганизовать, чтобы переместить любые страницы, на которых были удалены блоки, так, чтобы вы создавали пустые страницы (полные удаленных блоков). Убедитесь, что вы переместили хорошие блоки на пустую страницу, прежде чем удалять их с исходной страницы! Затем вы можете стереть пустую страницу, которая была заполнена удаленными или реорганизованными блоками.
Когда вы работаете с флэш-памятью, вы должны продумать свою стратегию чтения / стирания / записи для работы с имеющейся у вас флэш-памятью. Определенно проработайте это до того, как вы начнете кодировать или блокировать структуры памяти, потому что обычно вам нужно зарезервировать хотя бы один байт в качестве байта действительности, и обычно вы должны воспользоваться тем фактом, что вы всегда можете изменить биты, которые установлены на От 1 до 0 в любом байте в любое время без цикла стирания.
person
Brian Sidebotham
schedule
01.12.2014