私が使用しているデバイスツリーBlob(dtbファイル)をどうやって知ることができますか?

私が使用しているデバイスツリーBlob(dtbファイル)をどうやって知ることができますか?

私はベースボードに接続され、Yocto Linuxを実行する組み込みの「コンピュータモジュール」であるTS-4900を使用しています。 U-Bootを使用して起動します。これはバックプレーンモデルに従って起動する正しいdtbファイルを選択し、正しいファイルが見つからない場合は、私のモジュールの「一般」ファイルに戻ることができます。

しかし、正しいことをどのように/どこで決定しますか?どの.dtbを使用するのか、どの設定を使用するのか、どうすればわかりますか?

以下はU-Bootの起動情報です。

U-Boot 2014.10-g3ac6ec3 (Jan 29 2015 - 17:20:15)

CPU:   Freescale i.MX6SOLO rev1.1 at 792 MHz
Reset cause: POR
Board: TS-4900
Revision: C
       Watchdog enabled
I2C:   ready
DRAM:  1 GiB
MMC:   FSL_SDHC: 0, FSL_SDHC: 1
SF: Detected N25Q64 with page size 256 Bytes, erase size 4 KiB, total 8 MiB
*** Warning - bad CRC, using default environment

In:    serial
Out:   serial
Err:   serial
Net:   using phy at 7
FEC [PRIME]
Press Ctrl+C to abort autoboot in 1 second(s)
(Re)start USB...
USB0:   Port not available.
USB1:   USB EHCI 1.00
scanning bus 1 for devices... 2 USB Device(s) found
       scanning usb for storage devices... 0 Storage Device(s) found
No storage devices, perhaps not 'usb start'ed..?
Booting from the eMMC ...
** File not found /boot/boot.ub **
** File not found /boot/imx6dl-ts4900-13.dtb **
Booting default device tree
42507 bytes read in 196 ms (210.9 KiB/s)
118642 bytes read in 172 ms (672.9 KiB/s)
ICE40 FPGA reloaded successfully
4609784 bytes read in 337 ms (13 MiB/s)
## Booting kernel from Legacy Image at 12000000 ...
   Image Name:   Linux-3.10.17-1.0.0-technologic+
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    4609720 Bytes = 4.4 MiB
   Load Address: 10008000
   Entry Point:  10008000
   Verifying Checksum ... OK
## Flattened Device Tree blob at 18000000
   Booting using the fdt blob at 0x18000000
EHCI failed to shut down host controller.
   Loading Kernel Image ... OK
   Using Device Tree in place at 18000000, end 1800d60a

Starting kernel ...

[    0.000000] Booting Linux on physical CPU 0x0

(Kernel startup commences...)

ベストアンサー1

U-Boot は、ブートコマンドの実行時にカーネルにメモリアドレスを提供し、デバイスツリー blob にメモリアドレスを提供します。したがって、このコマンドを実行する前に、これらのファイルをメモリにロードする必要があります。あなたが提供した情報によれば、eMMC / SDカードから2つのファイルをロードできないことがわかりました。

/boot/boot.ub
/boot/imx6dl-ts4900-13.dtb

これらのファイルがまったく存在しないか、パスが間違っているか、U-Boot loadコマンドに無効なデバイス:パーティションが指定されている可能性があります。それにもかかわらず、コマンドは失敗します。この時点で、ブートローダは「デフォルト」デバイスツリー(おそらくブートローダ自体と同じメディアに保存されている)をロードしようとしているようです。

何が起こっているのかを正確に理解するには、ブートローダで起動プロセスを停止し、U-Bootコマンドプロンプトにアクセスする必要があります。ここで次のように入力できます。

printenv

これにより、U-boot環境変数が印刷されます。これらの変数の多くは他の変数を参照します。これらの変数のいくつかは通常スクリプトのように実行されるため、起動スクリプト、カーネル、fdtロードスクリプトなどを見ることができます。開始順序を特定するには、次の変数を見つけます。スタートコマンド(または同様のもの)。これは通常起動時に実行されます。この時点から、複数の変数を介して開始順序を追跡する必要がありますが、FDTをメモリにロードするためにloadコマンドが使用される場所を確認する必要があります。出力を公開するには印刷環境、ここで使用されている正確なロジックを決定できます。

おすすめ記事