solved .. tiny 6410 how to use touch

Sudhanshu Mehta
hi guys with 3 week of struggle i am able to use touch of tiny 6410.
in this tutorial i am using material from forum and net. do not feel i am
coping.. my motive is to share info how i done that.

here is the solution: 

1. tslib compilation

Tslib is an abstraction layer for touchscreen panel events, as well as a
filter stack for the manipulation of those events. It was created by
Russell King, of arm.linux.org.uk. Tslib is generally used on embedded
devices to provide a common user space interface to touchscreen
functionality.

4th line under this is the path of tool chain which may change.

$sudo apt-get install git-core
$cd /usr/local
$git clone http://github.com/kergoth/tslib.git
$export PATH=/usr/local/arm/4.7.0/bin:$PATH
$export CROSS_COMPILE=arm-none-linux-gnueabi-
$export CC=${CROSS_COMPILE}gcc
$export CFLAGS=-march=armv6z
$export CXX=${CROSS_COMPILE}"g++" 
$export AR=${CROSS_COMPILE}"ar" 
$export AS=${CROSS_COMPILE}"as"
$export RANLIB=${CROSS_COMPILE}"ranlib"
$export LD=${CROSS_COMPILE}"ld"
$export STRIP=${CROSS_COMPILE}"strip"
$export ac_cv_func_malloc_0_nonnull=yes
$cd /usr/local/tslib
$sudo ./autogen-clean.sh
$sudo ./autogen.sh
$sudo ./configure --host=arm-linux --prefix=/home/tslib --enable-shared=yes
--enable-static=yes
$sudo make
$sudo make install



If everything went ok you will see tslib in you will see tsblib in
/home/tslib

2.Qt Compilation

i used it from CD that i got but below is how ppl are getting from net.
version that i got was 4.7.0 below is 4.6.3. do not confuse with this both
will work i prefer to use 4.7.0 because i am witness it will work with my
procedure


$wget
http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.6.3.tar.gz
$mv qt-everywhere-opensource-src-4.6.3.tar.gz /usr/local
$cd /usr/local
$tar -zxvf  qt-everywhere-opensource-src-4.6.3.tar.gz


$cd qt-everywhere-opensource-src-4.7.0    #if you used 4.6.3 then you will
#find that   --this line is comment .
$cd mkspecs/common/
$gedit g++.conf

Edit that file

change         QMAKE_CFLAGS_RELEASE += -O2
into               QMAKE_CFLAGS_RELEASE += -O0

just need to replace 2 with 0 (zero) Then save the file 

$cd
/usr/local/qt-everywhere-opensource-src-4.7.0/mkspecs/qws/linux-arm-g++/
$gedit qmake.conf

Edit the file.Copy paste the below content , note that, the path
/usr/local/arm/4.7.0/ is the path which you installed tool chain.Remember
that the PATH variable should have the location of
arm-none-linux-gnueabi-gcc

#
# qmake configuration for building with arm-linux-g++
#

include(../../common/g++.conf)
include(../../common/linux.conf)
include(../../common/qws.conf)

# modifications to g++.conf
QMAKE_CC = /opt/FriendlyARM/toolschain/4.5.1/bin/arm-none-linux-gnueabi-gcc
-msoft-float -D__GCC_FLOAT_NOT_NEEDED -march=armv6z -mtune=arm1176jzf-s -O0
-lts
QMAKE_CXX =
/opt/FriendlyARM/toolschain/4.5.1/bin/arm-none-linux-gnueabi-g++
-msoft-float -D__GCC_FLOAT_NOT_NEEDED -march=armv6z -mtune=arm1176jzf-s -O0
-lts
QMAKE_LINK =
/opt/FriendlyARM/toolschain/4.5.1/bin/arm-none-linux-gnueabi-g++
-msoft-float -D__GCC_FLOAT_NOT_NEEDED -march=armv6z -mtune=arm1176jzf-s -O0
-lts
QMAKE_LINK_SHLIB =
/opt/FriendlyARM/toolschain/4.5.1/bin/arm-none-linux-gnueabi-g++
-msoft-float -D__GCC_FLOAT_NOT_NEEDED -march=armv6z -mtune=arm1176jzf-s -O0
-lts

# modifications to linux.conf
QMAKE_AR = /opt/FriendlyARM/toolschain/4.5.1/bin/arm-none-linux-gnueabi-ar
cqs
QMAKE_OBJCOPY =
/opt/FriendlyARM/toolschain/4.5.1/bin/arm-none-linux-gnueabi-objcopy
QMAKE_STRIP =
/opt/FriendlyARM/toolschain/4.5.1/bin/arm-none-linux-gnueabi-strip

