色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

關于MPSoC的中斷處理介紹

YCqV_FPGA_EETre ? 來源:賽靈思中文社區論壇 ? 作者:付漢杰 ? 2021-05-07 15:34 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

目錄1. MPSoC的中斷處理介紹

2. 擴展PL中斷

3. 擴展AXI Intc中斷

3.1. AXI Intc PL連接

3.2. AXI Intc Device Tree

3.3. AXI Intc外設的Device Tree

4. 擴展MIO中斷

4.1. GPIO中斷控制器

4.2. 外設使用GPIO中斷控制器5. 檢查Linux中斷信息

01

MPSoC的中斷處理介紹

MPSoC是帶ARM處理器FPGA(PL)的SoC,包含4核A53及其常用外部模塊(PS)。A53(PS)使用Arm GIC-400,屬于GICv2架構。如果想了解GIC-400的具體細節,請參考文檔APU GIC: CoreLink GIC-400 Generic Interrupt Controller, DDI 0471B, r0p1。

MPSoC的A53(PS)的中斷細節,在Xilinx的UG1085的Table 13‐1: System Interrupts部分做了詳細介紹。

需要注意的是,UG1085的Table 13‐1描述的是芯片的內部連線,是硬件中斷號,和Linux Kernel使用的軟件中斷號(邏輯中斷號)有區別。有的SOC只有一個中斷控制器,有的SOC有多個串聯/并聯的中斷控制器。Linux Kernel為了各種處理復雜的中斷控制器設計,并給中斷提供統一的API,在內部使用統一編址的的軟件中斷號。同時,GIC的Linux Kernel驅動內部有一個表,用于轉換硬件中斷號和軟件中斷號。這樣的好處是,即使不同SoC系統里有不同的中斷控制器結構,驅動程序也可以忽略這些細節,使用統一的API,比如platform_get_irq,從Device Tree里獲取中斷號,并向Linux Kernel注冊驅動程序的中斷處理程序。另外,設備的Device Tree里的中斷號是局部的,在它所屬的中斷控制器里保持唯一即可。Linux Kernel使用的軟件中斷號,是整個Linux Kernel系統的,需要在Linux Kernel范圍內保持唯一。

更多信息可以參考Linux Kernel代碼,以及Linux kernel的中斷子系統之(二):IRQ Domain介紹。

MPSoC的Device Tree的軟件中斷號,比UG1085的Table 13‐1提供的硬件中斷號小32。這是因為A53內部的中斷號0-31是私有中斷。

以GEM0為例,UG1085的Table 13‐1提供的硬件中斷號是89,Device Tree里的設備號是0x39(57),驅動程序里使用platform_get_irq(pdev, 0)獲取軟件中斷號。

VCU TRD 2020.2基于zcu106_llp2_xv20的PetaLinux工程里的GEM0的中斷信息:

ethernet@ff0b0000 {

compatible = “cdns,zynqmp-gemcdns,gem”;

interrupt-parent = 《0x04》;

interrupts = 《0x00 0x39 0x04 0x00 0x39 0x04》;

};

UG1085的Table 13‐1里GEM0的硬件中斷號

UG1085的Table 35‐6: PS-PL Interrupts Summary,使用的是Device Tree里的軟件中斷號。

需要更多信息,可以參考MPSoC Device tree interrupt number for PL-PS interrupt, Zynq-7000 mapping irq number into device tree value。

02

擴展PL中斷

在FPGA(PL)部分,可以的擴展很多外部設備,比如串口、I2CCan等。A53(PS)為PL的外部設備預留了16個中斷,相關描述如下。

PS-PL Interrupts

The interrupts from the processing system I/O peripherals (IOP) are routed to the PL. In the

other direction, the PL can asynchronously assert 16 interrupts to the PS. These interrupts

are assigned a priority level routed to interrupt controllers which aggregate and route them

to appropriate processor. Additionally, FIQ/IRQ interrupts are available which are routed

