Я читал, что прерывания, генерируемые программным обеспечением в ARM, используются как межпроцессорные прерывания. Я также вижу, что 5 из этих прерываний уже используются. Я также знаю, что ARM предоставляет 16 прерываний, генерируемых программным обеспечением.
В моем приложении я запускаю голое железо на ядрах ARM-cortex и Linux на другом. Я хочу передать некоторые данные из ядра, на котором запущено «голое железо», в ядро, работающее под управлением Linux. Я планирую скопировать данные во встроенную память (которая является общей) и вызову SGI на ядре (под управлением Linux), чтобы указать, что некоторые данные доступны для обработки. Теперь я могу сгенерировать SGI из ядра (работающее на «голом железе»). Но для обработки прерывания на стороне Linux я не уверен в свободных номерах SGI IRQ, и я также не уверен, могу ли я использовать номер IRQ напрямую (обычно SGI от 0 до 15). Есть ли у кого-нибудь идеи, как написать обработчик для SGI в Linux?
Изменить: это новая формулировка приведенного выше текста, поскольку вопрос был закрыт по причинам SSCE < / а>. Процессоры Cortex-A используются в многопроцессорных системах. ARM общий контроллер прерываний (GIC) отслеживает все глобальные прерывания и отправляет их конкретному процессору. Чтобы отдельные процессоры могли сигнализировать друг другу, от одного ядра к другому отправляется программно сгенерированное прерывание (SGI); здесь используются частные периферийные прерывания (PPI). Этот вопрос,
Как реализовать драйвер ядра Linux, который может получать SGI как PPI?