91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Xilinx Vitis 2020.1里面MicroBlaze軟核的sleep函數(shù)卡死的問題

C29F_xilinx_inc ? 來源:賽靈思 ? 作者:賽靈思 ? 2022-02-16 16:21 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在Vitis里面創(chuàng)建了一個LwIP工程,調(diào)試的時候發(fā)現(xiàn),在BRAM里面運(yùn)行正常,但如果改到DDR3內(nèi)存里面運(yùn)行,啟動時就會卡死在sleep函數(shù)上。

于是建立了一個Hello World工程來檢查,代碼如下:

#include
#include
#include "platform.h"

int main()
{
int i = 0;

init_platform();

xil_printf("Hello World\r\n");
xil_printf("Successfully ran Hello World application\r\n");

while (1)
{
xil_printf("i=%d\r\n", i);
i++;
sleep(1);
}

cleanup_platform();
return 0;
}

用xil_prinf串口打印函數(shù),編譯后.text的大小為4944。將xil_printf全部替換為printf(替換后所有的\r可以省去),編譯后.text的大小為70964。

沒有使能Instruction and Data Cache時,需要在MicroBlaze里面勾選Enable Peripheral AXI Instruction Interface,才能將程序放入DDR3內(nèi)存中執(zhí)行:

pYYBAGGYSaKAVAs1AAD0gzlf86Y149.png

poYBAGIMpxmALRTUAAAzYFhpVkU743.png

Code Sections就是程序代碼的放置位置。

pYYBAGIMpxqAZL0BAAELhozcV0c459.png

如果使能了Cache(勾選了Use Instruction and Data Caches),就可以不用勾選Enable Peripheral AXI Instruction Interface(勾不勾選,對sleep函數(shù)沒有影響)。

poYBAGIMpxyAD9_YAAE8j9hq3YM319.png

測試后發(fā)現(xiàn):

程序運(yùn)行在DDR3中,開了cache,用printf:sleep無法使用
程序運(yùn)行在DDR3中,開了cache,用xil_printf:sleep可以使用
程序運(yùn)行在DDR3中,不開cache,用printf:sleep無法使用
程序運(yùn)行在DDR3中,不開cache,用xil_printf:sleep無法使用

但是如果仔細(xì)看的話,會發(fā)現(xiàn)有些情況下sleep并不是完全卡死,而是過了好幾分鐘才返回,串口打印出下一個i的值。這說明sleep并不是無法使用,而是執(zhí)行起來非常慢。
sleep函數(shù)內(nèi)部是用匯編語句實(shí)現(xiàn)的,可能是放到DDR3里面執(zhí)行的話,取指有一定的問題。放到BRAM里面則可以正常運(yùn)行。

所以,如果程序很大,非要放到DDR3里面運(yùn)行的話,那就最好不要使用sleep函數(shù)。可以自己修改sleep函數(shù)的代碼,或者干脆自己重定義另外一個延時函數(shù)。

