Atmega328 avdude fuse bitek téves írása

Ha a chip nem reagál a programozóra...
Avatar
broland
Tranzisztorgyógyász
Hozzászólások: 152
Csatlakozott: 2009. április 20. hétfő, 6:00

Atmega328 avdude fuse bitek téves írása

Hozzászólás Szerző: broland »

Sziasztok

Szeretnék segítséget kérni a következőben:
avrdude-va ki akartunk olvasni egy chippet, sajnos isp-n keresztül.
a következőt követtük el a végén:

Kód: Egész kijelölése

avrdude.exe: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.11s

avrdude.exe: Device signature = 0x1e950f
avrdude.exe: reading flash memory:

Reading | ################################################## | 100% 27.30s

avrdude.exe: writing output file "d:/tmp/xxx.bin"

avrdude.exe: safemode: lfuse changed! Was ff, and is now 0
Would you like this fuse to be changed back? [y/n] n
avrdude.exe: safemode: hfuse changed! Was dc, and is now 0
Would you like this fuse to be changed back? [y/n] n
avrdude.exe: safemode: efuse changed! Was 5, and is now 0
Would you like this fuse to be changed back? [y/n] n
avrdude.exe: safemode: Fuses OK

avrdude.exe done.  Thank you.
Mint látható a végén minden fbit visszaírásra nemet mondtunk, azóta a chip nem válaszol, nem csinál semmit, nem látja semmi.

Éjszaka még sikerült ezt megcsinálni:

Kód: Egész kijelölése

avrdude.exe: Version 5.11, compiled on Sep  2 2011 at 19:38:36
             Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
             Copyright (c) 2007-2009 Joerg Wunsch

             System wide configuration file is "d:\-=RC =-\arduino\arduino-1.0.
\hardware\tools\avr\bin\avrdude.conf"

             Using Port                    : com6
             Using Programmer              : avrisp
             Overriding Baud Rate          : 19200
             AVR Part                      : ATMEGA328P
             Chip Erase delay              : 9000 us
             PAGEL                         : PD7
             BS2                           : PC2
             RESET disposition             : dedicated
             RETRY pulse                   : SCK
             serial program mode           : yes
             parallel program mode         : yes
             Timeout                       : 200
             StabDelay                     : 100
             CmdexeDelay                   : 25
             SyncLoops                     : 32
             ByteDelay                     : 0
             PollIndex                     : 3
             PollValue                     : 0x53
             Memory Detail                 :

                                      Block Poll               Page
          Polled
               Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW
 MaxW   ReadBack
               ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----
 ----- ---------
               eeprom        65    20     4    0 no       1024    4      0  360
  3600 0xff 0xff
               flash         65     6   128    0 yes     32768  128    256  450
  4500 0xff 0xff
               lfuse          0     0     0    0 no          1    0      0  450
  4500 0x00 0x00
               hfuse          0     0     0    0 no          1    0      0  450
  4500 0x00 0x00
               efuse          0     0     0    0 no          1    0      0  450
  4500 0x00 0x00
               lock           0     0     0    0 no          1    0      0  450
  4500 0x00 0x00
               calibration    0     0     0    0 no          1    0      0
     0 0x00 0x00
               signature      0     0     0    0 no          3    0      0
     0 0x00 0x00

             Programmer Type : STK500
             Description     : Atmel AVR ISP
             Hardware Version: 2
             Firmware Version: 1.18
             Topcard         : Unknown
             Vtarget         : 0.0 V
             Varef           : 0.0 V
             Oscillator      : Off
             SCK period      : 0.1 us

avrdude.exe: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.11s

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

avrdude.exe done.  Thank you.


d:\-=RC =-\multiwii\wii_esc\trunk\bin\Mystery20A_nFET_fast_200>a

d:\-=RC =-\multiwii\wii_esc\trunk\bin\Mystery20A_nFET_fast_200>"d:\-=RC =-\ardu
no\arduino-1.0.3\hardware\tools\avr\bin\avrdude.exe" -P com6 -b 19200 -c avrisp
-p m328p -v -U lfuse:w:0xFF:m -U hfuse:w:0xDC:m -U efuse:w:0x05:m

avrdude.exe: Version 5.11, compiled on Sep  2 2011 at 19:38:36
             Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
             Copyright (c) 2007-2009 Joerg Wunsch

             System wide configuration file is "d:\-=RC =-\arduino\arduino-1.0.
