system.mhs文件定义了物理硬件的相关信息,包括总线架构、外围设备、处理器、系统内部信号互连和地址空间等。
所以这里就通过MHS定义文件给出关于中断信号互连的信息。
MicroBlaze的中断输入,可以配置成电平触发或者边沿触发,在配置MicroBlaze的GUI或者在MicroBlaze.mpd中通过
设置 C_INTERRUPT_IS_EDGE ,C_EDGE_IS_POSITIVE来完成对中断的触发的配置。
MHS文件中,PORT Interrupt = Interrupt 和 PORT Irq = Interrupt 将Interrupt控制器连接到Microblaze的中断输入口。
XIntc_RegisterHandler(Xuint32 BaseAddress, int InterruptId, XInterruptHandler Handler, void *CallBackRef) Or int XIntc_Connect (XIntc *InstancePtr, u8 Id, XInterruptHandler Handler, void *CallBackRef) 其中: Xuint32 BaseAddress :XIntc实例的基地址 int InterruptId :中断ID号,由MHS文件生成,格式为XPAR_<产生中断的元件的实例名>_<中断信号名> _INTR,可在头文件xparameter.h中找到 XInterruptHandler Handler :就是中断函数名了,由用户定义 void *CallBackRef :向中断服务程序传递参数,可视情况来定启用与否,不用的话设为0或NULL;当是外部中断时就用NULL。
microblaze_enable_interrupts() XGpio_InterruptGlobalEnable (&Push_Buttons_Position) XGpio_InterruptGlobalEnable (&DIP_Switches_8Bit) XGpio_InterruptEnable (&Push_Buttons_Position, XGPIO_IR_CH1_MASK) XGpio_InterruptEnable (&DIP_Switches_8Bit, XGPIO_IR_CH1_MASK) XIntc_mMasterEnable(XPAR_XPS_INTC_0_BASEADDR) XIntc_mEnableIntr(XPAR_XPS_INTC_0_BASEADDR, XPAR_PUSH_BUTTONS_POSITION_IP2INTC_IRPT_MASK|XPAR_DIP_SWITCHES_8BIT_IP2INTC_IRPT_MASK);