Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Чтение из последовательной флешки
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Схемотехника
elusive
Последовательные флешки типа sflash стирают только блоками и записывают страницами (размером поменьше).

А кто-нибудь знает, есть ли ограничения по чтению из такой флешки? Я могу считать любое количество байт с любого адреса, даже если блок чтения переходит через границу блоков?
aaarrr
Ограничений на чтение нет.
elusive
Цитата(aaarrr @ Jun 25 2013, 13:53) *
Ограничений на чтение нет.


Исходя из даташита я так и подумал.
Однако имею проблемы при считывании куска памяти с переходом границы блоков.

Записываю файл в два первых сектора (каждый по 256 страниц = 64к).
Считываю блоками по 8к начиная с адреса 12. То есть в какой-то момент один из блоков чтения перейдет границу секторов.

Вызывает подозрение считывание первых именно 12 байтов второго сектора.
При чтении напрямую с этих адресов все правильно как и записывали, а при чтении блоком 8к именно эти 12 байт выдают свое старое значение, которое было до последней записи. При этом после сброса питания "правильные" значения заменяются "старыми неправильными".

Почему-то после повторной записи того же самого файла в те же сектора уже все читается нормально, если не передергивать питание.
И почему-то запись другой информации, например, такого эффекта не дает.
aaarrr
Цитата(elusive @ Jun 25 2013, 12:33) *
При чтении напрямую с этих адресов все правильно как и записывали, а при чтении блоком 8к именно эти 12 байт выдают свое старое значение, которое было до последней записи.

Память на хранение двух значений по одному адресу точно не способна, так что ищите ошибку в ПО.
ViKo
Когда записывается, требуется много времени. На стирание. Можно сначала стереть, тогда записывается быстрее. Должен быть бит в статусе, отвечающий за состояние записи.
Скорее всего, ТС не дожидается окончания записи.
Читать же можно на максимально допустимой скорости, всё подряд.
elusive
Так, я похоже примерно понял в чем дело.
Функция чтения из этого драйвера делает дополнительную буферизацию одного какого-нибудь сектора и если в области нашего считывания попался буферизованный сектор, то он берется из внутреннего буфера, чтобы не тратить лишнее время на чтение из микросхемы.

Блин, это че за фича? Или плохо отслеживается запись секторов, что при обновлении части сектора буфер остается старый, или я не понимаю зачем такая фича нужна.
kolobok0
Цитата(elusive @ Jun 25 2013, 13:39) *
...Функция чтения из этого драйвера делает...


если Вы начинаете познавать мир электроники-программирования-мк, то рекомендую самому писать такую мелочёвку как "драйвера" под тот или иной интерфейс. Поверьте - в инете найти можно всё, но будет ли оно подходить вам или ещё круче - рабочим(и у автора(ов) могут быть затмения и ошибки) - вот в этом и закавыка.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.