directly to the private peripheral interrupt unit of the interrupt controller. Table 35-6

summarizes the interrupts.

PL到A53(PS)的外部設備預留了16個中斷,在Table 13‐1有如下表述。

VCU TRD 2020.2設計里,使用了很多PL中斷。以Video Phy為例,在工程zcu106_llp2_xv20里,它連接到了PL中斷的第3位(從0開始計數),對應的硬件中斷號是124,減去32后是92(0x5c)。

在以zcu106_llp2_xv20為硬件工程編譯的PetaLinux工程里,Video Phy的中斷信息如下,確實是0x5c。

vid_phy_controller@a0130000 {

compatible = “xlnx,vid-phy-controller-2.2xlnx,vid-phy-controller-2.1”;

interrupt-names = “irq”;

interrupt-parent = 《0x04》;

interrupts = 《0x00 0x5c 0x04》;

};

03

擴展AXI Intc中斷

有時候,PL-PS的中斷還不夠用。這時可以使用Xilinx的axi_intc(AXI Interrupt controller)做擴展。Xilinx Wiki網站上的文章Cascade Interrupt Controller support in DTG有詳細描述。

總結起來,有下面三步。

3.1. AXI Intc PL連接

在PL設計里添加axi_intc(AXI Interrupt controller),把axi_intc的中斷輸出連接到GIC的PL中斷輸入,把其它外設的中斷輸出連接到axi_intc的中斷輸入。

3.2. AXI Intc Device Tree

然后在Device Tree里,聲明axi_intc的輸出在GIC的中斷號。

axi_interrupt-controller {

interrupt-parent = “gic”

interrupts = 《 0 89 1》;

}

3.3. AXI Intc外設的Device Tree

外設的Device Tree里,需要聲明interrupt-parent是axi_intc,并聲明它在axi_intc內部的中斷號。interrupt-parent后面的字符串,是Device Tree里axi_intc里的標號。如果有多個axi_intc,每個axi_intc的標號(Label)不一樣。每個外設的Device Tree里,需要指定自己對應的axi_intc的標號(Label)。

axi_gpio {

interrupt-parent = “axi_intc”;

interrupts = 《0 1》;

}

axi_intc的文檔,也可以參考 Xilinx Interrupt Controller 。

04

擴展MIO中斷

下面整合之前的文章,通過MIO接入外設中斷。

Zynq-7000和MPSoC有很多MIO管腳。如果外設有中斷,也可以通過MIO連接中斷。這時候,MIO作為GPIO控制器,加載GPIO驅動。下面的描述中,GPIO就是MIO對應的GPIO設備。

4.1. GPIO中斷控制器

按下列模式,在GPIO的設備樹里聲明為中斷控制器

&gpio0 {

#interrupt-cells = 《2》;

interrupt-controller;

};

GPIO的中斷說明,在Linux的文件

Documentation/devicetree/bindings/gpio/gpio-zynq.txt里。主要內容如下:

- interrupt-controller : Marks the device node as an interrupt controller.

- #interrupt-cells : Should be 2. The first cell is the GPIO number.

The second cell bits[3:0] is used to specify trigger type and level flags:

1 = low-to-high edge triggered.

2 = high-to-low edge triggered.

4 = active high level-sensitive.

8 = active low level-sensitive.

4.2. 外設使用GPIO中斷控制器

外設的設備樹里,添加下列行,聲明gpio0為自己的中斷控制器,并聲明對應的MIO引腳和中斷內心。

touchscreen@0 {

interrupt-parent = 《&gpio0》;

interrupts = 《52 2》; /* MIO 52, falling edge */

};

05

檢查Linux中斷信息

Linux在/proc/interrupts文件里,提供了系統的中斷信息。使用命令“cat /proc/interrupts”,可以顯示軟件中斷號、中斷在各CPU發生的次數、中斷所屬中斷控制器名稱、硬件中斷號,驅動程序名稱。

