Problém s naprogramováním čipu AVR32DD28

Pokouším se naprogramovat procesor AVR32DD28 přes mEDBG od ATtiny416-XNANO v Atmel(Microchip) Studiu 7. Na stránkách Microchipu píšou, že po odpojení od ATtiny lze použít pro programování jiných UPDI čipů. Připojil jsem procesor AVR23DD28 - přečtu vše - signaturu, FLASH, pojistky, EEPROM - vše OK. Jenže zapsat se mi nepodařilo vůbec nic. Při pokusu přepsat pojistky se to jen tváří, že to provedl, ale vzápětí vyhodí chybu při verifikaci, totéž EEPROM. Když se pokusím zapsat do FLASH, tak to rovnou napíše chybu :

Nejde ani vestavěný debugger (a myslím, že to bude spolu souviset) :
obrazek

Veškeré čtení z IO funguje. Chip erase se tváří jako že taky chodí, což nemůžu ověřit, protože IO mám jen jeden jediný - nový a ještě nenaprogramovaný. Jiný programátor pro UPDI nemám, protože ASIX FORTE za více, než 5000,- Kč opravdu pro vlastní bastlení kupovat nebudu. Obzvlášť když mám ASIX PRESTO o kterém jsem přesvědčený, že by to zvládnout taky mohl - je to jenom otázka SW.

Používám mEDBG z ATtiny416-XNANO o kterém Microchip tvrdí, že po odpojení od ATtiny416 na desce může sloužit jako programátor pro ostatní čipy UPDI.

Nemáte někdo zkušenosti s tímto problémem ?

Na druhém obrázku ti to píše, že mu něco chybí.

Jojo. Zatím jsem to odložil. Chtěl jsem jen vyzkoušet ještě jiný MCU s UPDI rozhraním a tenhle byl jediný, který byl v DIL provedení. Ale řekl bych, že jinak je to klasický nedodělek z dílny Microchipu, protože ten balíček pro tyhle procesory mám nainstalovaný kompletní. Pro ATtiny416 taky nejsou některé definice, které by člověk očekával, kompletní - ale aspoň to funguje a definice si člověk dodělá sám. Až zase budu objednávat nějaké součástky, objednám něco, co není z řady AVR8 (nástupce ATxmega) i když to bude v SMD provedení a nepůjde to přímo vložit do kontaktního pole.

Ja z PIC přešel na Arduino 328P, Atmega2560, ATmega1284, ATtiny85 a ty jdou pěkně přes UART na arduino IDE. Občas něco přes to udělám,ale jedu teď na ESP32.
A jinak ten tvůj jde taky přes Arduino, ale musíš do něj nějak narvat bootloader. Ale koukám že umí i to mEDBG.

Tak já ho o víkendu vyzkouším přes mEDBG pod Arduinem. Děkuju.

To je přes tohle?

Ne - přímo z Atmel Studia (Microchip Studia) před tohle : ATTINY416-XNANO

V dokumentaci k tomu to dokonce i píšou, že po odstranění propojek ho lze použít jako programátor pro jiné procesory s UPDI rozhraním.

Kdyby nešel jen programátor, tak to člověk ještě oželí. Stejně používám ASIX Presto, takže nasypat program jiným softwarem jsem zvyklý, ale nefunguje ani interní simulátor přímo v Microchip Studiu. Přitom pro tu ATtiny416, co je na destičce to funguje v pohodě. Chtěl jsem vyzkoušet programování na nějakým procesoru na bastlpoli a tenhle byl jediný v THT provedení.

To, co jsi poslal odzkouším. Děkuju.

Upraveno: To, co jsi posílal bohužel nepodporuje AVR čipy…

Však to ani neměl, ten o který ti šlo (AVR32DD28) je ARM… Ale jestli ho to umí jsem nezkoumal, ale i tak je to užitečný nástroj, co se může hodit i jinde a o jehož existenci je dobré vědět.

Že jsem nepomohl mě mrzí, každopádně Microchip koukám dělá pěkný guláš nejenom v PICech a ve vývojových nástrojích. Honza3 přešel na ESP32, jsem v šoku, ale taky jsem po nich koukal (a po RP2040), ale zatím jsem zůstával u starších spolehlivých a ozkoušených čipů a vývojových nástrojů. Jinak krom čínských RISC-V i jiných čipů do toho teď zatnulo TI, když vydalo ARM Cortex-M0 čipy za zajímavou cenu, tak je jistá naděje, že aspoň jeden výrobce si zachová zdravý rozum.

