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

使用 Zynq SoC 實現計算機視頻實時算法
如何在Zynq處理器上lwIP實現網絡功能
教大家如何在STM32F4上跑freeRTOS

Xilinx Zynq上FreeRTOS的Tracealyzer

評論