Podivné chování debuggeru JTAGICE - Atmel a AVR Studio

Zdravím,

mám tu vývojovou desku s ATMegou 16 a na desce je přímo integrovaný JTAGICE.

  1. V atmelstudiu 6.0 mi nelze vůbec najít, neví někdo proč? (to ale ení hlavní dotaz)

  2. V AVR studiu 4 jsem ho v pohodě našel a když vstoupím do debugu, z jakéhosi důvodu při zmáčknutí step over mi neskočí na následující statement, ale kamsi podivně o mnoho řádků níže. Nejlépe půjde pochopit z přiložených screenů

Děkuji moc za pomoc

URL NA SCREENY:
PRED F11:
img99.rajce.idnes.cz/d9902/8/8663/8663712_04b6b0895f44747f72a8c26c9db861c9/images/1-pred.jpg?ver=0

PO F11:
img99.rajce.idnes.cz/d9902/8/8663/8663712_04b6b0895f44747f72a8c26c9db861c9/images/2-po.jpg?ver=0

:arrow_right: administrator: přesunuto z "AVR"

:arrow_right: administrator: přejmenováno z "Podivné chování debuggeru JTAGICE"

:arrow_right: administrator: přiloženy externí soubory
1-pred.jpg
2-po.jpg

Nepises s akym parametrom si nechal program prelozit (-O0, …, -Os)
Program sa podla mna sprava uplne korektne.
Skus si program odkrokovat v simulatore a predpokladam, ze vysledok bude uplne taky isty. Na zaciatku skaces do ini() a tak tam skocil. Poradie vykonavania nemusi byt dodrzane, ak to vyhovuje nejakej optimalizacnej ficure. V tomto pripade si asi kompilator prehodil poradie prikazov vo funkcii ini(), lebo usudil, ze takto sa mu to spravi lepsie a na vysledny kod to vplym mat nebude.

Aha, chápu, to dává smysl :slight_smile: díky

Jenom by mě teda zajímalo k čemu tam tedy je možnosst step over … když to stejně vletí dovnitř funkce

No ved to :slight_smile:

Mozno sa prekladac rozhodol vzhladom na jediny vyskyt funkcie ini() ju zahrnut do hlavneho programu a tak nemal preskocit co, respektive sa zastavil na poslednom prikaze tej funkcie ini(), ci co len chces. :slight_smile:

No to ale není korektní, přeskočil mnoho řádků … správně i když jde dovnit funkce, tak má jít na první řádek funkce …

Máš smůlu, optimalizovaný kód se krokuje blbě nebo vůbec. Jak moc je to chaotický záleží na kompilátoru ale skoro vždy je lepší nastavit pro ten konkrétní zdroják co tě zajímá nulovou optimalizaci, přeložit a pak krokovat.

Ok, poradíš jak vypnout optimalizaci ? díky

Problém velmi silného optimalizátoru gcc je v tom, že může změnit kód tak, že simulátor v Avrstudiu s tím má problémy.

Horší řešení je vypnout optimalizaci.
Lepší řešení je v simulátoru přepnout do okna asembleru a tam krokovat.

Chápu, poradíš kde se dá vypnout optimalizace, popř jak přepnout na assembler ?

díky moc

AVR 4.19
Bud to změníš globálně pro celý projekt “Project” “Edit Configuration Options” “General” kolonka “Optimization” a nebo v to nastavíš pro každý soubor zvlášť v kartě “Custom Options” . Soubory které mají něco extra nastaveno mají pak u svého názvu * .

-O0 znamená neoptimalizovat.

Když potřebuje ověřit třeba jen splnění podmínky, nastavení registru, průchod stavovým automatem a pod. tak nechápu co je na dočasné odstranění optimalizace špatného a proč by měl krokovat v ASM, to už to může rovnou psát v ASM a neřešit asertivní kompilátor…

Simulator samozrejme nema problem s krokovanim optimalizovaneho programu. To len obsluha moze obcas cumiet ako puk do vykladu :slight_smile:

Nastavenie optimalizacie

Project->Configuration Option->Optimization

nastavenie

-O0 bez optimalizacie
-O1 ciastocna optimalizacia
-O2 vacsia optimalizacia
-O3 optimalizacia na rychlost
-Os optimalizacia na velkost kodu

Ja pouzivam iba -Os. Mam skusenosti, ze kod je zaroven najrychlejsi. Je to take dobre optimum (aspon pre mna :slight_smile: )

Radius:
Také vypínám optimalizaci když zkouším nějaký kousek kódu.
V takovém neúplném kódu optimalizátor většinou něco vyřadí.
Horší je to proto, že simulujeme jiný kód, než ten definitivní s -Os.

Oba kódy (-O0 a aj -Os) budú fungovať rovnako, ak je kód správne napísaný. :slight_smile:

Ale určite odporúčam testovať to, čo aj v skutočnosti pobeží.

Moc díky za rady, už v tom mám o mnoho více jasno :slight_smile:

Stejně mi to atmelstudio 4 nevyhovuje :frowning: jsem zvyklý na 6 … nechápu, proč mi atmelstudio 6 nechce rozpoznat ten můj kit s JTAGICE … moc mě to irituju :frowning:((

No mne prave preto nevyhovuje AVRStudio 6, lebo nevie robit to co AVRStudio 4. Aj ked to je pre obsluhu menej komfortne, aspon robi naozaj to co ma.

Tym chcem povedat, ze ja mam radsej funkcnu lopatu, ako nefuncny bager. A hlavne nemam cas na hladanie zaludnosti toho vymakaneho bagra. Ja sa pracou potrebujem zivit a nie robit vedu-vyskum.