реклама на сайте
подробности

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> Выбор микроконтроллера
GetSmart
сообщение Jan 20 2009, 12:42
Сообщение #16


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(zltigo @ Jan 20 2009, 18:19) *
Все именно так, только "непрограмирующиеся" можно и считать из Flash.

У меня была такая же мысль. Но! А кстати, этот алгоритм проверенный? Точно работает?

Но. Мне кажется, что многоразовое туннелирование заряда в уже прошитые затворы может снизить срок их службы. Честно скажу, не владею информацией о влиянии многоразового программирования на долговечнойсть ячейки флэш. Только ли стирание ячейки сокращает срок её службы? В то же время программирование ячеек значением 0xff не разрушает их с вероятностью 100%. С другой стороны, многократное перепрограммирование ячейки повышает долговечность хранимой информации. Но в данном случае этого не требуется.

Сообщение отредактировал GetSmart - Jan 20 2009, 12:45


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
Rst7
сообщение Jan 20 2009, 12:53
Сообщение #17


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата
Все именно так, только "непрограмирующиеся" можно и считать из Flash.


Лучше 0xFF. Тогда не будет жарить уже прожаренные ячейки. Вот только где я на это натыкался, уже не вспомню sad.gif


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 20 2009, 12:59
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(GetSmart @ Jan 20 2009, 14:42) *
У меня была такая же мысль. Но! А кстати, этот алгоритм проверенный? Точно работает?



Да, тут на форуме проблемы с 16 байтовостью как-то обсуждали и я писал тест. Работает.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Visor
сообщение Jan 20 2009, 13:01
Сообщение #19


Местный
***

Группа: Свой
Сообщений: 240
Регистрация: 23-03-07
Пользователь №: 26 428



Как я понял, наличие "0xff" (GetSmart) или "аналогичное" (zltigo) означает для IAP, что эту ячейку не следует перепрограммировать во флэш (как я понимаю: перезапись - это стирание + запись нового значения)?
Где это указано? В мануале никакого намёка нет.
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Jan 20 2009, 13:18
Сообщение #20


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(Visor @ Jan 20 2009, 19:01) *
Как я понял, наличие "0xff" (GetSmart) или "аналогичное" (zltigo) означает для IAP, что эту ячейку не следует перепрограммировать во флэш (как я понимаю: перезапись - это стирание + запись нового значения)?
Где это указано? В мануале никакого намёка нет.

Не. Стирание - это отдельная операция. После того, как заполните весь сектор (32К допустим), потом стираете его целиком и пишете заново с начала.
А перезапись - это запись нулей поверх едениц.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
Visor
сообщение Jan 20 2009, 13:34
Сообщение #21


Местный
***

Группа: Свой
Сообщений: 240
Регистрация: 23-03-07
Пользователь №: 26 428



Цитата(GetSmart @ Jan 20 2009, 20:18) *
А перезапись - это запись нулей поверх едениц.

Т.е. запись в ячейку флеш "0xff" эквивалентна не записи, и счётчик перезаписей ячейки 100000 - 1 = 100000?

Цитата(GetSmart @ Jan 20 2009, 20:18) *
Стирание - это отдельная операция. После того, как заполните весь сектор (32К допустим), потом стираете его целиком и пишете заново с начала.

Это плохо, придётся стирать весь буфер, а у меня реализован алгоритм восстановления предыдущего значения в случае сбоя при записи текущего. На два буфера переходить чтоли ...
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Jan 20 2009, 13:50
Сообщение #22


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(Visor @ Jan 20 2009, 19:34) *
Т.е. запись в ячейку флеш "0xff" эквивалентна не записи, и счётчик перезаписей ячейки 100000 - 1 = 100000?

Ага. Примерно так.

Цитата
Это плохо, придётся стирать весь буфер, а у меня реализован алгоритм восстановления предыдущего значения в случае сбоя при записи текущего. На два буфера переходить чтоли ...

Берите два буфера (сегмента). Стирать можно только сектор целиком. В начале флэш там есть 7 свободных сегментов по 4К, не считая нулевой, в котором таблица исключений. А в 128К, 256К и 512К процах много сегментов по 32К.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
Visor
сообщение Jan 20 2009, 14:21
Сообщение #23


Местный
***

Группа: Свой
Сообщений: 240
Регистрация: 23-03-07
Пользователь №: 26 428



Цитата(GetSmart @ Jan 19 2009, 13:13) *
Если очень-очень захотеть, то в LPC можно взять 32К страницу флэша и сделать в нём кольцевой буфер с элементами по 16 байт. Меньше нельзя, т.к. флэш там организована по 128 бит, для которых присутствуют дополнительные биты ECC (инфа для восстановления, типа Хэмминга)

А в серии LPC23xx об этом не упоминается, выходит нет этого ограничения.
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Jan 20 2009, 14:27
Сообщение #24


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Проверил программирование по 16 байт 0xFF. Работает как надо. Проблема могла быть в том, что для 16-ти байт 0xFF контрольные биты ECC могли быть не все еденичные. Но, как говорится, пронесло.

Цитата(Visor @ Jan 20 2009, 20:21) *
А в серии LPC23xx об этом не упоминается, выходит нет этого ограничения.

