1 Compile and Install Qemu
a) Download qemu-0.14.1.tar.gz ,use the this link http://wiki.qemu.org/Download
b) extract the qemu, tar -xvzf qemu-0.14.1.tar.gz
c) configure Qemu source.
./configure --prefix=$HOME/qemu --target-list=arm-linux-user
d) Compile and Install the binaries.
e)make install
2 Compile and install sbox2
a) git clone git://anongit.freedesktop.org/git/sbox2
cd sbox2
b) sbox2 gives compilation error patch the source with the file given in the link below.
sbox2-patch
patch -p1 -i /PATH-TO-PATCH/sbox2.patch
c)run ./autogen.sh to create a configuration file.
d) ./configure --prefix=$HOME/sb2
e) make install
f) PATH=$PATH:$HOME/sb2/bin
Target creation.
I have a ELDK toolchain installed on /opt/eldk, so:
cd /opt/eldk/arm
sb2-init -c /opt/qemu/bin/qemu-arm armv4 /opt/eldk/usr/bin/arm-linux-gnueabi-gcc
Once sb2-init is successfully installed,we can use it for cross-compiling source.
e.g
glib cross-compiling.
Download glib-2.24.0.tar.bz2
http://ftp.gnome.org/pub/gnome/sources/glib/2.24/glib-2.24.0.tar.bz2
sb2 ./configure --prefix=/opt/gst --disable-static --with-html-dir=/tmp/dump
sb2 make install
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
Monday, September 26, 2011
Wednesday, July 27, 2011
GTK+ DirectFB cross compilation
GTK+, or the GIMP Toolkit, is a multi-platform toolkit for creating graphical user interfaces. Offering a complete set of widgets. GTK+ is suitable for projects ranging from small one-off tools to complete application suites.
I have download the below softwares to start with.
atk-1.30.0: http://ftp.gnome.org/pub/GNOME/sources/atk/1.30/atk-1.30.0.tar.bz2
cairo-1.8.10: http://cairographics.org/releases/cairo-1.8.10.tar.gz
DirectFB-1.4.3: http://directfb.org/downloads/Core/DirectFB-1.4/DirectFB-1.4.3.tar.gz
expat-2.0.1: http://sourceforge.net/projects/expat/
fontconfig-2.8.0: http://fontconfig.org/release/fontconfig-2.8.0.tar.gz
freetype-2.3.12: http://sourceforge.net/projects/freetype/files/
glib-2.24.0: http://ftp.gnome.org/pub/gnome/sources/glib/2.24/glib-2.24.0.tar.bz2
gtk+-2.20.1: http://ftp.gnome.org/pub/gnome/sources/gtk+/2.20/gtk+-2.20.1.tar.bz2
jpeg-8b: http://www.ijg.org/files/jpegsrc.v8b.tar.gz
tslib: http://www.zelow.no/floppyfw/download/Development/src/
libpng-1.2.39: http://sourceforge.net/projects/libpng/files/
libxml2-2.7.7: ftp://gd.tuwien.ac.at/pub/libxml/libxml2-2.7.7.tar.gz
pango-1.28.1: http://ftp.gnome.org/pub/gnome/sources/pango/1.28/pango-1.28.1.tar.bz2
pixman-0.18.2: http://cairographics.org/releases/pixman-0.18.2.tar.gz
tiff-3.9.2: http://download.osgeo.org/libtiff/tiff-3.9.2.tar.gz
zlib-1.2.5: http://zlib.net/zlib-1.2.5.tar.gz
With scratchbox2 and qemu on the host machine cross compiling was straightforward.
Cross compiling order
1) tslib
sb2 ./configure --prefix=/opt/gtkfb
sb2 make install
2) zlib
since glib require zlib
sb2 ./configure --prefix=/opt/gtkfb --shared
sb2 make install
3) glib
LDFLAGS=-L/opt/gtkfb/lib CPPFLAGS=-I/opt/gtkfb/include/ sb2 ./configure --prefix=/opt/gtkfb --disable-static --with-html-dir=/tmp/dump
sb2 make install
4) atk
export PKG_CONFIG_PATH=/opt/gtkfb/lib/pkgconfig
LDFLAGS=-L/opt/gtkfb/lib CPPFLAGS=-I/opt/gtkfb/include/ sb2 ./configure --prefix=/opt/gtkfb --disable-glibtest
sb2 make install
5) jpeg-8b
sb2 ./configure --prefix=/opt/gtkfb --enable-shared --enable-static
sb2 make install
6) libpng
LDFLAGS=-L/opt/gtkfb/lib CPPFLAGS=-I/opt/gtkfb/include/ sb2 ./configure --prefix=/opt/gtkfb
sb2 make install
7) expat-2.0
sb2 ./configure --prefix=/opt/gtkfb
sb2 make install
8) freetype
sb2 ./configure --prefix=/opt/gtkfb
sb2 make install
9)libxml
LDFLAGS=-L/opt/arm/gst/lib CPPFLAGS=-I/opt/arm/gst/include/ sb2 ./configure --prefix=/opt/gtkfb --without-python
sb2 make install
10)freetype-2.3.12
LDFLAGS=-L/opt/arm/gst/lib CPPFLAGS=-I/opt/arm/gst/include/ sb2 ./configure --prefix=/opt/gtkfb --with-freetype-config=/opt/gtkfb/bin/freetype-config
11) tiff -- not used gcc 4.3.2
LDFLAGS=-L/opt/arm/gst/lib CPPFLAGS=-I/opt/arm/gst/include/ sb2 ./configure --prefix=/opt/gtkfb --enable-shared
sb2 make install
12) DirectFB
LDFLAGS=-L/opt/arm/gst/lib CPPFLAGS=-I/opt/arm/gst/include/ sb2 ./configure --prefix=/opt/gtkfb --with-gfxdrivers=none --with-inputdrivers=all --enable-png --enable-jpeg --enable-tiff=no --enable-zlib --enable-sdl=no --enable-gif=no --disable-x11
sb2 make install
13) pixman-0.18.2
LDFLAGS=-L/opt/arm/gst/lib CPPFLAGS=-I/opt/arm/gst/include/ sb2 ./configure --prefix=/opt/gtkfb --disable-gtk
14) cairo
LDFLAGS=-L/opt/gtkfb/lib CPPFLAGS=-I/opt/gtkfb/include/ sb2 ./configure --prefix=/opt/gtkfb --without-x --disable-xlib --disable-xlib-xrender --enable-directfb --enable-freetype --disable-win32 --enable-pdf --enable-ps --enable-svg --enable-png
15) Pango
LDFLAGS=-L/opt/gtkfb/lib CPPFLAGS=-I/opt/gtkfb/include/ sb2 ./configure --prefix=/opt/gtkfb --without-x
16 gtk
LDFLAGS=-L/opt/gtkfb/lib CPPFLAGS=-I/opt/gtkfb/include/ sb2 ./configure --prefix=/opt/gtkfb --with-gdktarget=directfb --without-x --without-libtiff --disable-glibtest --disable-cups
Now to compile a simple helloworld.c pro-gramme with these libraries.
export PKG_CONFIG_PATH=/opt/gtkfb/lib/pkgconfig
arm-linux-gcc -Wall -g helloworld.c -o helloworld `pkg-config --cflags gtk+-2.0` `pkg-config --libs gtk+-2.0` -Wl,-O1 -Wl,-rpath,/opt/gtkfb/lib
I have download the below softwares to start with.
atk-1.30.0: http://ftp.gnome.org/pub/GNOME/sources/atk/1.30/atk-1.30.0.tar.bz2
cairo-1.8.10: http://cairographics.org/releases/cairo-1.8.10.tar.gz
DirectFB-1.4.3: http://directfb.org/downloads/Core/DirectFB-1.4/DirectFB-1.4.3.tar.gz
expat-2.0.1: http://sourceforge.net/projects/expat/
fontconfig-2.8.0: http://fontconfig.org/release/fontconfig-2.8.0.tar.gz
freetype-2.3.12: http://sourceforge.net/projects/freetype/files/
glib-2.24.0: http://ftp.gnome.org/pub/gnome/sources/glib/2.24/glib-2.24.0.tar.bz2
gtk+-2.20.1: http://ftp.gnome.org/pub/gnome/sources/gtk+/2.20/gtk+-2.20.1.tar.bz2
jpeg-8b: http://www.ijg.org/files/jpegsrc.v8b.tar.gz
tslib: http://www.zelow.no/floppyfw/download/Development/src/
libpng-1.2.39: http://sourceforge.net/projects/libpng/files/
libxml2-2.7.7: ftp://gd.tuwien.ac.at/pub/libxml/libxml2-2.7.7.tar.gz
pango-1.28.1: http://ftp.gnome.org/pub/gnome/sources/pango/1.28/pango-1.28.1.tar.bz2
pixman-0.18.2: http://cairographics.org/releases/pixman-0.18.2.tar.gz
tiff-3.9.2: http://download.osgeo.org/libtiff/tiff-3.9.2.tar.gz
zlib-1.2.5: http://zlib.net/zlib-1.2.5.tar.gz
With scratchbox2 and qemu on the host machine cross compiling was straightforward.
Cross compiling order
1) tslib
sb2 ./configure --prefix=/opt/gtkfb
sb2 make install
2) zlib
since glib require zlib
sb2 ./configure --prefix=/opt/gtkfb --shared
sb2 make install
3) glib
LDFLAGS=-L/opt/gtkfb/lib CPPFLAGS=-I/opt/gtkfb/include/ sb2 ./configure --prefix=/opt/gtkfb --disable-static --with-html-dir=/tmp/dump
sb2 make install
4) atk
export PKG_CONFIG_PATH=/opt/gtkfb/lib/pkgconfig
LDFLAGS=-L/opt/gtkfb/lib CPPFLAGS=-I/opt/gtkfb/include/ sb2 ./configure --prefix=/opt/gtkfb --disable-glibtest
sb2 make install
5) jpeg-8b
sb2 ./configure --prefix=/opt/gtkfb --enable-shared --enable-static
sb2 make install
6) libpng
LDFLAGS=-L/opt/gtkfb/lib CPPFLAGS=-I/opt/gtkfb/include/ sb2 ./configure --prefix=/opt/gtkfb
sb2 make install
7) expat-2.0
sb2 ./configure --prefix=/opt/gtkfb
sb2 make install
8) freetype
sb2 ./configure --prefix=/opt/gtkfb
sb2 make install
9)libxml
LDFLAGS=-L/opt/arm/gst/lib CPPFLAGS=-I/opt/arm/gst/include/ sb2 ./configure --prefix=/opt/gtkfb --without-python
sb2 make install
10)freetype-2.3.12
LDFLAGS=-L/opt/arm/gst/lib CPPFLAGS=-I/opt/arm/gst/include/ sb2 ./configure --prefix=/opt/gtkfb --with-freetype-config=/opt/gtkfb/bin/freetype-config
11) tiff -- not used gcc 4.3.2
LDFLAGS=-L/opt/arm/gst/lib CPPFLAGS=-I/opt/arm/gst/include/ sb2 ./configure --prefix=/opt/gtkfb --enable-shared
sb2 make install
12) DirectFB
LDFLAGS=-L/opt/arm/gst/lib CPPFLAGS=-I/opt/arm/gst/include/ sb2 ./configure --prefix=/opt/gtkfb --with-gfxdrivers=none --with-inputdrivers=all --enable-png --enable-jpeg --enable-tiff=no --enable-zlib --enable-sdl=no --enable-gif=no --disable-x11
sb2 make install
13) pixman-0.18.2
LDFLAGS=-L/opt/arm/gst/lib CPPFLAGS=-I/opt/arm/gst/include/ sb2 ./configure --prefix=/opt/gtkfb --disable-gtk
14) cairo
LDFLAGS=-L/opt/gtkfb/lib CPPFLAGS=-I/opt/gtkfb/include/ sb2 ./configure --prefix=/opt/gtkfb --without-x --disable-xlib --disable-xlib-xrender --enable-directfb --enable-freetype --disable-win32 --enable-pdf --enable-ps --enable-svg --enable-png
15) Pango
LDFLAGS=-L/opt/gtkfb/lib CPPFLAGS=-I/opt/gtkfb/include/ sb2 ./configure --prefix=/opt/gtkfb --without-x
16 gtk
LDFLAGS=-L/opt/gtkfb/lib CPPFLAGS=-I/opt/gtkfb/include/ sb2 ./configure --prefix=/opt/gtkfb --with-gdktarget=directfb --without-x --without-libtiff --disable-glibtest --disable-cups
Now to compile a simple helloworld.c pro-gramme with these libraries.
export PKG_CONFIG_PATH=/opt/gtkfb/lib/pkgconfig
arm-linux-gcc -Wall -g helloworld.c -o helloworld `pkg-config --cflags gtk+-2.0` `pkg-config --libs gtk+-2.0` -Wl,-O1 -Wl,-rpath,/opt/gtkfb/lib
Monday, May 2, 2011
mini2440 as USB mass storage gadget device
To make mini2440 as USB mass storage device,I needed to check both the schematics and source code. I am not sure the reason GPG12 GPIO port pin is used by touch screen, however this is not captured in schematics. also referred http://www.linux-usb.org/gadget/file_storage.html link to establish this task.
Step 1:
so the first step is to disable the touch screen driver in the kernel source tree.
step 2:
--- USB support
[*] USB device filesystem
<*> USB Gadget Support --->
File-backed Storage Gadget
step 3:
cross compile the kernel,boot the new kernel and filesystem. go to compiled linux source tree and download g_file_storage.ko to mini2440.
bash# dd bs=1M count=10 if=/dev/zero of=/root/backing_file
step 5:
Partitioning the backing storage
Step 1:
so the first step is to disable the touch screen driver in the kernel source tree.
step 2:
--- USB support
[*] USB device filesystem
<*> USB Gadget Support --->
step 3:
cross compile the kernel,boot the new kernel and filesystem. go to compiled linux source tree and download g_file_storage.ko to mini2440.
step 4:
Creating a backing storage file
since the mini2440 has 64 MB flash, I allocated 10MB space for backup storage file. Creating a backing storage file
bash# dd bs=1M count=10 if=/dev/zero of=/root/backing_file
step 5:
Partitioning the backing storage
bash# fdisk /root/backing_file
Device contains neither a valid DOS partition table, nor Sun or SGI disklabel
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won't be recoverable.
You must set heads sectors and cylinders.
You can do this from the extra functions menu.
Command (m for help):
Give the "x" (eXpert or eXtra) command:
Command (m for help): x
now select Heads, Sectors, and Cylinders
g_file_storage uses a sector size of 512 bytes, so 8 sectors/track will give us 4096 bytes
per track
Expert command (m for help): s
Number of sectors (1-63): 8
Warning: setting sector offset for DOS compatiblity
With 4 KB per track, 16 heads will give us a total of 64 KB per cylinder
Expert command (m for help): h
Number of heads (1-256): 16
Since we've got 64 KB per cylinder and 10 MB total, we need to use 320
cylinders.
Expert command (m for help): c
Number of cylinders (1-131071): 320
Now return to the normal menu (the "r" command):
Expert command (m for help): r
creating a primary partition
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-1024, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-1024, default 1024):
Using default value 1024
Since you want to use the gadget with a Windows host, you should change the
partition type (the "t" command) to FAT32 (code "b")
Command (m for help): t
Partition number (1-4): 1
Hex code (type L to list codes): b
Changed system type of partition 1 to b (Win95 FAT32)
Finally write out ("w") the partition table to the backing storage:
Command (m for help): w
The partition table has been altered!
Adding a filesystem
You use the losetup program to set up the loop
device driver with the proper offset:
# losetup -o 4096 /dev/loop0 /root/backing_file
and then you can mount it:
# mount -t vfat /dev/loop0 /mnt/loop
/dev/loop0 is mapped to the partition within the backing
storage. You can create a filesystem on it:
# mkdosfs /dev/loop0
now do "insmod g_file_storage file=/root/backing_file" on mini2440,then connect mini2440 to host PC.
the FAT32 partition with will be visible as storage device on Host system
Subscribe to:
Posts (Atom)