在Zynq開發(fā)中有一個(gè)很常用的功能是將ARM端的數(shù)據(jù)導(dǎo)出到本地,然后通過Matlab,Python等工具對(duì)數(shù)據(jù)進(jìn)行分析。
可以在Vitis的Memory窗口中觀察到Zynq內(nèi)存中的數(shù)據(jù),如下圖:
如果僅僅是觀察幾個(gè)數(shù)據(jù)的值,在這個(gè)窗口里面操作也足夠了,但是往往是需要將這些導(dǎo)出來進(jìn)行分析的。可以通過外置的接口比如串口,網(wǎng)口等方式將內(nèi)存中的數(shù)據(jù)傳到本地,但是這些方式都需要上位機(jī)的配合。
在Vitis中提供了mrd的命令來幫助我們將這些數(shù)據(jù)導(dǎo)出來。
基本的使用方式如下,filename.txt是指保存的文件名,0x00000000指的是起始地址,256是指保存的大小,這個(gè)大小不一定是字節(jié),這個(gè)需要注意。
mrd -bin -file filename.txt 0x00000000 256
我們?cè)趚sct console中輸入上面的命令
保存出來的文件如下所示,可以看到的確是從00000000地址起始的數(shù)據(jù),可以和上面Memory窗口中的數(shù)據(jù)對(duì)應(yīng)上。
因?yàn)槊總€(gè)數(shù)據(jù)都是8bit的,所以00 01 02 03這四個(gè)數(shù)據(jù)就是4個(gè)字節(jié),那么下圖中一行就是16個(gè)字節(jié),而整個(gè)文件一共有64行(篇幅有限,所以沒有全部截下來),也就是1024個(gè)字節(jié),而在命令中只輸入了256作為保存的大小,這又是為什么呢。
通過查看xilinx提供的手冊(cè)可以看到mrd還有一些其他的參數(shù)來控制保存數(shù)據(jù)的大小。
可以看到第二個(gè)選項(xiàng)-size,里面提供了-b也就是按字節(jié)(8 bit)大小來保存,-h按半字(16 bit)來保存,-w是按字(32 bit)來保存,-d(64 bit)是按雙字來保存,在默認(rèn)情況下就按字來保存的。
因?yàn)閆YNQ是32bit處理器,所以半字,字,雙字的位寬是括號(hào)里面的值。
那么就可以解釋為啥我們給定的大小是256,而保存的文件有1024個(gè)字節(jié)了,1024=256*4(byte)。
所以我們可以通過指定-size這個(gè)選項(xiàng)來控制按哪種方式來保存數(shù)據(jù)的大小。
比如輸入下面這句命令
mrd-bin-sizeb-filefilename.txt0x00000000256
保存下來的數(shù)據(jù)如下圖所示:這次就真的是256個(gè)字節(jié)了,一行是16個(gè)字節(jié),一共16行
另外手冊(cè)上還有一個(gè)-unaligned-access的選項(xiàng),這個(gè)選項(xiàng)是為了讓我們保存數(shù)據(jù)的時(shí)候可以從非對(duì)齊地址開始保存。對(duì)于32位地址空間來說就是按4字節(jié)對(duì)齊的,也就是如果不知道-unaligned-access的選項(xiàng)我們?cè)讷@取數(shù)據(jù)的時(shí)候起始地址必須以0,4,8等4的倍數(shù)開始的地址,如果你強(qiáng)行指定一共0x00000001這樣的非對(duì)齊地址,他保存數(shù)據(jù)的時(shí)候也是從0x00000000開始的。
mrd -bin -file filename.txt 0x00000001 256 mrd -bin -file filename.txt 0x00000000 256
比如上面兩句命令,他保存出來的結(jié)果是一樣的,注意值是從0開始的,如下所示:
當(dāng)我們指定非對(duì)齊之后,獲取到的數(shù)據(jù)就是從01開始的,也就是從地址00000001獲取到的數(shù)據(jù)
mrd -bin -unaligned-access -file filename.txt 0x00000001 256
需要注意的是,這里的對(duì)齊并不是和多少位總線,或者操作系統(tǒng)是多少位的有關(guān),而是和之前我們指定的-size這個(gè)選項(xiàng)有關(guān),在默認(rèn)情況下是按-w也就是字來對(duì)齊的,也就是按32bit對(duì)齊。在-b下就是按8bit對(duì)齊,在這種情況下也就沒有對(duì)不對(duì)齊的概念了,因?yàn)?bit對(duì)齊就是按0,1,2,3,4等等這樣的自然序?qū)R的。所以-d是按64bit對(duì)齊,-h是按16bit對(duì)齊。
比如下面這句話沒有指定非對(duì)齊獲取,他也能從地址1開始取數(shù),因?yàn)樗旧砭褪菍?duì)齊的。
mrd -bin -size b -file filename.txt 0x00000001 256
上面這個(gè)小技巧是經(jīng)常使用的哦,比如在FPGA中處理完一組數(shù)據(jù)后想分析一下處理的對(duì)不對(duì)就可以把數(shù)據(jù)通過這種方式取出來,然后使用Matlab python等工具進(jìn)行處理。例如在FPGA中做了一個(gè)Sobel的邊緣檢測(cè),就可以把處理完的數(shù)據(jù)拿出來,用Matlab、Python等工具把處理結(jié)果恢復(fù)成圖像,或者直接和參考模型進(jìn)行比對(duì)。
審核編輯:劉清
-
FPGA
+關(guān)注
關(guān)注
1630文章
21801瀏覽量
606364 -
ARM處理器
+關(guān)注
關(guān)注
6文章
361瀏覽量
41957 -
上位機(jī)
+關(guān)注
關(guān)注
27文章
945瀏覽量
55034 -
python
+關(guān)注
關(guān)注
56文章
4811瀏覽量
85075
原文標(biāo)題:Vitis調(diào)試技巧--從Vitis中導(dǎo)出數(shù)據(jù)到本地
文章出處:【微信號(hào):FPGA開源工坊,微信公眾號(hào):FPGA開源工坊】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
Vitis里如何創(chuàng)建嵌入式軟件工程
![<b class='flag-5'>Vitis</b>里如何創(chuàng)建嵌入式軟件工程](https://file.elecfans.com/web1/M00/C8/49/pIYBAF9t7M-AFndPAAHOI6JD6-E008.png)
如何把賽靈思SDK工程移植到Vitis
Vitis2023.2使用之—— classic Vitis IDE
Vitis2023.2使用之—— updata to Vitis Unified IDE
Vivado硬件平臺(tái)更新后Vitis工程如何更新
Vitis的使用教程
如何從keil中導(dǎo)出內(nèi)存數(shù)據(jù)到matlab中?
使用Vitis HLS創(chuàng)建屬于自己的IP相關(guān)資料分享
【KV260視覺入門套件試用體驗(yàn)】五、VITis AI (人臉檢測(cè)和人體檢測(cè))
Vitis初探—1.將設(shè)計(jì)從SDSoC/Vivado HLS遷移到Vitis上的教程
![<b class='flag-5'>Vitis</b>初探—1.將設(shè)計(jì)<b class='flag-5'>從</b>SDSoC/Vivado HLS遷移到<b class='flag-5'>Vitis</b>上的教程](https://file.elecfans.com/web1/M00/DB/AB/o4YBAGAKIy-AUecNAAEEEY9TnBc290.png)
Vitis初探—1.將設(shè)計(jì)從SDSoC/Vivado HLS遷移到Vitis上
![<b class='flag-5'>Vitis</b>初探—1.將設(shè)計(jì)<b class='flag-5'>從</b>SDSoC/Vivado HLS遷移到<b class='flag-5'>Vitis</b>上](https://file.elecfans.com/web1/M00/DB/AB/o4YBAGAKIy-AUecNAAEEEY9TnBc290.png)
HLS導(dǎo)出的.xo文件如何導(dǎo)入到Vitis里面
基于Vitis HLS的加速圖像處理
![基于<b class='flag-5'>Vitis</b> HLS的加速圖像處理](https://file.elecfans.com/web2/M00/30/D6/pYYBAGIMpwuAc9UmAADrfB2ykoA971.png)
Vitis HLS如何添加HLS導(dǎo)出的.xo文件
![<b class='flag-5'>Vitis</b> HLS如何添加HLS<b class='flag-5'>導(dǎo)出</b>的.xo文件](https://file.elecfans.com/web2/M00/1F/61/poYBAGGYHZqABmUiAAL3nUdW7oI316.png)
在Vitis中調(diào)試ARM可信固件和U-boot
![在<b class='flag-5'>Vitis</b>中<b class='flag-5'>調(diào)試</b>ARM可信固件和U-boot](https://file.elecfans.com/web2/M00/1F/6A/pYYBAGGYHxaAA-TBAAKCbyEfraQ148.png)
評(píng)論