Pokud chceš výkonný 32bit čip v THT, tak ještě jsou k sehnání PIC32MX250F128B a PIC32MX270F256B, to jsou MIPSy M4K navržené a vyrobené ještě před vším tímhle bordelem, co se teď děje.

Edit: Aha takže to není ARM… Já žil nevímproč v domnění, že je…

Ano - přesně v tom dělá Microchip poněkud bordel. Původní AVR32 ARMy jsou (mají označení AT32, ne AVR32), jenže tyhle (AVR16Dxxx, AVR32Dxxx, AVR64Dxxx) jsou 8-bitový AVR jádro.

Nesháním 32bitový čip - pro domácí bastlení si vystačím s AVR. Jen jsem chtěl otestovat ten XNANO jako programátor a bylo jednodušší objednat něco v THT provedení, než se bastlit s SMD destičkou. To byl jediný důvod, proč jsem po něm sahnul.

Vadí mi hlavně, že v podstatě na co Microchip sahne, to zkurví - obrovské množství registrů pro nastavování procesoru (PICy i ty jejich nové AVRka - místo 8 bitů v jednom nastavovacím registru je 8 nastavovacích registrů po 1 bitu), nedodělky v software jako chybějící definice nebo nefunkční programy (viz výše chyba při pokusu spustit interní debugger Microchip Studia) atd.

V každém případě děkuji za snahu pomoct. I to se cení.

Zkoušel jsi to v arduino IDE? Ja si ten tvůj asi objednám z ali k vůli zvědavosti.

@honza3: Mě už to napadlo taky :grinning:

(Máš SZ)

@honza3 Bohužel jsem se tomu ještě nedostal. Ten víkend jsem se k tomu nedostal a od té doby jsem ještě o víkendu doma nebyl. Určitě dám vědět, ale mám trochu obavu, že to vyjde až o velikonocích.

@Balu Sis měl objednat spíš AVR64DD28… Jsem se díval na Asix, a ten čip co máš ještě nemají v podpoře (pro Forte, Presto to nepodporuje vůbec), ale ten AVR64DD28 tam už mají… Snad to brzo doplní, protože si myslím, že když bude nejhůř, tak určitě najdeš někoho v okolí, kdo Forte má a nalil by ti tam aspoň ten bootloader.

Edit: Našel jsem ještě tohle - DxCore

Což - programátor jsem vyřešil (předpokládám) tím ATtiny416-XNANO. Presto už mám léta a jsem s ním spokojený, ale dávat pro domácí bastlení víc jak 5000,- za Forte jenom proto, že Presto nemá podporu UPDI, opravdu nehodlám. Obzvlášť pokud ATtiny416-XNANO bude jako progamátor fungovat. Proto jsem na vyzkoušení ten IO kupoval - nejlevnější IO v THT pouzdru. Jenže jak jsem zjistil, tak v Microchip Studiu nefunguje ani AVR128DAxx (podpora měla být hned v první verzi balíčku z prosince 2022) - a nejenom naprogramování, ale ani SW debugger. Zatím to pouštím k vodě. Zkusím objednat některý z ATtiny nebo ATmega s UPDI rozhraním a destičku pro usazení do bastlpole si udělám nebo obstarám. DXCore jsem našel, už ho mám v Arduinu nainstalovaný, takže vyzkouším to Arduino, až se k tomu dostanu. Předpokládal jsem, že SW od výrobce bude fungovat. Ale to by to nesměl být Microchip…

Tak jsem toho švába našel i doma. S 328P jsem si udělal programátor a kupudivu to šlape.

Upravte si avrdude.conf podle ID které najde.
Nahrání bootloaderu

avrdude: Version 6.3-20201216
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "C:\Users\honza\AppData\Local\Arduino15\packages\DxCore\hardware\megaavr\1.5.6/avrdude.conf"

         Using Port                    : COM6
         Using Programmer              : jtag2updi
JTAG ICE mkII sign-on message:
Communications protocol version: 1
M_MCU:
  boot-loader FW version:        1
  firmware version:              6.00
  hardware version:              1
S_MCU:
  boot-loader FW version:        1
  firmware version:              6.00
  hardware version:              1
