RM新时代网站-首页

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

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

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

如何在Zynq SoC上開(kāi)始使用FreeRTOS

OpenFPGA ? 來(lái)源: OpenFPGA ? 2023-10-18 09:44 ? 次閱讀

ZYNQ上運(yùn)行FreeRTOS

該項(xiàng)目演示如何在 Zynq SoC 上開(kāi)始使用 FreeRTOS。

介紹

AMD Zynq SoC 器件將典型 FPGA 的可編程邏輯結(jié)構(gòu)和 ARM 處理器內(nèi)核提供的處理能力組合到單個(gè)芯片中,可用作構(gòu)建各種嵌入式系統(tǒng)應(yīng)用的平臺(tái)。可以在 PL 中設(shè)計(jì)專用邏輯結(jié)構(gòu)來(lái)處理計(jì)算密集型任務(wù),而 PS 可以控制 PL 并提供用戶應(yīng)用程序。

wKgaomUvOJuAQGCwAAPmDVWtoRk731.jpg

內(nèi)窺鏡就是可以利用這種功能的產(chǎn)品的一個(gè)例子。視頻鏈在 PL 中實(shí)現(xiàn),處理來(lái)自攝像頭的圖像信號(hào),并提供視頻保存、分辨率更改、色彩校正等額外功能。然后可以將處理后的視頻發(fā)送到顯示接收器。

在本教程中,將展示如何在 Zynq PS 中在 FreeRTOS 內(nèi)核上運(yùn)行應(yīng)用程序。

FreeRTOS 實(shí)時(shí)操作系統(tǒng)

在了解什么是 FreeRTOS 之前,我們先來(lái)看看開(kāi)發(fā)嵌入式系統(tǒng)的三種方式:

wKgZomUvOJuAShMwAAX_-NEmDyM807.jpg

三種方法的區(qū)別在于軟件部分的開(kāi)發(fā)方式。軟件可以分為用戶空間(應(yīng)用程序所在的位置)和內(nèi)核空間(驅(qū)動(dòng)程序和庫(kù)所在的位置)。軟件的大小從裸機(jī)到嵌入式操作系統(tǒng)遞增。

FreeRTOS 是一款專用于實(shí)時(shí)應(yīng)用程序的開(kāi)源操作系統(tǒng)。它們提供了可以構(gòu)建應(yīng)用程序的內(nèi)核空間。開(kāi)發(fā)人員能夠定制 FreeRTOS 內(nèi)核,允許構(gòu)建具有實(shí)時(shí)約束的應(yīng)用程序。不適合 RTOS 的應(yīng)用程序的一個(gè)示例是運(yùn)行成熟的 GUI。

接下來(lái)讓我們深入了解如何在 Zynq PS 上設(shè)置 FreeRTOS。

Vivado 中的硬件設(shè)計(jì)

打開(kāi)Vivado并在新創(chuàng)建的block design中添加Zynq PS。

wKgZomUvOJuAXgnYAACyriK4PRQ335.jpg

在PS中自定義外設(shè),我們這里主要注意添加 UART 外設(shè)。其他諸如GPIO、SD0、USB0 等按照自己的硬件啟用。

wKgaomUvOJuAGciaAAMqKr3n6sE573.jpg

保存并驗(yàn)證設(shè)計(jì)。然后創(chuàng)建 HDL wrapper、生成輸出產(chǎn)品并生成比特流。將硬件平臺(tái)信息導(dǎo)出為 XSA。

wKgZomUvOJuAJJ8iAAFlNSOeBnU754.jpg

Vitis 軟件開(kāi)發(fā)

啟動(dòng) Vitis IDE,并使用 XSA 創(chuàng)建一個(gè)新的平臺(tái)項(xiàng)目。選擇 freeRTOS 內(nèi)核作為操作系統(tǒng)。

wKgaomUvOJuAbgUzAAJTDAUmKGI378.jpg

創(chuàng)建平臺(tái)項(xiàng)目后,修改其BSP禁用xiltimer軟件庫(kù)。

wKgZomUvOJuADeYOAAK8GiGDye4131.jpg

wKgaomUvOJuAKVvdAAMpAjtPffU324.jpg

wKgaomUvOJuAGJxgAAJtQk3jJHc975.jpg

然后搭建平臺(tái)。現(xiàn)在使用 freeRTOS Hello World 模板創(chuàng)建一個(gè)新的應(yīng)用程序項(xiàng)目。

wKgaomUvOJuAe0UdAAC-TUVllv8560.jpg

在解釋主要應(yīng)用程序代碼之前,我想提一下 freeRTOS 內(nèi)核內(nèi)的調(diào)度程序需要將計(jì)時(shí)器配置為默認(rèn)頻率 100Hz 才能運(yùn)行。這可以是軟件或硬件定時(shí)器。這就是為什么我選擇在 BSP 中禁用軟件定時(shí)器及其庫(kù)。否則,應(yīng)用程序運(yùn)行時(shí)會(huì)與硬件定時(shí)器發(fā)生沖突。

