BeagleBone black に NHD-5.0-800480TF-ATXLを接続

目標

Yoctで構築したKernel 4.4 で5インチLCDのNHD-5.0-800480TF-ATXLを動作させる。
表示は出来るがタッチスクリーンの入力が動作しない。

構成

タッチパネルはi2c2-1を使用
  SDA : P9.18   gpio 0[4]
  SCL : P9.17    gpio 0[5]
  INT : P9.23   gpio  1[17]

  UART1
    TX : P9.24   gpio 0[15]
    RX : P9.26   gpio 0[14]

  UART4
    TX : P9.13    gpio 0[31]
    RX : P9.11    gpio 0[30]

※このトピックは作業途中の備忘録で、随時情報を追加します。 

解決しました :-D 

カーネルコンフィグレーションの設定が出来ていなかった模様

bbb/meta-bbb/recipes-kernel/linux/linux-stable-4.4/beaglebone/defconfig で次の設定がコメントになっていた。

CONFIG_TOUCHSCREEN_FT5X06=y
TSLIB_CONSOLEDEVICE=none
TSLIB_FBDEVICE=/dev/fb0
TSLIB_TSDEVICE=/dev/input/touchscreen0
TSLIB_CALIBFILE=/etc/pointercal
TSLIB_CONFFILE=/etc/ts/conf

Yoctを使ってdtbをコンパイルする

(ツールの準備)
上のリンクでWorking outside of Yocto のところを参照してツールを構築する

workdir/bbb/build/conf/local.conf を編集して SDKMACHINE = “x86_64” のコメントを外して有効にする

workdir$ source poky-morty/oe-init-build-env ~/workdir/bbb/build
workdir/bbb/build$ bitbake -c populate_sdk console-image

構築(1~2時間かかる)が終わったら次のスクリプトでインストールする

$ workdir/deploy/sdk/poky-glibc-x86_64-console-image-cortexa8hf-vfp-neon-toolchain-2.1.sh

ツールは /opt/poky/2.xに出来る

(カーネルソースを取ってくる)

$ cd workdir/bbb 
$ git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git
$ cd linux-stable
$ git checkout -b linux-4.4.y origin/linux-4.4.y

パッチをあてる

~$ cd workdir/bbb/linux-stable
workdir/bbb/linux-stable$ checkout -b work
workdir/bbb/linux-stable$ git am ../meta-bbb/recipes-kernel/linux/linux-stable-4.4/*.patch

Kernel configをコピー

cp workdir/bbb/meta-bbb/recipes-kernel/linux/linux-stable-4.4/beaglebone/defconfig workdir/bbb/linux-stable/.config

dtsからdtbを作る

workdir/bbb/linux-stable$ make bbb-xxxx.dtb
  DTC     arch/arm/boot/dts/bbb-xxxx.dtb

最初はKernel configの確認メッセージがたくさん出てくるが全てEnterでOK(たぶん?)、次からはDTCが直ぐに終わる。

ソースファイル bbb-xxxx.dts はworkdir/bbb/linux-stable/arch/arm/boot/dts にあるものが対象、dtbも同じところに出来る。 dtbが出来たら scpコマンドでBBBへコピーする

$ scp bbb-xxx.dtb root@192.168.0.xxx:/boot

BBBのuEnv.txtを書き換えてリブートすれば変更が反映される

i2c1が inputに反映されないので 比較検討用にKernel Ver3.8でうまく動作しているものの状態を記録

/dev/input/by-path にi2c-0, i2c-1に対応するデバイスが出来ている

 

画面にタッチしたときに/dev/input/event1から吐き出されるデータ

root@beaglebone:~# cat /dev/input/event1 | hexdump
0000000 e7e8 58b7 08ba 0005 0003 0039 0195 0000
0000010 e7e8 58b7 08ba 0005 0003 0035 01b7 0000
0000020 e7e8 58b7 08ba 0005 0003 0036 00f1 0000
0000030 e7e8 58b7 08ba 0005 0001 014a 0001 0000
0000040 e7e8 58b7 08ba 0005 0003 0000 01b7 0000
0000050 e7e8 58b7 08ba 0005 0003 0001 00f1 0000
0000060 e7e8 58b7 08ba 0005 0000 0000 0000 0000
0000070 e7e8 58b7 920b 0005 0003 0039 ffff ffff
0000080 e7e8 58b7 920b 0005 0001 014a 0000 0000
0000090 e7e8 58b7 920b 0005 0000 0000 0000 0000

.

root@beaglebone:~# cat /proc/bus/input/devices
I: Bus=0000 Vendor=0000 Product=0000 Version=0000
N: Name="tps65217_pwr_but"
P: Phys=
S: Sysfs=/devices/ocp.3/44e0b000.i2c/i2c-0/0-0024/input/input0
U: Uniq=
H: Handlers=kbd event0 
B: PROP=0
B: EV=3
B: KEY=100000 0 0 0

I: Bus=0018 Vendor=0000 Product=0000 Version=0000
N: Name="EP0980M09"
P: Phys=
S: Sysfs=/devices/ocp.3/4802a000.i2c/i2c-2/2-0038/input/input1
U: Uniq=
H: Handlers=mouse0 event1 
B: PROP=0
B: EV=b
B: KEY=400 0 0 0 0 0 0 0 0 0 0
B: ABS=2608000 3

.

root@beaglebone:~# cat /proc/bus/input/handlers
N: Number=0 Name=kbd
N: Number=1 Name=sysrq (filter)
N: Number=2 Name=mousedev Minor=32
N: Number=3 Name=joydev Minor=0
N: Number=4 Name=evdev Minor=64

.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)