Я получил неправильно подписанный ATmega328-PU. Как я могу это исправить?

12

Когда-то в прошлом я записывал загрузчики на свежую партию из четырех ATmega328-PU, используя Arduino IDE (обратите внимание, что после 328 нет P - это немного более дешевая версия MCU без пикоэнергетики, не путать с ATmega328P- PU с буквой P ), и был удивлен следующим сообщением от avrdude:

avrdude: Device signature = 0x1e950F 
avrdude: Expected signature for ATMEGA328 is 1E 95 14 
Double check chip, or use -F to override this check. 

Это означает, что avrdude думал, что чип не соответствует тому, что написано на его этикетке. Затем я изменил тип микросхемы в своей Arduino IDE на ATmega328P-PU и avrdude без проблем сжег загрузчик. Это означает, что микросхема была помечена как один MCU, а внутри она реагировала как другая, немного отличающаяся.

То, что я хотел бы знать, это:

  • Как редко это событие? У кого-нибудь был подобный опыт? ( Оригинальный вопрос, не по теме )

  • Можно ли это исправить? Как исправить подпись, чтобы avrdude правильно распознал чип?

Это кросс-пост из EE.SE . Я разместил этот вопрос там, но не привлек большого внимания, поэтому я хотел посмотреть, есть ли у кого-то из нашего сообщества подобный опыт.

Рикардо
источник
1
Похоже, ваш поставщик просто пометил некоторые 328P (что и представляет эта подпись) как 328.
микротерион

Ответы:

4

Просматривая sparkfun, я нашел несколько новостных постов, которые показывают их борьбу с ошибочно помеченными чипами. Вот некоторые из них:

Sparkfun получил сомнительную посылку, если IC от нового продавца в Китае. Они решили проверить их перед отправкой в ​​производство, и ни одна из их тестовых плат не работала. Используя азотную кислоту, они смогли снять корпус микросхем и получить металл, похожий на медь.

В другой статье они проанализировали некоторые подозрительные ИС от Atmel и обнаружили внутри полупроводниковую кремниевую пластину. Чипы не были функциональными ATmegas, но они имели кремний, в отличие от других.

Доктор
источник
3
Можете ли вы конкретизировать этот ответ немного? Обобщение статей, на которые вы ссылаетесь, было бы хорошим началом - прямо сейчас, если по какой-то причине спаркфун выйдет из строя, ваш ответ будет бесполезным.
Shog9
@ Shog9 Почему? Вопрос далеко от базы. Этот ответ является кратким описанием случаев, когда люди получают ошибочно маркированные чипы (по сути, люди делятся опытом ). Кто это поможет?
asheeshr
Я мог бы спросить вас то же самое, @AsheeshR - зачем беспокоиться об ответе, когда вопрос в проблеме? В любом случае, спасибо за добавление деталей, TheDoctor.
Shog9
3

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

В любом случае способ установки байтов подписи контроллера заключается в следующем (не проверено, у меня нет запасного AVR):

avrdude -p atmega328 -c arduino -P /dev/ttyUSB003 -b 19200 -v -U signature:w:0x1E,0x95,0x14:m
jippie
источник
2
Я знаю, что это очень поздно, но я не думаю, что это хорошая идея, чтобы оставить этот аргумент без ответа: подпись на atmega328 недоступна для записи, и, насколько мне известно, подпись не доступна для записи на ЛЮБОЙ atmega или ATtiny.
микротерион
2
Из интереса я попробовал вышеуказанный подход, который avrdude принял в некотором смысле: avrdude: writing signature (3 bytes)- однако он не смог этого сделать:avrdude: verification error, first mismatch at byte 0x0002: 0x14 != 0x0f
Ник Гэммон