\hardware\tools\avr\bin\avrdude.conf"

             Using Port                    : com6
             Using Programmer              : avrisp
             Overriding Baud Rate          : 19200
             AVR Part                      : ATMEGA328P
             Chip Erase delay              : 9000 us
             PAGEL                         : PD7
             BS2                           : PC2
             RESET disposition             : dedicated
             RETRY pulse                   : SCK
             serial program mode           : yes
             parallel program mode         : yes
             Timeout                       : 200
             StabDelay                     : 100
             CmdexeDelay                   : 25
             SyncLoops                     : 32
             ByteDelay                     : 0
             PollIndex                     : 3
             PollValue                     : 0x53
             Memory Detail                 :

                                      Block Poll               Page
          Polled
               Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW
 MaxW   ReadBack
               ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----
 ----- ---------
               eeprom        65    20     4    0 no       1024    4      0  360
  3600 0xff 0xff
               flash         65     6   128    0 yes     32768  128    256  450
  4500 0xff 0xff
               lfuse          0     0     0    0 no          1    0      0  450
  4500 0x00 0x00
               hfuse          0     0     0    0 no          1    0      0  450
  4500 0x00 0x00
               efuse          0     0     0    0 no          1    0      0  450
  4500 0x00 0x00
               lock           0     0     0    0 no          1    0      0  450
  4500 0x00 0x00
               calibration    0     0     0    0 no          1    0      0
     0 0x00 0x00
               signature      0     0     0    0 no          3    0      0
     0 0x00 0x00

             Programmer Type : STK500
             Description     : Atmel AVR ISP
             Hardware Version: 2
             Firmware Version: 1.18
             Topcard         : Unknown
             Vtarget         : 0.0 V
             Varef           : 0.0 V
             Oscillator      : Off
             SCK period      : 0.1 us

avrdude.exe: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.11s

avrdude.exe: Device signature = 0x1e950f
avrdude.exe: safemode: lfuse reads as FF
avrdude.exe: safemode: hfuse reads as DC
avrdude.exe: safemode: efuse reads as 5
avrdude.exe: reading input file "0xFF"
avrdude.exe: writing lfuse (1 bytes):

Writing | ################################################## | 100% 0.03s

avrdude.exe: 1 bytes of lfuse written
avrdude.exe: verifying lfuse memory against 0xFF:
avrdude.exe: load data lfuse data from input file 0xFF:
avrdude.exe: input file 0xFF contains 1 bytes
avrdude.exe: reading on-chip lfuse data:

Reading | ################################################## | 100% 0.03s

avrdude.exe: verifying ...
avrdude.exe: 1 bytes of lfuse verified
avrdude.exe: reading input file "0xDC"
avrdude.exe: writing hfuse (1 bytes):

Writing | ################################################## | 100% 0.04s

avrdude.exe: 1 bytes of hfuse written
avrdude.exe: verifying hfuse memory against 0xDC:
avrdude.exe: load data hfuse data from input file 0xDC:
avrdude.exe: input file 0xDC contains 1 bytes
avrdude.exe: reading on-chip hfuse data:

Reading | ################################################## | 100% 0.03s

avrdude.exe: verifying ...
avrdude.exe: 1 bytes of hfuse verified
avrdude.exe: reading input file "0x05"
avrdude.exe: writing efuse (1 bytes):

Writing | ################################################## | 100% 0.04s

avrdude.exe: 1 bytes of efuse written
avrdude.exe: verifying efuse memory against 0x05:
avrdude.exe: load data efuse data from input file 0x05:
avrdude.exe: input file 0x05 contains 1 bytes
avrdude.exe: reading on-chip efuse data:

Reading | ################################################## | 100% 0.03s

avrdude.exe: verifying ...
avrdude.exe: 1 bytes of efuse verified

avrdude.exe: safemode: lfuse reads as FF
avrdude.exe: safemode: hfuse reads as DC
avrdude.exe: safemode: efuse reads as 5
avrdude.exe: safemode: Fuses OK

