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

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

3天内不再提示

如何在Zynq SoC上开始使用FreeRTOS

OpenFPGA 来源: OpenFPGA 2023-10-18 09:44 次阅读

ZYNQ上运行FreeRTOS

该项目演示如何在 Zynq SoC 上开始使用 FreeRTOS。

介绍

AMD Zynq SoC 器件将典型 FPGA 的可编程逻辑结构和 ARM 处理器内核提供的处理能力组合到单个芯片中,可用作构建各种嵌入式系统应用的平台。可以在 PL 中设计专用逻辑结构来处理计算密集型任务,而 PS 可以控制 PL 并提供用户应用程序。

wKgaomUvOJuAQGCwAAPmDVWtoRk731.jpg

内窥镜就是可以利用这种功能的产品的一个例子。视频链在 PL 中实现,处理来自摄像头的图像信号,并提供视频保存、分辨率更改、色彩校正等额外功能。然后可以将处理后的视频发送到显示接收器

在本教程中,将展示如何在 Zynq PS 中在 FreeRTOS 内核上运行应用程序。

FreeRTOS 实时操作系统

在了解什么是 FreeRTOS 之前,我们先来看看开发嵌入式系统的三种方式:

wKgZomUvOJuAShMwAAX_-NEmDyM807.jpg

三种方法的区别在于软件部分的开发方式。软件可以分为用户空间(应用程序所在的位置)和内核空间(驱动程序和库所在的位置)。软件的大小从裸机到嵌入式操作系统递增。

FreeRTOS 是一款专用于实时应用程序的开源操作系统。它们提供了可以构建应用程序的内核空间。开发人员能够定制 FreeRTOS 内核,允许构建具有实时约束的应用程序。不适合 RTOS 的应用程序的一个示例是运行成熟的 GUI。

接下来让我们深入了解如何在 Zynq PS 上设置 FreeRTOS。

Vivado 中的硬件设计

打开Vivado并在新创建的block design中添加Zynq PS。

wKgZomUvOJuAXgnYAACyriK4PRQ335.jpg

在PS中自定义外设,我们这里主要注意添加 UART 外设。其他诸如GPIO、SD0、USB0 等按照自己的硬件启用。

wKgaomUvOJuAGciaAAMqKr3n6sE573.jpg

保存并验证设计。然后创建 HDL wrapper、生成输出产品并生成比特流。将硬件平台信息导出为 XSA。

wKgZomUvOJuAJJ8iAAFlNSOeBnU754.jpg

Vitis 软件开发

启动 Vitis IDE,并使用 XSA 创建一个新的平台项目。选择 freeRTOS 内核作为操作系统。

wKgaomUvOJuAbgUzAAJTDAUmKGI378.jpg

创建平台项目后,修改其BSP禁用xiltimer软件库。

wKgZomUvOJuADeYOAAK8GiGDye4131.jpg

wKgaomUvOJuAKVvdAAMpAjtPffU324.jpg

wKgaomUvOJuAGJxgAAJtQk3jJHc975.jpg

然后搭建平台。现在使用 freeRTOS Hello World 模板创建一个新的应用程序项目。

wKgaomUvOJuAe0UdAAC-TUVllv8560.jpg

在解释主要应用程序代码之前,我想提一下 freeRTOS 内核内的调度程序需要将计时器配置为默认频率 100Hz 才能运行。这可以是软件或硬件定时器。这就是为什么我选择在 BSP 中禁用软件定时器及其库。否则,应用程序运行时会与硬件定时器发生冲突。

主应用程序使用 xTaskCreate() 函数定义两个 FreeRTOS 任务:

wKgZomUvOJuAUw48AADWV0rt2S4950.jpg

然后,它将硬件定时器配置为 10 秒,之后就会过期。

wKgZomUvOJuAOdJQAACZRmA8ZAA030.jpg

现在重要的是要弄清楚该设计使用的是哪个硬件定时器?请记住,在 Vivado 中自定义 Zynq PS 时,我们没有启用任何此类定时器 (TTC/SWDT)。我们可以查看平台项目中存在的移植代码。

wKgZomUvOJuARrHCAAGKmOidP0E456.jpg

portZynq7000.c 文件包含有关如何移植 freeRTOS 内核以适应基于 Zynq 7000 SoC 的设备的信息。打开后我们可以看到如下的条件定义:

wKgaomUvOJuAI1baAAB2hOLYsE8485.jpg

因此,在禁用 xiltimer 后,设计依赖于使用 scutimer 生成定时器中断。此 scutimer 是指每个 ARM-A9 内核内存在的 CPU 专用定时器。

wKgZomUvOJuARjwCAADusCwXb6M240.jpg

如果详细阅读 portZynq7000.c,就可以看到如何使用 scutimer 和 scugic 来设置定时器中断。

定时器启动后,使用 vTaskStartScheduler() 调用启动 freeRTOS 内核的调度程序。调度程序将启动上面定义的两个任务,并且程序将执行这两个任务中定义的任何代码。

最终结果

成功构建软件后,在板上运行应用程序。就会看到以下文本打印在 UART 控制台中:

wKgaomUvOJuAMU-zAABZ84XOJkQ620.jpg