Не может быть. В юзер мануале не нашёл, но возможно забыли упомянуть. А вообще, лучше проверить на кристалле. У меня под рукой его нет.

Сообщение отредактировал GetSmart - Jan 20 2009, 14:38


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
singlskv
сообщение Jan 20 2009, 19:31
Сообщение #25


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(zltigo @ Jan 20 2009, 15:19) *
Все именно так, только "непрограмирующиеся" можно и считать из Flash.
то есть пишем только изменения ? если можем записать... иначе сттираем страницу и перезаписываем...
так ?


Цитата(Visor @ Jan 19 2009, 20:57) *
Что-то я не понял как это. В описании написано: копирование из RAM во flash блоками по 256 | 512 | 1024 | 4096 байт.
Ткните носом пожалуйста. unsure.gif
Насколько я ничего не понимаю,
NXP просто не дал других вариантов нам юзерам...
флеш точно можно писать по 16байт минимум, но описания как это делать, нет...
можно конечно дизасемблировать их процедуру записи/стирания, но никто не гарантирует что
процедура не изменится в будующем...
тч минимум для записи это 256 байт
Go to the top of the page
 
+Quote Post
Visor
сообщение Jan 21 2009, 05:34
Сообщение #26


Местный
***

Группа: Свой
Сообщений: 240
Регистрация: 23-03-07
Пользователь №: 26 428



Цитата(singlskv @ Jan 21 2009, 02:31) *
флеш точно можно писать по 16байт минимум, но описания как это делать, нет...
можно конечно дизасемблировать их процедуру записи/стирания, но никто не гарантирует что
процедура не изменится в будующем...
тч минимум для записи это 256 байт

Ясно.
Но если мы можем писать блок 256 байт, в котором все "0xff" (не изменяется ничего) и нет проблем с ECC, то записывая блок 256 байт, в котором первый "0x00" и далее все "0xff" (пишем первый байт только) будут проблемы?
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Jan 21 2009, 06:47
Сообщение #27


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(Visor @ Jan 21 2009, 11:34) *
Ясно.
Но если мы можем писать блок 256 байт, в котором все "0xff" (не изменяется ничего) и нет проблем с ECC, то записывая блок 256 байт, в котором первый "0x00" и далее все "0xff" (пишем первый байт только) будут проблемы?

Какие проблемы? Вполне корректно запишется первый байт нулём и обновится ECC для первых 16 байт. Из-за чего нельзя будет дописывать эти 16 байт. Но другие группы по 16 байт можно продолжать записывать. Можно даже прочитать флэшку и если в ней есть выравненные группы по 16 байт, то их запросто можно переписать не стирая сектор.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
Visor
сообщение Jan 21 2009, 08:48
Сообщение #28


Местный
***

Группа: Свой
Сообщений: 240
Регистрация: 23-03-07
Пользователь №: 26 428



Цитата(GetSmart @ Jan 21 2009, 13:47) *
Какие проблемы? ...

Я не корректно выразил свою мысль, имелось ввиду следующее:
во флеш имеем группу из 16-ти байт: 00,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff
пишем поверх: ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff , без проблем с ECC
но если пишем поверх: ff,00,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff , то получаем ошибку, почему? Если ECC формируется по результату записи, то проблем не должно быть, а если по записываемым данным, то проблемы должны быть и со всеми ff.
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Jan 21 2009, 09:24
Сообщение #29


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(Visor @ Jan 21 2009, 14:48) *
но если пишем поверх: ff,00,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff , то получаем ошибку, почему? Если ECC формируется по результату записи, то проблем не должно быть, а если по записываемым данным, то проблемы должны быть и со всеми ff.

Дело в том, что после первой записи ECC сбросит некоторые из своих бит в 0. Даже если во второй раз записать в следующий байт группы не затронув предыдущий первый байт, то ECC изменится и с большой вероятностью некоторые биты ECC изменятся с "0" на "1", а так как флэш это не допускает делать без стирания байта (в LPC только сектор целиком), то ECC приобретёт совершенно некорректное значение. После этого читая эти 16 байт в них будут случайные биты (немного, возможно 1, 2 или 3) искажены алгоритмом ECC. Хотя большая часть бит в 16-ти байтах будет похожа на записанные значения.

Сообщение отредактировал GetSmart - Jan 21 2009, 09:36


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
Visor
сообщение Jan 21 2009, 09:52
Сообщение #30


Местный
***

Группа: Свой
Сообщений: 240
Регистрация: 23-03-07
Пользователь №: 26 428



Цитата(GetSmart @ Jan 21 2009, 16:24) *
... а так как флэш это не допускает делать без стирания байта ...

Дошло. smile.gif

Раз физически минимальновозможный размер записываемых данных = 16 байт, почему бы производителю и не сделать возможность записи от 16 байт, и было бы всем хорошо. smile.gif
Go to the top of the page
 
+Quote Post

3 страниц V  < 1 2 3 >
Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 23:54
Рейтинг@Mail.ru


Страница сгенерированна за 0.01644 секунд с 7
ELECTRONIX ©2004-2016