主應(yīng)用程序使用 xTaskCreate() 函數(shù)定義兩個(gè) FreeRTOS 任務(wù):

wKgZomUvOJuAUw48AADWV0rt2S4950.jpg

然后,它將硬件定時(shí)器配置為 10 秒,之后就會(huì)過(guò)期。

wKgZomUvOJuAOdJQAACZRmA8ZAA030.jpg

現(xiàn)在重要的是要弄清楚該設(shè)計(jì)使用的是哪個(gè)硬件定時(shí)器?請(qǐng)記住,在 Vivado 中自定義 Zynq PS 時(shí),我們沒(méi)有啟用任何此類定時(shí)器 (TTC/SWDT)。我們可以查看平臺(tái)項(xiàng)目中存在的移植代碼。

wKgZomUvOJuARrHCAAGKmOidP0E456.jpg

portZynq7000.c 文件包含有關(guān)如何移植 freeRTOS 內(nèi)核以適應(yīng)基于 Zynq 7000 SoC 的設(shè)備的信息。打開(kāi)后我們可以看到如下的條件定義:

wKgaomUvOJuAI1baAAB2hOLYsE8485.jpg

因此,在禁用 xiltimer 后,設(shè)計(jì)依賴于使用 scutimer 生成定時(shí)器中斷。此 scutimer 是指每個(gè) ARM-A9 內(nèi)核內(nèi)存在的 CPU 專用定時(shí)器。

wKgZomUvOJuARjwCAADusCwXb6M240.jpg

如果詳細(xì)閱讀 portZynq7000.c,就可以看到如何使用 scutimer 和 scugic 來(lái)設(shè)置定時(shí)器中斷。

定時(shí)器啟動(dòng)后,使用 vTaskStartScheduler() 調(diào)用啟動(dòng) freeRTOS 內(nèi)核的調(diào)度程序。調(diào)度程序?qū)?dòng)上面定義的兩個(gè)任務(wù),并且程序?qū)?zhí)行這兩個(gè)任務(wù)中定義的任何代碼。

最終結(jié)果

成功構(gòu)建軟件后,在板上運(yùn)行應(yīng)用程序。就會(huì)看到以下文本打印在 UART 控制臺(tái)中:

wKgaomUvOJuAMU-zAABZ84XOJkQ620.jpg

結(jié)論

就是這樣!您已準(zhǔn)備好開(kāi)始在 Zynq SoC 上運(yùn)行的 freeRTOS 內(nèi)核上開(kāi)發(fā)更復(fù)雜的程序。

審核編輯:湯梓紅

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

    關(guān)注

    1629

    文章

    21729

    瀏覽量

    602977
  • soc
    soc
    +關(guān)注

    關(guān)注

    38

    文章

    4161

    瀏覽量

    218157
  • 可編程邏輯
    +關(guān)注

    關(guān)注

    7

    文章

    515

    瀏覽量

    44083
  • FreeRTOS
    +關(guān)注

    關(guān)注

    12

    文章

    484

    瀏覽量

    62138
  • Zynq
    +關(guān)注

    關(guān)注

    10

    文章

    609

    瀏覽量

    47174

原文標(biāo)題:ZYNQ上運(yùn)行FreeRTOS