Serial number:                   00:00:00:00:00:00
Device ID:                       JTAGICE mkII
         AVR Part                      : AVR32DD28
         Chip Erase delay              : 0 us
         PAGEL                         : P00
         BS2                           : P00
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 0
         StabDelay                     : 0
         CmdexeDelay                   : 0
         SyncLoops                     : 0
         ByteDelay                     : 0
         PollIndex                     : 0
         PollValue                     : 0x00
         Memory Detail                 :

                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00
           prodsig        0     0     0    0 no        125  125      0     0     0 0x00 0x00
           fuses          0     0     0    0 no          9   16      0     0     0 0x00 0x00
           fuse0          0     0     0    0 no          1    0      0     0     0 0x00 0x00
           fuse1          0     0     0    0 no          1    0      0     0     0 0x00 0x00
           fuse2          0     0     0    0 no          1    0      0     0     0 0x00 0x00
           fuse4          0     0     0    0 no          1    0      0     0     0 0x00 0x00
           fuse5          0     0     0    0 no          1    0      0     0     0 0x00 0x00
           fuse6          0     0     0    0 no          1    0      0     0     0 0x00 0x00
           fuse7          0     0     0    0 no          1    0      0     0     0 0x00 0x00
           fuse8          0     0     0    0 no          1    0      0     0     0 0x00 0x00
           lock           0     0     0    0 no          4    1      0     0     0 0x00 0x00
           data           0     0     0    0 no          0    0      0     0     0 0x00 0x00
           flash          0     0     0    0 no      32768  512      0     0     0 0x00 0x00
           eeprom         0     0     0    0 no        256   32      0     0     0 0x00 0x00

         Programmer Type : JTAGMKII_PDI
         Description     : JTAGv2 to UPDI bridge
         M_MCU hardware version: 1
         M_MCU firmware version: 6.00
         S_MCU hardware version: 1
         S_MCU firmware version: 6.00
         Serial number:          00:00:00:00:00:00
         Vtarget         : 5.0 V

avrdude: jtagmkII_initialize(): Cannot locate "flash" and "boot" memories in description
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.04s

avrdude: Device signature = 0x1e9539 (probably avr32dd28)
avrdude: erasing chip
avrdude: reading input file "0b00000000"
avrdude: writing fuse0 (1 bytes):

Writing | ################################################## | 100% 0.01s

avrdude: 1 bytes of fuse0 written
avrdude: verifying fuse0 memory against 0b00000000:
avrdude: load data fuse0 data from input file 0b00000000:
avrdude: input file 0b00000000 contains 1 bytes
avrdude: reading on-chip fuse0 data:

Reading | ################################################## | 100% 0.01s

avrdude: verifying ...
avrdude: 1 bytes of fuse0 verified
avrdude: reading input file "0x00"
avrdude: writing fuse1 (1 bytes):

Writing | ################################################## | 100% 0.01s

avrdude: 1 bytes of fuse1 written
avrdude: verifying fuse1 memory against 0x00:
avrdude: load data fuse1 data from input file 0x00:
avrdude: input file 0x00 contains 1 bytes
avrdude: reading on-chip fuse1 data:

Reading | ################################################## | 100% 0.01s

avrdude: verifying ...
avrdude: 1 bytes of fuse1 verified
avrdude: reading input file "0b11011000"
avrdude: writing fuse5 (1 bytes):

Writing | ################################################## | 100% 0.01s

avrdude: 1 bytes of fuse5 written
avrdude: verifying fuse5 memory against 0b11011000:
avrdude: load data fuse5 data from input file 0b11011000:
avrdude: input file 0b11011000 contains 1 bytes
avrdude: reading on-chip fuse5 data:

Reading | ################################################## | 100% 0.01s

avrdude: verifying ...
avrdude: 1 bytes of fuse5 verified
avrdude: reading input file "0b00001100"
avrdude: writing fuse6 (1 bytes):

Writing | ################################################## | 100% 0.01s

avrdude: 1 bytes of fuse6 written
avrdude: verifying fuse6 memory against 0b00001100:
avrdude: load data fuse6 data from input file 0b00001100:
avrdude: input file 0b00001100 contains 1 bytes
avrdude: reading on-chip fuse6 data:

Reading | ################################################## | 100% 0.01s

avrdude: verifying ...
avrdude: 1 bytes of fuse6 verified
avrdude: reading input file "0x01"
avrdude: writing fuse8 (1 bytes):

