Re: Programování STM32 - přerušení

Miroslav Mraz mrazik na volny.cz
Středa Říjen 9 20:00:33 CEST 2019


Je docela dobré vědět, jak to krokování funguje uvnitř. Pokud krokujete 
pomocí next, tj. necháváte proběhnout celý podprogram, gdb to musí 
udělat tak, že krokuje po jednotlivých instrukcích a po každé instrukci 
čte registry. Pokud tedy skočíte do něčeho jako je delay(), tak se to 
vrtí uvnitř té funkce a mezi SWD, ST-Linkem, gdb serverem a samotným gdb 
probíhá masivní komunikace a ta to hóóódně brzdí. Takže se konce možná 
dočkáte až po několika minutách, ale protože to navenek není nijak 
vidět, tak se vám zdá, že to zamrzlo.
Jediná rozumná metoda je vrazit si na konec funkce breakpoint, ale 
protože hardwarových bkpt je omezený počet, musíte si předem rozmyslet, 
co vlastně chcete ladit. Můžete si softwarový bkpt vrazit přímo do kódu, 
tam omezení na počet není, ale zase nesmíte zapomenout ho z produkčního 
kódu zase odstranit.
Ladění pomocí bkpt doporučuji, tak máte jistotu, že proběhne i 
přerušovací rutina (nakonec bkpt můžete dát i do obslužné rutiny toho 
přerušení). Při krokování bych si tím nebyl tak jistý, je otázka co 
dělají při krokování jednotlivé periferie (a řadič přerušení).

Mrazík

Dne 09. 10. 19 v 19:15 cizek.milan na seznam.cz napsal(a):
> Tak jsem trochu pokročil.
> Ještě jsem to zjednodušil a postupně zakomentoval i ty některé _Init (RTC, ADC, ADC1) a už to přechází i přes ten delay.
> Také jsem si uvědomil, že má jen 1 krystal, tak jsem nechal jen LSE a zrušil HSE a vyhodil z projektu podporu USB...
> Také už mi to vypsalo část řetězce do UARTu, takež asi jsem na dobré cestě. Jdu zkoumat dál. Díky
> 
> Jinak v případě přerušení se to při krokování chová jak, poznám to, že mi odskočí do metody obsluhující INT?
> 
> M.
> 
>> -----Original Message-----
>> From: Hw-list <hw-list-bounces na list.hw.cz> On Behalf Of Jaroslav Buchta
>> Sent: Wednesday, October 9, 2019 7:03 PM
>> To: hw-list na list.hw.cz
>> Subject: Re: Programování STM32 - přerušení
>>
>> Mam podezreni, ze se nezastavi, ale v rezimu krokovani se beh stale
>> prerusuje vcetne casovace a trvalo by to dlouho. Bud dejte step into,
>> kde by to melo vlezt do funkce, pokud chcete videt jak to dela, nebo
>> dejte na dalsi radek breakpoint a program do cekani normalne spustte.


Další informace o konferenci Hw-list