QMAKE_INCDIR += /home/tslib/include/
QMAKE_LIBDIR += /home/tslib/lib/

QMAKE_CFLAGS_RELEASE += -march=armv6z -mtune=arm1176jzf-s
QMAKE_CFLAGS_DEBUG += -march=armv6z -mtune=arm1176jzf-s
QMAKE_CFLAGS_MT += -march=armv6z -mtune=arm1176jzf-s
QMAKE_CFLAGS_MT_DBG += -march=armv6z -mtune=arm1176jzf-s
QMAKE_CFLAGS_MT_DLL += -march=armv6z -mtune=arm1176jzf-s
QMAKE_CFLAGS_MT_DLLDBG += -march=armv6z -mtune=arm1176jzf-s
QMAKE_CFLAGS_SHLIB += -march=armv6z -mtune=arm1176jzf-s
QMAKE_CFLAGS_THREAD += -march=armv6z -mtune=arm1176jzf-s
QMAKE_CFLAGS_WARN_OFF += -march=armv6z -mtune=arm1176jzf-s
QMAKE_CFLAGS_WARN_ON += -march=armv6z -mtune=arm1176jzf-s

QMAKE_CXXFLAGS_DEBUG += -march=armv6z -mtune=arm1176jzf-s
QMAKE_CXXFLAGS_MT += -march=armv6z -mtune=arm1176jzf-s
QMAKE_CXXFLAGS_MT_DBG += -march=armv6z -mtune=arm1176jzf-s
QMAKE_CXXFLAGS_MT_DLL += -march=armv6z -mtune=arm1176jzf-s
QMAKE_CXXFLAGS_MT_DLLDBG += -march=armv6z -mtune=arm1176jzf-s
QMAKE_CXXFLAGS_RELEASE += -march=armv6z -mtune=arm1176jzf-s
QMAKE_CXXFLAGS_SHLIB += -march=armv6z -mtune=arm1176jzf-s
QMAKE_CXXFLAGS_THREAD += -march=armv6z -mtune=arm1176jzf-s
QMAKE_CXXFLAGS_WARN_OFF += -march=armv6z -mtune=arm1176jzf-s
QMAKE_CXXFLAGS_WARN_ON += -march=armv6z -mtune=arm1176jzf-s

load(qt_config)


save and close file
change the path in above section if needed.

open terminal
$mkdir /usr/local/Qt
$cd /usr/local/qt-everywhere-opensource-src-4.7.0


Then issue this command

$sudo ./configure -embedded arm -xplatform qws/linux-arm-g++ -prefix
/usr/local/Qt -qt-mouse-tslib -little-endian -no-webkit -no-qt3support
-no-cups -no-largefile -optimized-qmake -no-openssl -nomake tools
-qt-sql-sqlite -no-3dnow -system-zlib -qt-gif -qt-libtiff -qt-libpng
-qt-libmng -qt-libjpeg -no-opengl -gtkstyle -no-openvg -no-xshape -no-xsync
-no-xrandr -qt-freetype -qt-gfx-linuxfb -qt-kbd-tty -qt-kbd-linuxinput
-qt-mouse-tslib -qt-mouse-linuxinput

chose ‘o’ Open Source Edition
chose ‘yes’ to accept license offer

$sudo make
$sudo make install

3 .Copy library of tslib and Qt4.7.0 into tiny 6410 board

Use pendrive

copy library and example program of Qt to pendrive
Pendrive below means exact location of pendrive in media

$cd /usr/local/Qt/lib
$cp *4.7.0   /media/Pendrive/
$cp -r fonts/   /media/Pendrive/
$cd /usr/local/Qt
$cp -r demos/   /media/Pendrive/

copy tslib into pendrive

$mkdir /media/Pendrive/tslib/lib/
$cd /home/tslib/lib/

now we need to copy all files under lib in pendrive this is not easy .
some symbolic link will be there with witch you need to deal with.
so easy way is not to use following 2 commands. because you get error with
that. seee solution under the commands
 
$cp -r * /media/Pendrive/tslib/lib/
$cp * /media/Pendrive/tslib/lib/

use gui method to copy. copy all files in /home/tslib/lib/ to
/media/Pendrive/tslib/lib/ location.

libts.so and libts-1.0.so.0 will create problem.
solution is copy libts-1.0.so.0.0.0 two more times at same location in
pendrive and for first copied file, rename it to  libts.so and for second
copied file rename it to libts-1.0.so.0

above method is tested to you can also try.


Now connect the pendrive to the usb port of tiny6410 and in its console

