当前位置: 首页 > news >正文

XSCT/Vitis 裸机 JTAG 调试与常用命令

如果PL和PS测有交互时,更新bit流后,PS需要复位,从而让各种AXI相关的IP复位, 在vitis命令行执行,触发PS复位

dow  D:/vitis/axi_dma/Debug/test.elf;con;

elf bit ltx 三种文件的关系

文件作用对象谁来加载 / 何时用是否写入 FPGA(PL)对其它文件的影响关键注意事项常用命令/入口
.bitPL(FPGA 可编程逻辑)Vivado Program Device / XSCT fpga -f / Vitis 勾选 Program FPGA(重配/复位 PL)不直接改 .elf/.ltx,但:1) 重配后 ILA 状态清空,需用匹配的 .ltx 重新关联;2) MicroBlaze 在 PL 时会被清空,需重下 .elf.ltx 必须与生成它的 同版 .bit 匹配;Zynq/ZynqMP 上重配 PL 期间可能影响依赖 PL 的 PS 程序Vivado GUI / program_hw_devices;XSCT:fpga -f design.bit
.ltxILA/VIO 调试映射(主机侧)Vivado Hardware Manager 关联(非编程):set_property PROBES.FILE+refresh_hw_device(不写入 FPGA,仅主机侧映射)不改 .bit/.elf;但 换了 .bit 要用匹配的 .ltx 重新 refresh 才能看到探针只是“探针→网名/位宽”的映射;加载与否不改变 PL 行为Vivado:Program Device 对话框选 Debug probes file;或 Tcl:set_property PROBES.FILE design.ltx; refresh_hw_device
.elfPS(A9/A53) 或 PL 内的 MicroBlazeVitis/XSCT 经 JTAG 下载并运行(dow/con),或由 FSBL/Boot 介质装载(写入内存/OCM,不配置 PL)不会覆盖 .bit/.ltx;但若 重配 .bit:1) Zynq/ZynqMP 上 PS 程序仍在内存,但依赖 PL 的外设需重建;2) MicroBlaze 场景必须重下 .elf冷上电需先 ps7_init/psu_init;调试时常用 rst -processor; dow app.elf; con;避免勾 Program FPGA 以免重配 PLXSCT:dow app.elfconrst -processor;Vitis System Debugger

一、典型工作流

  1. Vivado 一次性下 PL(bit + ltx)
open_hw
connect_hw_server
open_hw_target
current_hw_device [lindex [get_hw_devices] 0]# 下载 bit
set_property PROGRAM.FILE {./design.bit} [current_hw_device]
program_hw_devices [current_hw_device]# 加载 ILA 映射(.ltx)
set_property PROBES.FILE {./design.ltx} [current_hw_device]
refresh_hw_device [current_hw_device]
  1. XSCT/JTAG 调 PS
connect
targets -set -filter {name =~ "Cortex-A9*#0" || name =~ "ARM*#0"}# (冷上电第一次)初始化 PS:仅首次或需要时执行
# source ./ps7_init.tcl
# ps7_init
# ps7_post_configrst -processor          ;# 仅复位处理器,不影响 PL(bit/ltx)
dow ./app.elf           ;# 下载 ELF(加载符号、设置入口)
con                     ;# 运行

不要在 XSCT 里执行 fpga -f *.bit,也不要在 Vitis 勾选 Program FPGA,否则会重配 PL、清掉 ILA 映射。

二、XSCT 常用命令速查

连接 / 目标选择

  • connect / disconnect
  • targets:列出调试目标
  • targets -set -filter {name =~ "Cortex-A9*#0"}:选择目标
  • state:查看运行状态
  • version:XSCT 版本

复位(不动 PL)

  • rst -processor:仅复位所选 CPU 核(推荐)
  • rst -system:系统级复位(更重,但也不会重新配置 PL)

下载 / 运行 / 单步

  • dow ./app.elf:下载 ELF(含符号)
  • con:继续运行
  • stop:暂停
  • stp / nxt / stpout:单步进入 / 越过 / 跳出
  • dis <addr> <len>:反汇编
  • locals / backtrace:查看局部变量 / 调用栈

断点

  • bpadd -addr &main:在符号 main 入口处断点
    • 也可:bpadd -file foo.c -line 123bpadd -addr 0x00100000
  • bplist:查看断点
  • bpremove <id> | -all:删断点
  • bpenable <id> / bpdisable <id>:使能 / 禁用
  • bpstatus:断点命中状态

