こちらの記事を参考に、PetalinuxにAXI UART Liteを追加してみます。
Zedboard-PetaLinux2020.2 UARTLITE使用手順
いくつかハマりどころがあったので、備忘録。
まずは、ZynqとAXI UART Liteだけの簡単なハードウェアを作成します。
ここで重要なのは、PLからPSへのinterruptを忘れないこと。
![](https://blogimg.goo.ne.jp/user_image/33/db/9e64e02e21fcc3723dab30ff3083f310.png)
TXとRXは、Pmodのピンにアサインします。
![](https://blogimg.goo.ne.jp/user_image/0e/0a/36daf03334301a5de33b12ce142146a4.png)
![](https://blogimg.goo.ne.jp/user_image/7a/ef/61c82418731c16e47f9a0e7b2afd4bf7.png)
後は、いつも通りにxsaファイルを生成します。
Petalinuxのconfigurationで、axi_uartlite_0が追加されていることを確認します。
![](https://blogimg.goo.ne.jp/user_image/63/5b/cd7eda391a6cf0882f32905cc7671613.png)
![](https://blogimg.goo.ne.jp/user_image/0d/95/47fca98de51f71e4b1b66032bdb40994.png)
![](https://blogimg.goo.ne.jp/user_image/28/77/7c5c001c5feee6ab6f29e2f620b8c344.png)
次に、petalinux-config -c kernelで、カーネルの設定を変更します。
![](https://blogimg.goo.ne.jp/user_image/72/bc/d7efae5efc0ae8ddcff5e19937045d97.png)
![](https://blogimg.goo.ne.jp/user_image/4e/47/a17a586a7e3cc29a81554c9f5dd0f349.png)
![](https://blogimg.goo.ne.jp/user_image/54/46/f909b57fbc90401ab1d42801a5be914d.png)
ここで、Xilinx uartlite serial port supportをenableするだけでなく、Maximum number of uartlite serial portsの値も適切に設定します。
今回はPSのUARTだけではなく、AXI UART Liteが追加されるため、この値を2とします。
Xilinx Wiki: Uartlite Driver Kernel Configuration
![](https://blogimg.goo.ne.jp/user_image/30/c4/2a4c1999a5f25337811d0cdad917dd88.png)
さらに、system-user.dtsiでデバイスツリーにstatus = "okay"を追加し、axi_uartlite_0を有効にします。
![](https://blogimg.goo.ne.jp/user_image/3c/3a/e17d1afb7adb23dd3e87abaa20b619a9.png)
これで準備が整いました。Petalinuxをビルドし、ブートイメージを生成したら、起動を確認します。
![](https://blogimg.goo.ne.jp/user_image/7e/8f/57d93b8ac5cdec7ec899ad530092a0b6.png)
axi_uartlite_0に対応したttyUL1が追加されています。
P.S. PmodにUSBシリアル変換のアダプタを接続し、ttyUL1の出力を受信してみました。
![](https://blogimg.goo.ne.jp/user_image/76/88/8d3a533b0fcd9c312a74bd94acf62fc4.png)
![](https://blogimg.goo.ne.jp/user_image/43/82/165833982c702b7a99fc752f6b639fa6.png)
問題なく動作しているようです。
Zedboard-PetaLinux2020.2 UARTLITE使用手順
いくつかハマりどころがあったので、備忘録。
まずは、ZynqとAXI UART Liteだけの簡単なハードウェアを作成します。
ここで重要なのは、PLからPSへのinterruptを忘れないこと。
![](https://blogimg.goo.ne.jp/user_image/33/db/9e64e02e21fcc3723dab30ff3083f310.png)
TXとRXは、Pmodのピンにアサインします。
![](https://blogimg.goo.ne.jp/user_image/0e/0a/36daf03334301a5de33b12ce142146a4.png)
![](https://blogimg.goo.ne.jp/user_image/7a/ef/61c82418731c16e47f9a0e7b2afd4bf7.png)
後は、いつも通りにxsaファイルを生成します。
Petalinuxのconfigurationで、axi_uartlite_0が追加されていることを確認します。
![](https://blogimg.goo.ne.jp/user_image/63/5b/cd7eda391a6cf0882f32905cc7671613.png)
![](https://blogimg.goo.ne.jp/user_image/0d/95/47fca98de51f71e4b1b66032bdb40994.png)
![](https://blogimg.goo.ne.jp/user_image/28/77/7c5c001c5feee6ab6f29e2f620b8c344.png)
次に、petalinux-config -c kernelで、カーネルの設定を変更します。
![](https://blogimg.goo.ne.jp/user_image/72/bc/d7efae5efc0ae8ddcff5e19937045d97.png)
![](https://blogimg.goo.ne.jp/user_image/4e/47/a17a586a7e3cc29a81554c9f5dd0f349.png)
![](https://blogimg.goo.ne.jp/user_image/54/46/f909b57fbc90401ab1d42801a5be914d.png)
ここで、Xilinx uartlite serial port supportをenableするだけでなく、Maximum number of uartlite serial portsの値も適切に設定します。
今回はPSのUARTだけではなく、AXI UART Liteが追加されるため、この値を2とします。
Xilinx Wiki: Uartlite Driver Kernel Configuration
![](https://blogimg.goo.ne.jp/user_image/30/c4/2a4c1999a5f25337811d0cdad917dd88.png)
さらに、system-user.dtsiでデバイスツリーにstatus = "okay"を追加し、axi_uartlite_0を有効にします。
![](https://blogimg.goo.ne.jp/user_image/3c/3a/e17d1afb7adb23dd3e87abaa20b619a9.png)
これで準備が整いました。Petalinuxをビルドし、ブートイメージを生成したら、起動を確認します。
![](https://blogimg.goo.ne.jp/user_image/7e/8f/57d93b8ac5cdec7ec899ad530092a0b6.png)
axi_uartlite_0に対応したttyUL1が追加されています。
P.S. PmodにUSBシリアル変換のアダプタを接続し、ttyUL1の出力を受信してみました。
![](https://blogimg.goo.ne.jp/user_image/76/88/8d3a533b0fcd9c312a74bd94acf62fc4.png)
![](https://blogimg.goo.ne.jp/user_image/43/82/165833982c702b7a99fc752f6b639fa6.png)
問題なく動作しているようです。
※コメント投稿者のブログIDはブログ作成者のみに通知されます