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

 
 
 
Reply to this topicStart new topic
> IAP, что-то уже не вкуриваю
toweroff
сообщение Jun 25 2009, 23:04
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



камень LPC2103

По даташиту - 8 секторов по 4Кб

Нужно изменить пару констант, расположение указано явно в последнем секторе. Там же есть скомпиленный кусок кода, который не участвует в процедуре вызова IAP подпрограмм
Для перезаписи с изменениями констант нужно ли выполнять стирание сектора с предварительным копированием его содержимого в RAM, потом корректировать константы в RAM, после чего записать весь сектор целиком, или достаточно записать те несколько байт по адресу размещения константы без стирания сектора?

Мог бы записать и весь сектор, но копировать некуда - не осталось набортного ОЗУ в достаточном количестве, да и никакого механизма для внешней памяти в устройстве не предусмотрено sad.gif
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Jun 25 2009, 23:24
Сообщение #2


.
******

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



Можно писать поверх если:
Нужно сбросить еденичные биты в ноль в 16-байтных блоках. Например можно записать поверх 0xff любой другой байт. Если изначально весь блок 16 байт (выравненный по адресу 16) был заполнен 0xff,...,0xff, то можно его перезаписать в любое другое состояние. Если же хотя бы один бит из 16 байт не был еденицей (чистым), то уже нельзя такой блок менять без стирания всего сектора (8 кБ). Стирая сектор его ессно нужно весь скопировать в раму, а потом стереть сектор. Либо можно ещё скопировать один сектор в другой сектор с очень небольшим буфером в раме.
Причина редактирования: Ненужное цитирование.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
toweroff
сообщение Jun 26 2009, 18:26
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(GetSmart @ Jun 26 2009, 03:24) *
Можно писать поверх если:
Нужно сбросить еденичные биты в ноль в 16-байтных блоках. Например можно записать поверх 0xff любой другой байт. Если изначально весь блок 16 байт (выравненный по адресу 16) был заполнен 0xff,...,0xff, то можно его перезаписать в любое другое состояние. Если же хотя бы один бит из 16 байт не был еденицей (чистым), то уже нельзя такой блок менять без стирания всего сектора (8 кБ). Стирая сектор его ессно нужно весь скопировать в раму, а потом стереть сектор. Либо можно ещё скопировать один сектор в другой сектор с очень небольшим буфером в раме.


то есть стандартная ситуация с flash... попробую перегруппировать буферные данные, может спасет.. спасибо
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 1st July 2025 - 18:07
Рейтинг@Mail.ru


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