現在位置 : ホーム > PIXELA Technical Expertise > Petalinux > Petalinux コンフィグレーション

PetalinuxでWavファイルを再生する(1)
Petalinux コンフィグレーション

公開日:2023年7月31日

前回記事で設計、作成したハードウェア構成をPetalinuxに取り込んでコンフィグレーションを行います。

Petalinuxプロジェクトを作成する

下記のように空のPetalinuxプロジェクトを作成します。 ここでは、petalinux_projという名称で作成しています。

$ petalinux-create --type project --template zynq --name petalinux_proj

システムコンフィグレーション

Petalinuxプロジェクトディレクトリに移動し、Vivadoで作成したxsaファイルを指定してシステムコンフィグレーションを行います。

$ cd petalinux_proj
$ petalinux-config --get-hw-description=../design_1_wrapper.xsa

メニュー画面が開いたら、Root filesystem typeをEXT4 (SD/eMMC/SATA/USB)に設定されていなければEXT4 (SD/eMMC/SATA/USB)に設定します。

以前の記事 を参考に設定を保存してメニューを閉じてください。

Root File System

カーネルコンフィグレーション

Petalinuxカーネルのコンフィグレーションを行います。

$ petalinux-config -c kernel
kernel config

コマンド入力後メニューが開くまで少し時間がかります。

その後、Zybo Z7-20 に組み込まれているアナログオーディオデバイスを使うために下記のデバイスドライバーを有効にします。

  • ASoC simple sound card support
  • Analog Devices SSM2602 - I2C

それぞれの階層は下記の通りです。

Device Drivers
  └─ Sound card support
       └─ Advanced Linux Sound Architecture
            └─ ALSA for SoC audio support
                ├─ CODEC drivers
                |   └─ Analog Devices SSM2602 - I2C            
                └─ ASoC simple sound card support

※Zybo Z7-20 で利用するオーディオコーデックは SSM2603 ですが、互換性があるため SSM2602 で問題ありません

.
.
[INFO] Successfully configured kernel

が出力されるとカーネルコンフィグレーション完了です。

ルートファイルシステムコンフィグレーション

Petalinuxのルートファイルシステムにインストールするパッケージを選択します。

$ petalinux-config -c rootfs
filesystem package

filesystem package(クリックで拡大)

メニューが開いたら、下記を有効にしてください。

Filesystem Packages
  ├─ base
  |    └─ i2c-tools
  |         ├─ i2c-tools
  |         ├─ i2c-tools-dev
  |         ├─ i2c-tools-dbg
  |         └─ i2c-tools-misc
  └─ console
       └─ utils
            └─ alsa-utils
                ├─ alsa-utils
                ├─ alsa-utils-aplay    
                └─ alsa-utils-speakertest
.
.
[INFO] Successfully configured rootfs

デバイスツリーにドライバーの記述を追加する

デバイスツリーとは

デバイスツリーはLinuxにおいて、ハードウェアに関しての情報が記述された設定ファイルです。

デバイスツリーファイルには、テキスト形式のデバイスツリーソース (.dts, .dtsi) とそれをバイナリ形式に変換したデバイスツリーブロブ (.dtb) という種類があり、ビルド時に自動生成されます。

デバイスツリーソースを編集することでハードウェア構成のカスタマイズが可能です。

前回記事で作成したブロックデザインをサウンドカードとして使用するために、デバイスツリーファイルを編集してハードウェア構成を変更します。

デバイスツリーファイルはビルド(petalinux-build)すると以下の場所に生成されます。

$ ls components/plnx_workspace/device-tree/device-tree/
design_1_wrapper.bit  hardware_description.xsa  pcw.dtsi  ps7_init.c  ps7_init.html  ps7_init_gpl.c  skeleton.dtsi     system-top.dts
device-tree.mss       include                   pl.dtsi   ps7_init.h  ps7_init.tcl   ps7_init_gpl.h  system-conf.dtsi  zynq-7000.dtsi

これらのファイルはビルドで自動生成されたファイルなので直接編集しません。

編集可能なデイバイスツリーファイルとして system-user.dtsiが用意されています。このファイルを編集することで自動生成済みの情報に対して上書き・追加します。

編集前は以下の通り system-conf.dtsi がインクルードされているだけです。

$ cat project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi
/include/ "system-conf.dtsi"
/ {
};

下記のように編集します。

/include/ "system-conf.dtsi"
/{
    sound {
        compatible = "simple-audio-card";
        simple-audio-card,name    = "Zybo-Sound-Card";
        simple-audio-card,format  = "i2s";
        simple-audio-card,bitclock-master = <&cpu_dai>;
        simple-audio-card,frame-master    = <&cpu_dai>;

        cpu_dai: simple-audio-card,cpu {
            sound-dai = <&axi_i2s_adi_0>;
            clocks = <&misc_clk_0>;  // 12288000
        };
  
        simple-audio-card,codec {
            sound-dai = <&ssm2603>;
            clocks = <&misc_clk_0>;  // 12288000
        };
    };
};

&axi_i2s_adi_0 {
     #sound-dai-cells = <0>;    // only single DAI
     clock-names = "ref", "axi";
     clocks = <&misc_clk_0>, <&clkc 15>;
     compatible = "adi,axi-i2s-1.00.a";
     dmas = <&dmac_s 0 &dmac_s 1>;
     dma-names = "tx", "rx";
};

&i2c0 {
     status = "okay";
     ssm2603: ssm2603@1a {
         #sound-dai-cells = <0>;   // only single DAI
         compatible = "adi,ssm2603";
         reg = <0x1a>;
     };
};

axi_i2s_adi_0i2c0 はそれぞれ、pl.dtsi, pcw.dtsiに記述されていて、& で参照しています。

記述されている情報に対して追加・変更したい情報のみこのファイルに記述すればよく、変更のない情報を記述する必要はありません。

文中に記載されている各種名称、会社名、商品名などは各社の商標もしくは登録商標です。

PIXELA Technical Expertise

当社が技術学習するための情報を体系的に整理したものです。多くのエンジニアの一助になればと考え公開しています。

Petalinux 記事一覧

Petalinuxを動かしてみる

PetalinuxでWavファイルを再生する(1)

PetalinuxでWavファイルを再生する(2)

応用編