AR# 53476

ボードごとのイーサネット MAC アドレスの設定

説明

PetaLinux を実行するデバイスを製造していますが、各デバイスに異なるネットワーク MAC アドレスを使用する必要があります。それぞれのボードに対して異なる PetaLinux イメージを構築することなく、ボードごとに MAC アドレスを変更する方法を教えてください。

ソリューション

問題の詳細 :

u-boot およびカーネルの両イーサネット MAC アドレスはデフォルトで、[System Settings] コンフィギュレーション メニューの [Ethernet MAC address] に基づいてコンパイル時に設定されています。

製造に向けてデバイスを準備する際、固有の MAC アドレスを提供するために各ボードに対して新しい PetaLinux システム イメージを作成するのは現実的ではありません。

このアンサーでは、ボード MAC アドレスを簡単にカスタマイズできる、製造に適した手順を説明します。

背景 :
 

システム MAC アドレスは u-boot およびカーネルの両方で使用されます。

u-boot の場合、環境変数の ethaddr が MAC アドレスとして使用されます。

Linux カーネルの場合、MAC アドレスはデバイス ツリー (DTB/DTS ファイル) から得られます。

ボードごとに MAC アドレスをアップデートするには、u-boot の ethaddr 変数とデバイス ツリーの MAC アドレスの両方をアップデートする必要があります。

これは、新しいフラッシュ メモリ パーティションを作成してボードごとの DTB を保持することで可能になります。これにより、デフォルトの DTB ビルトが PetaLinux システム イメージにオーバーライドされます。

解決策 :
 

この解決策は、PetaLinux SDK バージョン 1.3 およびそれ以降を対象にしています。 

次の手順を使用して、ボードごとのイーサネット アドレスを設定します。 

この手順は製造プロセスに統合されることを目的としており、固有の MAC アドレスを含む一連のコマンドを u-boot コンソールに自動挿入するためのバーコード スキャナーなどが含まれることがあります。

 

1. menuconfig を用いて、最小のパーティション サイズ (16KByte (0x4000)) の、DTB を含むフラッシュ パーティション dtb を作成します。 

最小のセクター サイズに関するフラッシュ デバイスの規則を確認しておいてください。

Boot image with DTB partition オプションも有効にします。

    $ petalinux-config-app
      "System Settings" --->
          |- [*] Boot image with the DTB partition
          |-"Flash Partition Table" --->
             (dtb) name
             (0x4000) size

2. PetaLinux を再度構築します。

    $ cd ${PETALINUX}/software/petalinux-dist
    $ make clean
    $ make

結果作成された u-boot (u-boot-s.bin) およびカーネル (image.ub) のイメージは、製造されるすべてのボードのフラッシュ メモリにプログラムされます。

次の手順をボードごとに実行します。

 

3. FPGA ビットストリームでボードをプログラムした後、直近で構築された u-boot イメージをダウンロードします。

    $ petalinux-jtag-boot -u

別の方法として、fs-boot を介してボードを直接 u-boot で起動します。

 

4. u-boot が開始したら、DTB ファイルを DTB フラッシュ パーティションにダウンロードします。

    u-boot> run update_dtb

このコマンドにより、DTB ファイルが DTB フラッシュ パーティションにダウンロードされます。 

serverip 変数が正しく設定されていることを確認します。

 

5. u-boot MAC アドレスをアップデートします。

    u-boot> set ethaddr AA BB CC DD EE FF

 

6. u-boot 環境変数を保存して、u-boot MAC アドレスを保存します。

    u-boot> saveenv

 

7. DTB ファイルを DTB フラッシュ パーティションからメモリへ読み込みます。

    u-boot> run get_dtb

 

8. DTB の MAC アドレスを設定します。

    u-boot> fdt set <PATH TO local-mac-address PROPERTY OF THE ETHERNET CORE> local-mac-address "[AA BB CC DD EE FF]"

例 1 : Ethernet Lite の MAC アドレスを変更します。

   u-boot> fdt set /plb@0/ethernet@81000000 local-mac-address "[AA BB CC DD EE FF]"

例 2 : ll_temac の MAC アドレスを変更します。

   u-boot> fdt set /plb@0/xps-ll-temac@82780000/ethernet@82780000 local-mac-address "[AA BB CC DD EE FF]" 

u-boot コマンド fdt print を使用してデバイス ツリーを表示し、イーサネット デバイスへの DTB パスを検索できます。
 

9. 変更された DTB ファイルをコピーしてフラッシュに戻します。

    u-boot> run install_dtb

 

10. フラッシュのカーネル イメージをアップデートします (必要に応じて)。

    u-boot> run update_kernel

 

11. フラッシュの u-boot イメージをアップデートします (必要に応じて)。

    u-boot-> run update_uboot

次にボードをリブートする際は、u-boot からのフラッシュからアップデートされた DTB を用いてカーネルがブートされます。

AR# 53476
日付 06/10/2015
ステータス アクティブ
種類 一般
デバイス
ツール
IP