0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Vitis调试技巧-从Vitis中导出数据到本地

FPGA开源工坊 来源:FPGA开源工坊 2023-05-29 09:35 次阅读

在Zynq开发中有一个很常用的功能是将ARM端的数据导出到本地,然后通过MatlabPython等工具对数据进行分析。

可以在Vitis的Memory窗口中观察到Zynq内存中的数据,如下图:

e5ca23b0-fd66-11ed-90ce-dac502259ad0.png

如果仅仅是观察几个数据的值,在这个窗口里面操作也足够了,但是往往是需要将这些导出来进行分析的。可以通过外置的接口比如串口,网口等方式将内存中的数据传到本地,但是这些方式都需要上位机的配合。

在Vitis中提供了mrd的命令来帮助我们将这些数据导出来。

基本的使用方式如下,filename.txt是指保存的文件名,0x00000000指的是起始地址,256是指保存的大小,这个大小不一定是字节,这个需要注意。

mrd -bin -file filename.txt 0x00000000 256

我们在xsct console中输入上面的命令

e5d4b9d8-fd66-11ed-90ce-dac502259ad0.png

保存出来的文件如下所示,可以看到的确是从00000000地址起始的数据,可以和上面Memory窗口中的数据对应上。

因为每个数据都是8bit的,所以00 01 02 03这四个数据就是4个字节,那么下图中一行就是16个字节,而整个文件一共有64行(篇幅有限,所以没有全部截下来),也就是1024个字节,而在命令中只输入了256作为保存的大小,这又是为什么呢。

e5df922c-fd66-11ed-90ce-dac502259ad0.png

通过查看xilinx提供的手册可以看到mrd还有一些其他的参数来控制保存数据的大小。

e5eac94e-fd66-11ed-90ce-dac502259ad0.png

可以看到第二个选项-size,里面提供了-b也就是按字节(8 bit)大小来保存,-h按半字(16 bit)来保存,-w是按字(32 bit)来保存,-d(64 bit)是按双字来保存,在默认情况下就按字来保存的。

因为ZYNQ是32bit处理器,所以半字,字,双字的位宽是括号里面的值。

那么就可以解释为啥我们给定的大小是256,而保存的文件有1024个字节了,1024=256*4(byte)。

所以我们可以通过指定-size这个选项来控制按哪种方式来保存数据的大小。

比如输入下面这句命令

mrd-bin-sizeb-filefilename.txt0x00000000256

保存下来的数据如下图所示:这次就真的是256个字节了,一行是16个字节,一共16行

e5fc2e28-fd66-11ed-90ce-dac502259ad0.png

另外手册上还有一个-unaligned-access的选项,这个选项是为了让我们保存数据的时候可以从非对齐地址开始保存。对于32位地址空间来说就是按4字节对齐的,也就是如果不知道-unaligned-access的选项我们在获取数据的时候起始地址必须以0,4,8等4的倍数开始的地址,如果你强行指定一共0x00000001这样的非对齐地址,他保存数据的时候也是从0x00000000开始的。

mrd -bin -file filename.txt 0x00000001 256
mrd -bin -file filename.txt 0x00000000 256

比如上面两句命令,他保存出来的结果是一样的,注意值是从0开始的,如下所示:

e60485c8-fd66-11ed-90ce-dac502259ad0.png

当我们指定非对齐之后,获取到的数据就是从01开始的,也就是从地址00000001获取到的数据

mrd -bin -unaligned-access -file filename.txt 0x00000001 256

e61130de-fd66-11ed-90ce-dac502259ad0.png

需要注意的是,这里的对齐并不是和多少位总线,或者操作系统是多少位的有关,而是和之前我们指定的-size这个选项有关,在默认情况下是按-w也就是字来对齐的,也就是按32bit对齐。在-b下就是按8bit对齐,在这种情况下也就没有对不对齐的概念了,因为8bit对齐就是按0,1,2,3,4等等这样的自然序对齐的。所以-d是按64bit对齐,-h是按16bit对齐。

比如下面这句话没有指定非对齐获取,他也能从地址1开始取数,因为他本身就是对齐的。

mrd -bin -size b -file filename.txt 0x00000001 256

e61dd67c-fd66-11ed-90ce-dac502259ad0.png

上面这个小技巧是经常使用的哦,比如在FPGA中处理完一组数据后想分析一下处理的对不对就可以把数据通过这种方式取出来,然后使用Matlab python等工具进行处理。例如在FPGA中做了一个Sobel的边缘检测,就可以把处理完的数据拿出来,用Matlab、Python等工具把处理结果恢复成图像,或者直接和参考模型进行比对。





审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1611

    文章

    21393

    浏览量

    595458
  • ARM处理器
    +关注

    关注

    6

    文章

    351

    浏览量

    41412
  • 上位机
    +关注

    关注

    26

    文章

    915

    浏览量

    54329
  • python
    +关注

    关注

    53

    文章

    4701

    浏览量

    83703

