UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

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
ステータス アクティブ
種類 一般
デバイス
  • Zynq-7000
  • SoC
  • FPGA Device Families
ツール
  • EDK
IP
  • Microblaze
  • Processing System 7
このページをブックマークに追加