Re: ATmega, zachovaní promxJtubsO9Y2g o resetu

Jirka Mww jirka.mww na gmail.com
Úterý Březen 24 18:38:50 CET 2015


dobrý večer,

přiživím se se svým dotazem : Není taková možnost i v SDCC pro 8051 ?
Docela by se mi hodilo poznat, jestli se něco těsně před reakcí watchdogu
opravdu stalo ale nevím, kam to napsat.
Našel jsem jen příkaz překladači --no-xinit-opt, ale nejsem si jist,
zda by to šlo použít,
kdybych si tu poznámku psal do pole  xdata.



2015-03-24 11:43 GMT+01:00 Jan Waclawek <konfera na efton.sk>:
>>> >HM, a jste si 100% jistý, ľe tu inicializaci neprovádí AVRko
>>> >hardwarově?
>>> >
>>> >P.T.
>>
>>Hm, ok, tak jsem koukal do datashitu (mega 8) a jestli tomu spravne
>>rozumim, tak to nuluje jen i/o registry. (Ale ja vedel, ze to neco nuluje :-) )
>>
>
> Ak mame byt presni, tak reset
> - registre io priestoru nastavuje na pociatocne hodnoty (to neznamena
> nulovanie)
>   - pre porty to robi okamzite hned ako reset prejde do aktivnej hodnoty,
> bez ohladu na hodiny
> - nuluje program counter
>
> SRAM ostava pri reste nezmenena, inak by sa nedal dosiahnut startup behom 6
> hodin oscilatora, len za cenu komplikovanejsej SRAM (citaj: vyrazne
> drahsieho cipu).
>
> Este som sa nestretol s mcu, kde by sa SRAM pri resete hardwarovo nulovala.
> Viem si predstavit adresovaci hardware ktory by ju nuloval rychlejsie ako
> software (nieco ako DMA), ale IMO nema zmysel ho aktivovat automaticky pri
> resete.
>
> Co sa tyka avr-gcc, nulovanie neinicializovanych premennych tak, ako to
> vyzaduje C99, je zabezpecene tym, ze ich kompilator uklada do sekcie
> COMMON, ktora je zhodna so sekciou .bss, pre ktoru linker vytvori symboly
> pre hranice (explicitne inicializovane premenne idu do sekcie .data, pre
> ktoru tiez linker vytvori symboly pre jej hranice a ulozi ich obsah do
> programovej pamate za samotny program = .text). Tieto symboly vyuziva
> startup kod, ktory oblast medzi tymito hranicami vyplni nulami (a podobne
> inicializuje oblast .data). Tento je ulozeny vo forme object (.o, t.j.
> prelozeny) pre kazdy model individualne v [avr-gcc]/avr/lib/avrN/crtM.o.
> Zdroj je jediny asemblerovsky subor v zdrojakoch avr-libc v
> [avr-libc-src]/crt1/gcrt1.S . Linkovanie startupu sa da potlacit
> prepinacom -nostartfiles.
>
> Ako bolo napisane, v default linker skripte je vytvorena v SRAM sekcia
> .noinit, kam sa daju umiestnovat (explicitnym predpisom atributom
> premennej alebo typu __attribute__((section(".noinit"))) ) premenne ktore
> maju ostat pocas resetu nezmenene; toto je najlahsie a vo vacsine pripadov
> aj najlepsie riesenie. Samozrejme si kazdy moze pre svoj projekt
> napisat/zmodifikovat z defaultneho svoj linker script a v nom vytvorit
> tolko a takych sekcii, kolko chce. Dalsou moznostou je zmodifikovat
> startup kod alebo zmanipulovat symboly rozmedzi sekcie .bss.
>
> wek
>
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list



-- 
Zdravi
Jirka OK1MWW


Další informace o konferenci Hw-list