原文标题:Vitis调试技巧--从Vitis中导出数据到本地

文章出处:【微信号:FPGA开源工坊,微信公众号:FPGA开源工坊】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Vitis里如何创建嵌入式软件工程

    Vitis可以为异构平台的应用实现加速。其实,Vitis也能完美的支持嵌入式软件开发。下面以MicroZed单板为例,介绍在Vitis里如何创建嵌入式软件工程,并且编译和调试,直到启动
    的头像 发表于 11-04 12:03 5245次阅读
    <b class='flag-5'>Vitis</b>里如何创建嵌入式软件工程

    如何把赛灵思SDK工程移植到Vitis

    IP 生成比特流,然后浏览到File - Export - Export Hardware以导出比特流和 XSA 将 SDK 工程导入 Vitis 工作空间 启动 Vitis IDE。 浏览到file - Import,导入旧
    的头像 发表于 11-09 16:57 2433次阅读

    Vitis2023.2使用之—— classic Vitis IDE

    Vitis 已经更新到2023.2了,新版本相较于旧版本更新了嵌入式平台,新版平台增加了Versal™ AI 引擎 DSP 设计的增强功能,全新的独立 Vitis 嵌入式软件,最新 Vitis 统一
    发表于 03-24 16:15

    Vitis2023.2使用之—— updata to Vitis Unified IDE

    Workspace To Unified IDE 选择导出的路径文件位置 这时候就会在所选路径下生成迁移脚本migrate.py,然后打开 VivadoTcl Shell ,cd脚本文件夹下输入命令 vitis
    发表于 03-24 17:14

    Vitis怎么使用?

    找到vitisvivado->tools->launch vitis ide如果打开失败,说明没有安装vitis,先进行安装安装vitisvivado->help->Add
    发表于 12-23 17:10

    Vivado硬件平台更新后Vitis工程如何更新

    立的硬件平台上右击,选择Update Hardware Specification,选择最新导出的硬件平台文件;    在建立的应用工程上,选择应用工程对应的硬件平台,将上一个目录的硬件平台Remove,否则删除上一个VITIS目录后,目前移动以后的
    发表于 01-15 16:46

    Vitis的使用教程

    在学习ZYNQ嵌入式开发的过程中,正点原子的教程是采用SDK,而我下载的vivado2020.1已经变成了vitis,所以写一这篇博客,方便后续查阅。
    发表于 02-04 07:09

    Vitis程序怎么编写?

    RTC介绍中断介绍Vitis程序编写
    发表于 02-25 07:39

    如何keil中导出内存数据matlab中?

    如何keil中导出内存数据matlab中?
    发表于 11-19 08:07

    使用Vitis HLS创建属于自己的IP相关资料分享

    Xilinx而言,Vivado 2019.1之前(包括),HLS工具叫Vivado HLS,之后为了统一将HLS集成Vitis里了,集成之后增加了一些功能,同时将这部分开源出来了。Vitis
    发表于 09-09 16:45

    【KV260视觉入门套件试用体验】五、VITis AI (人脸检测和人体检测)

    vitis_ai_library_r3.0.0_images.tar.gz 和 vitis_ai_library_r3.0.0_video.tar.gz 主机复制目标,如下所示
    发表于 09-26 16:22

    【KV260视觉入门套件试用体验】Vitis AI 构建开发环境,并使用inspector检查模型

    /vitis-ai-cpu:latest 第二步,可以使用了………完……… (^_^),当然不是这么简单,Vitis AI 不仅仅是一个工具,而是一个综合的 AI 推断开发平台,它包括了模型优化
    发表于 10-14 15:34

    HLS导出的.xo文件如何导入到Vitis里面

    Q1 HLS导出的.xo文件如何导入到Vitis里面?需要把.xo文件解压,然后把文件夹导入到Vitis Kernel/src文件夹下吗? 这下图中,将xo文件作为源文件import时,xo文件显示
    的头像 发表于 08-26 17:03 2358次阅读

    基于Vitis HLS的加速图像处理

    Vitis Vision库是OpenCV和Vision功能的加速库,可在Vitis环境中使用,这些库的L1目录是示例设计。为了适应各种用户环境,从2020.1版本开始,Xilinx不再
    的头像 发表于 02-16 16:21 2174次阅读
    基于<b class='flag-5'>Vitis</b> HLS的加速图像处理

    Vitis调试ARM可信固件和U-boot

    在本篇博文中,我们将探讨如何在 Vitis调试 Zynq UltraScale 器件启动镜像。这些启动镜像包括 ARM 可信固件 (ATF) 和 U-boot。
    的头像 发表于 08-02 10:14 3017次阅读
    在<b class='flag-5'>Vitis</b>中<b class='flag-5'>调试</b>ARM可信固件和U-boot