讀“/proc/interrupts”的內容時,會調用kernelirqProc.c中的函數int show_interrupts(struct seq_file *p, void *v)。

下面是一個例子。

root@zcu106_vcu_llp2_nv16:~# cat /proc/interrupts

CPU0 CPU1 CPU2 CPU3

3: 18945 9421 13324 23628 GICv2 30 Level arch_timer

6: 0 0 0 0 GICv2 67 Level zynqmp_ipi

12: 0 0 0 0 GICv2 155 Level axi-pmon, axi-pmon

13: 0 0 0 0 GICv2 156 Level zynqmp-dma

14: 0 0 0 0 GICv2 157 Level zynqmp-dma

15: 0 0 0 0 GICv2 158 Level zynqmp-dma

16: 0 0 0 0 GICv2 159 Level zynqmp-dma

17: 0 0 0 0 GICv2 160 Level zynqmp-dma

18: 0 0 0 0 GICv2 161 Level zynqmp-dma

19: 0 0 0 0 GICv2 162 Level zynqmp-dma

20: 0 0 0 0 GICv2 163 Level zynqmp-dma

21: 0 0 0 0 GICv2 164 Level Mali_GP_MMU, Mali_GP, Mali_PP0_MMU, Mali_PP0, Mali_PP1_MMU, Mali_PP1

22: 0 0 0 0 GICv2 109 Level zynqmp-dma

23: 0 0 0 0 GICv2 110 Level zynqmp-dma

24: 0 0 0 0 GICv2 111 Level zynqmp-dma

25: 0 0 0 0 GICv2 112 Level zynqmp-dma

26: 0 0 0 0 GICv2 113 Level zynqmp-dma

27: 0 0 0 0 GICv2 114 Level zynqmp-dma

28: 0 0 0 0 GICv2 115 Level zynqmp-dma

29: 0 0 0 0 GICv2 116 Level zynqmp-dma

31: 144 0 0 0 GICv2 95 Level eth0, eth0

33: 121 0 0 0 GICv2 49 Level cdns-i2c

34: 140 0 0 0 GICv2 50 Level cdns-i2c

35: 0 0 0 0 GICv2 42 Level ff960000.memory-controller

36: 0 0 0 0 GICv2 57 Level axi-pmon, axi-pmon

37: 43 0 0 0 GICv2 47 Level ff0f0000.spi

38: 0 0 0 0 GICv2 58 Level ffa60000.rtc

39: 0 0 0 0 GICv2 59 Level ffa60000.rtc

40: 0 0 0 0 GICv2 165 Level ahci-ceva[fd0c0000.ahci]

41: 232 0 0 0 GICv2 81 Level mmc0

42: 133 0 0 0 GICv2 53 Level xuartps

44: 0 0 0 0 GICv2 84 Edge ff150000.watchdog

45: 0 0 0 0 GICv2 88 Level ams-irq

46: 12 0 0 0 GICv2 154 Level fd4c0000.dma

47: 0 0 0 0 GICv2 151 Level fd4a0000.zynqmp-display

48: 0 0 0 0 GICv2 122 Level xilinx_framebuffer

49: 0 0 0 0 GICv2 141 Level xilinx_framebuffer

50: 0 0 0 0 GICv2 142 Level xilinx_framebuffer

51: 0 0 0 0 GICv2 143 Level xilinx_framebuffer

52: 0 0 0 0 GICv2 123 Level xilinx-hdmi-rx

53: 0 0 0 0 GICv2 121 Level xilinx_framebuffer

54: 1 0 0 42423 GICv2 125 Level xilinx-hdmitxss

55: 0 0 0 42426 GICv2 127 Level xlnx-mixer

56: 81 0 0 0 GICv2 126 Level a00d0000.i2c

57: 0 0 0 0 GICv2 139 Edge a00d1000.sync_ip

