GNU/Linux >> Linux の 問題 >  >> Linux

Yocto で u-boot の構成を変更する方法

defconfig を通常のファイルとして追加することは可能です。例として、作業中の bbappend を貼り付けています:

PR = "r7"
BRANCH = "ti-u-boot-2020.01"
SRCREV = "ae8ceb7b6e3acb4bc90f730e33dafc7b65066591"
FILESEXTRAPATHS_prepend := "${THISDIR}:" 

SRC_URI +=  "file://0001-Add-am335x-cmpc30-target.patch \
         file://am335x-cmpc30.dts;subdir=git/arch/arm/dts \
         file://am335x_cmpc30_defconfig;subdir=git/configs/ \
        "

したがって、「file://am335x_cmpc30_defconfig;subdir=git/configs/」行は、実際には defconfig 全体を u-boot ソース コードに配置します。


private .config 全体をコピーする必要はありません defconfig sed 内のいくつかの設定を変更する必要がある場合は、u-boot ビルド フォルダーにファイルします。 do_compile_prepend 内で完全に機能しています メソッドも。例:

`

do_configure_prepend() {
        sed -i -e 's,CONFIG_DEFAULT_DEVICE_TREE=,CONFIG_DEFAULT_DEVICE_TREE= ${BOARD_DEVICE_TREE},g'  ${S}configs/mx7ulp_evk_defconfig
}

`

検索および置換パターン内のスペースは完全に問題ありません。 ${BOARD_DEVICE_TREE} Yocto 設定ファイルの 1 つで定義できます。この方法は、ソース/ヘッダー ファイルがレシピ ベースのパッチ リストで既にパッチされている場合にも有効です。


技術的には、あなたが説明したプロセスは私には正しいように聞こえます。ただし、注意すべき障害がいくつかあり、それぞれ確認する必要があります:

<オール>
  • あなたの .bbappend は実際に処理されていますか?
  • これはあなたの場合に当てはまるようですが (デバッグ出力でわかりました)、これは通常、次の方法で簡単に確認できます:

    bitbake-layers show-appends
    

    これにより、現在のビルド状況で有効なすべての追加の完全で詳細なリストが得られます。

    1. .bbappend は実際に望ましい効果をもたらしますか?

    複数のレシピが関係している場合、事態は複雑になり、相互に上書きされる可能性があります。確認してください

    bitbake -e u-boot-imx
    

    実際に何が起こるかを確認します。これは、less (または選択したページャー) にパイプしてから、SRC_URI などの変更された値を検索することと組み合わせるのが最適です。

    1. あなたの U-Boot マシンが何であるかを調べてください。

    2. からの情報を考えると、これはかなり簡単です:呼び出された変数を確認してください

    UBOOT_MACHINE
    

    これは、u-boot が実際に表示する必要があるためです。

    1. bitbake に詳細を伝えすぎないようにしてください。

    特に -f と -c スイッチを組み合わせると、基本的にタスクの依存関係をいじるので、予期しない結果になる可能性があります。私の経験では、何かに沿って

    bitbake -c clean u-boot-imx && bitbake u-boot-imx
    

    構成、パッチ適用などを含むビルド依存関係全体を通過するため、より適切に機能するはずです。

    編集 / 補遺

    OE 開発者に確認しましたが、主な問題は、defconfig メカニズムが (linux-) カーネル固有であることです。これが、kernel-dev マニュアルで説明されている理由でもあります。

    したがって、構成を実際のビルドに組み込むには、1.5 の解決策があります。

    <オール>
  • 正しい方法:
  • u-boot ソースへのパッチを準備します。あなたの場合、それはおそらく、すでに使用されている defconfig ファイルへのわずかな変更です。正規の形式のパッチを用意して SRC_URI に追加すると、自動的に取得されてうまくいくはずです。

    1. ハックな (そしてテストされていないため、半分しかない) 方法:

    構成を完全な形式で準備します (defconfig を削除したバージョンではありません)。次に、それを SRC_URI に追加し、.bbappend の追加タスクで使用します:

    do_compile_prepend() {
      cp YOURFILENAME ${S}/.config
    }
    

    これにより、コンパイルが開始される前に新しい構成が直接挿入されます。少しいじる必要があるかもしれませんが、確かにアイデアは得られます。別のアプローチは、元のファイルに defconfig を挿入することです。

    そうは言っても、最初の方法を強くお勧めします。


    Linux
    1. chmodを使用してファイルのパーミッションを変更するにはどうすればよいですか?

    2. Ubuntu でホスト名を変更する方法

    3. 出力をファイルに追加する方法は?

    1. .htaccessファイルのmemory_limitを変更する方法

    2. LinuxシステムのIDを変更する方法

    3. ファイルの最後に改行を追加するにはどうすればよいですか?

    1. ホスト名を変更する方法は?

    2. 単一のファイルの権限を変更するにはどうすればよいですか?

    3. ファイルのアクセス許可を変更する