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

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

3天内不再提示

Xilinx Vitis 2020.1里面MicroBlaze软核的sleep函数卡死的问题

C29F_xilinx_inc 来源:赛灵思 作者:赛灵思 2022-02-16 16:21 次阅读

在Vitis里面创建了一个LwIP工程,调试的时候发现,在BRAM里面运行正常,但如果改到DDR3内存里面运行,启动时就会卡死在sleep函数上。

于是建立了一个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串口打印函数,编译后.text的大小为4944。将xil_printf全部替换为printf(替换后所有的\r可以省去),编译后.text的大小为70964。

没有使能Instruction and Data Cache时,需要在MicroBlaze里面勾选Enable Peripheral AXI Instruction Interface,才能将程序放入DDR3内存中执行:

pYYBAGGYSaKAVAs1AAD0gzlf86Y149.png

poYBAGIMpxmALRTUAAAzYFhpVkU743.png

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

pYYBAGIMpxqAZL0BAAELhozcV0c459.png

如果使能了Cache(勾选了Use Instruction and Data Caches),就可以不用勾选Enable Peripheral AXI Instruction Interface(勾不勾选,对sleep函数没有影响)。

poYBAGIMpxyAD9_YAAE8j9hq3YM319.png

测试后发现:

程序运行在DDR3中,开了cache,用printf:sleep无法使用
程序运行在DDR3中,开了cache,用xil_printf:sleep可以使用
程序运行在DDR3中,不开cache,用printf:sleep无法使用
程序运行在DDR3中,不开cache,用xil_printf:sleep无法使用

但是如果仔细看的话,会发现有些情况下sleep并不是完全卡死,而是过了好几分钟才返回,串口打印出下一个i的值。这说明sleep并不是无法使用,而是执行起来非常慢。
sleep函数内部是用汇编语句实现的,可能是放到DDR3里面执行的话,取指有一定的问题。放到BRAM里面则可以正常运行。

所以,如果程序很大,非要放到DDR3里面运行的话,那就最好不要使用sleep函数。可以自己修改sleep函数的代码,或者干脆自己重定义另外一个延时函数。

审核编辑:符乾江

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

    关注

    70

    文章

    2121

    浏览量

    119388
  • MicroBlaze
    +关注

    关注

    3

    文章

    66

    浏览量

    21437
收藏 人收藏

    评论

    相关推荐

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

    上一章聊了一下vitis2023.2怎样使用classic Vitis IDE,这章我们来说一说基于classic Vitis IDE的工程怎么样更新到新版本的Vitis Unifie
    发表于 03-24 17:14

    AD9164驱动程序里面版本是03,芯片里面读出来的是02,这个是工程样片吗?

    Xilinx XC7K325TFFG900 Microblaze 处理器,裸机版本; 驱动程序版本:AD9164_API-Rel1.0.0 异常现象 现象1: NVRA
    发表于 12-01 07:57

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

    clone --recurse-submodules https://github.com/Xilinx/Vitis-AI cd Vitis-AI docker pull xilinx
    发表于 10-14 15:34

    【KV260视觉入门套件试用体验】Vitis-AI加速的YOLOX视频目标检测示例体验和原理解析

    坛! (elecfans.com) 首先需要部署DPU镜像,DPU镜像系统启动过程中会加载DPU IP到FPGA侧,并且系统本身已经集成了Vitis AI所需的各种库文件。 2.1 准备测试所需视频文件 赛灵思官方文档里面提供
    发表于 10-06 23:32

    【KV260视觉入门套件试用体验】基于Vitis AI的ADAS目标识别

    一、基础知识 (一)Vitis™ AI开发环境 Vitis™ AI开发环境可在赛灵思硬件平台上加速 AI 推断,包括边缘器件和 Alveo™ 加速器卡。此环境由经过最优化的 IP 、工具、库、模型
    发表于 09-27 23:21

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

    ~ $ git clone https://github.com/Xilinx/Vitis-AI Git下载不成功,可能就是网络不太好,在等等在尝试。 1.2、安装交叉编译系统环境。 $ cd
    发表于 09-26 16:22

    Vitis统一软件平台用户指南:系统性能分析(v2020.1)

    电子发烧友网站提供《Vitis统一软件平台用户指南:系统性能分析(v2020.1).pdf》资料免费下载
    发表于 09-13 11:13 0次下载
    <b class='flag-5'>Vitis</b>统一软件平台用户指南:系统性能分析(v<b class='flag-5'>2020.1</b>)

    【KV260视觉入门套件试用体验】部署DPU镜像并运行Vitis AI图像分类示例程序

    统一软件平台和Vitis AI。 1.1 Vitis™ 统一软件平台简介 来自Xilinx官网的简介,Vitis 统一软件平台包括: 全面的内核开发套件,可无缝构建加速应用 完整的硬件
    发表于 09-10 23:01

    【KV260视觉入门套件试用体验】Vitis AI 初次体验

    22.04 + Vitis AI v3.0 root@kria:~# uname -a Linux kria 5.15.0-1020-xilinx-zynqmp #22-Ubuntu SMP Fri Feb
    发表于 09-10 13:15

    【KV260视觉入门套件试用体验】部署vitis-ai环境以及测试demo

    /ug1354-xilinx-ai-sdk/%E4%B8%8B%E8%BD%BD-Vitis-AI-Library 在安装->设置目标->步骤1:安装开发板镜像 开始下载镜像 进入到
    发表于 08-27 23:35

    如何在Vitis HLS GUI中使用库函数

    Vitis™ HLS 2023.1 支持新的 L1 库向导,本文将讲解如何下载 L1 库、查看所有可用功能以及如何在 Vitis HLS GUI 中使用库函数
    的头像 发表于 08-16 10:26 623次阅读
    如何在<b class='flag-5'>Vitis</b> HLS GUI中使用库<b class='flag-5'>函数</b>?

    Vitis 库流程:视觉 L1 重映射函数 Zynq baremetal 设计实例

    本文展示了在AMD Zynq设计中,如何用 Vitis Vision Library中的函数导出一个 IP
    的头像 发表于 07-13 17:05 360次阅读
    <b class='flag-5'>Vitis</b> 库流程:视觉 L1 重映射<b class='flag-5'>函数</b> Zynq baremetal 设计实例

    Vitis中通过PSU DDR执行MicroBlaze应用

    MicroBlaze™ CPU 是可修改的拖入式预设 32 位/64 位 RISC 微处理器配置系列。
    的头像 发表于 06-26 09:14 640次阅读
    在<b class='flag-5'>Vitis</b>中通过PSU DDR执行<b class='flag-5'>MicroBlaze</b>应用

    Vitis中通过PSU DDR执行MicroBlaze应用

    MicroBlaze CPU 是可修改的拖入式预设 32 位/64 位 RISC 微处理器配置系列。
    的头像 发表于 06-21 09:39 373次阅读
    在<b class='flag-5'>Vitis</b>中通过PSU DDR执行<b class='flag-5'>MicroBlaze</b>应用

    Xilinx KV260 Vitis-AI 1.4人脸检测

    电子发烧友网站提供《Xilinx KV260 Vitis-AI 1.4人脸检测.zip》资料免费下载
    发表于 06-14 10:34 0次下载
    <b class='flag-5'>Xilinx</b> KV260 <b class='flag-5'>Vitis</b>-AI 1.4人脸检测