2017-05-05 5 views
1

私はArmベースの組み込みボードを持っています。現在、RootFSはスカッシュです。私はまだ開発段階にあります。 私の現在のワークフローは:Build rootからフルrootfsをRAMにロード

  1. 開発マシンを変更します。
  2. 新しいルートFSイメージを作成します。
  3. イメージをボード上のフラッシュディスクに書き込みます。
  4. 変更を再起動してテストしてください。

ご覧のとおり、上記のワークフローは効率的ではありません。アプリケーションのマイナーな変更やFS内の一部のスクリプトが必要なだけで、イメージを作成してリブートするだけで、FSの完全なイメージを作成するのに多くの時間が掛かります。

初期RAMディスクを作成してRootFSを保持できることを知っています。私はbuildrootでそのオプションを選択してビルドが完了しました。

今、私はボードで燃えたらどうしたらいいですか?そして、それは全体の再構築、燃焼、再起動サイクルを避けるために十分ですか?

私は最後に画像を焼く必要があることを知っていますが、変更が有効であることを確認した後で最終的な画像を焼きたいだけです。

答えて

2

これは、小さな部品を燃やすことはできません。それでも、フルイメージをデバイスのメモリにコピーする必要があります。 回避策:U-Bootのネットワーク機能を使用してください(tftpboot)。イメージをメモリにダウンロードし、ボード上で実行してください。ここで

は、PowerPCボードの一つの例です:

nb_load=dhcp;run nb_load_dtb;run nb_load_vmlinuz;run nb_load_initrd 
nb_load_initrd=tftpboot 0x1900000 /mybooklive/initrd 
nb_load_vmlinuz=tftpboot 0x1000000 /mybooklive/vmlinuz 
nb_load_dtb=tftpboot 0x1800000 /mybooklive/apollo3g.dtb 
nb_boot=setenv bootargs ${nb_bootargs}; run nb_load; bootm 0x1000000 0x1900000 0x1800000 
nb_bootargs=console=ttyS0,115200n8 ignore_loglevel 

U-bootコマンドラインで実行run nb_bootをブートします。

カーネルイメージ、初期RAMディスク、デバイスツリーBLOBが必要です(カーネルでコンパイルしない場合に備えて)。 U-bootコマンドラインで実行run bootcmd_edsbootをブートするために

setenv boot_edsboot 'zboot 0x100000 0 0x3000000 0x1000000' 
setenv bootargs_edsboot 'console=tty1 console=ttyS2,115200n8 rootfstype=ramfs rw' 
setenv bootcmd_edsboot 'setenv bootargs ${bootargs_edsboot}; run load_edsboot; run boot_edsboot' 
setenv load_edsboot 'load mmc 0:9 0x100000 vmlinuz.efi; load mmc 0:9 0x3000000 initrd' 

:ここ

はeMMC装置から起動するインテルエジソンボードのU-ブートオプションの別の例です。

完全な記事はhereです。

あなたが持っているボードに応じて正しいファイル(DTB)とアドレスを取得する必要があることは明らかです。

+0

ありがとう0andriy、私は今、どのようにubootが動作するかを理解することができました。私はネットワークブートオプションを使用しようとしますが、これは私の使用事例にとってはかなり適切です。 – silentnights

関連する問題