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

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取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

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

    關注

    112

    文章

    16394

    瀏覽量

    178481
  • soc
    soc
    +關注

    關注

    38

    文章

    4177

    瀏覽量

    218464

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

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

收藏 人收藏

    評論

    相關推薦

    Zynq UltraScale+ MPSoC數據手冊

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

    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 ?436次閱讀
    AMD/Xilinx Zynq? UltraScale+ ? <b class='flag-5'>MPSoC</b> ZCU102 評估套件

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

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

    在米爾電子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 ?1056次閱讀

    freertos中斷優先級在哪設置

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

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

    EXTI(中斷/事件控制器)包含多個相互獨立的邊沿檢測電路并且能夠向處理器內核產生中斷請求或喚醒事件。 EXTI 有三種觸發類型:上升沿觸發、下降沿觸發和任意沿觸發。 EXTI中的每一個邊沿檢測電路都可以獨立配置和屏蔽。
    的頭像 發表于 08-13 11:20 ?515次閱讀
    【GD32 MCU 入門教程】GD32 MCU 常見外設<b class='flag-5'>介紹</b>(4)EXTI <b class='flag-5'>中斷</b><b class='flag-5'>介紹</b>

    can總線中斷狀態什么意思呢?

    過程中的中斷處理機制。以下是關于CAN總線中斷狀態的詳細介紹。 CAN總線概述 1.1 CAN總線定義 CAN總線是一種基于時間分割的多主通
    的頭像 發表于 06-16 10:21 ?1786次閱讀

    RISC-V的中斷處理 中斷操作三個步驟

    中斷操作三個步驟: 1、中斷初始化 2、trap處理 3、用戶中斷處理
    的頭像 發表于 05-20 16:38 ?1279次閱讀

    如何停止或取消單片機的中斷處理

    處理器中的NVIC能夠處理多個可屏蔽中斷通道和可編程優先級,中斷輸入請求可以是電平觸發,也可以是最小的一個時鐘周期的脈沖信號。
    發表于 04-15 11:05 ?1440次閱讀
    如何停止或取消單片機的<b class='flag-5'>中斷</b><b class='flag-5'>處理</b>?

    IMC300A中斷系統中,不同的中斷源優先級如果設置為相同,請問中斷時發生時如何處理

    IMC300A的中斷系統中,不同的中斷源優先級如果設置為相同,請問中斷時發生時如何處理? 在 “口的TBCTR和PASRBCTR 存檔器中,DPTR和LIMIT字段有何作業,能不能有具
    發表于 01-29 06:31
    主站蜘蛛池模板: 老女老肥熟国产在线视频| 色婷婷国产精品视频一区二区三区 | 16女下面流水不遮图免费观看| 老阿姨才是最有味的一区二区| 55夜色66夜亚洲精品播放| 人成午夜免费视频| 国产人妻久久久精品麻豆| 中国比基尼美女| 入禽太深在线观看免费高清| 黑人强伦姧人妻日韩那庞大的 | 久草草在线视视频| a亚洲在线观看不卡高清| 视频一区国产在线二区| 九九在线免费视频| 边做边爱BD免费看片| 亚洲人成无码久久久AAA片 | 十分钟免费视频大全在线| 精品一二三区久久AAA片| vagaa哇嘎黄短片| 亚洲人成电影网站色2017| 亲胸吻胸添奶头GIF动态图免费| 国产午夜精品鲁丝片| 99爱免费视频| 亚洲精品色播一区二区 | 空姐厕所啪啪啪| 国产精品色无码AV在线观看| 中文字幕亚洲视频| 挺进老师的紧窄小肉六电影完整版| 久久久无码精品无码国产人妻丝瓜| 高傲教师麻麻被同学调教123| 一本之道加勒比在线观看| 视频在线免费观看| 欧美牲交A欧美牲交VDO| 黄色三级网站在线观看| 俄罗斯摘花| 99精品在线观看| 一级毛片皇帝 宫女| 无遮挡午夜男女XX00动态| 欧美日韩亚洲第一区在线| 久久强奷乱码老熟女| 国产亚洲精品第一区香蕉|