考 虑到习惯命令行操作的用户群体, MounRiver® Studio(MRS) 除了使用图形化 UI 进行用户交互外,也提供了脱离界面的命令行操作说明,用于对编译后的工程进行烧录和调试。如果是 Linux 平台用户,您也可以在 MRS 官网的下载页面下载工具链和 OpenOCD 压缩包,根据说明引导进行实践。本文以 Windows 平台软件环境 MRS1.51 进行介绍。 【命令行入口】 MRS 提供了已包含工具路径的命令行。点击工具栏图标 ,或者在 Project Explorer 右键弹出菜单中选择 Open MRS Console ,即可打开命令行,并自动指定将当前路径为对应的目录路径(如果选择的是文件,则当前路径为文件所在的目录)。若当前未选择资源,命令行的当前路径即为工作空间目录。 【编译】 由于脱离了界面的 UI 配置,对于未知的工程结构。用户需要: 1. 手动为每个源文件目录编写 Makefile 规则,指定源文件集合、依赖、汇编 / 编译工具 exe 、编译参数(例如编译头索引目录)。 2. 切换到一个新目录,作为输出目录,用户手动为编写 Makefile 规则,指定链接各个源的中间文件、链接工具 exe 、链接参数(例如 ld 文件)。以上步骤了解 Makefile 的语法。 3. 命令行路径切换到步骤 2 的输出目录下,执行 make 进行编译,如果编译工程成功将会最终输出 elf 文件。执行 make clean 可进行输出文件的清理。 【烧写,以 wch 的 risc-v 内核工程为例】 擦除 OPENOCD_PATH –f CFG_PATH –c init –c halt -c "flash erase_sector wch-riscv 0 last" –c exit 编程 OPENOCD_PATH –f CFG_PATH –c init –c halt -c "program TARGET_PATH ADDRESS" –c exit 校验 OPENOCD_PATH –f CFG_PATH –c init –c halt –c "verify_image TARGET_PATH " -c exit 复位 OPENOCD_PATH –f CFG_PATH –c init -c reset -c exit 【调试】 1. 创建 openocd 进程 格式: OPENOCD_PATH -f CFG_PATH 提倡使用拖拽的方式,提升效率,也可避免输入路径出错。 执行命令, openocd 会获取开发板状态,并启动协议 server 端。随后 openocd 进程挂起,等待连接。命令行中显示等待连接的端口号,此处 gdb 通信的端口默认为 3333 。 2. 开启第二个 MRS Console ,启动 gdb client 格式 : GDB_PATH 无参数形式 riscv-none-embed-gdb 为默认的 gdb cli 命令。 参数形式 riscv-none-embed-gdb xxxx.elf -interpreter mi 在支持 cli 基础上,同时支持 gdb mi 命令。 MRS 调试打开 gdb trace 之后, Console 输出的命令就是 gdb mi 命令。可以复制到此模式下逐个运行。 若指定了 FILE_PATH ,如命令 riscv-none-embed-gdb xxxx.elf ,则后续不需要调用 file 命令指定调试文件;若未指定 FILE_PATH ,则后续需要 file 命令指定调试文件。 3. gdb 连接设置 设置连接配置: set mem inaccessible-by-default off set remotetimeout unlimited ( rv 内核) set architecture riscv:rv32 4. 连接 server 端口 target remote ip:port :连接端口 5. 调试的其他命令 load :烧写 , 执行后将 pc 置为程序第一条指令处; info register + 寄存器名: 查看寄存器; info breakpoint :查看所有断点; break + 行号 / 方法名 / 符号名:设置断点 ; continue :继续跑到下一个断点,如果没有断点则一直运行; next :调试执行下一步; step :单步进入; print :打印变量值; list :(需要工程目录包含源码 , 编译时调试等级 -g 以上)查看当前代码 ; 暂停状态时,可执行查看寄存器、查看当前代码,查看反汇编等操作; gdb 模式下,可输入 help all 列出所有命令,如搜索、变量打印、查看堆栈等。