【问题标题】:MicroBlaze MCS Fixed Timer InterruptsMicroBlaze MCS 固定定时器中断
【发布时间】:2023-03-12 19:32:01
【问题描述】:

我正在尝试在 MicroBlaze MCS 内核中获得一个固定计时器,以调用一个函数来切换一些 LED 作为概念验证。

这是我现在拥有的代码

#include <xparameters.h>
#include <xiomodule.h>
#include <xiomodule_l.h>

XIOModule gpo1;
volatile u32 ct = 0;

void timerTick(void* ref){
    ct++;
    XIOModule_DiscreteWrite(&gpo1, 1, ct);
    XIOModule_DiscreteWrite(&gpo1, 2, ct);
}

int main() {

    XIOModule_Initialize(&gpo1, XPAR_IOMODULE_0_DEVICE_ID);
    XIOModule_Start(&gpo1);

    XIOModule_EnableIntr(XPAR_IOMODULE_0_BASEADDR, XIN_IOMODULE_FIT_1_INTERRUPT_INTR);
    XIOModule_Connect(&gpo1, XIN_IOMODULE_FIT_1_INTERRUPT_INTR, timerTick, NULL);

    while (1) {
    }
}

GPO 的东西有效。如果我把它放在 while 循环中,我可以让 LED 按预期切换。然而,就目前的代码而言,timerTick() 永远不会被调用。我对如何正确设置中断感到非常困惑,而且我找不到任何关于此的文档。我能找到的最好的是http://www.xilinx.com/support/documentation/sw_manuals/xilinx14_4/pg048-microblaze-mcs.pdf,它更多地介绍了内核的硬件,而不是如何对其进行编程。

启用和连接中断的正确方法是什么?

【问题讨论】:

    标签: fpga xilinx microblaze


    【解决方案1】:

    感谢这个论坛帖子http://forums.xilinx.com/t5/Embedded-Development-Tools/Can-not-fire-MicroBlaze-MCS-interrupt/td-p/256372,我找到了解决方案

    #include <xparameters.h>
    #include <xiomodule.h>
    #include <xiomodule_l.h>
    
    XIOModule gpo1;
    volatile u32 ct = 0;
    
    void timerTick(void* ref) {
        ct++;
        XIOModule_DiscreteWrite(&gpo1, 1, ct);
        XIOModule_DiscreteWrite(&gpo1, 2, ct);
    }
    
    int main() {
    
        XIOModule_Initialize(&gpo1, XPAR_IOMODULE_0_DEVICE_ID);
    
        microblaze_register_handler(XIOModule_DeviceInterruptHandler, XPAR_IOMODULE_0_DEVICE_ID);
    
        XIOModule_Start(&gpo1);
    
        XIOModule_Connect(&gpo1, XIN_IOMODULE_FIT_1_INTERRUPT_INTR, timerTick, NULL);
        XIOModule_Enable(&gpo1,XIN_IOMODULE_FIT_1_INTERRUPT_INTR);
    
        microblaze_enable_interrupts();
        while (1) {
        }
    }
    

    【讨论】:

    • 您能描述一下发生了什么变化,而不是仅仅发布新代码,以供未来的读者学习吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-02
    • 2018-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多