(Created page with "Android tablets come with proved themselves as a severe contender in order to Apple iPad. iPad coming from the Apple stable, was never going in order to come cheap. One may ar...")
 
(Compiling the Raspberry Pi mainline Kernel)
 
(One intermediate revision by one user not shown)
Line 1: Line 1:
Android tablets come with proved themselves as a severe contender in order to Apple iPad. iPad coming from the Apple stable, was never going in order to come cheap. One may argue that your needs attain just what you pay for. Nevertheless I disagree whenever it comes to Apple treatments. No doubt they are perfect for the simplicity they provide and needless to say the particular half bitten apple logo adds to be able to the status of the actual owner. Yet not just about everyone typically is seeking simplicity and / or brands as well as certainly not everyone has deep pockets. A couple of consumers may well be more tech savvy and would need a couple extra qualities that a layman won’t be capable to be able to digest. Sylvania Android tablet looks the particular ideal match for them!
+
 
Android tablets such as the actual Sylvania Android tablet comes with the Google Android operating body. Because it is actually with all open source code treatments, Android was a instant hit! Also the actual free of charge tag on the operating body was actually an added advantage. The actual android OS has underwent several changes since its initial release, codenamed “Cupcake” version 1.5. The latest version typically is nicknamed “Ice-cream Sandwich” and in addition its version is actually 4.0.
+
== Prerequisites ==
Main manufacturers such as Samsung not to mention Motorola started cranking about tablets based found on the Android Operating body. You had android tablets with all form of varying configurations. The actual differentiating factors being processing force, screen size, amount of RAM, storage capacity (inbuilt along with expandable), the actual number of ports and even last but yet certainly not the actual least the actual android version powering the actual tablet. The actual 10 inch android tablet emerged as the actual ideal size tablet for usability reasons.
+
 
One manufacturer of electronic gadgets that has caught the fancy of many a gadget enthusiasts typically is Sylvania. Sylvania moreover has its own range of android tablets with different android flavors and in addition various screen sizes. Among the highly rated treatments by them is the Sylvania Android tablet SYTAB10MT.
+
=== ARM Cross Compiler ===
The amount of RAM not to mention the in-built storage capacity of the Sylvania Android tablet would be a turn off for a bit of. But yet in the event you search at the price point at which it is selling you can be surprised. The actual Sylvania Android tablet sells for simply $189 such as shipping costs. Honestly, a 10 inch android tablet at which price point is a steal!
+
 
Sylvania Android tablet conclusion
+
To compile the mainline Linux kernel for the Raspberry Pi, you must first have an ARM cross compiler installed. I use gcc-4.7.3-arm-linux-gnueabi that comes with Ubuntu 14.04. To install the compiler run:
The particular most surprising feature of the actual Sylvania Android tablet typically is the inclusion of 2 fully fledged USB 2.0 ports. You won’t discover this feature throughout many of the actual main brands out generally there. Furthermore 2 micro SD card slots in 1 tablet is unheard for and in addition Sylvania Android tablet is actually the actual first specific in order to introduce such a novel feature. And even in the event you are generally thinking that the actual performance of the particular Sylvania Android tablet will be sluggish afterward your needs are really mistaken. The particular ARM 11 processor is blazing fast to handle most of the particular mundane jobs with multitasking capability. All the in just about all, the particular Sylvania Android tablet is a deal maker at the actual price point it is selling.
+
 
