uboot
カーネルにコマンドライン引数を渡す方法は?インターネット検索をしてみると、bootargs
環境変数を使用していることがわかりました。そこに記載されているsetenv bootargs key=value
。使っているbash
のになくてsetenv
使っているexport bootargs="value"
のにあまり影響はありません。私が確認したパラメータは/proc/cmdline
同じままです。私が間違っていることを知っていますか?
答え1
uEnv.txt
ブートパーティションのファイルを使用してブートパラメータを指定できます。以下は、yocto Meta-ZyboレイヤーのXilinx zynq-7000デバイスの例です。
kernel_image=uImage
devicetree_image=zybo-zynq7.dtb
bootargs=console=ttyPS0,115200 root=/dev/mmcblk0p2 rw rootwait earlyprintk
uenvcmd=echo Copying Linux from SD to RAM... && fatload mmc 0 0x3000000 ${kernel_image} && fatload mmc 0 0x2A00000 ${devicetree_image} && bootm 0x3000000 - 0x2A00000
使用するデバイスツリーを指定し(デバイスツリーが呼び出される場合は不要device_tree.dtb
)、カーネルパラメータセットが続きます。
ご利用に関する詳細情報をご確認いただけます。uEnv.txt
ここ
答え2
パラメータをカーネルに渡す方法は2つあります。 1. パラメータを内部でコンパイルします。 2. ブートローダの使用
まず、パラメータがカーネルにコンパイルされていないことを確認してください。 2番目に見つかったsetenvコマンドはbashコマンドではなくbootloaderコマンドです。特定のデバイスがどのように作成されたかによって異なりますが、通常、ブートローダはファイルシステムのパラメータまたはファイルを読み取る一部の内部ストレージ(ホストではなくデバイスのフラッシュメモリ)にパーティションがあり、u-boot設定を取得します。そこから。
別の方法は、ケーブルを介してデバイスを接続し、デバイス固有の方法を使用してブートローダのプロンプトを表示し、インタラクティブに設定を変更することです。
特定のデバイスの起動シナリオに慣れていない場合、これは小さなことではありません。デバイス名を指定すると、質問に対する回答に役立ちます。
答え3
SDカードのファイルに加えて、uEnv.txtファイルを介して起動ファイルを渡すこともできます。
起動には次のファイルが必要です。(BOOT.bin
fsblとubootの読み込み)、bitstream.bit
(PLにロードされたビットストリーム、uImage
(コンパイルされたLinuxカーネル)devicetree.dtb
、(Linuxがドライバを読み取るアドレス)、uramdisk.image.gz
(起動後のLinuxファイル)。
次のコマンドを使用してDDRにロードできます。
bootargs=console=ttyPS0,115200 root=/dev/ram rw earlyprintk
load_image=fatload mmc 0 ${kernel_load_address} ${kernel_image} &&
fatload mmc 0 ${devicetree_load_address} ${devicetree_image} &&
fatload mmc 0 ${ramdisk_load_address} ${ramdisk_image} uenvcmd=run mmc_loadbit_fat &&
echo Copying Linux from SD to RAM... &&
run load_image &&
bootm ${kernel_load_address} ${ramdisk_load_address} ${devicetree_load_address}
また、SDのext4パーティションから別のLinuxファイルをロードするには、次のコマンドを使用できますuEnv.txt
。
bootargs=console=ttyPS0,115200 root=/dev/mmcblk0p2 rw earlyprintk rootfstype=ext4 rootwait devtmpfs.mount=0
load_image=fatload mmc 0 ${kernel_load_address} ${kernel_image} &&
fatload mmc 0 ${devicetree_load_address} ${devicetree_image} uenvcmd=run mmc_loadbit_fat &&
echo Copying Linux from SD to RAM... &&
mmcinfo && run load_image &&
bootm ${kernel_load_address} - ${devicetree_load_address}