以前在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抓取的引脚的高低电平,其实就是调试时,想看的内存的值。
这就是调试的过程中,底层硬件的逻辑。