A different perfect Sylvania Android tablet product can certainly be viewed out here moreover [http://sylvaniatablet.org Sylvania Tablet]
+
<PRE>
 +
sudo apt-get install gcc-arm-linux-gnueabi
 +
</PRE>
 +
 
 +
== Compiling the Raspberry Pi mainline Kernel ==
 +
 
 +
<PRE>
 +
# wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.15.tar.xz
 +
# tar -xJf linux-3.15.tar.xz
 +
# cd linux-3.15
 +
</PRE>
 +
 
 +
Make and run the configuration menu:
 +
 
 +
<PRE>
 +
# make ARCH=arm bcm2835_defconfig
 +
# make ARCH=arm menuconfig
 +
</PRE>
 +
 
 +
Customise your kernel. I enable the following:
 +
 
 +
<PRE>
 +
Networking support -> Networking Options -> TCP/IP networking -> IP: kernel level autoconfiguration
 +
Networking support -> Networking Options -> TCP/IP networking -> IP: DHCP support
 +
File Systems -> Network File Systems -> Root file system on NFS
 +
</PRE>
 +
 
 +
Once you have finished configuring your kernel, save the config. Then build it:
 +
 
 +
<PRE>
 +
# make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- zImage dtbs -j4
 +
</PRE>
 +
 
 +
Now build the modules and install them to a suitable path:
 +
 
 +
<PRE>
 +
# make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- modules
 +
# make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- INSTALL_MOD_PATH=/home/export/rootfs modules_install
 +
</PRE>
 +
 
 +
== Testing ==
 +
 
 +
To support your newer Linux Mainline Kernel with Device Tree Support, you will need to boot from U-Boot.
 +
 
 +
Please see [[Compiling_uBoot_RaspberryPi|Compiling U-Boot with Device Tree Support for the Raspberry Pi]]
 +
 +
=== TFTP Server ===
 +
 
 +
Rather than flashing your newly created kernel to find out it doesn't work or it is not quite configured correctly, a better way to load the kernel into RAM and boot it from there. U-Boot allows kernel images to be loaded via TFTP.
 +
 
 +
To speed up development, I create an 'export' directory. A TFTP server is then configured to use this directory as the TFTP root.
 +
 
 +
From the export directory, add symbolic links to the kernel images. This way, you can recompile the kernel and the new image is instantly available without having to move it.
 +
 
 +
<PRE>
 +
# ln -s /path to linux/arch/arm/boot/zImage zImage
 +
# ln -s /path to linux/arch/arm/boot/dts/bcm2835-rpi-b.dtb bcm2835-rpi-b.dtb
 +
</PRE>
 +
 
 +
=== U-Boot tftpboot ===
 +
 
 +
To test your kernel, bring up a U-Boot serial console. First we will need to configure the IP addresses. The ipaddr variable contains the IP address for the Raspberry Pi, while the serverip variable is the address of the TFTP server containing the kernel image.
 +
 
 +
<PRE>
 +
usb start
 +
setenv ipaddr 192.168.0.250
 +
setenv serverip 192.168.0.251
 +
</PRE>
 +
 
 +
Next load the kernel image and Device Tree BLOB into memory:
 +
<PRE>
 +
tftpboot 0x02000000 bcm2835-rpi-b.dtb
 +
tftpboot 0x01000000 zImage
 +
</PRE>
 +
 
 +
You will also require a root filesystem to do any serious testing. One option is to use the filesystem already in place as I have done below. However, it is unlikely to have your new kernel modules installed.
 +
 
 +
<PRE>
 +
setenv bootargs console=ttyAMA0 console=tty1 root=/dev/mmcblk0p2 rootwait
 +
</PRE>
 +
 
 +
The preferred option is to export a root NFS filesystem with your newly installed kernel modules installed. This has the added advantage as you can compile userland binaries on your development box, install them to the NFS export and have instant access to them on your target system.
 +
 
 +
<PRE>
 +
setenv bootargs console=ttyAMA0 console=tty1 root=/dev/nfs rw nfsroot=192.168.0.251:/home/export/rootfs ip=192.168.0.250:::::eth0
 +
</PRE>
 +
 
 +
Finally, you can boot the kernel from the memory:
 +
 
 +
<PRE>
 +
bootz 0x01000000 - 0x02000000
 +
</PRE>
 +
 
 +
Hopefully you should yield results similar to the following:
 +
 
 +
<PRE>
 +
Kernel image @ 0x1000000 [ 0x000000 - 0x347bf0 ]
 +
## Flattened Device Tree blob at 02000000
 +
  Booting using the fdt blob at 0x2000000
 +
  Loading Device Tree to 07b49000, end 07b4cf02 ... OK
 +
 
 +
Starting kernel ...
 +
 
 +
Uncompressing Linux... done, booting the kernel.
 +
[   0.000000] Booting Linux on physical CPU 0x0
 +
[    0.000000] Initializing cgroup subsys cpuset
 +
[    0.000000] Initializing cgroup subsys cpu
 +
[    0.000000] Initializing cgroup subsys cpuacct
 +
[    0.000000] Linux version 3.15.0 (cpeacock@ubuntu) (gcc version 4.7.3 (Ubuntu/Linaro 4.7.3-12ubuntu1) ) #5 Thu Jun 12 23:45:26 PDT 2014
 +
[    0.000000] CPU: ARMv6-compatible processor [410fb767] revision 7 (ARMv7), cr=00c5387d
 +
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT nonaliasing instruction cache
 +
[    0.000000] Machine model: Raspberry Pi Model B
 +
</PRE>

Latest revision as of 10:13, 14 June 2014

Prerequisites

ARM Cross Compiler

To compile the mainline Linux kernel for the Raspberry Pi, you must first have an ARM cross compiler installed. I use gcc-4.7.3-arm-linux-gnueabi that comes with Ubuntu 14.04. To install the compiler run:

sudo apt-get install gcc-arm-linux-gnueabi

Compiling the Raspberry Pi mainline Kernel

# wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.15.tar.xz
# tar -xJf linux-3.15.tar.xz
# cd linux-3.15

Make and run the configuration menu:

# make ARCH=arm bcm2835_defconfig
# make ARCH=arm menuconfig

Customise your kernel. I enable the following:

Networking support -> Networking Options -> TCP/IP networking -> IP: kernel level autoconfiguration
Networking support -> Networking Options -> TCP/IP networking -> IP: DHCP support
File Systems -> Network File Systems -> Root file system on NFS

Once you have finished configuring your kernel, save the config. Then build it:

# make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- zImage dtbs -j4

Now build the modules and install them to a suitable path:

# make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- modules
# make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- INSTALL_MOD_PATH=/home/export/rootfs modules_install

Testing

To support your newer Linux Mainline Kernel with Device Tree Support, you will need to boot from U-Boot.

Please see Compiling U-Boot with Device Tree Support for the Raspberry Pi

TFTP Server

Rather than flashing your newly created kernel to find out it doesn't work or it is not quite configured correctly, a better way to load the kernel into RAM and boot it from there. U-Boot allows kernel images to be loaded via TFTP.

To speed up development, I create an 'export' directory. A TFTP server is then configured to use this directory as the TFTP root.

From the export directory, add symbolic links to the kernel images. This way, you can recompile the kernel and the new image is instantly available without having to move it.

# ln -s /path to linux/arch/arm/boot/zImage zImage
# ln -s /path to linux/arch/arm/boot/dts/bcm2835-rpi-b.dtb bcm2835-rpi-b.dtb

U-Boot tftpboot

To test your kernel, bring up a U-Boot serial console. First we will need to configure the IP addresses. The ipaddr variable contains the IP address for the Raspberry Pi, while the serverip variable is the address of the TFTP server containing the kernel image.

usb start
setenv ipaddr 192.168.0.250
setenv serverip 192.168.0.251

Next load the kernel image and Device Tree BLOB into memory:

tftpboot 0x02000000 bcm2835-rpi-b.dtb
tftpboot 0x01000000 zImage

You will also require a root filesystem to do any serious testing. One option is to use the filesystem already in place as I have done below. However, it is unlikely to have your new kernel modules installed.

setenv bootargs console=ttyAMA0 console=tty1 root=/dev/mmcblk0p2 rootwait

The preferred option is to export a root NFS filesystem with your newly installed kernel modules installed. This has the added advantage as you can compile userland binaries on your development box, install them to the NFS export and have instant access to them on your target system.

setenv bootargs console=ttyAMA0 console=tty1 root=/dev/nfs rw nfsroot=192.168.0.251:/home/export/rootfs ip=192.168.0.250:::::eth0

Finally, you can boot the kernel from the memory:

bootz 0x01000000 - 0x02000000

Hopefully you should yield results similar to the following:

Kernel image @ 0x1000000 [ 0x000000 - 0x347bf0 ]
## Flattened Device Tree blob at 02000000
   Booting using the fdt blob at 0x2000000
   Loading Device Tree to 07b49000, end 07b4cf02 ... OK

Starting kernel ...

Uncompressing Linux... done, booting the kernel.
[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 3.15.0 (cpeacock@ubuntu) (gcc version 4.7.3 (Ubuntu/Linaro 4.7.3-12ubuntu1) ) #5 Thu Jun 12 23:45:26 PDT 2014
[    0.000000] CPU: ARMv6-compatible processor [410fb767] revision 7 (ARMv7), cr=00c5387d
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT nonaliasing instruction cache
[    0.000000] Machine model: Raspberry Pi Model B