本文主要是介绍调试(debug)的底层硬件逻辑——通过FPGA嵌入式软核,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
以前在vs等上调试代码,查看变量或者内存的值没有去深究调试时底层的硬件的逻辑。看了赛灵思给的microblaze的手册,对于debug的底层硬件逻辑有了了解。
若想在SDK中使用调试模块,在基于FPGA的嵌入式硬件设计(如在赛灵思的vivado中使用block design设计)时,需要添加一个debug的硬件模块——ILA。ILA连接想要在调试时,触发信号到来时,抓取的引脚。
这样当你在CPU(microblaze)运行代码到中断程序处时,开始下面的流程(摘自赛灵思的手册):
The ILA immediately triggers as the application software is continuously performing a write to the GPIO thereby toggling
the net_slot_0_axi_awvalid signal, which causes the ILA to trigger. The ILA in turn, toggles
the TRIG_OUT signal, which signals the processor to stop code execution
简单的理解就是,当代码运行到中断处时,cpu会给调试模块一个使能信号(awvild),让ILA触发,抓取想要得到的引脚的值,调试模块(ILA)会紧接着发送一个触发信号到cpu,cpu收到这个信号,停止代码的执行。
前述ILA抓取的引脚的高低电平,其实就是调试时,想看的内存的值。
这就是调试的过程中,底层硬件的逻辑。
这篇关于调试(debug)的底层硬件逻辑——通过FPGA嵌入式软核的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!