eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaCzy WinAVR radzi sobie z kodem dla ATMega128?Re: Czy WinAVR radzi sobie z kodem dla ATMega128?
  • Data: 2009-01-26 12:12:30
    Temat: Re: Czy WinAVR radzi sobie z kodem dla ATMega128?
    Od: Dariusz Zolna <a...@u...com> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    T.M.F. pisze:
    > Tak jak poprzednio - nie wiem czy linker nie przyjmuje adresu jako
    > slowa, a nie bajty.

    Jako bajty. Ale ten trop też sprawdzałem, program wtedy się odpali,a le
    nie jako bootloader i co oczywiste nie zapisuje pamięci.



    > Toolchain raczej bym wykluczyl, tyle osob to testowalo, ze szansa, ze
    > nie wyszlaby do tej pory tak gruba rzecz jest zadna.
    > Zobacz jak wygladaja wygenerowane pliki .map i .lss. Tam bedziesz mial
    > dokladnie pokazane co jest pod jakim adresem umieszczone i jak wyglada
    > wygenerowany kod assemblerowy.

    Oglądałem i wszystko jest ok.

    > Jesli nie chcesz nam pokazac listingow programu to napisz jakis krotki
    > programik, ktory produkuje ten sam blad. Wtedy bedzie mozna powiedziec
    > cos wiecej.

    Z pokazaniem kodu jest tylko jeden problem - jest za długi żeby tu
    wklejać. Ale żeby pokazać, że jest ok, wkleję co istotniejsze fragmenty.

    bootloader.elf: file format elf32-avr

    Sections:
    Idx Name Size VMA LMA File off Algn
    0 .data 00000004 00800100 0001f764 000017f8 2**0
    CONTENTS, ALLOC, LOAD, DATA
    1 .text 00001764 0001e000 0001e000 00000094 2**1
    CONTENTS, ALLOC, LOAD, READONLY, CODE
    2 .bss 00000452 00800104 00800104 000017fc 2**0

    [...]

    0001e000 <__vectors>:
    1e000: 0c 94 a4 f1 jmp 0x1e348 ; 0x1e348 <__ctors_end>
    1e004: 0c 94 c4 f1 jmp 0x1e388 ; 0x1e388 <__bad_interrupt>
    1e008: 0c 94 c4 f1 jmp 0x1e388 ; 0x1e388 <__bad_interrupt>

    [...]

    0001e348 <__ctors_end>:
    1e348: 11 24 eor r1, r1
    1e34a: 1f be out 0x3f, r1 ; 63
    [...]
    1e380: 0e 94 14 f6 call 0x1ec28 ; 0x1ec28 <main>
    1e384: 0c 94 b0 fb jmp 0x1f760 ; 0x1f760 <_exit>

    0001e388 <__bad_interrupt>:
    1e388: 0c 94 00 f0 jmp 0x1e000 ; 0x1e000 <__vectors>

    [...]

    nt main( void )
    {
    1ec28: 1f 93 push r17
    // u16 i;

    cli();
    1ec2a: f8 94 cli
    TIMSK = 0; // disable timer interrupts
    1ec2c: 17 be out 0x37, r1 ; 55

    /* Enable change of interrupt vectors */
    MCUCR = (1<<IVCE);
    1ec2e: 11 e0 ldi r17, 0x01 ; 1
    1ec30: 15 bf out 0x35, r17 ; 53
    /* Move interrupts to boot flash section */
    MCUCR = (1<<IVSEL);
    1ec32: 82 e0 ldi r24, 0x02 ; 2
    1ec34: 85 bf out 0x35, r24 ; 5

    [...]


    Pliki .hex (zapisany i odczytany) wyglądają ok.
    A może jest coś czym musi się różnić bootloader na ATMega128 od tego dla
    ATMega8?

    Dariusz Żołna

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: