Menu Close

RISC-V软件IDE开发环境及使用(4)run_led工程调试

本文主要介绍如何使用freedom studio 对run_led工程进行调试。

相关参考文章:

RISC-V教学教案

 

1. 工程调试

  • 添加Break Point(断点)
    • run_led.S 编辑窗口中双击行号23,可以看到行号左侧多了一个蓝色圆点。说明在第23行成功添加break point,如图1所示

 

图1 添加break point

 

  • Breakpoints窗口,可以看到刚刚添加的breakpoint (line23),如图2所示

 

图2 Breakpoints窗口

 

  • Debugger Console窗口,可以看到程序停在了我们刚刚添加的break point(line23),如图3所示

图3 Debuger Console窗口

 

  • 查看目标板,可以发现跑马灯停在了一个LED灯上(本例中停在了LED3)。证明breakpoint添加成功,如图4所示

 

图4 LED3点亮

 

  • 查看register(寄存器)窗口

 

图5 register窗口

 

  • Resume(继续运行)
    • 中断程序后点击上方resume图标可以继续运行程序,如图6所示

 

图6 继续运行

 

    • 可以看到在程序运行完loop循环后又停在了之前设定的breakpoint位置。
    • 再次查看register窗口可以看到s2的值被更改为0xfffffffb
    • 在目标板上LED2灯被点亮,LED灯向右移动了一位。该结果与窗口显示的信息相符,如图7所示

 

图7 register窗口

 

  • 单步执行

 

图8 单步执行按钮图标

 

a: Step Into(跳入函数体)

b: Step Over(跳过函数体)

    • 本例中使用的汇编程序无函数,所以这两个图标按钮都可以作为单步执行使用
    • 点选跳入函数体图标进行单步执行
    • 在Register窗口可以看到pc值被更改为0x8000001c

注:上一步被修改的寄存器会被黄色高亮显示

 

    • 蓝色指针图标指向行号14,证明程序单步执行了JAL LOOP语句,跳转到LOOP 起始位置,如图9所示

 

图9 编辑窗口

 

  • 查看Disassembly(反汇编)窗口
    • 打开Disassembly (反汇编)窗口可以看到蓝色指示符号指向语句addi t1,t1,1 该语句为LOOP的第一条语句,如图10所示

注意:个别语句与原汇编程序有区别,原因是GCC编译过程中进行了优化。

 

图10 Disassembly 窗口

 

  • 再次点击Step Into单步跳转,可以看到pc值被更改为 0x80000020, 如图11所示,指示图标指向 BNE x6, x7, LOOP 如图12所示
    • t1的值被修改为0x1,证明第14行命令ADDI x6, x6, 1;被执行,单步执行成功

图11 Resigter 窗口

 

 

图12 Disassembly 窗口

 

  • 在Disassembly 窗口,可以看到指示图标指向了bne t1, t2, 0x8000001c;与原程序指针保持一致,如图13所示

 

图13 Disassembly 窗口

 

  • 点击Step Into, 程序指针跳回第14行,PC 值被更改为0x8000001c
    • 原因是在上条语句中x6(t1)的值为1,x6!= x7,所以程序依然运行在loop循环内,如图14所示

 

图14 编辑窗口

 

  • 如果需要直接运行到下一步,可以双击第16行行号添加break point。
    • 点击Resume,程序会自动运行并暂停在第16行的指令,如图15所示

 

图15 在16行增加断点

  • 至此,run_led工程的调试完成

 

 

Posted in RISC-V, RISC-V 教材教案, RISC-V开发板, 开发板, 开发板使用, 教材与教案, 文章

发表评论

您的电子邮箱地址不会被公开。

Leave the field below empty!

相关链接