|
|
  |
Mega128 - самопроизвольная установка Lock Bits, Ситуация странная, программатор не дает изменить |
|
|
|
Nov 18 2008, 13:18
|
Местный
  
Группа: Свой
Сообщений: 266
Регистрация: 8-12-05
Пользователь №: 11 964

|
Доброго всем времени суток!
У меня с одной из плат случилась небольшая заминка, объяснить которую я не могу. Плата некоторое время была у заказчика (соответственно, там никакой информации о неправомерных действиях не вытрясти). Сейчас забрали ее назад, все прекрасно работает, но как только начал пользоваться своим загрузчиком, обнаружил, что он реагирует на команды, демонстрирует процесс прошивки, но ничего во флэш не прошивает. Проверка Lock Bits выяснила, что стоит запрещение использования SPM/LPM как в секции кода, так и в секции бутлоадера. Мемори лок не установлен, поэтому программа шьется через JTAGICE нормально (LockBit=0xC3). Попытка изменить локи ни к чему не приводит, JTAGICE пробует это сделать, но безуспешно. Как я мог изменить их раньше - тоже не знаю, подозреваю, что это произошло у заказчика. Плата единственная в своем роде, до сих пор с подобным поведением не сталкивался, загрузчик работал без вопросов. С чем может быть связано такое поведение? Отчего установились локи? Может быть, кто-то уже встречал подобное??? Спасибо за ответы!!!
|
|
|
|
|
Nov 18 2008, 13:28
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(Polaris @ Nov 18 2008, 15:18)  Плата единственная в своем роде, до сих пор с подобным поведением не сталкивался, загрузчик работал без вопросов. Два варианта, (даже три) 1. Битый проц. 2. Сами залочили и забыли. 3. Если заказчик от нее отказался, то вероятно скопировал и залочил  Цитата Попытка изменить локи ни к чему не приводит, JTAGICE пробует это сделать, но безуспешно Локи менять нельзя их можно только стереть командой Chip-Erase.
|
|
|
|
|
Nov 18 2008, 13:34
|
Знающий
   
Группа: Свой
Сообщений: 543
Регистрация: 22-10-05
Пользователь №: 9 984

|
проверить локи может и сама программа ,доработайте ее и проблемы отпадут само собой. Цитата(Polaris @ Nov 18 2008, 16:18)  Попытка изменить локи ни к чему не приводит, JTAGICE пробует это сделать, но безуспешно. Как я мог изменить их раньше - тоже не знаю, подозреваю, что это произошло у заказчика. Изменить локи ,можно только к большей защите .читаем даташит. Или стереть ,на...г все.
|
|
|
|
|
Nov 18 2008, 14:01
|
Местный
  
Группа: Свой
Сообщений: 266
Регистрация: 8-12-05
Пользователь №: 11 964

|
Цитата(bodja74 @ Nov 18 2008, 15:34)  проверить локи может и сама программа ,доработайте ее и проблемы отпадут само собой. Изменить локи ,можно только к большей защите .читаем даташит. Или стереть ,на...г все.  О, действительно, тормознул  Локи снял. Но вот почему они установились?? Локи проверить-то можно, но снять-то их программно с сохранением загрузчика вряд ли получится, так что эффекта от этого не будет  Цитата(defunct @ Nov 18 2008, 15:28)  Два варианта, (даже три) 1. Битый проц. 2. Сами залочили и забыли. 3. Если заказчик от нее отказался, то вероятно скопировал и залочил  Локи менять нельзя их можно только стереть командой Chip-Erase. 1 - возможно 2 - вряд ли, уж очень странное распределение 3 - вряд ли, квалификация не позволит залезть, да и смысла нет А за подсказку со стиранием - спасибо
|
|
|
|
|
Nov 18 2008, 14:24
|
Знающий
   
Группа: Свой
Сообщений: 543
Регистрация: 22-10-05
Пользователь №: 9 984

|
Цитата(Polaris @ Nov 18 2008, 17:01)  О, действительно, тормознул  Локи снял. Но вот почему они установились?? Без "нужных" локов ,не запускаем програму ,я про это имел ввиду. У вас программа изначально не запустится. Цитата Локи проверить-то можно, но снять-то их программно с сохранением загрузчика вряд ли получится, так Я электронщик ,а не экстрасенс,и не верю в случайности ,и можно в такой ситуации или обвинить себя или заказчика ,как исключить себя из такой ситуации ,я написал выше.
|
|
|
|
|
Nov 18 2008, 14:55
|

