Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Дозапись данных во flash LPC2XXX при помощи IAP
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
e-not
В ОЗУ выделяем блок памяти размером 256|512|...байт и изначально заполняем его 0xFF.
Контроллер получает какие-то данные и записывает их в начале этого блока. После этого весь блок
записывается во flash средствами IAP. Следующие данне записываются в блок ОЗУ сразу после предыдущих и весь блок ОЗУ снова записывается во flash на то же место. И так далее до заполнения блока. После-переход на следующий блок flash и т.д.
Можно, конечно, дождаться заполнения всего блока ОЗУ и записать сразу все, но в некоторых случаях такой способ может быть актуальным (пропадание питания).
На LPC2138 вроде работает, но длительных наблюдений не проводилось. Не приведет-ли это к сокращению ресурса flash, ошибкам данных и прочим нехорошим последствиям?
Romario
это стандартный (обычный) алгоритм записи в память с ограниченным ресурсом и секторной организацией с целью увеличения ресурса энозу. Ресурс сектора флэшки (как обычно) уменьшается на 1 при стирании всего сектора. А записывать в него до стирания можно чего угодно и сколько угодно
(с некоторой поправкой которая всем известнаsmile.gif
собственно сказать больше нечегоsmile.gif
zltigo
Цитата(e-not @ Mar 1 2006, 09:57) *
Не приведет-ли это к сокращению ресурса flash, ошибкам данных и прочим нехорошим последствиям?

Отчего-же это "не приведет"? Чем чаще будете пользоваться, тем вероятнее и приведет.
Попробуйте повесить на I2C/SPI флешку - по крайней мере процессор жив в случае чего останется
и сможет рассказать. Заодно избавитесь (или все равно?) от немалых IAPовских
задержек при выпрыгивании-возвращении и записи.
Igor657
Сомневаюсь, что удастся дозаписывать сектор без его стирания.
Вариант применим, только если пользаваться им не часто, например для сохранения настроек прибора.
Все-таки у flash ресурс не велик.
Для частой записи я использую внешнюю SPI EEPROM AT25256 (размеры не велики, побайтная запись)
Может и Вам подойдет.

Удачи !
AlexPo
Хотелось бы уточнить: надо ли при IAP останавливать PLL в LPC2138?
zltigo
Цитата(AlexPo @ Apr 18 2006, 12:54) *
Хотелось бы уточнить: надо ли при IAP останавливать PLL в LPC2138?

Формально для "старых LPC" декларировалась зависимость от версии загрузчика.
Для LPC2138 в errata уже не поминалось никогда.
А что, трудно остановить для совместимости со всем и вся? Или время пытаемся экономить?
AlexPo
Цитата(zltigo @ Apr 18 2006, 14:07) *
Цитата(AlexPo @ Apr 18 2006, 12:54) *

Хотелось бы уточнить: надо ли при IAP останавливать PLL в LPC2138?

Или время пытаемся экономить?


Честно говоря я об этом не подумал. Для начала мне хотелось бы определённости. Как следует из UM, в качестве параметров в командах Copy RAM to Flash и Erase необходимо задавать CCLK (System Clock Frequency), что косвенно говорит о том, что PLL останавливать не надо. Честно говоря, я предполагал, что эта частота нужна IAP только для того, чтобы сформировать требуемые тайминги для операций с Flash, но длительности операций не зависят от частоты и является постоянной. Вы же своим вопросом утверждаете, что длительность операций с Flash тем меньше, чем выше системная частота. Правильно ли я Вас понял?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.