You are not allowed to add pages
Direct Link
Direct Link
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的中断输入口。
mhs
mhs
BEGIN microblaze . . . PORT MB_RESET = mb_reset PORT Interrupt = Interrupt END BEGIN xps_uartlite . . . PORT Interrupt = RS232_Uart_1_Interrupt END BEGIN xps_intc . . . PORT Irq = Interrupt PORT Intr = RS232_Uart_1_Interrupt&plb_ps2_controller_0_IP2INTC_Irpt END BEGIN plb_ps2_controller . . . PORT IP2INTC_Irpt = plb_ps2_controller_0_IP2INTC_Irpt PORT mouse_clk = plb_ps2_controller_0_mouse_clk PORT mouse_data = plb_ps2_controller_0_mouse_data PORT key_clk = plb_ps2_controller_0_key_clk PORT key_data = plb_ps2_controller_0_key_data END
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);