avrdude.exe done.  Thank you.
A helyzet változatlan :(
Az ftdi chippen keresztül nem kommunikál, a benne lévő program ami védett nem fut, bascom sem látja.
Nagyon szeretnénk ha a chip újra működne, mert ez egy 50000ft-os cucc, és nem szeretnénk még egyet venni.

Mit lehet még tenni??
Előre is köszönöm a segítséget.

ÜDv ROland
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Atmega328 avdude fuse bitek téves írása

Hozzászólás Szerző: Robert »

Valami lépés kimarad, mert ha nem ír vissza, akkor nem változik a chip.
A parancssort látni kellene...

Ha a fuse-t átállítottad és előtte törölted a chipet:
- belső program ugrott! ha nincs meg az edereti HEX/BIN-> kuka.
- a kiolvasott HEX mit tud? Beltartalom progreamra utal vagy üres? Ha FF vagy 00 a HEX, akkor a chip védett volt.

LFUSE FF - külső kvarcra utal. Órajelet köss az XTAL2 lábra, és feléled (1..10 MHz elég)

HFUSE FF - na ez szívás. Ekkor már az SPI-t is letiltottad.... Javaslat: chipcsere (pl. hőlégpáha, tartalékIC, stb) vagy garanciában reklamálni... :P
Avatar
broland
Tranzisztorgyógyász
Hozzászólások: 152
Csatlakozott: 2009. április 20. hétfő, 6:00

Re: Atmega328 avdude fuse bitek téves írása

Hozzászólás Szerző: broland »

Szia Robert
Ha a fuse-t átállítottad és előtte törölted a chipet:
Csak egy read parancs volt kiadva, nem kértük a törlését. Nem is értem miért bazdergálta a fs biteket.
belső program ugrott! ha nincs meg az edereti HEX/BIN-> kuka
Ez remélem nem történt meg.
a kiolvasott HEX mit tud? Beltartalom progreamra utal vagy üres? Ha FF vagy 00 a HEX, akkor a chip védett volt.
"FF", a végén van valami ismétlődó krix-krax. A chip biztos, hogy védett volt.
LFUSE FF - külső kvarcra utal. Órajelet köss az XTAL2 lábra, és feléled (1..10 MHz elég)
Alapban 16Mhz kvarc van rajta, nem indult el.
HFUSE FF - na ez szívás. Ekkor már az SPI-t is letiltottad
A HFUSE-t 00-ra írta át DC-ről, nem FF-re.
avrdude.exe: safemode: hfuse changed! Was dc, and is now 0
Would you like this fuse to be changed back? [y/n] n
Valami remény?
Avatar
broland
Tranzisztorgyógyász
Hozzászólások: 152
Csatlakozott: 2009. április 20. hétfő, 6:00

Re: Atmega328 avdude fuse bitek téves írása

Hozzászólás Szerző: broland »

Sziasztok

Egy gyors kérdés:
Lehet e olyan bootloadert írni ami ezen parancs kiadására módosítja, akár tönkreteszi a chip tartalmát? Természetesen ezt nem isp-n, hanem ftdi chippen keresztül szeretnénk olvasni.
Ill. ha védett a chip ez a parancs kiírja e a teljes tartalmat úgy, hogy klónozható legyen?
Mert lenne egy alany eszköz, de nem szeretnénk tönkretenni.

Kód: Egész kijelölése

avrdude.exe -p m328p -c arduino -P COM7 -b 115200 -U flash:r:"d:/tmp/xxx.bin":r
Köszi.

Roland
Avatar
csabeszq
Bitfaragó
Hozzászólások: 678
Csatlakozott: 2012. szeptember 5. szerda, 6:00

Re: Atmega328 avdude fuse bitek téves írása

Hozzászólás Szerző: csabeszq »

Lehet olyan bootloadert írni.

Az ISP-s / HVPP kiolvasás az egyedüli, amelyik biztosan nem vágja szét a tartalmat.

A bootloader egy szoftver, amelyik lekezeli az avrdude "read" utasítását. Semmi sem gátolja meg, hogy kitörölje magát.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Atmega328 avdude fuse bitek téves írása

Hozzászólás Szerző: Robert »

A kérdést lefordítom:
- ha be van zárva otthon az ajtód akkor bemehetek és elvihetem az AVR progranozódat ? :)

A lezárt chip azért van bezárva, mert védik a tartalmát. Szerinted hány percig létezne az ATMEL cég, ha kiderülne, hogy a chipje nem védhető kódkiolvasás ellen?

