新聞中心
隨著嵌入式設備的廣泛應用,SoC(System on Chip)已成為嵌入式系統(tǒng)中的重要組成部分。Xilinx Zynq系列是當前業(yè)界最為出色的SoC設計,該系列利用FPGA的可重構性和ARM的處理器內核,為設計人員提供了一個高度可定制化的解決方案。

創(chuàng)新互聯(lián)專業(yè)IDC數(shù)據(jù)服務器托管提供商,專業(yè)提供成都服務器托管,服務器租用,服務器機柜租賃,服務器機柜租賃,成都多線服務器托管等服務器托管服務。
Zynq SoC在嵌入式系統(tǒng)中的主要應用是作為處理器子系統(tǒng)的擴展,可用于實現(xiàn)高效的數(shù)據(jù)處理,通信、控制、安全等功能。其中,PL(Programmable Logic,可編程邏輯)部分扮演著重要的角色,可通過編程將其定制為不同的硬件設備和接口,以滿足各種應用需求。
本文將重點介紹Zynq PL中斷在Linux中的應用,并探討其實現(xiàn)方法和技術難點。
一、Linux中斷機制簡介
在Linux系統(tǒng)中,中斷機制是實現(xiàn)各種硬件設備和外設與系統(tǒng)的交互的重要手段。中斷是指硬件設備向系統(tǒng)發(fā)出的異步事件通知,例如按鍵按下、定時器超時等。當硬件設備觸發(fā)中斷時,系統(tǒng)將中斷事件通知到相應的中斷處理程序中進行處理。中斷處理程序會暫時中止當前正在執(zhí)行的任務,執(zhí)行中斷處理程序,處理完中斷后,繼續(xù)執(zhí)行之前的任務。
對于大多數(shù)外設,如定時器、串口等,中斷處理程序的編寫是必須的。在Linux內核中,中斷處理程序是通過IRQ(Interrupt ReQuest)機制來注冊的。IRQ號是中斷號的一個別名,主要用于將中斷響應程序綁定到特定的硬件中斷等操作。IRQ號可以在啟動時從設備樹中獲取,也可以通過內核API(Application Programming Interface)動態(tài)分配。
二、Zynq中斷架構
Zynq SoC的PL部分是一個FPGA芯片,可重新編程以滿足不同的硬件需求。在Zynq SoC中,PL通過PS(Processing System,處理器系統(tǒng))接口與處理器核之間進行數(shù)據(jù)交換。其中,PL端與PS端的中斷處理非常重要。
PL中斷可以由多種外設觸發(fā),例如GPIO(General Purpose Input Output)、SPI(Serial Peripheral Interface)、I2C(Inter-Integrated Circuit)等,處理器核可以通過訪問中斷控制器來注冊和注銷PL中斷,使用相應的中斷處理程序響應外設中斷。
在Zynq SoC中,處理器核和可編程邏輯之間的中斷交互涉及到兩個主要的IP(Intellectual Property)核心,MSC(Muli-standard Communication Co-processor)和AXI(Advanced eXtensible Interface)Interrupt Controller。MSC是一個可編程邏輯收發(fā)器,可用于支持高速通信協(xié)議,例如PCI Express、SATA等,AXI Interrupt Controller則是管理PL外設中斷的核心。
MSC中斷響應:
當MSC接收到一個來自PL外設的中斷請求時,它會將該請求轉發(fā)給AXI Interrupt Controller,該控制器將處理器核分配給與中斷請求相關聯(lián)的中斷服務程序。在中斷服務程序執(zhí)行期間,AXI Interrupt Controller將暫停來自PL的外設的中斷請求,以保證中斷服務程序能夠在執(zhí)行期間訪問系統(tǒng)資源。中斷處理程序完成后,AXI Interrupt Controller將恢復來自PL外設的中斷請求。
AXI Interrupt Controller:
AXI Interrupt Controller通過AXI總線連接到PS和PL之間的連接器,用于實現(xiàn)中斷請求的仲裁和分配,以及中斷優(yōu)先級的管理。該控制器可以為每個外設分配一個唯一的中斷號,以避免中斷信號沖突。此外,AXI Interrupt Controller還支持動態(tài)中斷控制,可以在運行時添加和刪除中斷服務程序。
三、Zynq PL中斷在Linux中的應用
在Linux系統(tǒng)中,PL中斷處理程序可以快速響應硬件事件,以提高系統(tǒng)的響應性和工作效率。在Zynq SoC中,通過AXI Interrupt Controller可以為PL外設分配唯一的中斷號,方便編程人員編寫中斷處理程序。
在使用PL中斷時,需要在設備樹中添加相應的中斷控制器,例如AXI Interrupt Controller,以及與之對應的中斷路徑。中斷路徑由設備的名稱和中斷號構成。當中斷請求產生時,系統(tǒng)將從設備樹中獲取相應的中斷路徑和號碼,并將它們傳遞給中斷處理程序。
使用中斷的另一個優(yōu)點是增強了系統(tǒng)的可靠性和穩(wěn)定性。由于中斷機制能夠快速響應硬件事件,防止系統(tǒng)出現(xiàn)死鎖和資源占用。因此,開發(fā)人員應該根據(jù)具體應用需求合理地設計和管理中斷,以提高系統(tǒng)的可靠性和穩(wěn)定性。
四、小結
Zynq SoC作為更SoC方案,為嵌入式系統(tǒng)帶來了很多創(chuàng)新。使用PL中斷可以提高系統(tǒng)的響應性和工作效率,同時也增強了嵌入式系統(tǒng)的可靠性和穩(wěn)定性。本文介紹了Zynq PL中斷在Linux中的應用,以及在實現(xiàn)中需注意的技術難點。希望本文能對有志于從事嵌入式系統(tǒng)設計和開發(fā)的人員有所幫助。
相關問題拓展閱讀:
- 如何學習zynq以太網(wǎng)控制器及協(xié)議棧
如何學習zynq以太網(wǎng)控制器及協(xié)議棧
第 9 章 ZedBoard 入門
前面大家已經對 ZYNQ 架構以及相應的開發(fā)工具有一定的認識,接下來我們將帶領大家來一起 體驗 ZYNQ,體驗軟硬件協(xié)同設計的魅力。由于時間的關系,下面的一些實驗(本章及后續(xù)章節(jié)的實驗) 可能有不完善的地方,歡迎讀者向我們反饋。 9.1 跑馬燈 本實驗將指導大家使用 Vivado 集成設計環(huán)境創(chuàng)建本書的之一個 Zynq 設計。這里,我們使用跑馬燈 這個入門實驗來向大家介紹 Vivado IDE 的 IP Integrator 環(huán)境,并在 Zedboard 上實現(xiàn)這個簡單的 Zynq 嵌 入式系統(tǒng)。之后,我們將會使用 SDK 創(chuàng)建一個簡單的軟件應用程序,并下載到 Zynq 的 ARM 處理器中, 對在 PL 端實現(xiàn)的硬件進行控制。本實驗分為三個小節(jié)來向大家進行介紹: ? 之一節(jié)我們將使用 Vivado IDE 創(chuàng)建一個工程。 ? 在之一節(jié)的基礎上,第二節(jié)我們將繼續(xù)構建一個 Zynq 嵌入式處理系統(tǒng),并將完成后的硬件導入 到 SDK 中進行軟件設計。 ? 最后一節(jié)我們將使用 SDK 編寫 ARM 測試應用程序, 并下載到 ZedBoard 上進行調試。 實驗環(huán)境:Windows 7 x64 操作系統(tǒng), Vivado2023.4,SDK 2023.4
9.1.1 Vivado 工程創(chuàng)建
1) 雙擊桌面 Vivado 快捷方式 ,或者瀏覽 Start > All Programes > Xilinx Design Tools > Vivado
2023.4 > Vivado 2023.4 來啟動 Vivado. 2) 當 Vivado 啟動后,可以看到圖 9-1 的 Getting Started 頁面。
圖 9- 1 Vivado 開始界面
3) 選擇 Create New Project 選項,圖 9-2 所示的 New Project 向導將會打開,點擊 Next。
圖 9- 2 New Project 對話框 4) 在 Project Name 對話框中早賣,輸入 first_zynq_design 作為 Project name, 選擇 C:/XUP/Zed 作為 Project location,確保 Create project subdirectory 被勾選上,如圖 9-3,點擊 Next。
圖 9- 3 Project Name 對話框 5) 在 Project Type 對話框中,選擇 RTL Project,確保 Do not specify sources at this time 選項沒有 被勾選,如圖 9-4,點擊 Next。
圖 9- 4 Project Type 對話框 6) 在 Add Source 對話框中, 選擇 Verilog 作為目標語言,如果你拍睜李對 VHDL 熟悉的話, 你也可以 選擇 VHDL,如果這里你忘記了選擇,在工程創(chuàng)建完成后,也可以在工程設置中選擇你熟悉的 HDL 語言。如果你已經有了源文件,在這里就可以選擇 Add file 或者 Add directory 進行添加, 由于我們沒有任何的源文件, 所以這里我們直接點擊 Next 即可,如圖 9-5。
圖 9- 5 添加源文件 7) 在 Add Existing IP 對話框中,點擊 Next。 8) 在 Add Constraints 對話框中,點擊 Next。 9) 在 Default Part 對襲遲話框中,在 Specify 框中選擇 Boards 選項,在下面的 Board 列表中選擇 ZedBoard Zynq Evaluation and Development Kit,點擊 Next,如圖 9-6。
圖 9- 6 芯片選擇 10) 在 New Project Summary 對話框中,點解 Finish 完成工程創(chuàng)建,至此,我們已經使用 Vivado 創(chuàng)建了一個 Zynq 設計的工程框架,圖 9-7 為 Vivado 的工程界面,在第四章我們已經對該界面 進行過介紹,如果還不熟悉的讀者再回到前面復習一下。下面我將使用 Flow Navigator 的 IP Integrator 功能完成第二節(jié)的嵌入式系統(tǒng)設計。
圖 9- 7 Vivado 工程界面
9.1.2 在 Vivado 中創(chuàng)建 Zynq 嵌入式系統(tǒng) 這一節(jié)我們將創(chuàng)建一個簡單的 Zynq 嵌入式系統(tǒng),該系統(tǒng)使用 Zynq PL 部分實現(xiàn)一個通用 I/O 控制 器 (GPIO),控制器同 ZedBoard 上的 8 個 LED 相連接,并且通過 AXI 總線連接到 PS 端,這樣我們就可 以通過將要在第三小節(jié)中實現(xiàn)的 ARM 應用程序來對 LED 進行控制。系統(tǒng)結構圖如圖 9-8 所示。
說到學習ZYNQ+SOC+Linux開發(fā),我認為主要應該細分為lian兩大點:zynq,soc合為一個點,linux為一個點。下面我就給大家介紹學習的流程和路線。
一,學習zynq+soc的FPGA開發(fā)部分和片上ARM核的寄存器,裸奔應用開發(fā),我推薦大家收閱讀文檔《ZYNQ+SOC修煉秘籍-最全面的pdf》,下面我給大家貼上下載地址。
CSDN下載鏈接:
二,如果各位能按部就班的閱讀并自己動手編寫測試《ZYNQ+SOC修煉秘籍-最全面的pdf》里面的內容,我相信大家對于zynq的硬件部分已經足夠了解,并且能夠寫出基于FPGA+ARM構架的裸奔程序應用了。
那么接下來,我們就應該學習管如何在zynq平臺上搭建Linux操作系統(tǒng)了。
(1)u-boot的編譯
我相信大家已經肯定在網(wǎng)上搜索理解了很多關于u-boot編譯的資料,所以在此睜稿我給大家提供的shi是如何解決編譯過程中遇到的一些問題,將自己在銀兆項目實踐中的記錄分享給大家,具體請參考《zynq-u-boot編譯說明書》這個資料,下面為下載鏈接地址。
CSDN下載鏈接:
(2)kernel的編譯
眾所周知,kernel為Linux的內核,這個是最最核心的部分,在此不做過多的贅述,給大家分享項目中的記錄吧。具體參考《zynq-kernel編譯說明書》這個資料。
CSDN下載鏈接:
(3)設備樹的編譯
不知道大家是否知道,Linux上的驅動是怎么和硬件掛鉤的嗎?沒錯,就是使用的設備樹,話不多說,請參照《zynq設備樹配置說明》這個資料,下面為下載鏈接地址。
CSDN下載鏈接:
(4)文件系統(tǒng)的搭載
在完成上述三步的操作之后,需要一個完整的Linux系統(tǒng)我們就還需要搭載上文件系統(tǒng),國外很多人喜歡利用buildroot自己及定制文件系統(tǒng),但是對于初學者我的建議是先使用已經完善的文件系統(tǒng),具體的做法請參照《zynq文件系統(tǒng)掛載》這個資料,下面為下載鏈接地址。
CSDN下載鏈接:
三,在完成了u-boot的編譯,kernel的編譯,設備樹的編譯,文件系統(tǒng)的編譯掛載后,一個完整的Linux系統(tǒng)就搭建成功了。不過我相信在過程中肯定會遇到或多或少的各種各樣的問題,在此本人為大家分享一些在過程中遇到的問題以及解決方法,水平有限望大神勿噴。
(1)在運行掛載文件系統(tǒng)的時候本人就曾經遇到,系統(tǒng)默認掛載的是ramdisk,所以無法掛載我搭建在SD卡上的ext4的文件系統(tǒng),請參考《zynq不加載悉搏孝ramdisk的方法》資料里的解決方法,下面為資料xixi下載鏈接。
CSDN下載鏈接:
(2)如何解決板子每次上電都動態(tài)分配ip,導致用戶無法準確知道板子的ip呢?那就請參考《zynq_linux配置靜態(tài)和動態(tài)ip的方法》這個資料里的內容,下面為下載鏈接。
CSDN下載鏈接:
(3)配置好靜態(tài)ip后,那么肯定是kai’開始用用SSH連接板子,現(xiàn)在就讓我們來解決SSH連接的問題,請參考《zynq上的SSH無法鏈接問題》這個資料里的內容,下面為下載鏈接。
CSDN下載鏈接:
(4)以上問題都解決了后,自然是想自己動手編寫Linux下的驅動咯。只有有了驅動才能使得FPGA為Linux所用,那么接下來給大家分享幾個編寫Linux下的axi dma驅動的資料供大家參考。
《zynq字符設備驅動代碼》
CSDN下載鏈接:
《zynq_linux字符驅動之自動創(chuàng)建設備節(jié)點》
CSDN下載鏈接:
《zynq上axi-dma作為字符設備的驅動代碼》
CSDN下載鏈接:
《zynq_dma_device_tree說明文件》
CSDN下載鏈接:
四,以上介紹大部分均為本人在學習,做項目時的總結,在此分享給大家,希望對廣大的學習群體有所幫助,本人水平有限,在此希望各路大神們勿噴。接下來就靠大家自己努力加油了!
關于zynq pl 中斷 linux的介紹到此就結束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關注本站。
創(chuàng)新互聯(lián)服務器托管擁有成都T3+級標準機房資源,具備完善的安防設施、三線及BGP網(wǎng)絡接入帶寬達10T,機柜接入千兆交換機,能夠有效保證服務器托管業(yè)務安全、可靠、穩(wěn)定、高效運行;創(chuàng)新互聯(lián)專注于成都服務器托管租用十余年,得到成都等地區(qū)行業(yè)客戶的一致認可。
本文題目:ZynqPL中斷在Linux上的應用(zynqpl中斷l(xiāng)inux)
轉載源于:http://m.fisionsoft.com.cn/article/dpiddid.html


咨詢
建站咨詢