结论

就是这样!您已准备好开始在 Zynq SoC 上运行的 freeRTOS 内核上开发更复杂的程序。

审核编辑:汤梓红

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

    关注

    1603

    文章

    21326

    浏览量

    593233
  • soc
    soc
    +关注

    关注

    38

    文章

    3746

    浏览量

    215702
  • 可编程逻辑
    +关注

    关注

    7

    文章

    512

    浏览量

    43907
  • FreeRTOS
    +关注

    关注

    12

    文章

    473

    浏览量

    61349
  • Zynq
    +关注

    关注

    9

    文章

    600

    浏览量

    46633

原文标题:ZYNQ上运行FreeRTOS

文章出处:【微信号:Open_FPGA,微信公众号:OpenFPGA】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Vivado HLS视频库加速Zynq-7000 All Programmable SoC OpenCV应用

    Vivado HLS视频库加速Zynq-7000 All Programmable SoC OpenCV应用加入赛灵思免费在线研讨会,了解如何在Zynq®-7000 All Progr
    发表于 12-30 16:09

    Zynq-7000 SoC提供 FPGA 资源

    Cortex-A9 处理器,但该器件的 FPGA 数量存在差别,如表 1 所示:[td]Xilinx Zynq SoC可编程逻辑单元块 RAM 的容量大小 (Mb)DSP 切片
    发表于 08-31 14:43

    何在Linux开始使用ISE?

    我做了ISE的Web客户端安装它无法安装驱动程序。是否有文档告诉我如何在Linux开始使用ISE?安装完成后,我看到了文件夹:/opt/Xilinx/11.1但是为了启动ISE,我需要
    发表于 11-19 14:36

    RTOS怎么添加到ZYNQ SoC设计中?

    在寻求获得来自处理系统内的赛灵思Zynq®-7000全可编程SoC的最大利益,操作系统将让你更不是一个简单的裸机解决方案。任何开发ZYNQ SoC设计有大量的操作系统可供选择,并根据最
    发表于 10-23 07:44

    何在zynq702板创建ramdisk

    嗨,我想使用256 MB ram作为ramdsik来快速传输数据。我如何在zynq702板创建ramdisk。
    发表于 03-11 09:47

    为什么人们使用Zynq SoC而不是其他类型的FPGA?

    我想知道为什么人们使用Zynq-SoC而不是其他类型的FPGA?使用这个芯片有什么区别和好处?在普通微处理器我更喜欢Zynq Soc的限制在哪里?亲切的问候,德勒H.
    发表于 04-01 09:24

    freeRTOS 如何移植到zynq芯片

    因为最近要用到zynq芯片,我希望能在zynq芯片使用freeRTOS,但是弄不明白怎么移植进去。一般xillinx sdk在工程里面添加操作系统的方法是,在repository里先
    发表于 06-11 04:35

    何在STM32CubeMX配置FreeRTOS

    何在STM32CubeMX配置FreeRTOS
    发表于 11-16 07:28

    何在AT32F4xx系列MCU使用FreeRTOS

    AN0025—AT32 FreeRTOS应用笔记本指导手册描述了如何在AT32F4xx系列MCU使用FreeRTOSFreeRTOS是一
    发表于 02-11 07:47

    何在NUC100使用FreeRTOS港口和在FreeRTOS使用示范样本代码

    应用:文件介绍了如何在NUC100使用FreeRTOS港口和在FreeRTOS使用示范样本代码。 BSP 版本: NUC100系列 B
    发表于 08-31 07:50

    何在AT32F系列MCU使用FreeRTOS

    本指导手册描述了如何在AT32F系列MCU使用FreeRTOSFreeRTOS是一款开源的嵌入式实时操作系统,目前在各种嵌入式应用中应用广泛。本指导手册包括
    发表于 10-24 07:46

    使用教程分享:在Zynq AP SoC设计中高效使用HLS IP(一)

    高层次综合设计最常见的的使用就是为CPU创建一个加速器,将在CPU中执行的代码移动到FPGA可编程逻辑去提高性能。本文展示了如何在Zynq AP SoC设计中使用HLS IP。 在Zynq
    发表于 02-07 18:08 3258次阅读
    使用教程分享:在<b class='flag-5'>Zynq</b> AP <b class='flag-5'>SoC</b>设计中高效使用HLS IP(一)

    何在Zynq处理器上lwIP实现网络功能

    了解如何在Zynq处理器上使用轻量级IP堆栈(lwIP)来实现网络功能。 本次会议既包括独立用例,也包括与流行的轻量级FreeRTOS操作系统的集成。
    的头像 发表于 11-27 06:17 5061次阅读

    Xilinx ZynqFreeRTOS的Tracealyzer

    电子发烧友网站提供《Xilinx ZynqFreeRTOS的Tracealyzer.zip》资料免费下载
    发表于 12-07 14:59 3次下载
    Xilinx <b class='flag-5'>Zynq</b>上<b class='flag-5'>FreeRTOS</b>的Tracealyzer

    开始使用 NXP Infotainment

    开始使用 NXP Infotainment
    的头像 发表于 12-29 10:02 583次阅读
    <b class='flag-5'>开始使用</b> NXP Infotainment