2016-03-18 66 views
5

私はYoctoを使ってBeaglebone Black用の小さなLinuxイメージを作成しました。私はUART 2と4にアクセスする必要がある場合を除いて、私が望むようにほとんどすべての機能を持っていると思います。私は標準のDebianイメージを使用していましたが、デバイスツリーのオーバーレイとcapemgrでこれを行いました。しかし、Yoctoで構築されたカーネルにはcapemgrがないことがわかりました。Beaglebone Blackのデバイスツリーを変更する

私のオプションがあるように見える:

  1. は、必要に応じて変更をデバイスツリーのファイルを変更capemgrを構築するためのカーネルを取得し、または

オプション2ははるかに簡単です。

UARTのデバイスツリーオーバーレイは、herehereです。私はカップルの方法でそれらを含めることを試みて行った。

  1. 私が使用していたデバイスツリーBLOBを逆コンパイルして、 にこれらのファイルを含めようとしました。
  2. the full set of dts filesをダウンロードし、 UARTデバイスツリーオーバーレイをam335x-boneblack.dtsに含めることを試みました。私は、私もそれを修正することなくam335x-boneblack.dtsをコンパイルしようと、同様のエラーを取得していることに気づいた、しかし

    Error: am335x-boneblack.dts:1.1-2 syntax error 
    FATAL ERROR: Unable to parse input tree 
    

    ので、私はよ:

両方のアプローチは、このようなエラーに何かをもたらしますおそらくその権利をしていない可能性があります。 (コマンドdtc -I dts -O dtb -o result.dtb am335x-boneblack.dtsを使用)

明らかに私は何をしているのか分かりません。デバイスツリーのオーバーレイは、私がそれらを使用しようとしている方法で使用するために何らかの方法で変更されなければならないと思う。あるいは、私はインクルード権を行使していないかもしれません(ファイルの先頭に#includeを追加するだけです)。

誰かが私が間違っているかもしれないアイデアはありますか?私がしようとしていることは可能なのでしょうか?

+2

**。dts **ファイルの* end *に、他のものがすべて宣言された後に、あなたの "オーバーレイ"ファイルを含めることをお勧めします。普通**。DTSI **ファイルが0 { \t \tターゲット= <&x>; \t \t __overlay__ {...}} @ 'フラグメントを'使用しないので、それらが出て、編集する必要があります。 – sawdust

+0

YoctoでDTBをコンパイルするには、 'bitbake -f -c deploy your_kernel_recipe'を実行します。 'bitbake -f -c deploy linux-imx' – LPs

答えて

3

私はデバイスツリーのブロブを取り出し、それを逆コンパイルし、デバイスツリーのオーバーレイファイルからセクションをマージし、再コンパイルすることでこれを実現しました。私は、2と4の代わりにuarts 1と2が必要であることを理解しました。これは私の元の問題とは少し異なります。デバイスツリーブロブ逆コンパイルするには

:。私はで動作するように私に右のセクションを表示する例として、既存のUART0を使用

dtc -I dtb -O dts -o am335x-boneblack.dts am335x-boneblack.dtb 

私は中UART1とUART2のためのセクションを追加しましたuart0のセクションの下にあるpinmuxセクションを参照してください。それは次のようになります。

pinmux_uart0_pins { 
    pinctrl-single,pins = <0x170 0x30 0x174 0x0>; 
    linux,phandle = <0x27>; 
    phandle = <0x27>; 
}; 

bb_uart1_pins: pinmux_bb_uart1_pins { 
    pinctrl-single,pins = < 
     0x184 0x20 /* P9.24 uart1_txd.uart1_txd OUTPUT */ 
     0x180 0x20 /* P9.26 uart1_rxd.uart1_rxd INPUT */ 
    >; 
}; 

bb_uart2_pins: pinmux_bb_uart2_pins { 
    pinctrl-single,pins = < 
     0x150 0x21 /okay* spi0_sclk.uart2_rxd | MODE1 */ 
     0x154 0x01 /* spi0_d0.uart2_txd | MODE1 */ 
    >; 
}; 

はその後、連続切片が有効になっており、どのようなピンを使用するように指示する必要があります。私は、既存のUARTのセクションを変更し、それは次のようになります。デバイスツリー再コンパイルするには

[email protected] { 
    compatible = "ti,omap3-uart"; 
    ti,hwmods = "uart1"; 
    clock-frequency = <0x2dc6c00>; 
    reg = <0x44e09000 0x2000>; 
    interrupts = <0x48>; 
    status = "okay"; 
    dmas = <0x26 0x1a 0x26 0x1b>; 
    dma-names = "tx", "rx"; 
    pinctrl-names = "default"; 
    pinctrl-0 = <0x27>; 
}; 

[email protected] { 
    compatible = "ti,omap3-uart"; 
    ti,hwmods = "uart2"; 
    clock-frequency = <0x2dc6c00>; 
    reg = <0x48022000 0x2000>; 
    interrupts = <0x49>; 
    status = "okay"; 
    dmas = <0x26 0x1c 0x26 0x1d>; 
    dma-names = "tx", "rx"; 
    pinctrl-names = "default"; 
    pinctrl-0 = <&bb_uart1_pins>; 
}; 

[email protected] { 
    compatible = "ti,omap3-uart"; 
    ti,hwmods = "uart3"; 
    clock-frequency = <0x2dc6c00>; 
    reg = <0x48024000 0x2000>; 
    interrupts = <0x4a>; 
    status = "okay"; 
    dmas = <0x26 0x1e 0x26 0x1f>; 
    dma-names = "tx", "rx"; 
    pinctrl-names = "default"; 
    pinctrl-0 = <&bb_uart2_pins>; 
} 

:要するに

dtc -I dts -O dtb -o am335x-boneblack.dtb am335x-boneblack.dts 

を、私は考えどのようにデバイスへの少しを持つにもかかわらず、この作業を取得するために管理しました木は働く。

また、hdmiセクションでstatusを "disabled"に設定して、hdmiを無効にする必要がありました。

関連する問題