PDA

Просмотр полной версии : Вопросы по Flash-ПЗУ



Vladimir_S
01.10.2013, 16:17
Конкретно меня интересует AT29C040 в режиме записи. Если я не правильно что то понял из даташита - просьба поправить.
1. Что бы перейти в режим программирования сектора, нужно провести следующие действия - записать по адресу 5555Н код АА, по адресу 2АААН код 55 и снова по адресу 5555Н код А0. А дальше начинаются вопросы - модификации подлежит весь сектор или можно изменить например одну ячейку без изменения остальных? Что бы перейти на другой сектор надо просто сменить адрес или надо повторить процедуру подготовки записи?
Есть еще куча вопросов, но пока для начала эти.

Дмитрий
01.10.2013, 16:29
Есть еще куча вопросов, но пока для начала эти.
Помнится, на форуме были исходники Flasher-а, там все это реализовано и можно подсмотреть.

Vladimir_S
01.10.2013, 16:31
Дмитрий, А в какой хоть теме?

Дмитрий
01.10.2013, 16:46
Vladimir_S, http://zx-pk.ru/showthread.php?t=3947&highlight=flasher, банально, но поиск рулит.

Vladimir_S
02.10.2013, 07:24
Судя по картинке из даташита адрес АСЗ выбирается адресами А8-А18. Так какой же фактический адрес А0-А18 (5555Н и 2АААН)?

HardWareMan
02.10.2013, 10:55
Все флешки соответствуют стандартам JEDEC (http://ru.wikipedia.org/wiki/JEDEC). Но есть и некоторые отличия: некоторые программируются постранично, некоторые побайтно. При этом стирание у обоих можно делать только поблочно. И усугубляется все это тем, что размер блока обычно больше страницы, а размер страницы больше байта. Так что только настоящий датащит может пролить свет на эти тонкости. Сам же алгоритм записи и стирания полностью одинаков для всех флешек из стандарта JEDEC. Конкретно по флешке ТС в датащите сказано:

4.3 Program
The device is reprogrammed on a sector basis. If a byte of data within a sector is to be changed, data for the entire sector must be loaded into the device. Any byte that is not loaded during the programming of its sector will be erased to read FFH. Once the bytes of a sector are loaded into the device, they are simultaneously programmed during the internal programming period.
Т.е. шить надо весь сектор. Если надо изменить 1 байт в секторе, то надо считать старый сектор, изменить нужный байт и залить обратно, согласно алгоритма JEDEC. Размер сектора указав в фичах:

Sector Program Operation
– Single Cycle Reprogram (Erase and Program)
– 2048 Sectors (256 Bytes/Sector)
– Internal Address and Data Latches for 256 Bytes

Vladimir_S
02.10.2013, 11:15
HardWareMan, У тебя есть исходник, где это все рулится через КР580ВВ55?

HardWareMan
02.10.2013, 12:14
Нет, но я делал свой, с карточными играми и девками легкого поведения.
http://savepic.su/3449246.png
Исходник в аттаче. Умеет байтовые и страничные флешки, а так же I2C и FWH через переходник. Расчленен лет 5 назад по причине покупки Тритона. Работает с любой терминалкой на скорости 19200. Для передачи данных использует XMODEM.

Vladimir_S
02.10.2013, 16:24
HardWareMan, Это так и должно быть?

HardWareMan
02.10.2013, 19:17
Да, я на плате перепутал порты. Программа была рабочая.

Vladimir_S
02.10.2013, 22:54
А, ну да, вот же -