有時(shí)我們需要為官方 IP 或者自己創(chuàng)建的 IP 生成 kernel module,然后在 linux kernel space 里使用 kernel module 來(lái)控制這個(gè) IP。如果要使用 IP 中斷,我們需要在 kernel module 代碼里獲取設(shè)備中斷并建立中斷服務(wù)程序。
在老版本 petalinux,我們可以在 kernelmodule 里直接指定 IP 中斷的實(shí)際物理中斷號(hào),但是新版本內(nèi)核里我們需要在 kernel module 里獲取 IP 的虛擬中斷號(hào)。可以在 kernelmodule 代碼里使用 request_irq 函數(shù)來(lái)獲取中斷并指定中斷服務(wù)程序。
附件是為 axigpio IP 寫(xiě)的一個(gè) kernel module,可以作為參考例子:
首先需要生成一個(gè)基于 MPSoC 芯片的 vivado 工程,
在 block design 里加入 MPSoC processing core 和 axi gpiocore,
連接 axi gpio 的中斷信號(hào)到 MPSoC processing core 的 PL-》PS 中斷端口
最后生成 bitstream 導(dǎo)出 hdf 或者 xsa,生成 petalinux 工程,
在 petalinux 工程里用下面命令生成并使能名字叫做 gpioirq 的 kernel module,
Petalinux-create-t modules --name gpioirq --enable
然后在petalinux工程目錄里會(huì)生成這樣一個(gè)路徑 project-spec/meta-user/recipes-modules/gpioirq/files,把里面的 gpioirq.c 用附件里的同名文件覆蓋掉。
用附件里的 system-user.dtsi 把 project-spec/meta-user/recipes-bsp/device-tree/files 里的同名文件覆蓋掉,這是因?yàn)槟J(rèn)生成的 device tree 里 axigpio core 的 driver 是 xilinx driver,我們需要把它替換為我們生成的 kernel module 的 drivername,需要注意 system-user.dtsi 里面的 axigpio core 的名字需要和 petalinux 工程生成的 devicetree 里的 axi gpio core 的名字一樣。然后就可以運(yùn)行 petalinux-build 和 petalinux-package 命令來(lái)生成 boot image,然后上板啟動(dòng)。Linux boot 之后可以通過(guò) cat/proc/interrupts 命令看到 qgioirq 中斷已經(jīng)建立起來(lái)了,按一下對(duì)應(yīng) axigpio 的板上 IO 按鈕可以看到中斷服務(wù)程序的打印信息。


原文標(biāo)題:開(kāi)發(fā)者分享 | 如何在 IP 的 kernel module 里設(shè)置并使用 IP interrupt
文章出處:【微信公眾號(hào):XILINX技術(shù)社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
責(zé)任編輯:haq
-
芯片
+關(guān)注
關(guān)注
463文章
54010瀏覽量
466071 -
IP
+關(guān)注
關(guān)注
5文章
1863瀏覽量
155844
原文標(biāo)題:開(kāi)發(fā)者分享 | 如何在 IP 的 kernel module 里設(shè)置并使用 IP interrupt
文章出處:【微信號(hào):gh_2d1c7e2d540e,微信公眾號(hào):XILINX開(kāi)發(fā)者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
網(wǎng)段隔離器解決IP沖突問(wèn)題,實(shí)現(xiàn)跨網(wǎng)段通信
華為助力南非MTN在IP網(wǎng)絡(luò)領(lǐng)域?qū)崿F(xiàn)突破
Vivado浮點(diǎn)數(shù)IP核的一些設(shè)置注意點(diǎn)
宏集分享 | 工業(yè) HMI 選型指南:一文讀懂 IP 防護(hù)等級(jí)的真正意義
請(qǐng)問(wèn)InConnect 是否可以用實(shí)際 IP 而不是用虛擬 IP 映射實(shí)際IP ?
CNC的IP地址相同沖突如何解決?
Altera FPGA 的PIO IP當(dāng)中bidir和inout選項(xiàng)的區(qū)別
開(kāi)疆智能Ethernet/IP轉(zhuǎn)Modbus網(wǎng)關(guān)連接西門(mén)子BW500積算儀配置案例
開(kāi)疆智能Ethernet/IP轉(zhuǎn)Modbus網(wǎng)關(guān)連接MAG8000電池流量計(jì)配置案例
樹(shù)莓派“定居”完全指南:一鍵設(shè)置靜態(tài)IP,穩(wěn)定又高效!
IP6825+IP5306充電寶:重新定義便攜電源的無(wú)線(xiàn)充電體驗(yàn)
內(nèi)網(wǎng)穿透和公網(wǎng)ip什么區(qū)別
怎么在IP的kernel module里設(shè)置IP interrupt?
評(píng)論