Просто Che
    
Группа: Свой
Сообщений: 1 567
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881

|
Цитата(Polaris @ Nov 18 2008, 15:18)  ... Проверка Lock Bits выяснила, что стоит запрещение использования SPM/LPM как в секции кода, так и в секции бутлоадера. Мемори лок не установлен... ...Как я мог изменить их раньше - тоже не знаю, подозреваю, что это произошло у заказчика. ...С чем может быть связано такое поведение? Отчего установились локи? ... Если я правильно понял ваше сообщение, то перед передачей плат заказчику, лок-биты на плате не были установлены, а после получения плат назад - были. Если это так, то вполне вероятно, что лок-биты прошил сам МК при сбое программы. Как раз те лок-биты, что у вас активировались (BLB12 BLB11 BLB02 BLB01) можно самопрограммировать. А биты, которые остались целы (LB2 LB1) самопрограммировать нельзя. Делайте выводы. Или на плате проблемы с питанием, или высока вероятность появления больших импульсных помех по питанию, или не включен brown-out reset... Хотя, сама возможность самопрограммирования лок-битов, даже при наличии всех механизмов защиты, не позволяет со 100% уверенностью исключить самопроизвольную возможность их взведения
|
|
|
|
|
Nov 18 2008, 22:23
|
Местный
  
Группа: Свой
Сообщений: 266
Регистрация: 8-12-05
Пользователь №: 11 964

|
Цитата(VDG @ Nov 18 2008, 18:26)  А вот попробовать на "а вдруг..?" и потыркать на галочки в программаторе ума у него вполне хватит. К Вам что никогда не обращались "посмотреть считать"? У заказчика есть исходники, причем на Си, программатора у них нет, так что это очень маловероятно. Смотреть там ну абсолютно нечего было. Цитата(Baser @ Nov 18 2008, 16:55)  Если я правильно понял ваше сообщение, то перед передачей плат заказчику, лок-биты на плате не были установлены, а после получения плат назад - были. Если это так, то вполне вероятно, что лок-биты прошил сам МК при сбое программы. Как раз те лок-биты, что у вас активировались (BLB12 BLB11 BLB02 BLB01) можно самопрограммировать. А биты, которые остались целы (LB2 LB1) самопрограммировать нельзя. Делайте выводы. Или на плате проблемы с питанием, или высока вероятность появления больших импульсных помех по питанию, или не включен brown-out reset... Хотя, сама возможность самопрограммирования лок-битов, даже при наличии всех механизмов защиты, не позволяет со 100% уверенностью исключить самопроизвольную возможность их взведения  Да, биты точно установлены не были, перед отправкой платы прошли контроль загрузки новой версии, все прошло нормально. Да, я почитал только что даташит по меге128, действительно программно можно установить только эти биты, это хорошая зацепка. Но вот по поводу ресета - это странно, потому что включен как внутренний brown-out, так и внешний супервизор стоит...
|
|
|
|
|
Feb 17 2009, 21:50
|
Местный
  
Группа: Свой
Сообщений: 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В, чего ему не хватает??? Нестабильности работы платы ранее замечено не было, не в режиме обновления прошивки все работает без сбоев. Заранее спасибо!!
|
|
|
|
|
Feb 18 2009, 07:46
|
Местный
  
Группа: Свой
Сообщений: 266
Регистрация: 8-12-05
Пользователь №: 11 964

|
Цитата(defunct @ Feb 18 2009, 00:28)  Мало данных. 1. Та же самая плата или в этот раз другая >> Произошло это при заливании прошивки из-под IAR при помощи JTAGICE (копия). 2. При заливании или после (напр откл/вкл питания)? Плата уже другая. Думаю, что JTAGICE уже не при чем, в прошлый раз это явление обнаружилось после того, как несерийная плата вернулась, и я начал с ней работать отладчиком, думаю, что там локи установились в процессе обновления, но так как обновление было завершено, ничего страшного не случилось, в этот раз обновление было прервано, в итоге заметить явление удалось раньше. С чем связан сбой - не знаю, у меня этот загрузчик пишется в процессе тестирования свежей платы, после чего пишется через него прошивка, этот процесс проводился уже как минимум пару сотен раз, еще какое-то количество раз переписывал прошивку с помощью загрузчика, ни одного сбоя замечено не было. Хотя, возможно, какие-то платы оказались залочеными, тут я не могу быть уверенным.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|