目標
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]
※このトピックは作業途中の備忘録で、随時情報を追加します。
解決しました
カーネルコンフィグレーションの設定が出来ていなかった模様
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
(ツールの準備)
上のリンクで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
.