はじめに
Google Tensor G2 の Edge TPU のデバイスドライバからわかったこと!(その5)
debug driver
Google Tensor G1 と G2 の debug 用 コードは、ここにあります。
- gs101-itmon.c
- gs201-itmon.c
この2つの内容の違いは、gs201-itmon.c に、AUR0/AUR1 というキーワードがあるということ。この AUR0/AUR1 は、GXP (DSP) に関係するっぽい。つまり、DSP の codename の Aurora から来ていると。
gs201-gxp.dtsi
gs201-gxp.dtsi に下記のようなエントリがあります。
reg-names = "aur", "mailbox0", "mailbox1", "mailbox2", "mailbox3", "ssmt_idma", "ssmt_inst_data"; interrupts = <GIC_SPI IRQ_MAILBOX_AUR02AP_ALIVE IRQ_TYPE_LEVEL_HIGH GIC_SPI IRQ_MAILBOX_AUR12AP_ALIVE IRQ_TYPE_LEVEL_HIGH GIC_SPI IRQ_MAILBOX_AUR22AP_ALIVE IRQ_TYPE_LEVEL_HIGH GIC_SPI IRQ_MAILBOX_AUR32AP_ALIVE IRQ_TYPE_LEVEL_HIGH GIC_SPI IRQ_AUR_WDOG_CPU_IRQ_AUR IRQ_TYPE_EDGE_RISING>; tpu-device = <&edgetpu>; gsa-device = <&gsa>; gxp-tpu-mbx-offset = <0x0 0xC0000>; iommus = <&sysmmu_aur_idma>, <&sysmmu_aur_inst_data>; samsung,iommu-group = <&iommu_group_aur>;
reg-names に "aur" があり、iommus に、sysmmu_aur_idma と sysmmu_aur_inst_data の2つがあるので、DMAが2つあることを意味します。割り込み関連が GIC_SPI IRQ_AUR_WDOG_CPU_IRQ_AUR IRQ_TYPE_EDGE_RISINGになります。
また、
にありました
#define EDGETPU_NUM_EXT_DSP_MAILBOXES 4
の 4つの mailbox に関するものが、
"mailbox0", "mailbox1", "mailbox2", "mailbox3",
がレジスタ、
interrupts = <GIC_SPI IRQ_MAILBOX_AUR02AP_ALIVE IRQ_TYPE_LEVEL_HIGH GIC_SPI IRQ_MAILBOX_AUR12AP_ALIVE IRQ_TYPE_LEVEL_HIGH GIC_SPI IRQ_MAILBOX_AUR22AP_ALIVE IRQ_TYPE_LEVEL_HIGH GIC_SPI IRQ_MAILBOX_AUR32AP_ALIVE IRQ_TYPE_LEVEL_HIGH
が割り込みになるようです。
おわりに
AUR0/AUR1 は、DSP (codenameがAurora) だということがわかりました。