寄存器 / 内存 / 符号

  • rrd <reg> / rwr <reg> <val>:读 / 写寄存器(如 pcsp
  • mrd <addr> [count] / mwr <addr> <val> [count]:读 / 写内存
  • memmap -file ./app.elf:仅加载符号(不下载代码)
  • print &main:查看符号解析地址

(一般不需)配置 PL / 校验

  • fpga -f ./design.bit:通过 XSCT 配置 PL(慎用)
  • verify <file>:校验映像

JTAG / 终端

  • jtag targets:查看 JTAG 链
  • jtag frequency <Hz>:设置 JTAG 频率
  • jtagterminal / readjtaguart:JTAG UART(若平台支持)

Vitis 项目相关(命令行工程)

  • setws <dir> / getws:工作区
  • platform create|generate|list|report
  • domain create|config|list
  • app create|build|clean|report

三、脚本模板

下载elf

# run_zynq_a9.tcl
connect
targets -set -filter {name =~ "Cortex-A9*#0" || name =~ "ARM*#0"}# 冷上电时取消注释以下三行:
# source ./ps7_init.tcl
# ps7_init
# ps7_post_configrst -processor
dow ./app.elf
# 可选:断在 main
# bpadd -addr &main
con

热替换 ELF(不复位,快速迭代)

# hot_swap_elf.tcl
connect
targets -set -filter {name =~ "<Your-Core-Name-Filter>"}
stop
dow ./app.elf
con

文章转载自:

http://2kXlGRYl.whpsL.cn
http://xj05EZFH.whpsL.cn
http://BAqnym1a.whpsL.cn
http://4rVySi7c.whpsL.cn
http://oEYlSyKK.whpsL.cn
http://691eUojd.whpsL.cn
http://6NeDxFAF.whpsL.cn
http://Q5f8w4fA.whpsL.cn
http://7ZwJc6b0.whpsL.cn
http://IkSf3dpB.whpsL.cn
http://bx4Rc5GT.whpsL.cn
http://Iw4ETOZd.whpsL.cn
http://VCrvweUM.whpsL.cn
http://CutuCUlN.whpsL.cn
http://V6p4npBo.whpsL.cn
http://pE5n0j9A.whpsL.cn
http://CG2i9KtW.whpsL.cn
http://baBZMSDv.whpsL.cn
http://9NTGTaHf.whpsL.cn
http://dM3hkSKt.whpsL.cn
http://ZdUh642A.whpsL.cn
http://ZSpExHOq.whpsL.cn
http://d2WwUsOi.whpsL.cn
http://lT5Y4APR.whpsL.cn
http://sRKf6s7q.whpsL.cn
http://OTkg1Z2c.whpsL.cn
http://rsW8Wzx2.whpsL.cn
http://N9IiFooS.whpsL.cn
http://ZGMKydIY.whpsL.cn
http://pbcOtJiD.whpsL.cn
http://www.dtcms.com/a/368111.html

相关文章:

  • 【GitHub每日速递】不止 TeamViewer 替代!RustDesk 与 PowerToys,Windows 效率神器
  • 使用海康机器人相机SDK实现基本参数配置(C语言示例)
  • Go 服务注册 Nacos 的坑与解决方案——从 404 到连接成功的排查之路
  • 智能相机还是视觉系统?一文讲透工业视觉两大选择的取舍之道
  • Go语言中atomic.Value结构体嵌套指针的直接修改带来的困惑
  • react+umi项目如何添加electron的功能
  • 告别 OpenAI SDK:如何使用 Python requests 库调用大模型 API(例如百度的ernie-4.5-turbo)
  • 《sklearn机器学习——聚类性能指数》同质性,完整性和 V-measure
  • C#海康车牌识别实战指南带源码
  • 五、Docker 核心技术:容器数据持久化之数据卷
  • (计算机网络)DNS解析流程及两种途径
  • 3-8〔OSCP ◈ 研记〕❘ WEB应用攻击▸REST API枚举
  • Tabby使用sftp上传文件服务器ssh一直断开
  • 解密大语言模型推理:输入处理背后的数学与工程实践
  • python 自动化在web领域应用
  • FDTD_3 d mie_仿真
  • Electron 安全性最佳实践:防范常见漏洞
  • SAP ERP公有云详解:各版本功能对比与选型
  • Linux:进程信号理解
  • 深度学习:Dropout 技术
  • Linux 磁盘扩容及分区相关操作实践
  • 【前端】使用Vercel部署前端项目,api转发到后端服务器
  • 【ARDUINO】ESP8266的AT指令返回内容集合
  • Netty从0到1系列之Netty整体架构、入门程序
  • 实战记录:H3C路由器IS-IS Level-1邻居建立与路由发布
  • iOS 抓包工具有哪些?常见问题与对应解决方案
  • 【Linux】网络安全管理:SELinux 和 防火墙联合使用 | Redhat
  • Boost搜索引擎 网络库与前端(4)
  • 服务器硬盘“Unconfigured Bad“状态解决方案
  • 警惕!你和ChatGPT的对话,可能正在制造分布式妄想