Przerwania między procesorami w korze ARM A9 (Jak napisać program obsługi przerwania generowanego przez oprogramowanie (ARM) w systemie Linux?)

Przeczytałem, że przerwania generowane przez oprogramowanie w ARM są używane jako przerwania między procesorami. Widzę również, że 5 z tych przerwań jest już w użyciu. Wiem też, że ARM zapewnia 16 przerwań generowanych przez oprogramowanie.

W mojej aplikacji korzystam z czystej aplikacji metalowej na rdzeniach ARM-cortex i Linuksie. Chcę przekazać pewne dane z rdzenia, na którym uruchomiona jest naga metalowa aplikacja do rdzenia, na którym działa Linux. Planuję skopiować dane do pamięci chipowej (która jest współdzielona) i wyzwolę SGI na Core (działający Linux), aby wskazać, że niektóre dane są dostępne do przetworzenia. Teraz jestem w stanie wygenerować SGI z rdzenia (z uruchomioną aplikacją typu „bare-metal”). Ale do obsługi przerwań po stronie linuxa nie jestem pewien, które numery IRQ SGI są wolne i nie jestem też pewien, czy mogę bezpośrednio użyć numeru IRQ (w SGI są od 0-15). Czy ktoś ma pomysł, jak napisać program obsługi SGI w Linuksie?

Edytować: To jest powtórne sformułowanie powyższego tekstu, ponieważ pytanie zostało zamkniętePowody SSCE. Procesory Cortex-A są używane w systemach wieloprocesorowych. Ramięogólny kontroler przerwań (GIC) monitoruje wszystkie globalne przerwania i wysyła je do konkretnego procesora. Aby poszczególne procesory sygnalizowały sobie nawzajem, aprzerwanie generowane przez oprogramowanie (SGI) jest wysyłany z jednego rdzenia do drugiego; to używaperyferyjne prywatne przerwania (PPI). To pytanie jest

Jak zaimplementować sterownik jądra Linux, który może otrzymać SGI jako PPI?

questionAnswers(2)

yourAnswerToTheQuestion