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

 
 
> Mega128 - самопроизвольная установка Lock Bits, Ситуация странная, программатор не дает изменить
Polaris
сообщение Nov 18 2008, 13:18
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 266
Регистрация: 8-12-05
Пользователь №: 11 964



Доброго всем времени суток!

У меня с одной из плат случилась небольшая заминка, объяснить которую я не могу. Плата некоторое время была у заказчика (соответственно, там никакой информации о неправомерных действиях не вытрясти). Сейчас забрали ее назад, все прекрасно работает, но как только начал пользоваться своим загрузчиком, обнаружил, что он реагирует на команды, демонстрирует процесс прошивки, но ничего во флэш не прошивает. Проверка Lock Bits выяснила, что стоит запрещение использования SPM/LPM как в секции кода, так и в секции бутлоадера. Мемори лок не установлен, поэтому программа шьется через JTAGICE нормально (LockBit=0xC3).
Попытка изменить локи ни к чему не приводит, JTAGICE пробует это сделать, но безуспешно. Как я мог изменить их раньше - тоже не знаю, подозреваю, что это произошло у заказчика.
Плата единственная в своем роде, до сих пор с подобным поведением не сталкивался, загрузчик работал без вопросов.
С чем может быть связано такое поведение? Отчего установились локи? Может быть, кто-то уже встречал подобное???
Спасибо за ответы!!!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Polaris
сообщение Feb 17 2009, 21:50
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 266
Регистрация: 8-12-05
Пользователь №: 11 964



Доброго всем времени суток!
Сегодня снова получил плату с залоченным содержимым. Ситуация туманная, поэтому опишу подробнее - на изделии стоит самописный загрузчик для обновления прошивки, загрузчик не привязан к бут-области, но физически находится там (если совсем точно - в самом низу флэша, сверху него находится прошивка), для уменьшения размера прошивки в IAR включена максимальная оптимизация, загрузчик имеет размер в 3 страницы для Mega128 (768 байт), еще одна страница непосредственно под ним предназначена для хранения первой страницы прошивки (думаю, это не особо важно). Я полагаю, что залочивание контроллера происходит при заливке новой прошивки в результате какого-то сбоя. Просмотрев код, сгенерированный IAR, вижу, что он выделил участки записи вот в таком виде:
LDI R30, 0x00
LDI R31, 0x00
OUT RAMPZ, R30
STS SPMCSR, R16
SPM
на них передаются данные, в том числе и в регистре R16. Если произошел сбой и переход на этот адрес, а содержимое R16 не определено, то очевидно, может произойти и запись мусора в регистр локов.
Если снизить уровень оптимизации, то он в явном виде помещает в R16 нужное значение (0x01, 0x03 или 0x05 в зависимости от операции, локи я в загрузчике никак не меняю, так что 0x09 взяться неоткуда), думаю, тут никакой сбой не страшен.
То есть, думаю, что причина самоустановки локов - именно в результате перехода на этот участок при непонятном сбое микроконтроллера. Теперь вопрос - чем может быть вызван такой переход?? БОД в контроллере установлен, есть внешний супервизор на 4,6В, чего ему не хватает??? Нестабильности работы платы ранее замечено не было, не в режиме обновления прошивки все работает без сбоев.
Заранее спасибо!!
Go to the top of the page
 
+Quote Post



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

 


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


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