Pull to refresh

Comments 9

Ох, довелось мне как-то с NAND Flash'ью столкнуться. Ещё со старой, где страницы по 512 байт + служебная область. Вот там дичь, так дичь. Допрограммировать страницу, как в NOR, нельзя. Причём, насколько помню, при попытке записать данные поверх они не сразу портятся, а со временем. Хорошо, что была файловая система YAFFS2, которая обо всём этом заботилась.

А это под силу только Senior Embedded разработчику.

Программировать програамы могут не только лишь все? Уж очень пафосно получилось.

 SD карта сама на аппаратном уровне делает равномерный износ, плюс можно файлы докидывать и разбирать прямо на PC.

Такие SPI-NOR Flash ставят только когда конструктив гаджета не позволяет вывести на улицу разъем для SD карты. Например надо чтобы вода и песок не попадали на PCB.

Чтобы не попал песочек есть EMMC. А норки ставят когда нужно дешево в производстве.

Программировать програамы могут не только лишь все? 

Пробовать никто не мешает.

Поддерживаю. Но ещё бы добавил:

SD карта сама на аппаратном уровне делает равномерный износ

Далеко не каждая SDшка имеет алгоритмы для выравнивания износа. А те которые имеют стоят гораздо дороже обычного ширпотреба.

Интересно, как это определить? Или просто карты уровня Endurance (или ещё хуже -- Industrial) уже с такой фичей, а остальные без этого?

Типо того, нужно спеку читать. У нас много устройств которые логи пишут, даже не очень много логов, в итоге сдшки выходили из строя за единицы месяцев. Приходилось искать более надёжные и с алгоритмами балансировки износа. В итоге совсем от них отказались.

На многих (почти всех) консюмерских картах в спеках такой информации нет, поэтому и стало интересно.

По идее на те же Endurance я пишу почти каждый день уже больше года без проблем. Но я всё равно не видел подтверждения о том, что там есть что-то. Могу только предположить, но не подтвердить.

Описания, как и сами неприятности два и три неверны. Вот кусок текста из даташита.

The last address byte (the 8 least significant address bits, A7-A0) should be set to 0 for 256 bytes page program. If A7-A0 are not all zero, transmitted data that exceed page length are programmed from the starting address (24-bit address that last 8 bit are all 0) of currently selected page. If the data bytes sent to the device exceeds 256, the last 256 data byte is programmed at the request page and previous data will be disregarded.

Младший байт адреса должен быть нулями только для записи страницы целиком. Если не нули, то количество байт не должно быть больше чем размер страницы + офсет.

Поясню на пальцах: внутри есть буфер на 256 байт, 8 битный счетчик принятых байтов. Когда передается адрес его младший байт устанавливает офсет внутри этого буфера. Соответственно если гнать поток байтов длиннее оставшегося места, то счетчик переполняется и считает с нуля, а данные пишутся в начало буфера.

Аналогично если попытаться записать сначала страницы больше 256 байт - данные перетрутся.

Адреса должны быть выравненными по 256 байт. Это значит, что 24 битные адреса, которые подают в SPI должны в младших 8 битах содержать нули.

неправда. нет такого.

автор чего-то недопонял. перед переходом на следущую страницу надо подать команду записи, а потом продолжыть писать на следущую страницу

Sign up to leave a comment.

Articles