A bootloaderbe létrehozható olyan kód, ami illegális ISP kísérlet esetén törölje a chipet. A FUSE bitek átírása az adatlap olvasása alapján minrtha menne (de soha nem póbáltam, és mintát sem láttam róla. De a bootloaderben az ISP lábakat tudom figyelni, hogy van e logikai jelszintváltás rajta, stb.Pl. a RESET az nem reset folyamatos, hanem egy kondin át van csak. Így a chipet reseteled, de után a bootloader indul el. Ez meg figyeli az ISP kommunikációt. erre utamn az is, hogy a második olvasásnál a az IC kódja 0x1E0000. Atz 1E még a programozó részből jön, a 0000 meg a futó bootloaderből (azza nem engedi a chip hozzáférést.)

A 00-s eset:
LOW Fuse 00 - External clock (XTAL2 lábra külső órajelet adni (kvarc maradhat)) 1...10 MHz-t

HIGHFUSE 00 - RESET DISABLE is bekapcsolódott! Azaz _nem_ lehet SPIvel hozzáférni. Talán paralell nagyfesz programozóval visszapiszkálható (gyári STK500 illetve AVRDragon). és munkában 2 óra lehet mert a sok lábat bekötni precíziósan nem egyszerű...
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Atmega328 avdude fuse bitek téves írása

Hozzászólás Szerző: Robert »

Az Arduino bootloader teljes STK500 programozót emulál.
De én belenyúlnék, hogy:
1, read esetén chiptörlés (mondjuk belső számláló, 5-10 próba után)
1a, read esetén ha flasht kéred vissza, valami "fals" programra hasonlító kódot adnék vissza...
2, ezzel együtt a chip programot megsemmisítem (belső törlés)
dlaszlo
DrótVégénSzéndarab
Hozzászólások: 49
Csatlakozott: 2013. április 20. szombat, 6:38

Re: Atmega328 avdude fuse bitek téves írása

Hozzászólás Szerző: dlaszlo »

Bocsi, csak "beledumálok": Nem hiszem hogy van értelme törölni a belső memóriát, ha egyszer azt rendesen le lehet védeni, vagy akár hamis kódot visszaadni... De értem én, hogy védeni kell a terméket. :) Pl belepiszkálás ellen jó lehet a digitális aláírás használata. (csak gondolom.) Jól értem és a fuse biteket 0-ra írtad? Biztos az IC-vel van a baj? Csak egy példa: ha én megszakítom eclipse alatt a programozást ami szintén avrdude-t használ, akkor utána semmi nem működik, amíg ki nem lépek, ki nem húzom az USB portból a programozót (ami nekem az arduino, tényleg teljesen kezdőként), majd mindent újra nem indítok. Igazából emiatt írtam csak, én is azt gondoltam egyszer hogy kizártam magam, de egyszer csak minden megjavult, környezeti dolog volt.

Csak azért merült fel bennem a kérdés: Ha a reset disabled-en van, akkor később ezt ki tudod íratni, ahogy írtad?
AVR Part : ATMEGA328P
Vagy ez nem reset lábhoz kötött? Ha igen, akkor nincs disabled-ben, és a 0 az olyan számnak tűnik, ami környezeti probléma is lehet, ezért 0 az érték.
Csak egy ötlet volt.
Chipmunk60
Újonc
Újonc
Hozzászólások: 13
Csatlakozott: 2013. október 10. csütörtök, 17:52

Re: Atmega328 avdude fuse bitek téves írása

Hozzászólás Szerző: Chipmunk60 »

Sziasztok! Új vagyok a témában, s bocsi, he nem jó helyen teszem fel a kérdésemet. van egy 2560-as board-om, amin működik a bmp085+kijelző. Gongoltam csinálok neki egy kis panelt, s vettem egy http://www.ebay.co.uk/itm/ATMEGA328-ARD ... 1e85d1490e. De a chip 328-PU. Kipróbálásra feltültöttem a "Blink" kis programot, azóta is villog a led, akányhányszor bedugom a szgépbe. Van közte egy Silab CP2102. Átraktam rá a BMP-t meg egy kijelzőt, de azóta semmilyen programot nem tudok feltölteni rá.
A 021 ver Arduino a köv hibaüzenetet adja: Kiírja a Binary sketch size: 1010 bytes (of a 32256 byte maximum), majd vár és:
avrdude: stk500_getsync(): not in sync: resp=0x00
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51 nem történik semmi, villog u.a úgy tovább hiába állítom az időt a Blink-ben. A konverter panelen van egy DATA led, az sem villog. Letöltöttem egy RS-232 test programot, s jumperrel visszahurkolva megegyezik a kiküldött, s kapott adatsor.
Próbáltam rákeresni a gugliban, de nem lettem okosabb. Azért vettem előre programozottat, mert nem egészen világos még a 328, 328P, 328P-PU, 328PU chippek közötti különbség sem pontosan. U.A USB portról a 2560 board működik rendesen.
Elóre is köszönöm az ötleteket, tanácsokat: Mike
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Atmega328 avdude fuse bitek téves írása

