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

zynq中linux应用的远程调试配置

Vitis +TCF

适合规模小,依赖轻的简单测试
Window -> Show View ->target Connections

Clion +GdbServer

适合规模大,依赖重的工程

  • windows 和 ubuntu 的clion都可以,但是windows的clion要用wsl里的交叉编译工具
  • 程序直接放在 NFS 共享目录,编译后无需任何上传

开发板本地 GDB

将gdb编译进 Petalinux 根文件系统

PC上

# 进入petalinux工程petalinux-config-crootfs# 菜单路径Filesystem Packages → misc → gdb 勾选 gdb(板载完整本地调试器)、gdbserver(用于CLion远程调试)# 保存后重新编译根文件系统petalinux-build-crootfs# 重新打包系统镜像更新SD卡petalinux-package--boot...

开发板上

# 临时开启core转储,重启失效ulimit-cunlimited# 运行程序,段错误/崩溃自动生成core转储文件./hello# 用本地gdb加载core看崩溃位置gdb ./hello core.1234(gdb)bt

linux中PL寄存器读写脚本

  • PS通过AXI 转 SMMR,APB,AXI 等访问到PL
  • 数据和地址统一32位
  • 根据寄存器序号读写
root@ant:~/soft# ./rw.shUsage:# single write./rw.sh w<idx(dec)><value(dec|0xhex|0bbin)># single read./rw.sh r<idx(dec)># batch from file./rw.sh-fcmds.txt Examples(cmds.txt lines): w1111w320b110 w320x1110 r32r30

rw.sh

#!/bin/bashset-euopipefail# ===== Config =====BASE=0x43c00000# AXI-Lite base addressDEVMEM=${DEVMEM:-devmem}# override if needed: DEVMEM="busybox devmem"# ===== Helpers =====parse_u32_any(){locals="$1"if[[-z"$s"]];thenecho"ERR: empty value">&2;return3;fi# 0b... binary (allow underscores)if[["$s"=~^0[bB][01_]+$]];thenlocalbits="${s:2}"bits="${bits//_/}"[["$bits"=~^[01]+$]]||{echo"ERR: invalid binary:$s">&2;return3;}echo$((2#$bits))return0fi# hex or decimalif[["$s"=~^0[xX][0-9a-fA-F]+$]];thenecho$((s));return0fiif[["$s"=~^[0-9]+$]];thenecho$((10#$s));return0fiecho"ERR: bad value:$s">&2return3}rd32_dec(){localidx="$1"localaddr=$((BASE+4*idx))localhex="$($DEVMEM"$addr"32)"localdec=$((hex))printf"R [%u] @0x%08X : %u (0x%08X)\n""$idx""$addr""$dec""$dec"}wr32_dec(){localidx="$1"val_dec="$2"localaddr=$((BASE+4*idx))localval_hexprintf-vval_hex"0x%08X""$val_dec"$DEVMEM"$addr"32"$val_hex">/dev/null}do_write(){localidx_str="$1"val_str="$2"[["$idx_str"=~^[0-9]+$]]||{echo"ERR: bad index:$idx_str">&2;return2;}localidx=$((10#$idx_str))localval_dec;val_dec="$(parse_u32_any"$val_str")"||return$?wr32_dec"$idx""$val_dec"localrb_dec;rb_dec="$($DEVMEM$((BASE +4* idx))32)"rb_dec=$((rb_dec))printf"W [%u] @0x%08X <= %u (0x%08X); Rb=%u (0x%08X)%s\n"\"$idx"$((BASE+4*idx))"$val_dec""$val_dec""$rb_dec""$rb_dec"\"$([[$rb_dec-eq$val_dec]]&&echo""||echo" [WARN: mismatch]")"}usage(){cat>&2<<EOF Usage: # single write$0w <idx(dec)> <value(dec|0xhex|0bbin)> # single read$0r <idx(dec)> # batch from file$0-f cmds.txt Examples (cmds.txt lines): w 1 111 w 32 0b110 w 32 0x1110 r 32 r 30 EOFexit2}# ===== Dispatch =====[[$#-eq0]]&&usageif[["$1"=="-f"&&$#-eq2]];thenwhileIFS=read-rline||[[-n"$line"]];doline="${line%%#*}"[[-z"${line//[[:space:]]/}"]]&&continueread-rcmd idx val<<<"$line"case"${cmd,,}"inw)do_write"$idx""$val";;r)rd32_dec"$idx";;*)echo"ERR: unknown cmd:$cmd">&2;;esacdone<"$2"exit0fiif[[$#-eq3&&"${1,,}"=="w"]];thendo_write"$2""$3"exit0fiif[[$#-eq2&&"${1,,}"=="r"]];thenrd32_dec"$2"exit0fiusage
http://www.jsqmd.com/news/1094211/

相关文章:

  • 游戏开发测试白盒测试与黑盒测试
  • Canalyzer实战指南:从零上手汽车CAN报文解析与调试
  • SSRF漏洞深度解析:原理、攻击手法与立体化防御实战
  • 学术写作创新突破!2026全能型AI论文写作软件推荐指南
  • Navicat重置工具:3步实现Mac版无限试用的终极指南
  • 思源宋体TTF完全指南:如何免费获取专业级中文字体
  • 不用配置环境!OpenClaw 2.7.9 Win11 一键安装故障合集
  • Python 豆包AI实战:各种语言之间文字翻译
  • Agent 开发困境:构建已经免费,但验证还是地狱
  • 大模型学习笔记 · 第三篇 · 项目结构与训练是怎么跑起来的
  • C# 语言入门(一)基础介绍与程序规范
  • Web端自动化测试全解析:从工具选型到框架搭建实战
  • GPT-4稀疏激活真相:万亿参数如何仅用2%实现高效推理
  • 掌握开源工具:实现极域电子教室限制的高效解除方案
  • EPLAN Electric P8 2.9 批量编辑插件套装|设备改号+功能文本+页名+端子+连接点+中断点+文本|支持 Excel 导入导出
  • 海外红人营销Brief模板:产品信息、内容要求和复盘字段
  • 72%数字化转型折戟:别让伪AI低代码拖死业务
  • SSRF漏洞实战:从原理到防御的深度解析与渗透测试指南
  • 2026天猫代运营风向标:平台巨变下商家如何选对伙伴?汉聪领衔实力测评榜单出炉
  • OpCore-Simplify:3步完成黑苹果配置的终极简化方案
  • iOS自动化测试基石:WebDriverAgent架构、部署与Appium集成实战
  • 接入大模型很快,真正麻烦的是接入之后
  • 验证码逆向工程实战:从旋转与点选验证码到自动化识别方案
  • 通义千问发布语言世界模型,ChatGPT领跑2026AI平台
  • 冥想第一千九百二十五天
  • 解决多商户结算难题|平台分账分润公众号管理系统
  • Rust 宏系统的高级用法总结
  • 终极PC分屏神器:Nucleus Co-op让你的单机游戏变身多人派对
  • C 测验 3
  • Fillinger智能填充脚本高效自动化解决方案