You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NIOSII软核UART中断调试求助——Cyclone 10 LP评估板

Cyclone 10 LP NIOS II UART中断功能故障排查

问题背景

在Cyclone 10 LP评估板上运行搭载UART IP核的NIOS II软核处理器,轮询模式下UART所有功能正常,但UART中断功能无法正常工作。

FPGA配置情况

Platform Designer中已将UART的中断线连接至NIOS II软核处理器:
Quartus Platform Designer

驱动状态

NIOS2 EDS中Altera UART驱动已就绪:
NIOS2 EDS

初始化代码

Altera提供的初始化代码如下:

/*
 * Initialize the interrupt controller devices
 * and then enable interrupts in the CPU.
 * Called before alt_sys_init().
 * The "base" parameter is ignored and only
 * present for backwards-compatibility.
 */

void alt_irq_init ( const void* base )
{
    ALTERA_NIOS2_GEN2_IRQ_INIT ( NIOS2E, nios2e);
    alt_irq_cpu_enable_interrupts();
}

/*
 * Initialize the non-interrupt controller devices.
 * Called after alt_irq_init().
 */

void alt_sys_init( void )
{
    ALTERA_AVALON_JTAG_UART_INIT ( JTAG_UART, jtag_uart);
    ALTERA_AVALON_UART_INIT ( UART_0, uart_0);
    ALTERA_REMOTE_UPDATE_INIT ( REMOTE_UPDATE_0, remote_update_0);
}

排查步骤

  1. 检查UART IP核的中断配置

    • 确认UART IP核中已启用接收/发送中断(按需选择),并配置了正确的中断触发条件(如接收缓冲区满、发送缓冲区空等)。
    • 核对UART的中断优先级,避免被其他高优先级中断完全抢占。
  2. 验证中断控制器配置

    • 确认NIOS II中断控制器已启用对应UART中断号的中断掩码,可通过读取中断控制器状态寄存器排查。
    • 核对Platform Designer中UART的中断号与软件注册的中断号是否一致。
  3. 补全中断注册代码

    • 必须调用alt_irq_register()完成UART中断服务程序(ISR)的注册,示例代码如下:
      static void uart_isr(void* context) {
          // 读取UART状态寄存器
          uint32_t status = IORD_ALTERA_AVALON_UART_STATUS(UART_0_BASE);
          // 处理接收中断
          if (status & ALTERA_AVALON_UART_STATUS_RRDY_MSK) {
              char recv_data = IORD_ALTERA_AVALON_UART_RXDATA(UART_0_BASE);
              // 自定义数据处理逻辑
          }
          // 清除中断标志位
          IOWR_ALTERA_AVALON_UART_STATUS(UART_0_BASE, status);
      }
      
      // 在系统初始化后注册中断
      alt_irq_register(UART_0_IRQ, NULL, uart_isr);
      
    • 确保ISR中正确清除UART中断标志位,否则会导致中断无法正常触发或反复触发。
  4. 硬件层面验证

    • 用示波器或逻辑分析仪监测UART的中断输出引脚,确认有中断信号产生。
    • 检查评估板上UART的硬件连接,包括电平转换电路、引脚焊接是否正常。
  5. 软件调试技巧

    • 在ISR中添加JTAG UART调试输出,确认中断服务程序是否被触发。
    • 使用NIOS II调试器查看CPU中断状态寄存器,检查中断是否被正确识别和响应。

内容的提问来源于stack exchange,提问作者user7063051

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 09:01:00