2012-05-17 6 views
3

При использовании обработчиков прерываний Ada я до сих пор выделял некоторые конкретные вещи, которые должны быть в коде для их работы.Обработчики прерываний Ada

Использование Ada.Interrupts:

protected Int_Handler is --a protected object to handle interrupts 
    procedure Handler_1; --A procedure which handles interrupts from your first device (with a body, of course) 
    pragma Interrupt_Handler (Handler_1); --To tell the compiler this is an interrupt handler 
    --Later in the program: 
begin 
    Attach_Handler (Int_Handler.Handler_1'access, Serial_1); 

Предполагая, что все это правильно, и я позволил прерывания в регистрах, есть ли другой код прерывания, связанные мне нужно было бы добавить к этому? В частности, нужно ли мне напрямую взаимодействовать с регистрами, чтобы каким-то образом «связать» мой код обработчика, или я могу просто настроить представление реестров регистров, вывести на них непосредственно необходимые настройки и позволить rip?

Спасибо!

+0

Все, что с "прагме" является реализацией определения зависимой; «tick-address» (и, в этом отношении, регистры и аппаратные прерывания) полностью зависят от платформы. IMHO ... – paulsm4

+0

@ paulsm4: По определению: «Существуют прагматы, определяемые языком, которые дают инструкции для оптимизации, управления листингом и т. Д. Реализация может поддерживать дополнительные (реализационные) прагмы». [Ada LRM 2.8] (http://www.adaic.org/resources/add_content/standards/05rm/html/RM-2-8.html) –

ответ

5

Я думаю, что вы на правильном пути, но если вы еще этого не сделали, я бы, если бы вы были, просмотрел некоторые из статей, которые были опубликованы при обработке прерываний с помощью Ada. Например .:

+0

Спасибо, Марк! Весьма признателен. – Leon