58: 4 0 0 0 GICv2 128 Level a0200000.al5e, a0220000.al5d

59: 16 0 0 0 GICv2 124 Level xilinx-vphy

60: 0 0 0 0 GICv2 97 Level xhci-hcd:usb1

IPI0: 2763 1869 2597 1312 Rescheduling interrupts

IPI1: 21 26 19 36 Function call interrupts

IPI2: 0 0 0 0 CPU stop interrupts

IPI3: 0 0 0 0 CPU stop (for crash dump) interrupts

IPI4: 0 0 0 0 Timer broadcast interrupts

IPI5: 0 0 0 0 IRQ work interrupts

IPI6: 0 0 0 0 CPU wake-up interrupts

從上面打印信息,也可以看到硬件中斷號、軟件中斷號(邏輯中斷號)不一樣。

目錄/proc/irq下面會為每個rq創建一個以irq編號為名字的子目錄。每個子目錄最重要的文件是smp_affinity。通過更改smp_affinity的值,可以更改處理中斷的CPU。比如下面缺省情況下,讀出來中斷59的smp_affinity是f,對應2進制1111,表示四個處理器都能處理中斷59。后來執行命令“echo 2 》 /proc/irq/59/smp_affinity”,把其改為2,就只有CPU-1能處理中斷59。

root@zcu106_vcu_llp2_nv16:~# ls /proc/irq/48 -l

total 0

-r--r--r-- 1 root root 0 Apr 28 06:54 affinity_hint

-r--r--r-- 1 root root 0 Apr 28 06:54 effective_affinity

-r--r--r-- 1 root root 0 Apr 28 06:54 effective_affinity_list

-r--r--r-- 1 root root 0 Apr 28 06:54 node

-rw-r--r-- 1 root root 0 Apr 28 06:25 smp_affinity

-rw-r--r-- 1 root root 0 Apr 28 06:54 smp_affinity_list

-r--r--r-- 1 root root 0 Apr 28 06:54 spurious

dr-xr-xr-x 2 root root 0 Apr 28 06:54 xilinx_framebuffer

root@zcu106_vcu_llp2_nv16:~# ls /proc/irq/59 -l

total 0

-r--r--r-- 1 root root 0 Apr 28 06:54 affinity_hint

-r--r--r-- 1 root root 0 Apr 28 06:54 effective_affinity

-r--r--r-- 1 root root 0 Apr 28 06:54 effective_affinity_list

-r--r--r-- 1 root root 0 Apr 28 06:54 node

-rw-r--r-- 1 root root 0 Apr 28 06:54 smp_affinity

-rw-r--r-- 1 root root 0 Apr 28 06:54 smp_affinity_list

-r--r--r-- 1 root root 0 Apr 28 06:54 spurious

dr-xr-xr-x 2 root root 0 Apr 28 06:54 xilinx-vphy

root@zcu106_vcu_llp2_nv16:~# cat /proc/irq/59/smp_affinity

f

root@zcu106_vcu_llp2_nv16:~# echo 2 》 /proc/irq/59/smp_affinity

root@zcu106_vcu_llp2_nv16:~# cat /proc/irq/59/smp_affinity

2

root@zcu106_vcu_llp2_nv16:~# echo 4 》 /proc/irq/59/smp_affinity

root@zcu106_vcu_llp2_nv16:~# cat /proc/irq/59/smp_affinity

4

Linux的中斷信息,可以參考問 Linux 中斷和smp_affinity, Linux 中斷和 IRQ 調節。

原文標題:【工程師分享】擴展MPSoC中斷

文章出處:【微信公眾號:FPGA開發圈】歡迎添加關注!文章轉載請注明出處。

責任編輯:haq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 控制器
    +關注

    關注

    114

    文章

    17089

    瀏覽量

    184097
  • soc
    soc
    +關注

    關注

    38

    文章

    4385

    瀏覽量

    222612

原文標題:【工程師分享】擴展MPSoC中斷

