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 |