Elektroda.pl
Elektroda.pl
X
PCBway
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Atmega 128, bootloader i "veryfication error"

17 Sty 2012 22:46 2381 7
  • Poziom 24  
    Mam taki dziwny problem...

    Otóż mam Atmegę128-16 popędzaną zewnętrznym kwarcem 16MHz.
    No i próbuję wrzucić nań Bootloader MCS.
    Stosownie sobie przerobiłem deklaracje ;

    Code:

    $crystal = 16000000
    '$crystal = 14745600
    $baud = 38400                                               'this loader uses serial com
    'It is VERY IMPORTANT that the baud rate matches the one of the boot loader
    'do not try to use buffered com as we can not use interrupts

    '$regfile = "m8def.dat"

    'Const Loaderchip = 8
    '$regfile = "m168def.dat"
    'Const Loaderchip = 168

    '$regfile = "m16def.dat"
    'Const Loaderchip = 16

    '$regfile = "m32def.dat"
    'Const Loaderchip = 32

    '$regfile = "m88def.dat"
    'Const Loaderchip = 88

    '$regfile = "m162def.dat"
    'Const Loaderchip = 162

    $regfile = "m128def.dat"
    Const Loaderchip = 128


    Oczywiście kompilacja jest ok.
    Po czym wrzucam toto do Atmegi (via mkAVR Calculator), ale na koniec wywala mi błąd weryfikacji.

    W konsoli AVT DUDE mam :
    Code:

    :010000003FC0
    :00000001FF


    No i nie wiem o co biega.
    Jak sobie robię ręcznie jakiś prosty programik do machania LEDem, to jest ok.
    A jak chcę wgrać bootloader, no to kiszka.
    Tak w ogóle bootloader po kompilacji zajmuje 99% zasobów (??), i wgrywa się cholerycznie długo, ale jak poprzednio robiłem to na M162 to też chyba było podobnie... Tak mi się wydaje.
    No, ale tam wszystko poszło ok, a tu mam problem.

    W fusach mam BOOT RESET VECTOR wyłączony...
    Boot flash size jest 4K (defaultowo), nie zmieniałem bo i po co...

    Co jest grane ??

    (problemy z działaniem programu testowego rozwiązałem - czyli pozostaje powyższy problem główny)
  • PCBway
  • PCBway
  • Poziom 23  
    Bootloader raczej nie ma więcej niż 64kB.
  • Poziom 24  
    Oczywiście ;), ale wgrywa się w obszar powyżej > 64KB.
  • Poziom 24  
    Hmmm.

    Programator to "Programator USB www.nestor-electronic.pl" :)
    No tyle wiem. Dość dawno kupiony. Do tej pory (zanim nie ruszyłem M128) wszystko było ok...

    Teraz tak : Mimo , że mam ten błąd weryfikacji, mam wrażenie, że sam program bootloadera działa (tzn. na razie widzę, że miga mi led - tak się zachowuje ten bootloader). Czy pozwala na załadowanie czegoś zaraz sprawdzę...

    Ale nie rozumiem w ogóle jednej rzeczy.
    Plik HEX z Bascoma (do zapisania) różni mi się od tego odczytanego.

    Spójrzcie sami...

    PS: no nie, nie sprawdzę tak łatwo, czy bootloader działa.
    Problem polega na tym, że na PCB mam błąd (do MAX232, który ma mi robić za port RS232 wykorzystałem piny PE0/PE1, nie wiedząc, że do programowania tego procesora potrzebne są właśnie te piny. No i wlutowując MAX uniemożliwię programowanie ISP. W przyszłości to poprawię, ale teraz jest kłopot...)

    Cytat:
    Nic nie piszesz jakim to programatorem wgrywasz tego flasha. Może masz jakiegoś starego USBASP który nie potrafi wgrać więcej niż 64KB? https://www.elektroda.pl/rtvforum/topic1864344.html


    to wygląda dość podobnie. Nawet ten sam adres błędu, i w ogóle...
    Tak to wygląda w AVRDUDE u mnie :
    Cytat:
    found 5 busses

    avrdude: AVR device initialized and ready to accept instructions

    Reading | ################################################## | 100% 0.02s

    avrdude: Device signature = 0x1e9702
    avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
    To disable this feature, specify the -D option.
    avrdude: erasing chip
    avrdude: reading input file "M:\___CONTAINER___\MACHINERIA\PROJEKTY\LUBCON\PROGRAM\Bascom AVR\BootLoader_ATMEGA128A.hex"
    avrdude: writing flash (130666 bytes):

    Writing | ################################################## | 100% 21.36s

    avrdude: 130666 bytes of flash written
    avrdude: verifying flash memory against M:\___CONTAINER___\MACHINERIA\PROJEKTY\LUBCON\PROGRAM\Bascom AVR\BootLoader_ATMEGA128A.hex:
    avrdude: load data flash data from input file M:\___CONTAINER___\MACHINERIA\PROJEKTY\LUBCON\PROGRAM\Bascom AVR\BootLoader_ATMEGA128A.hex:
    avrdude: input file M:\___CONTAINER___\MACHINERIA\PROJEKTY\LUBCON\PROGRAM\Bascom AVR\BootLoader_ATMEGA128A.hex contains 130666 bytes
    avrdude: reading on-chip flash data:

    Reading | ################################################## | 100% 34.64s

    avrdude: verifying ...
    avrdude: verification error, first mismatch at byte 0xf800
    0xff != 0x8f
    avrdude: verification error; content mismatch

    avrdude: safemode: Fuses OK

    avrdude done. Thank you.
  • Pomocny post
    Poziom 24  
    I wychodzi że winowajcą jest stary programator, jeżeli przeglądniesz odczytanego hex'a (Link) zauważysz że bootloader jest w dwóch rejonach pamięci. Przypuszczam że programator nie jest wstanie odczytać powyżej 64KB, i odczytuje tylko pierwszy blok 64KB.
  • Poziom 24  
    Coś nie teges...

    Kupiłem dziś za bandycką cenę nową M8 do programatora (15 złociszy !)...
    Zapodałem do niej firmware, z wątku który podałeś (usbasp.2009-02-28_with_tpi_and_128pp.zip)

    No i - nic się nie zmieniło. Kurka wodna.

    ******************************

    No pięknie.
    Do tej pory używałem free wersji mkAVRCalculator.
    Przed chwilą spróbowałem Khazama.

    Weryfikacja OK. No nie wierzę własnym oczom.

    Sprawdzałem kilka razy. W mkAVR zawsze wywala błąd.
    W Khazama zawsze OK (oczywiście cały proces ZAPIS>WERYFIKACJA w obu programach).