Kiedyś paliłem bootloadery na nowej partii czterech ATmega328-PU za pomocą Arduino IDE (zauważ, że nie ma P po 328 - to nieco tańsza wersja MCU bez picopowera, nie mylić z ATmega328P- PU with P ), i był zaskoczony następującą wiadomością od avrdude:
avrdude: Device signature = 0x1e950F
avrdude: Expected signature for ATMEGA328 is 1E 95 14
Double check chip, or use -F to override this check.
Oznacza to, że avrdude uważał, że chip nie jest tym, co mówi jego etykieta. Następnie zmieniłem typ układu w moim Arduino IDE na ATmega328P-PU i avrdude spalił bootloader bez żadnych skarg. Oznacza to, że chip był oznaczony jako jeden MCU i wewnętrznie zareagował jako inny, nieco inny.
Chciałbym wiedzieć:
Jak rzadkie jest to wydarzenie? Czy ktoś miał podobne doświadczenie?( Oryginalne pytanie, nie na temat )Czy można to naprawić? Jak mogę naprawić podpis, aby avrdude poprawnie rozpoznał układ?
Jest to cross-post z EE.SE . Zadałem to pytanie, ale nie zwróciłem na to uwagi, więc chciałem sprawdzić, czy ktoś z naszej społeczności ma podobne doświadczenia.
Odpowiedzi:
Przeglądając Sparkfun, znalazłem kilka postów z wiadomościami, które pokazują ich walkę ze źle oznakowanymi żetonami. Tu jest kilka:
Sparkfun otrzymał wątpliwą przesyłkę, jeśli IC od nowego sprzedawcy w Chinach. Postanowili przetestować je przed wysłaniem do produkcji i żadna z ich płyt testowych nie działała. Używając kwasu azotowego, byli w stanie usunąć obudowę układów scalonych i znaleźć kawał metalu, który wyglądał jak miedź.
W innym artykule dokonali analizy podejrzanych układów scalonych firmy Atmel i znaleźli w środku półprzewodnikowy krzemowy opłatek. Chipy nie były funkcjonalne ATmegas, ale miały krzem, w przeciwieństwie do innych.
źródło
Nie jest to preferowany sposób naprawy rzeczy, a na pewno nie pierwsze rozwiązanie do rozważenia, ale można rozważyć zaprogramowanie bajtów podpisu. Przed podjęciem próby upewnij się, że naprawdę chcesz to zrobić, i sprawdziłeś, co jest konieczne, aby to cofnąć. Może to obejmować zmianę plików konfiguracyjnych na komputerze ...
W każdym razie sposób na ustawienie bajtów podpisu kontrolera jest następujący (nieprzetestowany, nie mam zapasowego AVR):
źródło
avrdude: writing signature (3 bytes)
- jednak to się nie udało:avrdude: verification error, first mismatch at byte 0x0002: 0x14 != 0x0f