新聞中心
Zynq是一種處理器,可用于各種應(yīng)用,包括嵌入式系統(tǒng)和嵌入式Linux系統(tǒng)。在這些應(yīng)用中,Zynq的中斷系統(tǒng)是非常重要的組成部分。中斷是一種常見(jiàn)的方法,用于在Zynq處理器的執(zhí)行過(guò)程中,響應(yīng)外部的事件。

Zynq中斷的配置是一個(gè)非常重要的任務(wù),因?yàn)檎_的配置可以使操作系統(tǒng)更加高效地響應(yīng)事件,從而大幅提升系統(tǒng)的性能。在過(guò)去,這個(gè)任務(wù)可能會(huì)需要很多時(shí)間和精力,但現(xiàn)在有了一個(gè)簡(jiǎn)便的方法,就是使用Linux庫(kù)。
使用Linux庫(kù)配置Zynq中斷有以下優(yōu)點(diǎn):
1. 簡(jiǎn)單易用:使用Linux庫(kù)配置Zynq中斷非常簡(jiǎn)單,即使是新手也可以輕松上手。只需要幾行代碼就可以完成中斷的配置。
2. 高效可靠:Linux庫(kù)有很好的兼容性,可以在不同版本的Linux系統(tǒng)上運(yùn)行,并且保證高效和可靠性。
3. 可以在用戶空間運(yùn)行:使用Linux庫(kù)可以在用戶空間運(yùn)行中斷處理程序,這樣可以更容易地開(kāi)發(fā)和調(diào)試中斷程序。
下面我們來(lái)看一下如何使用Linux庫(kù)配置Zynq中斷。
我們需要在Linux系統(tǒng)中加載中斷控制器設(shè)備樹(shù)(DT)。設(shè)備樹(shù)是一種描述硬件設(shè)備的數(shù)據(jù)結(jié)構(gòu),其中包括了中斷控制器的描述。我們可以在Linux系統(tǒng)中加載設(shè)備樹(shù),以使中斷控制器可用。
我們需要在設(shè)備樹(shù)中添加中斷節(jié)點(diǎn)。中斷節(jié)點(diǎn)定義了中斷的信息,包括中斷號(hào)、中斷類型、中斷觸發(fā)方式等。
以下是一個(gè)典型的中斷節(jié)點(diǎn)的定義:
interrupt-parent = ;
interrupts = ;
interrupt-names = “interrupt1”;
其中,interrupt-parent指定了中斷的父級(jí)中斷控制器節(jié)點(diǎn),interrupts指定了中斷的編號(hào)、觸發(fā)方式和屏蔽方式,interrupt-names給中斷起了一個(gè)名字,名字可以隨意定義。
在設(shè)備樹(shù)中添加中斷節(jié)點(diǎn)后,我們需要在Linux系統(tǒng)中注冊(cè)中斷處理程序。中斷處理程序是在中斷發(fā)生時(shí)調(diào)用的函數(shù),用于處理中斷事件。我們可以使用Linux庫(kù)注冊(cè)中斷處理程序,如下所示:
static irqreturn_t handler(int irq,void *dev_id)
{
//中斷處理程序
return IRQ_HANDLED;
}
int init_module(void)
{
//注冊(cè)中斷處理程序
return request_irq(30,&handler,IRQF_TRIGGER_RISING,”interrupt1″,NULL);
}
void cleanup_module()
{
//注銷中斷處理程序
free_irq(30,NULL);
}
以上代碼中,handler函數(shù)是中斷處理程序,當(dāng)中斷發(fā)生時(shí),Linux內(nèi)核會(huì)自動(dòng)調(diào)用該函數(shù)進(jìn)行處理。init_module函數(shù)用于注冊(cè)中斷處理程序,cleanup_module函數(shù)用于注銷中斷處理程序。
我們需要測(cè)試中斷處理程序。在測(cè)試中斷處理程序時(shí),可以使用Linux庫(kù)提供的一些工具程序,如/proc/interrupts,用于查看中斷情況。
相關(guān)問(wèn)題拓展閱讀:
- 如何學(xué)習(xí)zynq以太網(wǎng)控制器及協(xié)議棧
如何學(xué)習(xí)zynq以太網(wǎng)控制器及協(xié)議棧
說(shuō)到學(xué)習(xí)ZYNQ+SOC+Linux開(kāi)發(fā),我認(rèn)為主要應(yīng)該細(xì)分為lian兩大點(diǎn):zynq,soc合為一個(gè)點(diǎn),linux為一個(gè)點(diǎn)。下面我就給大家介紹學(xué)習(xí)的流程和路線。
一,學(xué)習(xí)zynq+soc的FPGA開(kāi)發(fā)部分和片上ARM核的寄存器,裸奔應(yīng)用開(kāi)發(fā),我推薦大家收閱讀文檔《ZYNQ+SOC修煉秘籍-最全面的pdf》,下面我給大家貼上下載地址。
CSDN下載鏈接:
二,如果各位能按部就班的閱讀并自己動(dòng)手編寫(xiě)測(cè)試《ZYNQ+SOC修煉秘籍-最全面的pdf》里面的內(nèi)容,我相信大家對(duì)于zynq的硬件部分已經(jīng)足夠了解,并且能夠?qū)懗龌贔PGA+ARM構(gòu)架的裸奔程序應(yīng)用了。
那么接下來(lái),我們就應(yīng)該學(xué)習(xí)管如何在zynq平臺(tái)上搭建Linux操作系統(tǒng)了。
(1)u-boot的編譯
我相信大家已經(jīng)肯定在網(wǎng)上搜索理解了很多關(guān)于u-boot編譯的資料,所以在此睜稿我給大家提供的shi是如何解決編譯過(guò)程中遇到的一些問(wèn)題,將自己在銀兆項(xiàng)目實(shí)踐中的記錄分享給大家,具體請(qǐng)參考《zynq-u-boot編譯說(shuō)明書(shū)》這個(gè)資料,下面為下載鏈接地址。
CSDN下載鏈接:
(2)kernel的編譯
眾所周知,kernel為L(zhǎng)inux的內(nèi)核,這個(gè)是最最核心的部分,在此不做過(guò)多的贅述,給大家分享項(xiàng)目中的記錄吧。具體參考《zynq-kernel編譯說(shuō)明書(shū)》這個(gè)資料。
CSDN下載鏈接:
(3)設(shè)備樹(shù)的編譯
不知道大家是否知道,Linux上的驅(qū)動(dòng)是怎么和硬件掛鉤的嗎?沒(méi)錯(cuò),就是使用的設(shè)備樹(shù),話不多說(shuō),請(qǐng)參照《zynq設(shè)備樹(shù)配置說(shuō)明》這個(gè)資料,下面為下載鏈接地址。
CSDN下載鏈接:
(4)文件系統(tǒng)的搭載
在完成上述三步的操作之后,需要一個(gè)完整的Linux系統(tǒng)我們就還需要搭載上文件系統(tǒng),國(guó)外很多人喜歡利用buildroot自己及定制文件系統(tǒng),但是對(duì)于初學(xué)者我的建議是先使用已經(jīng)完善的文件系統(tǒng),具體的做法請(qǐng)參照《zynq文件系統(tǒng)掛載》這個(gè)資料,下面為下載鏈接地址。
CSDN下載鏈接:
三,在完成了u-boot的編譯,kernel的編譯,設(shè)備樹(shù)的編譯,文件系統(tǒng)的編譯掛載后,一個(gè)完整的Linux系統(tǒng)就搭建成功了。不過(guò)我相信在過(guò)程中肯定會(huì)遇到或多或少的各種各樣的問(wèn)題,在此本人為大家分享一些在過(guò)程中遇到的問(wèn)題以及解決方法,水平有限望大神勿噴。
(1)在運(yùn)行掛載文件系統(tǒng)的時(shí)候本人就曾經(jīng)遇到,系統(tǒng)默認(rèn)掛載的是ramdisk,所以無(wú)法掛載我搭建在SD卡上的ext4的文件系統(tǒng),請(qǐng)參考《zynq不加載悉搏孝ramdisk的方法》資料里的解決方法,下面為資料x(chóng)ixi下載鏈接。
CSDN下載鏈接:
(2)如何解決板子每次上電都動(dòng)態(tài)分配ip,導(dǎo)致用戶無(wú)法準(zhǔn)確知道板子的ip呢?那就請(qǐng)參考《zynq_linux配置靜態(tài)和動(dòng)態(tài)ip的方法》這個(gè)資料里的內(nèi)容,下面為下載鏈接。
CSDN下載鏈接:
(3)配置好靜態(tài)ip后,那么肯定是kai’開(kāi)始用用SSH連接板子,現(xiàn)在就讓我們來(lái)解決SSH連接的問(wèn)題,請(qǐng)參考《zynq上的SSH無(wú)法鏈接問(wèn)題》這個(gè)資料里的內(nèi)容,下面為下載鏈接。
CSDN下載鏈接:
(4)以上問(wèn)題都解決了后,自然是想自己動(dòng)手編寫(xiě)Linux下的驅(qū)動(dòng)咯。只有有了驅(qū)動(dòng)才能使得FPGA為L(zhǎng)inux所用,那么接下來(lái)給大家分享幾個(gè)編寫(xiě)Linux下的axi dma驅(qū)動(dòng)的資料供大家參考。
《zynq字符設(shè)備驅(qū)動(dòng)代碼》
CSDN下載鏈接:
《zynq_linux字符驅(qū)動(dòng)之自動(dòng)創(chuàng)建設(shè)備節(jié)點(diǎn)》
CSDN下載鏈接:
《zynq上axi-dma作為字符設(shè)備的驅(qū)動(dòng)代碼》
CSDN下載鏈接:
《zynq_dma_device_tree說(shuō)明文件》
CSDN下載鏈接:
四,以上介紹大部分均為本人在學(xué)習(xí),做項(xiàng)目時(shí)的總結(jié),在此分享給大家,希望對(duì)廣大的學(xué)習(xí)群體有所幫助,本人水平有限,在此希望各路大神們勿噴。接下來(lái)就靠大家自己努力加油了!
第 9 章 ZedBoard 入門(mén)
前面大家已經(jīng)對(duì) ZYNQ 架構(gòu)以及相應(yīng)的開(kāi)發(fā)工具有一定的認(rèn)識(shí),接下來(lái)我們將帶領(lǐng)大家來(lái)一起 體驗(yàn) ZYNQ,體驗(yàn)軟硬件協(xié)同設(shè)計(jì)的魅力。由于時(shí)間的關(guān)系,下面的一些實(shí)驗(yàn)(本章及后續(xù)章節(jié)的實(shí)驗(yàn)) 可能有不完善的地方,歡迎讀者向我們反饋。 9.1 跑馬燈 本實(shí)驗(yàn)將指導(dǎo)大家使用 Vivado 集成設(shè)計(jì)環(huán)境創(chuàng)建本書(shū)的之一個(gè) Zynq 設(shè)計(jì)。這里,我們使用跑馬燈 這個(gè)入門(mén)實(shí)驗(yàn)來(lái)向大家介紹 Vivado IDE 的 IP Integrator 環(huán)境,并在 Zedboard 上實(shí)現(xiàn)這個(gè)簡(jiǎn)單的 Zynq 嵌 入式系統(tǒng)。之后,我們將會(huì)使用 SDK 創(chuàng)建一個(gè)簡(jiǎn)單的軟件應(yīng)用程序,并下載到 Zynq 的 ARM 處理器中, 對(duì)在 PL 端實(shí)現(xiàn)的硬件進(jìn)行控制。本實(shí)驗(yàn)分為三個(gè)小節(jié)來(lái)向大家進(jìn)行介紹: ? 之一節(jié)我們將使用 Vivado IDE 創(chuàng)建一個(gè)工程。 ? 在之一節(jié)的基礎(chǔ)上,第二節(jié)我們將繼續(xù)構(gòu)建一個(gè) Zynq 嵌入式處理系統(tǒng),并將完成后的硬件導(dǎo)入 到 SDK 中進(jìn)行軟件設(shè)計(jì)。 ? 最后一節(jié)我們將使用 SDK 編寫(xiě) ARM 測(cè)試應(yīng)用程序, 并下載到 ZedBoard 上進(jìn)行調(diào)試。 實(shí)驗(yàn)環(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 來(lái)啟動(dòng) Vivado. 2) 當(dāng) Vivado 啟動(dòng)后,可以看到圖 9-1 的 Getting Started 頁(yè)面。
圖 9- 1 Vivado 開(kāi)始界面
3) 選擇 Create New Project 選項(xiàng),圖 9-2 所示的 New Project 向?qū)?huì)打開(kāi),點(diǎn)擊 Next。
圖 9- 2 New Project 對(duì)話框 4) 在 Project Name 對(duì)話框中早賣(mài),輸入 first_zynq_design 作為 Project name, 選擇 C:/XUP/Zed 作為 Project location,確保 Create project subdirectory 被勾選上,如圖 9-3,點(diǎn)擊 Next。
圖 9- 3 Project Name 對(duì)話框 5) 在 Project Type 對(duì)話框中,選擇 RTL Project,確保 Do not specify sources at this time 選項(xiàng)沒(méi)有 被勾選,如圖 9-4,點(diǎn)擊 Next。
圖 9- 4 Project Type 對(duì)話框 6) 在 Add Source 對(duì)話框中, 選擇 Verilog 作為目標(biāo)語(yǔ)言,如果你拍睜李對(duì) VHDL 熟悉的話, 你也可以 選擇 VHDL,如果這里你忘記了選擇,在工程創(chuàng)建完成后,也可以在工程設(shè)置中選擇你熟悉的 HDL 語(yǔ)言。如果你已經(jīng)有了源文件,在這里就可以選擇 Add file 或者 Add directory 進(jìn)行添加, 由于我們沒(méi)有任何的源文件, 所以這里我們直接點(diǎn)擊 Next 即可,如圖 9-5。
圖 9- 5 添加源文件 7) 在 Add Existing IP 對(duì)話框中,點(diǎn)擊 Next。 8) 在 Add Constraints 對(duì)話框中,點(diǎn)擊 Next。 9) 在 Default Part 對(duì)襲遲話框中,在 Specify 框中選擇 Boards 選項(xiàng),在下面的 Board 列表中選擇 ZedBoard Zynq Evaluation and Development Kit,點(diǎn)擊 Next,如圖 9-6。
圖 9- 6 芯片選擇 10) 在 New Project Summary 對(duì)話框中,點(diǎn)解 Finish 完成工程創(chuàng)建,至此,我們已經(jīng)使用 Vivado 創(chuàng)建了一個(gè) Zynq 設(shè)計(jì)的工程框架,圖 9-7 為 Vivado 的工程界面,在第四章我們已經(jīng)對(duì)該界面 進(jìn)行過(guò)介紹,如果還不熟悉的讀者再回到前面復(fù)習(xí)一下。下面我將使用 Flow Navigator 的 IP Integrator 功能完成第二節(jié)的嵌入式系統(tǒng)設(shè)計(jì)。
圖 9- 7 Vivado 工程界面
9.1.2 在 Vivado 中創(chuàng)建 Zynq 嵌入式系統(tǒng) 這一節(jié)我們將創(chuàng)建一個(gè)簡(jiǎn)單的 Zynq 嵌入式系統(tǒng),該系統(tǒng)使用 Zynq PL 部分實(shí)現(xiàn)一個(gè)通用 I/O 控制 器 (GPIO),控制器同 ZedBoard 上的 8 個(gè) LED 相連接,并且通過(guò) AXI 總線連接到 PS 端,這樣我們就可 以通過(guò)將要在第三小節(jié)中實(shí)現(xiàn)的 ARM 應(yīng)用程序來(lái)對(duì) LED 進(jìn)行控制。系統(tǒng)結(jié)構(gòu)圖如圖 9-8 所示。
linux配置zynq中斷使用庫(kù)的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于linux配置zynq中斷使用庫(kù),使用Linux庫(kù)配置Zynq中斷:簡(jiǎn)便的方法,如何學(xué)習(xí)zynq以太網(wǎng)控制器及協(xié)議棧的信息別忘了在本站進(jìn)行查找喔。
創(chuàng)新互聯(lián)成都網(wǎng)站建設(shè)公司提供專業(yè)的建站服務(wù),為您量身定制,歡迎來(lái)電(028-86922220)為您打造專屬于企業(yè)本身的網(wǎng)絡(luò)品牌形象。
成都創(chuàng)新互聯(lián)品牌官網(wǎng)提供專業(yè)的網(wǎng)站建設(shè)、設(shè)計(jì)、制作等服務(wù),是一家以網(wǎng)站建設(shè)為主要業(yè)務(wù)的公司,在網(wǎng)站建設(shè)、設(shè)計(jì)和制作領(lǐng)域具有豐富的經(jīng)驗(yàn)。
分享名稱:使用Linux庫(kù)配置Zynq中斷:簡(jiǎn)便的方法(linux配置zynq中斷使用庫(kù))
標(biāo)題路徑:http://m.fisionsoft.com.cn/article/djohoii.html


咨詢
建站咨詢
