Re: ARM - reentrantní vstup to IRQ rutiny
Milan Kratochvíl
krata.milan na seznam.cz
Pondělí Duben 17 20:14:02 CEST 2017
Zdravím, jen myšlenka, a co ten výpočet dát úplně pryč z přerušení a jen
si nastavit hodnoty a příznak, pro start výpočtu a příznak pro hotový
výpočet a v přerušení si už jen vzít výsledky.
Milan
Dne 17.4.2017 v 19:57 Petr Labaj napsal(a):
> Já vím, je to prasárna, takže bych to měl asi napsat, že "jeden známý
> se ptá". ;-)
>
> Potřeboval bych zajistit reentrantní vstup do přerušovací rutiny. Tj.
> obsloužit dané
> přerušení ještě v době trvání předchozí obsluhy téhož přerušení.
> Jde o Cortex M3, konkrétně o nějaký STM32F1 až 4.
>
> Situace: nějaké přerušení je voláno cca 4000x za sekundu. Běžně se za
> tu dobu
> spolehlivě obslouží, ale při každém 5. zavolání bych potřeboval udělat
> delší výpočet,
> který může přesáhnout dobu 1/4000 sekundy. Spolehlivě se ale provede
> do doby
> dalšího takového 5. přerušení, takže nějaké přetečení stacku
> reentrancí nehrozí.
>
> Jestli správně chápu přerušovací mechanismy u Cortexu M, tak ukončení
> přerušení
> a tedy možnost dalšího vstupu do IRQ rutiny je možné až po instrukci
> RET (neboli BX).
>
> Vidím 3 možnosti, jak to oblbnout, ale ani jedna není ideální:
> - Nacpat na stack adresu třeba sebe sama a udělat falešný RET. A
> doufat, že to
> nenarazí na nějaké cachování zápisu do RAM nebo jiný zádrhel.
> - Dynamicky v rámci té rutiny zvýšit přioritu toho přerušení, takže
> další požadavek
> na stejné IRQ již bude mít vyšší prioritu a bude přijat. Tohle by se
> mi líbilo, ale
> nevím, jestli se to zvýšení priority promítne okamžitě.
> - Z IRQ rutiny naplánovat nějaké přerušení s nízkou prioritou od jiné
> periferie,
> to se uplatní hned po opuštění aktuální obsluhy IRQ. Pokud nenajdu
> nic lepšího,
> tak to asi nakonec dopadne takhle.
>
> Žádná z variant mi nepřijde moc sexy.
> Nemáte někdo tip na nějaký mechanismus, který by byl elegantnější? Třeba
> jestli nějak nejde násilně na NVIC jako-že-ukončit obsluhu přerušení,
> aby si
> NVIC myslel, že může přijmout další stejné IRQ?
>
> Děkuji za případné tipy.
> PL
>
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>
Další informace o konferenci Hw-list