$mkdir /usr/local/Qt/lib/
$cp /sdcard/*4.7.0 /usr/local/Qt/lib/
rename all *.4.7.0 in /usr/local/Qt/lib into *.4, for example
$mv libQtCore.so.4.7.0 libQtCore.so.4 
$cp -r /udisk/fonts/ /usr/local/Qt/lib/
$cp -r /udisk/demos/ /mnt/
$cp -r /udisk/tslib/ /usr/local/

On tiny 6410 the pendrive will appear as /udisk instead of /media/Pendrive

4. Configure the environment in tiny 6410 board.

Below instructions will make tiny 6410 board not load its desktop so that
our example Qt programs not conflict screen with the desktop

$cd /etc/init.d/
$vi rcS
comment last three lines:

#bin/qtopia&
#echo"                                 "> /dev/tty1
#ehco"Starting Qtopia, please waiting..." > /dev/tty1

Configure the environment in mini2440:

$cd /etc/
$vi profile

add those lines at the end of file. please verify that you have these files
at the locations specified. otherwise change location as per your system

export USER LOGNAME PS1 PATH
export LD_LIBRARY_PATH=/usr/local/tslib/lib
export QTDIR=/usr/local/Qt
export QWS_MOUSE_PROTO="tslib:/dev/touchscreen-1wire
IntelliMouse:/dev/input/mic
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFFILE=/etc/ts.conf
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_PLUGINDIR=/usr/lib/ts
export TSLIB_TSDEVICE=/dev/touchscreen-1wire
export TSLIB_TSEVENTTYPE=INPUT
export QWS_DISPLAY=LinuxFB:mmWidth=105:mmHeight=140



go to friendly arm forum given at end of following link
http://www.friendlyarm.net/downloads

go to /src
file name: one-wire-ts-input-src-20111026.tar.gz
=====================================
an open source tslib for FriendlyARM one wire touch screen, only for Linux,
not Android


How to use
=====================================
by FriendlyARM, 2011-10-26

step1: unzip the source code tarball
    #make
   you will get one-wire-ts-input.so, put it into the tiny6410
board: /usr/lib/ts/
Step2:
   vertify the first line in file "/etc/ts.conf"  to:
   module_raw one-wire-ts-input

5. Run Qt example program:

Now we can test Qt example programs

$cd /mnt/demos/embedded/fluidlauncher/
$./fluidlauncher -qws

use touch now :-)

Good luck .. if you have problem let me know .. please share your
experiences.

Sudhanshu Mehta
IntelliMouse:/dev/input/mice 
wrongly copied from hyperterminal

Ajit
The last part i.e. "Installing one wire ts input" will work on MINI2440???

la_glutte
I ported 6410 one_wire_touchscreen driver to 2440, it works very fine, is
Friendlyarm OK to give it? or mini2440.ko ?

gothicbeast
I attempted and completed setting up the qt cross compilation framework for
my Tiny 6410 on my host (x86).

Thanks these steps were a lot of help. Not all is perfect on by Tiny 6410
yet. but the basics are working fine.

gothicbeast
Attachment: workingset.rar (134.32 KB)
Everytime I try to redo this, I get into trouble

I kept getting error "The tslib functionality test failed!" on an attempt
to configure qt.

I saw the internet flooded with blogs about the same issue faced by a lot
of people.

This error has something to do with either erroneous tslib compilation or
wrong contents in g++.conf or qmake.conf or all three of them.

I am sorry I do not, at this moment have any solid explanation on what was
causing the error.

However, I do have a working set.

Put the tslib from my workingset.rar in /home/
(my qmake.conf points to this location for incdir and libdir)

Put the g++.conf and qmake.conf in their respective places. (see original
post for their locations)

Then, execute configure command (with all the flags/options) again.
Worked for me. Best of luck.

gothicbeast
Wanted to update about the last post.

The files contained in the .rar are tested to be working
for: Tiny6410
from: ubuntu12.04 LTS (x86)

Abhishek Ekhare
My touchscreen for Mini2440 is not working.
I have /dev/touchscreen-1wire.

I suppose i have to download one-wire-ts-input-src-20111026.tar.gz and do
the mentioned procedure.
But i cannot find one-wire-ts-input-src-20111026.tar.gz.

Can anybody give a proper link to this file ??

Also please confirm if this works with Mini2440.

debi
Tocuch is not working in tiny 6410,after doing the follwoing steps

step1: unzip the source code tarball
    #make
   you will get one-wire-ts-input.so, put it into the tiny6410
board: /usr/lib/ts/
Step2:
   vertify the first line in file "/etc/ts.conf"  to:
   module_raw one-wire-ts-input