|
Выбор микроконтроллера |
|
|
3 страниц
1 2 3 >
|
 |
Ответов
(1 - 32)
|
Jan 19 2009, 05:00
|

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

|
Цитата(sonycman @ Jan 19 2009, 01:03)  А много-ли сейчас дешёвых армов с таким кол-вом eeprom? Если вообще есть... Вот как ... жаль ... Цитата(sonycman @ Jan 19 2009, 01:03)  Почему-бы не попользовать внешнюю eeprom в so8? Тогда выбор будет пошире  Это лишний корпус, интерфейс, место на плате, цена, ... Но самое важное, там хранятся переменные, доступа к которым из вне не должно быть. Цитата(zltigo @ Jan 19 2009, 04:16)  Вот именно, особенно с учетом небезграничного ресурса. Из встроенной имеет место быть пару килобайт под батарейкой у LPC. Да ресурса в 100000 перезаписей за глаза. Возможно удастся ужаться в 2КБ.
|
|
|
|
|
Jan 19 2009, 05:31
|
Участник

Группа: Новичок
Сообщений: 45
Регистрация: 31-05-05
Пользователь №: 5 576

|
У LPC программная flash имеет ресурс 100000, поэтому необходимости в EEPROM, особой не видно.
|
|
|
|
|
Jan 19 2009, 06:01
|

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

|
Цитата(GetSmart @ Jan 19 2009, 12:28)  У LPC много обычной флэш со 100К перезаписями. Страницами от 4К. Нет восможности побайтового программирования, но можно копировать во внутреннюю раму, исправлять байты и перезаписывать обратно. Благо и рамы много. А сколько времени занимает запись страницы? И я сказал 100000 перезаписей достаточно с учётом того, что используется кольцевой буфер, т.е. на самом деле каждая переменная имеет ресурс перезаписей на несколько порядков больше.
|
|
|
|
|
Jan 19 2009, 06:16
|
Местный
  
Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527

|
Цитата(Visor @ Jan 19 2009, 08:00)  Но самое важное, там хранятся переменные, доступа к которым из вне не должно быть. Внешняя еепром, криптование и ключ во внутренней флеши не подойдет? Места 8 ногий soic занимает не так и много. Стоит совсем дешево. При частых изменениях можно поставить FRAM, заодно скорость записи сильно подрастет.
|
|
|
|
|
Jan 20 2009, 11:46
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(Visor @ Jan 19 2009, 23:57)  Что-то я не понял как это. В описании написано: копирование из RAM во flash блоками по 256 | 512 | 1024 | 4096 байт. Ткните носом пожалуйста.  Честно скажу, сам не проверял, но в User Manual на LPC213x (стр 222 из 270) написано Цитата When a sector of user’s Flash memory is erased, corresponding ECC bytes are also erased. Once an ECC byte is written, it can not be updated unless it is erased first. Therefore, for the implemented ECC mechanism to perform properly, data must be written into the Flash memory in groups of 4 bytes (or multiples of 4), aligned as described above. Щас проверю. Может и мне потом пригодится. Принцип простой. В раме держится минимальный буфер (окно) 256 байт. В нём непрограммирующиеся байты запоняются 0xff, а нужные как надо. Это похоже на маску. Потом вызывается IAP для программирования. Эта маска во флэше объединяется с уже прошитыми данными. Так друг за другом можно "прошивать" группы по 16 байт.
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Jan 20 2009, 13:34
|

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

|
Цитата(GetSmart @ Jan 20 2009, 20:18)  А перезапись - это запись нулей поверх едениц. Т.е. запись в ячейку флеш "0xff" эквивалентна не записи, и счётчик перезаписей ячейки 100000 - 1 = 100000? Цитата(GetSmart @ Jan 20 2009, 20:18)  Стирание - это отдельная операция. После того, как заполните весь сектор (32К допустим), потом стираете его целиком и пишете заново с начала. Это плохо, придётся стирать весь буфер, а у меня реализован алгоритм восстановления предыдущего значения в случае сбоя при записи текущего. На два буфера переходить чтоли ...
|
|
|
|
|
Jan 20 2009, 13:50
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(Visor @ Jan 20 2009, 19:34)  Т.е. запись в ячейку флеш "0xff" эквивалентна не записи, и счётчик перезаписей ячейки 100000 - 1 = 100000? Ага. Примерно так. Цитата Это плохо, придётся стирать весь буфер, а у меня реализован алгоритм восстановления предыдущего значения в случае сбоя при записи текущего. На два буфера переходить чтоли ... Берите два буфера (сегмента). Стирать можно только сектор целиком. В начале флэш там есть 7 свободных сегментов по 4К, не считая нулевой, в котором таблица исключений. А в 128К, 256К и 512К процах много сегментов по 32К.
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Jan 20 2009, 19:31
|
дятел
    
Группа: Свой
Сообщений: 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 байт. Ткните носом пожалуйста.  Насколько я ничего не понимаю, NXP просто не дал других вариантов нам юзерам... флеш точно можно писать по 16байт минимум, но описания как это делать, нет... можно конечно дизасемблировать их процедуру записи/стирания, но никто не гарантирует что процедура не изменится в будующем... тч минимум для записи это 256 байт
|
|
|
|
|
Jan 21 2009, 05:34
|

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

|
Цитата(singlskv @ Jan 21 2009, 02:31)  флеш точно можно писать по 16байт минимум, но описания как это делать, нет... можно конечно дизасемблировать их процедуру записи/стирания, но никто не гарантирует что процедура не изменится в будующем... тч минимум для записи это 256 байт Ясно. Но если мы можем писать блок 256 байт, в котором все "0xff" (не изменяется ничего) и нет проблем с ECC, то записывая блок 256 байт, в котором первый "0x00" и далее все "0xff" (пишем первый байт только) будут проблемы?
|
|
|
|
|
Jan 21 2009, 08:48
|

Местный
  
Группа: Свой
Сообщений: 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.
|
|
|
|
|
Jan 21 2009, 09:24
|
.
     
Группа: Участник
Сообщений: 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
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Jan 30 2009, 11:38
|

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

|
Цитата(scifi @ Jan 30 2009, 13:54)  Вероятно, некоторые биты могут записаться не до конца. Как вообще происходит запись на низком уровне, побайтно, ...? Сколько байт может испортится? Нужна диагностика этой ситуации. Когда пишешь сам и побайтно, известно где и сколько писал, обработать бракованные ячейки весьма просто, а когда пишешь сразу сотни байт ... (точнее в данном контексте реально пишутся 16 байт, остальные ff)
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|