中断向量处理程序地址

时间:2016-11-18 14:05:27

标签: c operating-system interrupt interrupt-handling

我正在开发一个简单的操作系统,它需要一个小的中断向量。我一直在阅读有关中断向量的内容,以便理解这些概念。

许多资源都是这样的: enter image description here

[1] http://www.embedded.com/electronics-blogs/programming-pointers/4025714/Modeling-interrupt-vectors#references

让我感到困惑的是,我怎么知道中断处理程序的地址?我知道我需要为不同类型的中断创建不同的函数,但我怎么知道函数的地址?

我正在用C开发我的代码。

1 个答案:

答案 0 :(得分:1)

中断处理程序最后是一个函数。

一个功能从"地址"开始。你可以简单地使用它的名字来检索它。

以下代码将警告传递的%p参数类型,但是是解释性的:

#include <stdio.h>

void dummy_ISR ( void )
{

}

int main ( void )
{
    printf("Address of function: %p\n", dummy_ISR);

}

您可以使用函数指针创建表

#include<stdio.h>

int dummy_isr1 ( void )
{
    return 0;
}

int dummy_isr2 ( void )
{
    return 0;
}

typedef int (*functionPtr)(void);

functionPtr table[] =
{
        dummy_isr1,
        dummy_isr2
};


int main(void)
{
    for (size_t i=0; i<sizeof(table)/sizeof(table[0]); i++)
    {
        printf("Address %zu: %p\n", i, table[i]);
    }

   return 0;
}