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

 
 
> Выбор микроконтроллера
Visor
сообщение Jan 18 2009, 13:47
Сообщение #1


Местный
***

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



Есть устройство подключаемое к компьютеру через USB, периферии мизер (несколько входов/выходов). Сейчас реализовано на AT90USB128. И всё бы хорошо, да производительности маловато, SRAM бы побольше (сейчас 8KБ), и цена у чипа не мала.
По сему стал задумываться о переходе на другую платформу. Опыта работы с ARM нет, но чувствую пора начинать.
Посоветуйте на какой чип лучше перейти, в свете вышеуказанных требований. Хорошо бы в минимальнопиновом корпусе.

PS
Забыл совсем, ещё EEPROM нужна, не менее 4КБ.
Go to the top of the page
 
+Quote Post
3 страниц V   1 2 3 >  
Start new topic
Ответов (1 - 32)
vvvv
сообщение Jan 18 2009, 14:17
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 256
Регистрация: 3-05-05
Из: г. Волжский
Пользователь №: 4 714



А USB FullSpeed устраивает, или нужен HighSpeed.
Go to the top of the page
 
+Quote Post
Visor
сообщение Jan 18 2009, 14:49
Сообщение #3


Местный
***

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



Цитата(vvvv @ Jan 18 2009, 21:17) *
А USB FullSpeed устраивает, или нужен HighSpeed.

Да, 12 Mbit/s вполне.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jan 18 2009, 18:03
Сообщение #4


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



А много-ли сейчас дешёвых армов с таким кол-вом eeprom? Если вообще есть...
Почему-бы не попользовать внешнюю eeprom в so8? Тогда выбор будет пошире smile.gif
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 18 2009, 21:16
Сообщение #5


Гуру
******

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



Цитата(sonycman @ Jan 18 2009, 20:03) *
Почему-бы не попользовать внешнюю eeprom в so8?



Вот именно, особенно с учетом небезграничного ресурса. Из встроенной имеет место быть пару килобайт под батарейкой у LPC.  


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


Местный
***

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



Цитата(sonycman @ Jan 19 2009, 01:03) *
А много-ли сейчас дешёвых армов с таким кол-вом eeprom? Если вообще есть...

Вот как ... жаль ...

Цитата(sonycman @ Jan 19 2009, 01:03) *
Почему-бы не попользовать внешнюю eeprom в so8? Тогда выбор будет пошире smile.gif

Это лишний корпус, интерфейс, место на плате, цена, ...
Но самое важное, там хранятся переменные, доступа к которым из вне не должно быть.

Цитата(zltigo @ Jan 19 2009, 04:16) *
Вот именно, особенно с учетом небезграничного ресурса. Из встроенной имеет место быть пару килобайт под батарейкой у LPC.

Да ресурса в 100000 перезаписей за глаза.
Возможно удастся ужаться в 2КБ.
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Jan 19 2009, 05:28
Сообщение #7


.
******

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



У LPC много обычной флэш со 100К перезаписями. Страницами от 4К. Нет восможности побайтового программирования, но можно копировать во внутреннюю раму, исправлять байты и перезаписывать обратно. Благо и рамы много.


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


Участник
*

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



У LPC программная flash имеет ресурс 100000, поэтому необходимости в EEPROM, особой не видно.
Go to the top of the page
 
+Quote Post
Visor
сообщение Jan 19 2009, 06:01
Сообщение #9


Местный
***

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



Цитата(GetSmart @ Jan 19 2009, 12:28) *
У LPC много обычной флэш со 100К перезаписями. Страницами от 4К. Нет восможности побайтового программирования, но можно копировать во внутреннюю раму, исправлять байты и перезаписывать обратно. Благо и рамы много.

А сколько времени занимает запись страницы?
И я сказал 100000 перезаписей достаточно с учётом того, что используется кольцевой буфер, т.е. на самом деле каждая переменная имеет ресурс перезаписей на несколько порядков больше.
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Jan 19 2009, 06:13
Сообщение #10


.
******

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



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


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


Местный
***

Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527



Цитата(Visor @ Jan 19 2009, 08:00) *
Но самое важное, там хранятся переменные, доступа к которым из вне не должно быть.

Внешняя еепром, криптование и ключ во внутренней флеши не подойдет? Места 8 ногий soic занимает не так и много. Стоит совсем дешево. При частых изменениях можно поставить FRAM, заодно скорость записи сильно подрастет.
Go to the top of the page
 
+Quote Post
Visor
сообщение Jan 19 2009, 06:30
Сообщение #12


Местный
***

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



Цитата(Qwertty @ Jan 19 2009, 13:16) *
Внешняя еепром, криптование и ключ во внутренней флеши не подойдет?

Сделать то можно, но городить такой огород вместо простого чтения/записи ... да и крипт/декрипт данных туда-сюда займёт не мало времени.
Оставлю этот вариант на крайний случай. smile.gif
Go to the top of the page
 
+Quote Post
Visor
сообщение Jan 19 2009, 17:57
Сообщение #13


Местный
***

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



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

Что-то я не понял как это. В описании написано: копирование из RAM во flash блоками по 256 | 512 | 1024 | 4096 байт.
Ткните носом пожалуйста. unsure.gif
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Jan 20 2009, 11:46
Сообщение #14


.
******

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



Цитата(Visor @ Jan 19 2009, 23:57) *
Что-то я не понял как это. В описании написано: копирование из RAM во flash блоками по 256 | 512 | 1024 | 4096 байт.
Ткните носом пожалуйста. unsure.gif

Честно скажу, сам не проверял, но в 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 байт.


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


Гуру
******

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



Цитата(GetSmart @ Jan 20 2009, 13:46) *
Принцип простой.



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


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
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
Visor
сообщение Jan 30 2009, 05:50
Сообщение #31


Местный
***

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



А что будет, если во время записи страницы отключится питание?
Go to the top of the page
 
+Quote Post
scifi
сообщение Jan 30 2009, 06:54
Сообщение #32


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(Visor @ Jan 30 2009, 08:50) *
А что будет, если во время записи страницы отключится питание?

Вероятно, некоторые биты могут записаться не до конца. В таком случае при чтении ошибка скорее всего отловится при помощи ECC. Причём проблемы могут начаться не сразу, а через некоторое время.
Go to the top of the page
 
+Quote Post
Visor
сообщение Jan 30 2009, 11:38
Сообщение #33


Местный
***

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



Цитата(scifi @ Jan 30 2009, 13:54) *
Вероятно, некоторые биты могут записаться не до конца.

Как вообще происходит запись на низком уровне, побайтно, ...? Сколько байт может испортится?
Нужна диагностика этой ситуации.
Когда пишешь сам и побайтно, известно где и сколько писал, обработать бракованные ячейки весьма просто, а когда пишешь сразу сотни байт ... (точнее в данном контексте реально пишутся 16 байт, остальные ff)
Go to the top of the page
 
+Quote Post

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

 


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


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