0. Retrieve tablet kernel information

Dropad A8 with Evolution 2.0 R4 (998Mhz) thanks to prox32, the ROM comes rooted so we only need to install Terminal Emulator

$ uname -ar
Linux localhost 2.6.35.7 #363 PREEMPT Sat Aug 6 14:29:51 CST 2011 armv7l GNU/Linux
$ dmesg

<6>[ 0.000000] Initializing cgroup subsys cpu
<5>[ 0.000000] Linux version 2.6.35.7 (raymanfeng@urbetter-linux01) (gcc version 4.4.1 (Sourcery G++ Lite 2009q3-67) ) #363 PREEMPT Sat Aug 6 14:29:51 CST 2011
<4>[ 0.000000] CPU: ARMv7 Processor [412fc082] revision 2 (ARMv7), cr=10c53c7f
<4>[ 0.000000] CPU: VIPT nonaliasing data cache, VIPT nonaliasing instruction cache
<4>[ 0.000000] Machine: SMDKV210
<4>[ 0.000000] Ignoring unrecognised tag 0×00000000
<4>[ 0.000000] Ignoring unrecognised tag 0×00000000
<4>[ 0.000000] Ignoring unrecognised tag 0×41001099
<4>[ 0.000000] Memory policy: ECC disabled, Data cache writeback

Two interesting things on the listings, first the kernel version stated as 2.6.35.7 and second compiler version gcc 4.4.1 and Sourcery G++ Lite 2009q3-67. Now we can setup out compiling environment!.

1. Setting up the cross-compiling environment

1. Downloading Sourcery G++ Lite 2009q3-67 from Sourcery webpage.

2. Decompress the tar.gz file and move it to /usr/local/arm/

3. Now, we must create a bunch of symbolic links:

on /usr/local/arm/

ln -s arm-2009q3 4.4.1

on /usr/local/arm/4.4.1/bin/

ln -s arm-none-linux-gnueabi-addr2line arm-linux-addr2line
ln -s arm-none-linux-gnueabi-ar arm-linux-ar
ln -s arm-none-linux-gnueabi-as arm-linux-as
ln -s arm-none-linux-gnueabi-c++ arm-linux-c++
ln -s arm-none-linux-gnueabi-c++filt arm-linux-c++filt
ln -s arm-none-linux-gnueabi-cpp arm-linux-cpp
ln -s arm-none-linux-gnueabi-gcov arm-linux-gcov
ln -s arm-none-linux-gnueabi-gdb arm-linux-gdb
ln -s arm-none-linux-gnueabi-gdbtui arm-linux-gdbtui
ln -s arm-none-linux-gnueabi-gprof arm-linux-gprof
ln -s arm-none-linux-gnueabi-ld arm-linux-ld
ln -s arm-none-linux-gnueabi-nm arm-linux-nm
ln -s arm-none-linux-gnueabi-objcopy arm-linux-objcopy
ln -s arm-none-linux-gnueabi-objdump arm-linux-objdump
ln -s arm-none-linux-gnueabi-ranlib arm-linux-ranlib
ln -s arm-none-linux-gnueabi-readelf arm-linux-readelf
ln -s arm-none-linux-gnueabi-size arm-linux-size
ln -s arm-none-linux-gnueabi-sprite arm-linux-sprite
ln -s arm-none-linux-gnueabi-strings arm-linux-strings
ln -s arm-none-linux-gnueabi-strip arm-linux-strip

Now let’s generate three more links:

echo arm-none-linux-gnueabi-g++ -march=armv7l $@ > arm-linux-g++
echo arm-none-linux-gnueabi-gcc -march=armv7l $@ > arm-linux-gcc
echo arm-none-linux-gnueabi-gcc-4.4.1 -march=armv7l $@ > arm-linux-gcc-4.4.1

Now grant +x for the links:

chmod +x arm-linux-g++
chmod +x arm-linux-gcc
chmod +x arm-linux-gcc-4.4.1

And last thing, generate the new PATH:

$ export PATH=/usr/local/arm/4.4.1/bin:$PATH

I recommend you to include this into your session profile.

If we have followed the steps correctly we must be capable of show the ARM compiler version wherever we are.

$ arm-linux-gcc -v

The next post will cover the kernel download and compile in order to get our module configured.