当前位置: 首页 > news >正文

Xilinx MicroBlaze定时器中断无法返回主函数问题解决

最近在使用Xilinx 7系列FPGA XC7A100T时,运行MicroBlaze软核处理器,添加了AXI TIMER IP核,并使能定时器溢出中断,发现定时器触发中断后,无法返回主函数的问题,最后发现修改编译器优化等级就正常了。

FPGA型号是XC7A100T-FGG484,开发环境是Vivado 2018.3

应用代码大致如下结构:


uint32_t cnt_1ms = 0;int main(void)
{//1. 定时器初始化//2. 定时器中断初始化1mswhile(1){if(cnt_1ms > 500) {cnt_1ms = 0;set_led_toggle();}}return 0;
}void mb_timer0_handler(void)
{//1ms溢出cnt_1ms++;//xil_printf("cnt_1ms = %d\r\n", cnt_1ms);//清除中断XTmrCtr_ClearStats(&timer0);return;
}

编译版本选择Debug版本,LED正常500ms闪烁一次。
编译版本选择Release版本,LED状态无变化,中断打印的cnt_1ms变量的值一直在增加,没有清零,说明定时器溢出中断触发之后,没有返回主函数。

最后发现,把Release版本的编译器优化等级改为0就正常。

这种情况不是所有的工程都会出现,只有在一些特定情况下会出现,目前不清楚发生的规律。

http://www.lryc.cn/news/205897.html

相关文章:

  • Spark SQL概述与基本操作
  • KDChart3.0编译过程-使用QT5.15及QT6.x编译
  • 一、PHP环境搭建[phpstorm]
  • 光影之梦2:动画渲染前后对比,揭示视觉艺术的惊人转变!
  • pytorch_lightning:Validation sanity check: 0%| | 0/2 [00:00<?, ?it/s]
  • 2、Linux权限理解
  • Linux 通过 sed 命令过滤指定日期的日志文件并输出到新文件
  • 景联文科技:针对敏感数据的安全转录服务,护航信息安全
  • Excel宏(VBA)自动化标准流程代码
  • vue vue3开发 vue2和vue3的选择
  • 华为OD 数列描述(100分)【java】A卷+B卷
  • μCOS-Ⅲ中断管理,这样理解非常简单!
  • Vue 项目进行 SEO 优化
  • 【C++入门篇】保姆级教程篇【上】
  • 用傲梅分区软件分割分区重启系统蓝屏BAD_SYSTEM_CONFIG_INFO,八个解决参考方案
  • 7-1、S曲线加减速原理【51单片机控制步进电机-TB6600系列】
  • golang 通過ssh連接遠程服務器 控制
  • Python深度学习实战-基于tensorflow.keras六步法搭建神经网络(附源码和实现效果)
  • 单片机核心/RTOS必备 (ARM汇编)
  • 2023/10/25
  • 如何做一个无符号数识别程序
  • C++初阶:C/C++内存管理
  • 新成果展示:AlGaN/GaN基紫外光电晶体管的设计与制备
  • Ivs+keepalived:高可用集群
  • win10安装spark
  • 基于Spring Boot 的毕业生实习就业管理系统(绿色)
  • 1600*C. Remove Adjacent(贪心字符串)
  • CRC校验码2018-架构师(六十一)
  • CSS设置超出范围滚动条和滚动条样式
  • EtherCAT从站转CclinkIE协议网关应用案例