Writing | ################################################## | 100% 0.01s

avrdude: 1 bytes of fuse8 written
avrdude: verifying fuse8 memory against 0x01:
avrdude: load data fuse8 data from input file 0x01:
avrdude: input file 0x01 contains 1 bytes
avrdude: reading on-chip fuse8 data:

Reading | ################################################## | 100% 0.01s

avrdude: verifying ...
avrdude: 1 bytes of fuse8 verified
avrdude: reading input file "0x00"
avrdude: writing fuse7 (1 bytes):

Writing | ################################################## | 100% 0.01s

avrdude: 1 bytes of fuse7 written
avrdude: verifying fuse7 memory against 0x00:
avrdude: load data fuse7 data from input file 0x00:
avrdude: input file 0x00 contains 1 bytes
avrdude: reading on-chip fuse7 data:

Reading | ################################################## | 100% 0.01s

avrdude: verifying ...
avrdude: 1 bytes of fuse7 verified
avrdude: reading input file "C:\Users\honza\AppData\Local\Arduino15\packages\DxCore\hardware\megaavr\1.5.6/bootloaders/hex/optiboot_32dd_ser0_extr.hex"
avrdude: writing flash (512 bytes):

Writing | ################################################## | 100% 0.13s

avrdude: 512 bytes of flash written
avrdude: verifying flash memory against C:\Users\honza\AppData\Local\Arduino15\packages\DxCore\hardware\megaavr\1.5.6/bootloaders/hex/optiboot_32dd_ser0_extr.hex:
avrdude: load data flash data from input file C:\Users\honza\AppData\Local\Arduino15\packages\DxCore\hardware\megaavr\1.5.6/bootloaders/hex/optiboot_32dd_ser0_extr.hex:
avrdude: input file C:\Users\honza\AppData\Local\Arduino15\packages\DxCore\hardware\megaavr\1.5.6/bootloaders/hex/optiboot_32dd_ser0_extr.hex contains 512 bytes
avrdude: reading on-chip flash data:

Reading | avrdude: jtagmkII_paged_load(): bad response to read memory command: RSP_NO_TARGET_POWER
################################################## | 100% 0.14s

avrdude: verifying ...
avrdude: 512 bytes of flash verified

avrdude done.  Thank you.

Nahrání programu přes UART PA0 PA1

avrdude: Version 6.3-20201216
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "C:\Users\honza\AppData\Local\Arduino15\packages\DxCore\hardware\megaavr\1.5.6/avrdude.conf"

         Using Port                    : COM6
         Using Programmer              : arduino
         Overriding Baud Rate          : 115200
         AVR Part                      : AVR32DD28
         Chip Erase delay              : 0 us
         PAGEL                         : P00
         BS2                           : P00
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 0
         StabDelay                     : 0
         CmdexeDelay                   : 0
         SyncLoops                     : 0
         ByteDelay                     : 0
         PollIndex                     : 0
         PollValue                     : 0x00
         Memory Detail                 :

                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00
           prodsig        0     0     0    0 no        125  125      0     0     0 0x00 0x00
           fuses          0     0     0    0 no          9   16      0     0     0 0x00 0x00
           fuse0          0     0     0    0 no          1    0      0     0     0 0x00 0x00
           fuse1          0     0     0    0 no          1    0      0     0     0 0x00 0x00
           fuse2          0     0     0    0 no          1    0      0     0     0 0x00 0x00
           fuse4          0     0     0    0 no          1    0      0     0     0 0x00 0x00
           fuse5          0     0     0    0 no          1    0      0     0     0 0x00 0x00
           fuse6          0     0     0    0 no          1    0      0     0     0 0x00 0x00
           fuse7          0     0     0    0 no          1    0      0     0     0 0x00 0x00
           fuse8          0     0     0    0 no          1    0      0     0     0 0x00 0x00
           lock           0     0     0    0 no          4    1      0     0     0 0x00 0x00
           data           0     0     0    0 no          0    0      0     0     0 0x00 0x00
           flash          0     0     0    0 no      32768  512      0     0     0 0x00 0x00
           eeprom         0     0     0    0 no        256   32      0     0     0 0x00 0x00

         Programmer Type : Arduino
         Description     : Arduino
         Hardware Version: 3
         Firmware Version: 26.1
         Vtarget         : 0.3 V
         Varef           : 0.3 V
         Oscillator      : 28.800 kHz
         SCK period      : 3.3 us

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e9539 (probably avr32dd28)
avrdude: reading input file "C:\Users\honza\AppData\Local\Temp\arduino_build_75930/sketch_apr04a.ino.hex"
avrdude: writing flash (2686 bytes):