Hozzászólás Szerző: Robert »

Vedd le a kiegészítő sallangokat. Csak chip/kvarc/kondi/soros illesztő legyen.
A soros illesztő DTR jele és a AVR RESET be van kötve 100 nF kondival?

Bootloader diecimila vagy UNO? Azt állítsd be a Board alatt....
Chipmunk60
Újonc
Újonc
Hozzászólások: 13
Csatlakozott: 2013. október 10. csütörtök, 17:52

Re: Atmega328 avdude fuse bitek téves írása

Hozzászólás Szerző: Chipmunk60 »

Leszedtem mindent a panelről, ami nem kell. Duemilanove bootloaderrel jött a chip, az is van beállítva board-nak. A Reset vonal soros kondin keresztül megy az átalakítóra. de így is a következőket írja: Binary sketch size: 1010 bytes (of a 30720 byte maximum)
avrdude: stk500_getsync(): not in sync: resp=0x00
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51
Ami zavaró számomra, hogy a rajzok amiket találtam nem egyértelműek. Szerintem az a jó, amelyen az RX-TX szembe van kötve egymással, Hiszen az átalakító kiküldi a jelet azt az Rx fogadja, s a chip a Tx en válaszolna, amit az Rx-en vesz a modul, de az azon /Rx/ lévő led már nem villog, tehát nem küld vissza a 328 semmit. Úgy emlékszem, hogy legelőször villogott program feltöltéskor.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Atmega328 avdude fuse bitek téves írása

Hozzászólás Szerző: Robert »

A Tx/Rx szembekötendő. Viszont Rx csak akkor jön, ha a chip megérti a kapott jelet és válaszol.
Kipróbálnám a feltöltést mind az UNO (31,5k szabad hels, 115200 bps sebesség a háttérben) mind Diecimila (30k szabad hely, 57600 bps sebesség) beállítással. És persze ha a reset megjelenik, akkor a D13-ra kötött LED a Bootloadert villogással kell hogy jelezze: 3 villanás: duemilanove, 1 villanás UNO bootloader. Nincs villanás: nem megy ki a RESET kérés.
Chipmunk60
Újonc
Újonc
Hozzászólások: 13
Csatlakozott: 2013. október 10. csütörtök, 17:52

Re: Atmega328 avdude fuse bitek téves írása

Hozzászólás Szerző: Chipmunk60 »

Köszi a tanácsot! Vettem egy másik 328-at, most UNO bootloaderrel. Kivácsi vagyok, hogy azzal működik-e. Ha nem akkor az USB-TTL átalakító nem mőködik, ha azzal megy, lehetséges hogy a bootloadere megsérült az eredetinek? A rst mindíg is le volt választava galvanikusan a vezérlőről. Ha a chipre a kondi után rakok egy rst gombot, mikor már kiírta sketch méretet, ha megnyomom 1-2 sec-ig, akkor elméletileg restelnie kellene a chip-et ? Próbáltam mérni a logic analyzer-rel, de a tx-en kívől nem láttam máshol jelet.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Atmega328 avdude fuse bitek téves írása

Hozzászólás Szerző: Robert »

A resetimpulzus számít. Hossza és időzítése....
Chipmunk60
Újonc
Újonc
Hozzászólások: 13
Csatlakozott: 2013. október 10. csütörtök, 17:52

Re: Atmega328 avdude fuse bitek téves írása

Hozzászólás Szerző: Chipmunk60 »

Kösznöm mégegyszer Robi! A Rst gombal kisebb progikat fel tudtam tölteni, de hosszabbat már nem. Most vettem egy másik 6 lábú átalakítót, majd meglátom, hogy azzal mit csinál. Az rst vonalat ugye 10Kohm körüli ellenállással fel kell húzni a tápra, mert OC-s kimenet. Ráadásul a CP2102 és a pin között van még egy 2,2K ellenállás. Nem értem, hogy mi történhetett...
Válasz küldése