審核編輯:符乾江

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Xilinx
    +關(guān)注

    關(guān)注

    73

    文章

    2200

    瀏覽量

    131149
  • MicroBlaze
    +關(guān)注

    關(guān)注

    3

    文章

    68

    瀏覽量

    22306
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    如何在AMD Vitis Unified IDE中使用系統(tǒng)設(shè)備樹

    您將在這篇博客中了解系統(tǒng)設(shè)備樹 (SDT) 以及如何在 AMD Vitis Unified IDE 中使用 SDT 維護(hù)來自 XSA 的硬件元數(shù)據(jù)。本文還講述了如何對 SDT 進(jìn)行操作,以便在 Vitis Unified IDE 中實(shí)現(xiàn)更靈活的使用場景。
    的頭像 發(fā)表于 11-18 11:13 ?3120次閱讀
    如何在AMD <b class='flag-5'>Vitis</b> Unified IDE中使用系統(tǒng)設(shè)備樹

    同系列性能更強(qiáng)!面向高性能 AI 應(yīng)用,AXU2CGB-I 有何亮點(diǎn)?

    Cortex-A53 + 雙 Cortex-R5 處理器與強(qiáng)大的 FPGA 可編程邏輯資源,為高端應(yīng)用提供堅實(shí)算力基礎(chǔ)。 ? 板卡支持? Xilinx Vitis-AI DPU ,適配 V
    的頭像 發(fā)表于 11-12 16:56 ?1401次閱讀
    同系列性能更強(qiáng)!面向高性能 AI 應(yīng)用,AXU2CGB-I 有何亮點(diǎn)?

    AMD Vitis AI 5.1測試版現(xiàn)已開放下載

    AMD Vitis AI 5.1全新發(fā)布——新增了對 AMD Versal AI Edge 系列神經(jīng)網(wǎng)絡(luò)處理單元( NPU )的支持。Vitis AI 包含優(yōu)化的 NPU IP、模型編譯工具和部署 API,可在嵌入式平臺上實(shí)現(xiàn)可擴(kuò)展的高性能推理。
    的頭像 發(fā)表于 11-08 09:24 ?1310次閱讀

    e203 如何和FPGA通信?

    求教e203 如何和FPGA通信
    發(fā)表于 11-07 06:15

    AMD Vitis AI 5.1測試版發(fā)布

    AMD Vitis AI 5.1全新發(fā)布——新增了對 AMD Versal AI Edge 系列神經(jīng)網(wǎng)絡(luò)處理單元 (NPU) 的支持。Vitis AI 包含優(yōu)化的 NPU IP、模型編譯工具和部署 API,可在嵌入式平臺上實(shí)現(xiàn)可擴(kuò)展的高性能推理。
    的頭像 發(fā)表于 10-31 12:46 ?797次閱讀

    E203提高CPU時鐘頻率方法

    本文將分享我們團(tuán)隊提高E203主頻的辦法。 查閱芯來科技官方出版的《手把手教你設(shè)計CPU——RISC-V處理器篇》教材,我們發(fā)現(xiàn),原本設(shè)計的E203主時鐘域應(yīng)該是100MHZ
    發(fā)表于 10-29 06:19

    在移植的時候發(fā)現(xiàn)卡死,為什么?

    請教大佬,我是按照網(wǎng)上的教程來移植的,板子是野火的霸天虎,但是到最后驗(yàn)證的時候出問題了,發(fā)現(xiàn)board.c文件中的代碼可以運(yùn)行,但就是運(yùn)行不到主函數(shù),而是卡死在以下兩個函數(shù)中 以下是我的主
    發(fā)表于 09-29 06:28

    線程中調(diào)用rt_thread_mdelay()函數(shù)卡死的原因?怎么解決?

    在線程中調(diào)用rt_thread_mdelay()函數(shù)程序卡死。搞了兩天也不知道問題出在哪,怎么解決。 int main(void) { interrupt_config
    發(fā)表于 09-11 08:11

    MicroBlaze處理器嵌入式設(shè)計用戶指南

    *本指南內(nèi)容涵蓋了在嵌入式設(shè)計中使用 MicroBlaze 處理器、含存儲器 IP 的設(shè)計、IP integrator 中的復(fù)位和時鐘拓?fù)浣Y(jié)構(gòu)。獲取完整版《 MicroBlaze 處理器嵌入式設(shè)計用戶指南》,請至文末掃描二維碼
    的頭像 發(fā)表于 07-28 10:43 ?1082次閱讀

    使用AMD Vitis Unified IDE創(chuàng)建HLS組件

    這篇文章在開發(fā)者分享|AMD Vitis HLS 系列 1 - AMD Vivado IP 流程(Vitis 傳統(tǒng) IDE) 的基礎(chǔ)上撰寫,但使用的是 AMD Vitis Unified IDE,而不是之前傳統(tǒng)版本的
    的頭像 發(fā)表于 06-20 10:06 ?2338次閱讀
    使用AMD <b class='flag-5'>Vitis</b> Unified IDE創(chuàng)建HLS組件

    STM32G473進(jìn)行雙bank升級的時候,進(jìn)行FLASH的批量擦除回卡死是怎么回事?

    ,也有更新4次、6次卡死的。我嘗試在進(jìn)行擦除之前關(guān)中斷 __disable_irq();發(fā)現(xiàn)測試連續(xù)30次升級都沒卡死,但沒有找到根本原因。注:調(diào)用擦除bank的函數(shù)執(zhí)行在CAN接收中斷
    發(fā)表于 06-18 08:04

    如何使用AMD Vitis HLS創(chuàng)建HLS IP

    本文逐步演示了如何使用 AMD Vitis HLS 來創(chuàng)建一個 HLS IP,通過 AXI4 接口從存儲器讀取數(shù)據(jù)、執(zhí)行簡單的數(shù)學(xué)運(yùn)算,然后將數(shù)據(jù)寫回存儲器。接著會在 AMD Vivado Design Suite 設(shè)計中使用此 HLS IP,并使用嵌入式 Vitis 應(yīng)
    的頭像 發(fā)表于 06-13 09:50 ?1878次閱讀
    如何使用AMD <b class='flag-5'>Vitis</b> HLS創(chuàng)建HLS IP

    STM32G473 flash擦除時程序卡死,為什么?

    ,也有更新4次、6次卡死的。我嘗試在進(jìn)行擦除之前關(guān)中斷 __disable_irq();發(fā)現(xiàn)測試連續(xù)30次升級都沒卡死,但沒有找到根本原因。注:調(diào)用擦除bank的函數(shù)執(zhí)行在CAN接收中斷
    發(fā)表于 06-12 08:05

    STM32G473 flash擦除時程序卡死的原因?

    ,也有更新4次、6次卡死的。我嘗試在進(jìn)行擦除之前關(guān)中斷 __disable_irq();發(fā)現(xiàn)測試連續(xù)30次升級都沒卡死,但沒有找到根本原因。注:調(diào)用擦除bank的函數(shù)執(zhí)行在CAN接收中斷
    發(fā)表于 06-09 07:23

    國際亮相中國建2025數(shù)字生態(tài)大會

    此前,5月13日至14日,中國建2025數(shù)字生態(tài)大會在雄安會展中心隆重召開。大會以“數(shù)智賦能新生態(tài),轉(zhuǎn)型共贏創(chuàng)未來”為主題,由中國學(xué)會指導(dǎo)、中國建成員單位中華輝承辦。中
    的頭像 發(fā)表于 05-20 15:55 ?838次閱讀
    中<b class='flag-5'>軟</b>國際亮相中國<b class='flag-5'>核</b>建2025數(shù)字生態(tài)大會