Writing | ################################################## | 100% 0.36s

avrdude: 2686 bytes of flash written
avrdude: verifying flash memory against C:\Users\honza\AppData\Local\Temp\arduino_build_75930/sketch_apr04a.ino.hex:
avrdude: load data flash data from input file C:\Users\honza\AppData\Local\Temp\arduino_build_75930/sketch_apr04a.ino.hex:
avrdude: input file C:\Users\honza\AppData\Local\Temp\arduino_build_75930/sketch_apr04a.ino.hex contains 2686 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.19s

avrdude: verifying ...
avrdude: 2686 bytes of flash verified

avrdude done.  Thank you.

Arduino až na výjimky vůbec nepoužívám a XNANO jako programátor poslouží. Mám ho v Atmel Studiu vyzkoušený přímo na tý ATtiny416 - to funguje. Teda ne, že bych s tím byl na 100% spokojený, ale funguje. Jen jsem chtěl vyzkoušet funkčnost jako programátoru pro jiný čip a nejlevnější v THT provedení (abych ho mohl zkusit v kontaktním poli) byl právě tento (a pak ještě další, dražší, ale všechny z řady AVR16, AVR32 …). Samozřejmě opět v Atmel Studiu (nebo v jeho aktuální verzi - Microchip Studiu). Bohužel ani pro AVR128DAxx Microchip Studio nefunguje, přestože výchozí verze knihovny je z listopadu 2019. Sice přeložím program, ale :

  1. chybí mraky definic různých bitů (což ostatně i u tý ATtiny416)
  2. nefunguje programování
  3. nefunguje ani interní simulátor/debugger Microchip Studia

Prostě chybí definice procesorů v baíčku pro tyto procesory. Sice mi to dovolí tyhle procesory vybrat pro projekt, když překousneš, že chybí definice v .H souborech nebo si je doplníš, tak jde program i přeložit, ale program nevyzkoušíš, protože nejde ani odsimulovat ani nahrát…

I ta dokumentace je poslední dobou celkově v dost hrozným stavu. Ono by nevadilo že mají v hw bity rozfrcaný po všech možných registrech, to člověk projde jednou a má klid, ale musí to bejt dokumentovaný a správně. Když se dozvím, že i ten AVR32DD28 má v součástce jiný Device ID než v datasheetu (kterej je navíc ještě pořád preliminary, ale čip už se prodává naplno; což ti možná souvisí s tím nahráním, protože jestli máš v definicích jiný DID než má čip, tak asi nepochodíš), tak je asi něco hodně špatně. Ony to jsou dost dobrý čipy, ale zvenku to vypadá, jako by jim to v Microchipu uvnitř někdo sabotoval, nebo co…Dokonce si datasheety třídím na “new-style documentation” a “old-style”, přičemž ta stará byla jednoznačně daleko lepší (a to jak microchipí, tak atmelí).

Xnano super, ale kupovat si ho nebudu, už za něj chtějí přes 500,- . Mám tu někde SNAP (kterej jsem kupoval za 400,- a dneska stojí asi tak čtyřnásobek), tak mu dám šanci (kdyby se to náhodou někomu hodilo, tady je dokument, kde se popisuje jak SNAP upravit, aby komunikoval s UPDI devices, je to jednoduchá úprava).

@Balu prosímtě, až se ti povede vyčíst z toho brouka správný DID tak ho sem hoď, pomůže to… Dík.

Device ID je v tom větším obrázku v mém úvodním příspěvku.Vidím tam 0x1E9539.

To vím že tam je, ale je potřeba potvrzení pro kontrolu, tzn. potřebuju vědět (a nejlépe i vidět) jestli vyčteš stejné. Je to pro Asix, oni pak doplní podporu.

Rád bych Ti pomohl, ale musím se přiznat, že jsem trošku jelen z toho, co vlastně chceš/potřebuješ. To, co je v té fotce, mi vyčetl mEDBG od ATtiny416-XNANO v Atmel(Microchip) Studiu 7 - to je screenshot z mého PC. Nebo to není DID ?