|
Параллельная флешь. Программирование и polling., Atmel AT49BV162AT. |
|
|
|
Apr 25 2006, 06:32
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
Может не в тот форум попал, но более подходящего не нашел, т.ч. не обессудьте.  Вопрос следующий: вот есть параллельная флешка AT49BV162AT от Atmel, микросхема хорошая, всем требованиям удовлетворяет, кроме одного нефатального, но досадного момента. Программирование флеши (как и стирание и другие режимы) реализуется путем подачи специальной цепочки адресов/данных (адрес 0х555, данные 0хаа, адрес 0хааа, данные 0х55 и т.д.) - это обычное дело для таких дивайсов. Время программирования ячейки (16-бит слова) типовое - 12 мкс, максимальное 200 мкс. Т.е. для гарантированной зашивки, если по времени, то надо ждать эти самые 200 мкс. Для оптимизации этого момента микросхема имеет режим поллинга, т.е. можно после посылки данных на программирование делать чтение и по определенным битам результата чтения определять, запрограммировалось ли слово или нет. И вот тут то и затаилась засада: выяснилось, что несмотря на поллинг некоторые данные пишутся с ошибками. Причем получается как бы порциями - блок из нескольких подряд данных пишется нормально, затем блок выпадает, затем опять нормально. Если сделать выход из режима программирования не по результату поллинга, а по времени, то все пишется, как часы, т.е. флешь сама нормальная. В случае стирания, например, сектора, окончание процесса стирания (там время заметное - порядка 0.3 секунд) определяется также с помощью аналогичного поллинга и тут вопросов нет, все замечательно работает. Если кто сталкивался с подобным и победил (или не победил  ), поделитесь опытом?
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
 |
Ответов
|
Apr 25 2006, 07:54
|
Гуру
     
Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250

|
А что про поллинг в datasheet написано? Он ведь может двояко работать - показывать, что алгоритм программирования выполнен, или что программуруемые биты начали опознаваться как 0. Во втором случае надо еще ждать некоторое время для гарантированного программирования. Можно, кончено, и экспериментально подобрать это время, но ядумаю, что если спецмально ничего не сказано, то алгроитм заканчивает работу через 200 мкс, и быстрее не предусмотрено. Остальное рекламный трюк.
--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
|
|
|
|
|
Apr 25 2006, 08:59
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
Цитата(DS_ @ Apr 25 2006, 14:54)  А что про поллинг в datasheet написано? Он ведь может двояко работать - показывать, что алгоритм программирования выполнен, или что программуруемые биты начали опознаваться как 0. Во втором случае надо еще ждать некоторое время для гарантированного программирования. Про это конкретно сказано: The AT49BV162A(T)/163A(T) features Data Polling to indicate the end of a program cycle. ... Once the program cycle has been completed, true data is valid on all outputs and the next cycle may begin. ... Т.е. конкретно сказано, что означает конец программирования. Другое, имхо, и не нужно - бесполезно оно. Пользователя интересует, когда можно начинать писать следующее слово, а не когда начало "проявляться" текущее. Цитата(DS_ @ Apr 25 2006, 14:54)  Можно, кончено, и экспериментально подобрать это время, но ядумаю, что если спецмально ничего не сказано, то алгроитм заканчивает работу через 200 мкс, и быстрее не предусмотрено. Остальное рекламный трюк. Да не похоже на рекламу - зачем оно им? А поллинг - нормальный способ определить конец программирования. Еще помню, когда году в 1998-м лепили самодельный программатор для AVR, там тоже использовали поллинг. Штатное время программирования было 4 мс, а с поллингом реально при 5 В получалось около 2.2 мс (это были старые чипы AT908515/2313/m103). Т.е. все работало. Что-то сомнительно, чтобы эта микруха работала неправильно - Атмел давно такие штуки делает, собаку уже съел. Что-то, боюсь, я недопонял, что-то не так сделал. А вот что, не пойму, вроде просто все.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
Сообщений в этой теме
dxp Параллельная флешь. Программирование и polling. Apr 25 2006, 06:32 Evgeny_CD Т.е. получается, что процедура поллинга "снос... Apr 25 2006, 06:43 dxp Цитата(Evgeny_CD @ Apr 25 2006, 13:43) Т.... Apr 25 2006, 08:49  DS_ Ну да, трактовка однозначная. А если пользоваться ... Apr 25 2006, 09:09   dxp Цитата(DS_ @ Apr 25 2006, 16:09) Ну да, т... Apr 25 2006, 09:40 appsoft А после записи, перед началом поллинга ждете некот... Apr 25 2006, 09:23 dxp Цитата(appsoft @ Apr 25 2006, 16:23) А по... Apr 25 2006, 09:56  DS_ Ну значит либо ошибка в доке, либо в алгоритме пол... Apr 25 2006, 12:18   dxp Цитата(DS_ @ Apr 25 2006, 19:18) Ну значи... Apr 26 2006, 08:42
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|