Poor man debuger pro AVR

Vitek

Poor man debuger pro AVR
« kdy: 31. 08. 2015, 09:23:22 »
Ahoj,
potreboval bych krokovat C/C++ kod na ATMega32U4, bohuzel nemam hardwarovy JTAG debugger: Atmel AVR Dragon, Atmel AVR ONE!, Atmel JTAGICE mkII.

Takze me napadlo nekolik moznosti, jak se s tim problemem vyrovnat.
1) Linker nabizi volbu -Wl,-wrap,XXXX viz: http://stackoverflow.com/questions/3662856/how-to-reimplement-or-wrap-a-syscall-function-in-linux pro volani konkretni funkce. --> Generovat wrap funkce pro kazdou funkci z puvodniho zdrojaku asi neni dobre.
2) Dalsi moznosti je -finstrument-functions viz: http://mcuoneclipse.com/2015/04/04/poor-mans-trace-free-of-charge-function-entryexit-trace-with-gnu-tools/, to uz je lepsi, ale je to omezene pouze na volani celych funkci, ne na jednotlive radky.
3) Jeste jsem nasel profilovani -fprofile-generate, , ale nevim, jak vykonavat vlastni kod misto toho profilovaciho.

Nevite jestli je mozno provest instrumentaci vykonavanych radku, tj pred kazdy C/C++ radke vlozit volani moji funkce?

Diky za Rady Vitek


hu

Re:Poor man debuger pro AVR
« Odpověď #1 kdy: 31. 08. 2015, 09:47:51 »
Sériák a printf()? Pokud zrovna nelovíš chybu kompilátoru, tak mi to přijde jako dostatečně powerfulní nástroj pro řešení bug v kódu < 32k instrukcemi.

Vitek

Re:Poor man debuger pro AVR
« Odpověď #2 kdy: 31. 08. 2015, 13:51:14 »
Sériák a printf() je dobrej, ale chtel jsem zjistit, jestli neni neco lepsiho.
Rozhodne diky za nazor.

k

Re:Poor man debuger pro AVR
« Odpověď #3 kdy: 31. 08. 2015, 14:11:11 »
potreboval bych krokovat C/C++ kod na ATMega32U4, bohuzel nemam hardwarovy JTAG debugger: Atmel AVR Dragon, Atmel AVR ONE!, Atmel JTAGICE mkII.

Krokovat ve významu krokovat nelze. Logovací printf jde ručně přidat, ale tím se kód velmi změní. Podpora v C/C++ na logování jednotlivých řádků zřejmě není. Na AVR se používá logovací zápis do registru UDR, je to pouze jedna instrukce takže to okolní kód moc neovlivní.

Mirek

Re:Poor man debuger pro AVR
« Odpověď #4 kdy: 31. 08. 2015, 22:33:05 »
Ahoj,
potreboval bych krokovat C/C++ kod na ATMega32U4, bohuzel nemam hardwarovy JTAG debugger: Atmel AVR Dragon, Atmel AVR ONE!, Atmel JTAGICE mkII.

Co to je přesně "Poor man"? Dragon stojí cca 1.400,-. To je jak sen. Za mých mladých let byl emulátor za 50+ kolíků...