文章出處:【微信號(hào):Open_FPGA,微信公眾號(hào):OpenFPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Vivado HLS視頻庫(kù)加速Zynq-7000 All Programmable SoC OpenCV應(yīng)用

    Vivado HLS視頻庫(kù)加速Zynq-7000 All Programmable SoC OpenCV應(yīng)用加入賽靈思免費(fèi)在線研討會(huì),了解如何在Zynq?-7000 All Progr
    發(fā)表于 12-30 16:09

    Zynq-7000 SoC提供 FPGA 資源

    Cortex-A9 處理器,但該器件的 FPGA 數(shù)量存在差別,如表 1 所示:[td]Xilinx Zynq SoC可編程邏輯單元塊 RAM 的容量大小 (Mb)DSP 切片
    發(fā)表于 08-31 14:43

    何在Linux開(kāi)始使用ISE?

    我做了ISE的Web客戶端安裝它無(wú)法安裝驅(qū)動(dòng)程序。是否有文檔告訴我如何在Linux開(kāi)始使用ISE?安裝完成后,我看到了文件夾:/opt/Xilinx/11.1但是為了啟動(dòng)ISE,我需要
    發(fā)表于 11-19 14:36

    freeRTOS 如何移植到zynq芯片

    因?yàn)樽罱玫?b class='flag-5'>zynq芯片,我希望能在zynq芯片使用freeRTOS,但是弄不明白怎么移植進(jìn)去。一般xillinx sdk在工程里面添加操作系統(tǒng)的方法是,在repository里先
    發(fā)表于 06-11 04:35

    何在STM32CubeMX配置FreeRTOS

    何在STM32CubeMX配置FreeRTOS?
    發(fā)表于 11-16 07:28

    何在NUC100使用FreeRTOS港口和在FreeRTOS使用示范樣本代碼

    應(yīng)用:文件介紹了如何在NUC100使用FreeRTOS港口和在FreeRTOS使用示范樣本代碼。 BSP 版本: NUC100系列 B
    發(fā)表于 08-31 07:50

    何在AT32F系列MCU使用FreeRTOS

    本指導(dǎo)手冊(cè)描述了如何在AT32F系列MCU使用FreeRTOS。FreeRTOS是一款開(kāi)源的嵌入式實(shí)時(shí)操作系統(tǒng),目前在各種嵌入式應(yīng)用中應(yīng)用廣泛。本指導(dǎo)手冊(cè)包括
    發(fā)表于 10-24 07:46

    使用教程分享:在Zynq AP SoC設(shè)計(jì)中高效使用HLS IP(一)

    高層次綜合設(shè)計(jì)最常見(jiàn)的的使用就是為CPU創(chuàng)建一個(gè)加速器,將在CPU中執(zhí)行的代碼移動(dòng)到FPGA可編程邏輯去提高性能。本文展示了如何在Zynq AP SoC設(shè)計(jì)中使用HLS IP。 在Zynq
    發(fā)表于 02-07 18:08 ?3603次閱讀
    使用教程分享:在<b class='flag-5'>Zynq</b> AP <b class='flag-5'>SoC</b>設(shè)計(jì)中高效使用HLS IP(一)

    使用 Zynq SoC 實(shí)現(xiàn)計(jì)算機(jī)視頻實(shí)時(shí)算法

    Xilinx 高級(jí)產(chǎn)品經(jīng)理Vinay Singh將向您演示如何在Zynq-7000 All Programmable SoC系列中實(shí)現(xiàn)計(jì)算機(jī)視頻實(shí)時(shí)算法。
    的頭像 發(fā)表于 06-04 13:47 ?3698次閱讀

    何在Zynq處理器lwIP實(shí)現(xiàn)網(wǎng)絡(luò)功能

    了解如何在Zynq處理器使用輕量級(jí)IP堆棧(lwIP)來(lái)實(shí)現(xiàn)網(wǎng)絡(luò)功能。 本次會(huì)議既包括獨(dú)立用例,也包括與流行的輕量級(jí)FreeRTOS操作系統(tǒng)的集成。
    的頭像 發(fā)表于 11-27 06:17 ?5425次閱讀

    教大家如何在STM32F4freeRTOS

    [導(dǎo)讀] 大家好,我是逸珺。 之前挖了圖解freeRTOS的坑,挖了坑就得填。今天就從使用開(kāi)始,先把freeRTOS用起來(lái)。先聊一聊在STM32F407的如何電燈,如果只用
    的頭像 發(fā)表于 07-23 10:21 ?4143次閱讀
    教大家如<b class='flag-5'>何在</b>STM32F4<b class='flag-5'>上</b>跑<b class='flag-5'>freeRTOS</b>

    Zynq SoC 設(shè)備的多種用途

    這篇博文特別關(guān)注 Zynq SoC 的多用途 IO (MIO, Multipurpose IO) 模塊。
    的頭像 發(fā)表于 03-30 11:43 ?1952次閱讀

    Xilinx ZynqFreeRTOS的Tracealyzer

    電子發(fā)燒友網(wǎng)站提供《Xilinx ZynqFreeRTOS的Tracealyzer.zip》資料免費(fèi)下載
    發(fā)表于 12-07 14:59 ?5次下載
    Xilinx <b class='flag-5'>Zynq</b><b class='flag-5'>上</b><b class='flag-5'>FreeRTOS</b>的Tracealyzer

    開(kāi)始使用 NXP Infotainment

    開(kāi)始使用 NXP Infotainment
    的頭像 發(fā)表于 12-29 10:02 ?794次閱讀
    <b class='flag-5'>開(kāi)始使用</b> NXP Infotainment

    在MATRIX Voice ESP32開(kāi)始使用藍(lán)牙

    電子發(fā)燒友網(wǎng)站提供《在MATRIX Voice ESP32開(kāi)始使用藍(lán)牙.zip》資料免費(fèi)下載
    發(fā)表于 06-20 15:30 ?1次下載
    在MATRIX Voice ESP32<b class='flag-5'>上</b><b class='flag-5'>開(kāi)始使用</b>藍(lán)牙
    RM新时代网站-首页