fmcomms2_zedに追加したAXI UART Liteがpetalinuxでstallするのは、
割り込みが正常に動作していないように見えるので、device treeをチェックしてみます。
まず、petalinux-buildで/images/linux/system.dtbに生成されたバイナリのdevice treeを、
device tree compiler(dtc)でdecompileして、テキストファイルに変換します。
https://siliconbladeconsultants.com/2022/05/26/decompiling-the-linux-device-tree-dtb/
![](https://blogimg.goo.ne.jp/user_image/0f/88/a06ce573ef79f7c5dafdfe0b4264c806.png)
テキストファイルに変換されたdevice treeをチェックしてみると、
AXI UART Liteがamba_plのserial@42c0000として追加されています。
![](https://blogimg.goo.ne.jp/user_image/5b/36/98323aa9d8feca3e6737847dba8f1374.png)
interruptsのパラメータを見てみると<0x0 0x22 0x1>となっています。
それぞれの値が何を意味しているのか調べてみると、最初のパラメータはshared peripheral interruptかどうか、
2番目はinterruptのIDから32を引いた値、最後は割り込みのタイプで0x1はrising edgeです。
http://xillybus.com/tutorials/device-tree-zynq-4
ここで気になるのが、2番目の値です。0x22(34)に32を足すと、interrputのIDは66になります。
ZynqのPLからPSへの16ビットのinterrupt portであるIRQ_F2PのIDは[91:84], [68:61]となっており、
MSBが91になります。
![](https://blogimg.goo.ne.jp/user_image/06/f1/4ee9b724cc72dde00314afc79458514e.png)
fmcomms2_zedに追加したAXI UART Liteは、bit 10のinterrupt sourceに接続したので、IDは86のはずです。
そうであれば、device treeのinterruptsの2番目の値は、86-32=54(0x36)になるべきでは?
ちなみに、オリジナルのfmcomms2_zedのAXIデバイスは、interrupt IDの[91:87]に接続されています。
Petalinuxが自動生成してくれるdevice treeのバグでしょうか?
ユーザ側でオーバーライトするには、どうすればいいのだろう。
割り込みが正常に動作していないように見えるので、device treeをチェックしてみます。
まず、petalinux-buildで/images/linux/system.dtbに生成されたバイナリのdevice treeを、
device tree compiler(dtc)でdecompileして、テキストファイルに変換します。
https://siliconbladeconsultants.com/2022/05/26/decompiling-the-linux-device-tree-dtb/
![](https://blogimg.goo.ne.jp/user_image/0f/88/a06ce573ef79f7c5dafdfe0b4264c806.png)
テキストファイルに変換されたdevice treeをチェックしてみると、
AXI UART Liteがamba_plのserial@42c0000として追加されています。
![](https://blogimg.goo.ne.jp/user_image/5b/36/98323aa9d8feca3e6737847dba8f1374.png)
interruptsのパラメータを見てみると<0x0 0x22 0x1>となっています。
それぞれの値が何を意味しているのか調べてみると、最初のパラメータはshared peripheral interruptかどうか、
2番目はinterruptのIDから32を引いた値、最後は割り込みのタイプで0x1はrising edgeです。
http://xillybus.com/tutorials/device-tree-zynq-4
ここで気になるのが、2番目の値です。0x22(34)に32を足すと、interrputのIDは66になります。
ZynqのPLからPSへの16ビットのinterrupt portであるIRQ_F2PのIDは[91:84], [68:61]となっており、
MSBが91になります。
![](https://blogimg.goo.ne.jp/user_image/06/f1/4ee9b724cc72dde00314afc79458514e.png)
fmcomms2_zedに追加したAXI UART Liteは、bit 10のinterrupt sourceに接続したので、IDは86のはずです。
そうであれば、device treeのinterruptsの2番目の値は、86-32=54(0x36)になるべきでは?
ちなみに、オリジナルのfmcomms2_zedのAXIデバイスは、interrupt IDの[91:87]に接続されています。
Petalinuxが自動生成してくれるdevice treeのバグでしょうか?
ユーザ側でオーバーライトするには、どうすればいいのだろう。
※コメント投稿者のブログIDはブログ作成者のみに通知されます