文章出處:【微信號:FPGA-EETrend,微信公眾號:FPGA開發圈】歡迎添加關注!文章轉載請注明出處。

收藏 0人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    基于AD9613與Xilinx MPSoC平臺的高速AD/DA案例分享

    本文主要介紹基于Xilinx UltraScale+MPSoC XCZU7EV的高速AD采集與高速DA輸出案例
    的頭像 發表于 06-03 14:22 ?231次閱讀
    基于AD9613與Xilinx <b class='flag-5'>MPSoC</b>平臺的高速AD/DA案例分享

    飛凌嵌入式ElfBoard ELF 1板卡-Linux系統中斷之Linux中斷介紹

    一、Linux系統中使用中斷的一般步驟(一)中斷請求(IRQ Request):驅動程序使用request_irq()函數向內核請求分配中斷資源,并注冊中斷
    發表于 03-27 10:28

    串口中斷是內部中斷還是外部中斷,串口中斷是怎么觸發的

    串口中斷通常被視為外部中斷。雖然串口控制器(如USART、UART等)可能集成在微控制器或處理器的內部,但從中斷的角度來看,串口中斷是由
    的頭像 發表于 01-29 15:03 ?1751次閱讀

    EE-134:為SHARC系列編寫C兼容匯編代碼中斷處理程序

    電子發燒友網站提供《EE-134:為SHARC系列編寫C兼容匯編代碼中斷處理程序.pdf》資料免費下載
    發表于 01-07 13:58 ?0次下載
    EE-134:為SHARC系列編寫C兼容匯編代碼<b class='flag-5'>中斷</b><b class='flag-5'>處理</b>程序

    Zynq UltraScale+ MPSoC數據手冊

    電子發燒友網站提供《Zynq UltraScale+ MPSoC數據手冊.pdf》資料免費下載
    發表于 12-30 14:37 ?2次下載

    OMAP5912多媒體處理中斷參考指南

    電子發燒友網站提供《OMAP5912多媒體處理中斷參考指南.pdf》資料免費下載
    發表于 12-17 16:25 ?0次下載
    OMAP5912多媒體<b class='flag-5'>處理</b>器<b class='flag-5'>中斷</b>參考指南

    關于中斷知識學習總結筆記

    關于中斷知識學習總結筆記》 一、中斷的核心概念 中斷是計算機運行過程中的一種重要機制,它能夠使計算機在執行主程序時,暫停當前任務去響應特定的事件或請求,
    發表于 11-23 11:23

    AMD/Xilinx Zynq? UltraScale+ ? MPSoC ZCU102 評估套件

    Zynq UltraScale+ MPSoC 器件,具有四核 Arm? Cortex-A53、雙核 Cortex-R5 實時處理器和基于 AMD/Xilinx 16nm FinFET+ 可編程邏輯
    的頭像 發表于 11-20 15:32 ?1584次閱讀
    AMD/Xilinx Zynq? UltraScale+ ? <b class='flag-5'>MPSoC</b> ZCU102 評估套件

    基于PYNQ和機器學習探索MPSOC筆記

    新版本中,不僅僅介紹MPSOC的體系結構和應用場景,更是結合當前應用最廣的PYNQ框架和機器學習應用進行分析。作為一本不可多得的免費電子英文書籍,本書既是使用Zynq MPSoC的開發人員的實用指南
    的頭像 發表于 11-16 11:32 ?686次閱讀
    基于PYNQ和機器學習探索<b class='flag-5'>MPSOC</b>筆記

    在米爾電子MPSOC實現12G SDI視頻采集H.265壓縮SGMII萬兆以太網推流

    4K UHD音視頻廣播領域的優勢 1.高性能與低功耗的結合:Zynq UltraScale+ MPSoC采用了16nm FinFET工藝,集成了多核處理器和可編程邏輯,能夠在提高性能的同時降低功耗,這對
    發表于 11-01 16:56

    單片機有哪些中斷類型

    單片機中斷是指在單片機執行程序的過程中,當外部設備或內部條件發生某個特定事件時,能夠暫停當前正在執行的程序,轉而去執行一個特定的服務程序(稱為中斷服務程序或中斷處理程序),
    的頭像 發表于 10-17 18:12 ?2386次閱讀

    在米爾電子MPSOC實現12G SDI視頻采集H.265壓縮SGMII萬兆以太網推流

    協議。 3.MPSoC與VCU架構在4K UHD音視頻廣播領域的優勢 高性能與低功耗的結合 :Zynq UltraScale+ MPSoC采用了16nm FinFET工藝,集成了多核處理器和可編程邏輯
    發表于 10-14 17:42

    ARM處理器的異常中斷響應過程

    ARM處理器的異常中斷響應是嵌入式系統設計中一個至關重要的環節,它確保了系統在面對內部或外部事件時能夠穩定、可靠地運行。
    的頭像 發表于 09-10 11:18 ?1995次閱讀

    freertos中斷優先級在哪設置

    FreeRTOS是一個流行的實時操作系統,它廣泛應用于嵌入式系統開發。在FreeRTOS中,中斷優先級是一個重要的概念,因為它決定了中斷處理的順序和響應時間。 1. 理解中斷優先級 在
    的頭像 發表于 09-02 14:17 ?1558次閱讀

    【GD32 MCU 入門教程】GD32 MCU 常見外設介紹(4)EXTI 中斷介紹

    EXTI(中斷/事件控制器)包含多個相互獨立的邊沿檢測電路并且能夠向處理器內核產生中斷請求或喚醒事件。 EXTI 有三種觸發類型:上升沿觸發、下降沿觸發和任意沿觸發。 EXTI中的每一個邊沿檢測電路都可以獨立配置和屏蔽。
    的頭像 發表于 08-13 11:20 ?1035次閱讀
    【GD32 MCU 入門教程】GD32 MCU 常見外設<b class='flag-5'>介紹</b>(4)EXTI <b class='flag-5'>中斷</b><b class='flag-5'>介紹</b>
    主站蜘蛛池模板: 高跟丝袜岳第一次 | 2018高清国产一区二区三区 | se01国产短视频在线观看 | 99麻豆精品国产人妻无码 | 欧美hdxxxx | 小莹的性荡生活 | 日本一本二本三区免费免费高清 | 亚洲AV精品乱码专区 | 北原多香子qvod | 久久亚洲AV成人无码国产漫画 | 国偷自产AV一区二区三区健身房 | 成人在线视频在线观看 | 国产白色视频在线观看w | 亚洲视频无码中字在线 | 中文字幕无码乱人伦蜜桃 | 亚洲综合无码一区二区 | 免费A级毛片无码无遮挡 | 国产在线精品亚洲观看不卡欧美 | 国产亚洲精品高清视频免费 | 俄罗斯搜索引擎Yandex推广入口 | 色婷婷我要去我去也 | 中文国产在线观看 | 高清毛片一区二区三区 | 最近免费中文字幕MV在线视频3 | 国产人妻麻豆蜜桃色精 | 欧美精品一区二区三区四区 | 草柳最新地址 | 免费看大黄高清网站视频在线 | 两个吃奶一个添下面视频 | 国产精品一区二区在线观看 | 国产在线精品国自产拍影院午夜 | 亚洲国产精品久久无套麻豆 | 亚洲国产区中文在线观看 | 受喷汁红肿抽搐磨NP双性 | 一级毛片免费视频网站 | 91麻豆国产精品91久久久 | 国产成+人+综合+亚洲不卡 | 秋霞网在线伦理免费 | 娇妻被朋友玩得呻吟在线电影 | 99久久国产极品蜜臀AV酒店 | 亚洲AV无码一区二区色情蜜芽 |

    電子發燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品