#在线调试系统使用方法 ##调试功能介绍 python3 debug.py 打开调试软件

  1. 追踪调试:trace/t pc 返回相应pc处指令执行后要写回的寄存器号和写回值

  2. 显示pc: list 显示当前程序运行到的pc值

  3. 设置断点:break/b pc 设置断点(程序运行到该pc处时停止)

  4. 单步调试:step 停止运行的程序继续运行一个pc后停止

  5. 连续单步:step n 停止运行的程序继续运行n个pc后停止

  6. 继续运行:continue/c 停止运行的程序继续运行

  7. 查询寄存器:infor n 查询n号通用寄存器的值

  8. 查询所有寄存器:infor all 一次性查询所有通用寄存器的值

  9. 查询内存(包括I/O端口)infom addr 查询地址addr处内存值(一个字节)

  10. 查询一段内存空间(包括I/O端口)infom addr1 addr2 查询addr1到addr2段内存值(包括addr1、addr2)

注意:(4)(5)(6)(7)(8)(9)(10)调试命令执行前都需要确保(3)号调试命令已经先执行了

##用户对自己处理器的改动要求

对于自己设计处理器的用户而言,若要使用上述调试命令,需要将SoC中一些调试相关的信号接到自己核中相应的信号上,并对核做相应的改动。下面简单介绍各个信号作用以及对核改动要求。

- `debug_pc`:当前指令的pc地址 
- `debug_num`:当前指令执行后需要写回的寄存器号
- `debug_data`:当前指令执行后需要写回的值
- `ws_valid`:当前指令是否有效
- `break_point`:断点设置信号,处理器核接入该信号后需要使处理器在当拍立即停止运行
- `infor_flag`:查询寄存器标志
- `reg_num`:待查询的通用寄存器号
- `rf_rdata`:相应通用寄存器中的值,当处理器核接收到infor_flag和reg_num信号后需要在当拍给出寄存器中的值

对于调试命令1、2,只需要接信号debug_pc、debug_num、debug_data;对于调试命令(3)-(10)需要接上述全部信号

##其他注意事项:

  1. 确保Linux系统安装了python3、python第三方库pyserial和ttyUSB驱动,若没有需要自行安装。

  2. 用于调试的USB转串口线具体使用USB转TTL刷机线(因为使用了百芯开发板上的I/O引脚作为串口,而该引脚的电平标准为TTL)