chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

完善資料讓更多小伙伴認識你,還能領(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里面運行正常,但如果改到DDR3內(nèi)存里面運行,啟動時就會卡死在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):

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

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

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

審核編輯:符乾江

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

    關(guān)注

    73

    文章

    2192

    瀏覽量

    129826
  • MicroBlaze
    +關(guān)注

    關(guān)注

    3

    文章

    68

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    同系列性能更強!面向高性能 AI 應用,AXU2CGB-I 有何亮點?

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

    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,可在嵌入式平臺上實現(xiàn)可擴展的高性能推理。
    的頭像 發(fā)表于 10-31 12:46 ?456次閱讀

    E203提高CPU時鐘頻率方法

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

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

    請教大佬,我是按照網(wǎng)上的教程來移植的,板子是野火的霸天虎,但是到最后驗證的時候出問題了,發(fā)現(xiàn)board.c文件中的代碼可以運行,但就是運行不到主函數(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 中的復位和時鐘拓撲結(jié)構(gòu)。獲取完整版《 MicroBlaze 處理器嵌入式設(shè)計用戶指南》,請至文末掃描二維碼
    的頭像 發(fā)表于 07-28 10:43 ?763次閱讀

    使用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 ?1895次閱讀
    使用AMD <b class='flag-5'>Vitis</b> Unified IDE創(chuàng)建HLS組件

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

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

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

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

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

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

    在Ubuntu16.04上從版本2020.1 OpenVINO?升級到2021.4.2之后不兼容怎么解決?

    OpenVINO? 2020.1 成功構(gòu)建自定義庫。 升級至 OpenVINO? 2021.4.2,并重新構(gòu)建自定義庫。 加載自定義庫時收到錯誤: /src/.build.linux
    發(fā)表于 03-05 10:00

    使用DLP3010LC GUI里面的Light Control的Internal Patterns功能投影條紋圖片,遇到的幾個疑問求解

    savd pattern data,生成一個bin文件,然后把此固件通過update firmware燒錄到dlp3010里面,但是燒完之后系統(tǒng)起不來了,請問這個操作有問題嗎? 3:系統(tǒng)升級固件有.bin和.image兩種選擇,請問這兩種有什么區(qū)別呢? 期待您的回復,感謝
    發(fā)表于 02-27 08:07

    LDC1000里面配套的PCB線圈的電感值是多少?

    LDC1000里面配套的PCB線圈的電感值是多少?還有用電感公式算出來的電感能用來做什么?我之前以為能算出靠近PCB線圈的電感的電感值
    發(fā)表于 01-17 08:07

    使用AMD Vitis進行嵌入式設(shè)計開發(fā)用戶指南

    Zynq MPSoC 和 AMD Alveo 數(shù)據(jù)中心加速器卡)為目標的異構(gòu)嵌入式應用。 Vitis 工具包括: C++ 編譯器、庫和本征函數(shù),適用于 AI 引擎和可編程邏輯( PL ) 適用于 Arm
    的頭像 發(fā)表于 01-08 09:33 ?2138次閱讀
    使用AMD <b class='flag-5'>Vitis</b>進行嵌入式設(shè)計開發(fā)用戶指南