ZYNQ上運行FreeRTOS
該項目演示如何在 Zynq SoC 上開始使用 FreeRTOS。
介紹
AMD Zynq SoC 器件將典型 FPGA 的可編程邏輯結(jié)構(gòu)和 ARM 處理器內(nèi)核提供的處理能力組合到單個芯片中,可用作構(gòu)建各種嵌入式系統(tǒng)應用的平臺??梢栽?PL 中設(shè)計專用邏輯結(jié)構(gòu)來處理計算密集型任務,而 PS 可以控制 PL 并提供用戶應用程序。
內(nèi)窺鏡就是可以利用這種功能的產(chǎn)品的一個例子。視頻鏈在 PL 中實現(xiàn),處理來自攝像頭的圖像信號,并提供視頻保存、分辨率更改、色彩校正等額外功能。然后可以將處理后的視頻發(fā)送到顯示接收器。
在本教程中,將展示如何在 Zynq PS 中在 FreeRTOS 內(nèi)核上運行應用程序。
FreeRTOS 實時操作系統(tǒng)
在了解什么是 FreeRTOS 之前,我們先來看看開發(fā)嵌入式系統(tǒng)的三種方式:
三種方法的區(qū)別在于軟件部分的開發(fā)方式。軟件可以分為用戶空間(應用程序所在的位置)和內(nèi)核空間(驅(qū)動程序和庫所在的位置)。軟件的大小從裸機到嵌入式操作系統(tǒng)遞增。
FreeRTOS 是一款專用于實時應用程序的開源操作系統(tǒng)。它們提供了可以構(gòu)建應用程序的內(nèi)核空間。開發(fā)人員能夠定制 FreeRTOS 內(nèi)核,允許構(gòu)建具有實時約束的應用程序。不適合 RTOS 的應用程序的一個示例是運行成熟的 GUI。
接下來讓我們深入了解如何在 Zynq PS 上設(shè)置 FreeRTOS。
Vivado 中的硬件設(shè)計
打開Vivado并在新創(chuàng)建的block design中添加Zynq PS。
在PS中自定義外設(shè),我們這里主要注意添加 UART 外設(shè)。其他諸如GPIO、SD0、USB0 等按照自己的硬件啟用。
保存并驗證設(shè)計。然后創(chuàng)建 HDL wrapper、生成輸出產(chǎn)品并生成比特流。將硬件平臺信息導出為 XSA。
Vitis 軟件開發(fā)
啟動 Vitis IDE,并使用 XSA 創(chuàng)建一個新的平臺項目。選擇 freeRTOS 內(nèi)核作為操作系統(tǒng)。
創(chuàng)建平臺項目后,修改其BSP禁用xiltimer軟件庫。
然后搭建平臺?,F(xiàn)在使用 freeRTOS Hello World 模板創(chuàng)建一個新的應用程序項目。
在解釋主要應用程序代碼之前,我想提一下 freeRTOS 內(nèi)核內(nèi)的調(diào)度程序需要將計時器配置為默認頻率 100Hz 才能運行。這可以是軟件或硬件定時器。這就是為什么我選擇在 BSP 中禁用軟件定時器及其庫。否則,應用程序運行時會與硬件定時器發(fā)生沖突。
主應用程序使用 xTaskCreate() 函數(shù)定義兩個 FreeRTOS 任務:
然后,它將硬件定時器配置為 10 秒,之后就會過期。
現(xiàn)在重要的是要弄清楚該設(shè)計使用的是哪個硬件定時器?請記住,在 Vivado 中自定義 Zynq PS 時,我們沒有啟用任何此類定時器 (TTC/SWDT)。我們可以查看平臺項目中存在的移植代碼。
portZynq7000.c 文件包含有關(guān)如何移植 freeRTOS 內(nèi)核以適應基于 Zynq 7000 SoC 的設(shè)備的信息。打開后我們可以看到如下的條件定義:
因此,在禁用 xiltimer 后,設(shè)計依賴于使用 scutimer 生成定時器中斷。此 scutimer 是指每個 ARM-A9 內(nèi)核內(nèi)存在的 CPU 專用定時器。
如果詳細閱讀 portZynq7000.c,就可以看到如何使用 scutimer 和 scugic 來設(shè)置定時器中斷。
定時器啟動后,使用 vTaskStartScheduler() 調(diào)用啟動 freeRTOS 內(nèi)核的調(diào)度程序。調(diào)度程序?qū)由厦娑x的兩個任務,并且程序?qū)?zhí)行這兩個任務中定義的任何代碼。
最終結(jié)果
成功構(gòu)建軟件后,在板上運行應用程序。就會看到以下文本打印在 UART 控制臺中:
結(jié)論
就是這樣!您已準備好開始在 Zynq SoC 上運行的 freeRTOS 內(nèi)核上開發(fā)更復雜的程序。
審核編輯:湯梓紅
-
FPGA
+關(guān)注
關(guān)注
1645文章
22050瀏覽量
618449 -
soc
+關(guān)注
關(guān)注
38文章
4390瀏覽量
222757 -
可編程邏輯
+關(guān)注
關(guān)注
7文章
526瀏覽量
44762 -
FreeRTOS
+關(guān)注
關(guān)注
12文章
493瀏覽量
64352 -
Zynq
+關(guān)注
關(guān)注
10文章
615瀏覽量
48252
原文標題:ZYNQ上運行FreeRTOS
文章出處:【微信號:Open_FPGA,微信公眾號:OpenFPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
Vivado HLS視頻庫加速Zynq-7000 All Programmable SoC OpenCV應用
Zynq-7000 SoC提供 FPGA 資源
如何在Linux上開始使用ISE?
freeRTOS 如何移植到zynq芯片
如何在NUC100上使用FreeRTOS港口和在FreeRTOS上使用示范樣本代碼
如何在AT32F系列MCU上使用FreeRTOS
使用教程分享:在Zynq AP SoC設(shè)計中高效使用HLS IP(一)

使用 Zynq SoC 實現(xiàn)計算機視頻實時算法
如何在Zynq處理器上lwIP實現(xiàn)網(wǎng)絡功能
教大家如何在STM32F4上跑freeRTOS

Zynq SoC 設(shè)備上的多種用途
Xilinx Zynq上FreeRTOS的Tracealyzer

在MATRIX Voice ESP32上開始使用藍牙

評論