Difference between revisions of "The Linux kernel"

From IGEP - ISEE Wiki

Jump to: navigation, search
Line 5: Line 5:
 
Unlike desktop and server versions of Linux, embedded versions of Linux are designed for devices with relatively limited resources, such as cell phones and set-top boxes. Due to concerns such as cost and size, embedded devices usually have much less RAM and secondary storage than desktop computers, and are likely to use flash memory instead of a hard drive. Since embedded devices serve specific rather than general purposes, developers optimize their embedded Linux distributions to target specific hardware configurations and usage situations. These optimizations can include reducing the number of device drivers and software applications, and modifying the Linux kernel to be a real-time operating system.  
 
Unlike desktop and server versions of Linux, embedded versions of Linux are designed for devices with relatively limited resources, such as cell phones and set-top boxes. Due to concerns such as cost and size, embedded devices usually have much less RAM and secondary storage than desktop computers, and are likely to use flash memory instead of a hard drive. Since embedded devices serve specific rather than general purposes, developers optimize their embedded Linux distributions to target specific hardware configurations and usage situations. These optimizations can include reducing the number of device drivers and software applications, and modifying the Linux kernel to be a real-time operating system.  
  
=== Overview of How-To  ===
+
== Overview of How-To  ==
  
 
This How-To is meant to be a starting point for people to learn build a kernel image for IGEP v2 devices as quickly and easily as possible.  
 
This How-To is meant to be a starting point for people to learn build a kernel image for IGEP v2 devices as quickly and easily as possible.  
Line 11: Line 11:
 
This How-To works with the Ubuntu 8.04 IGEP v2.0 SDK Virtual Machine but most of the contents are valid also for other GNU/Linux distributions. We do not issue any guarantee that this will work on other distributions.  
 
This How-To works with the Ubuntu 8.04 IGEP v2.0 SDK Virtual Machine but most of the contents are valid also for other GNU/Linux distributions. We do not issue any guarantee that this will work on other distributions.  
  
=== Requirements  ===
+
== IGEP platforms ==
 
 
*[[Ubuntu_8.04_IGEP_v2.0_SDK_Virtual_Machine|'''Ubuntu 8.04 IGEP v2.0 SDK Virtual Machine''']]
 
 
 
=== IGEP platforms ===
 
  
 
* IGEP0020 is also know as IGEP v2 platform.
 
* IGEP0020 is also know as IGEP v2 platform.
* IGEP0030 is also know as OMAP3 IGEP module.
+
* IGEP0030 is also know as IGEP COM MODULE.
 
+
* IGEP0032 is also know as IGEP COM PROTON.
=== Supported kernels  ===
 
 
 
First of all setup the build environment sourcing this script
 
 
 
source /usr/local/poky/eabi-glibc/arm/environment-setup
 
 
 
or
 
  
source /usr/local/poky/eabi-glibc/environment-setup-arm-none-linux-gnueabi
+
=== Linux OMAP v2.6.37 series ===
  
if you have updated your SDK environment to latest version (see [[Ubuntu 8.04 IGEP v2.0 SDK Virtual Machine]])
+
See the [[Linux Kernel 2.6.37.y]] article
  
==== Linux OMAP v2.6.35 series ====
+
=== Linux OMAP v2.6.35 series ===
  
 
See the [[Linux Kernel 2.6.35.y]] article
 
See the [[Linux Kernel 2.6.35.y]] article
  
==== Linux mainline tree (development)  ====
+
=== Linux mainline tree (development)  ===
  
 
<span style="color: rgb(255, 0, 0);">'''Note:''' The 'master' branch is where the development work takes place and you should use this if you're after to work with the latest cutting edge developments. It is possible trunk can suffer temporary periods of instability while new features are developed and if this is undesirable we recommend using one of the release branches. '''Use ONLY for development purposes.'''</span>  
 
<span style="color: rgb(255, 0, 0);">'''Note:''' The 'master' branch is where the development work takes place and you should use this if you're after to work with the latest cutting edge developments. It is possible trunk can suffer temporary periods of instability while new features are developed and if this is undesirable we recommend using one of the release branches. '''Use ONLY for development purposes.'''</span>  
Line 51: Line 40:
 
and build with  
 
and build with  
  
  make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- omap2plus_defconfig
+
  make ARCH=arm CROSS_COMPILE=[cross compiler] omap2plus_defconfig
  make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- uImage modules
+
  make ARCH=arm CROSS_COMPILE=[cross compiler] uImage modules
  
 
The result will be an uImage file in arch/arm/boot directory. You can install the kernel modules to your target rootfs  
 
The result will be an uImage file in arch/arm/boot directory. You can install the kernel modules to your target rootfs  
  
  make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- modules_install INSTALL_MOD_PATH=[path to your target rootfs]
+
  make ARCH=arm CROSS_COMPILE=[cross compiler] modules_install INSTALL_MOD_PATH=[path to your target rootfs]
  
 
=See also=
 
=See also=
*[[Linux Kernel 2.6.35.y]]
 
 
*[[How to setup a cross compiler]]
 
*[[How to setup a cross compiler]]
  

Revision as of 16:25, 19 January 2012

How to cross compile the linux kernel

Embedded Linux is the use of a Linux operating system in embedded computer systems such as mobile phones, personal digital assistants, media players, set-top boxes, and other consumer electronics devices, networking equipment, machine control, industrial automation, navigation equipment and medical instruments.

Unlike desktop and server versions of Linux, embedded versions of Linux are designed for devices with relatively limited resources, such as cell phones and set-top boxes. Due to concerns such as cost and size, embedded devices usually have much less RAM and secondary storage than desktop computers, and are likely to use flash memory instead of a hard drive. Since embedded devices serve specific rather than general purposes, developers optimize their embedded Linux distributions to target specific hardware configurations and usage situations. These optimizations can include reducing the number of device drivers and software applications, and modifying the Linux kernel to be a real-time operating system.

Overview of How-To

This How-To is meant to be a starting point for people to learn build a kernel image for IGEP v2 devices as quickly and easily as possible.

This How-To works with the Ubuntu 8.04 IGEP v2.0 SDK Virtual Machine but most of the contents are valid also for other GNU/Linux distributions. We do not issue any guarantee that this will work on other distributions.

IGEP platforms

  • IGEP0020 is also know as IGEP v2 platform.
  • IGEP0030 is also know as IGEP COM MODULE.
  • IGEP0032 is also know as IGEP COM PROTON.

Linux OMAP v2.6.37 series

See the Linux Kernel 2.6.37.y article

Linux OMAP v2.6.35 series

See the Linux Kernel 2.6.35.y article

Linux mainline tree (development)

Note: The 'master' branch is where the development work takes place and you should use this if you're after to work with the latest cutting edge developments. It is possible trunk can suffer temporary periods of instability while new features are developed and if this is undesirable we recommend using one of the release branches. Use ONLY for development purposes.

Additional patches can be found at http://patchwork.kernel.org/project/linux-omap/list

This Linux kernel is also considered as a downstream of tmlind's Linux kernel. The main difference between this tree and the linux-omap tree is that the igep OMAP tree has unpublished patches for IGEP v2 support.

Clone GIT repository from git.igep.es

git clone git://git.igep.es/pub/scm/linux-omap-2.6.git
cd linux-omap-2.6

and build with

make ARCH=arm CROSS_COMPILE=[cross compiler] omap2plus_defconfig
make ARCH=arm CROSS_COMPILE=[cross compiler] uImage modules

The result will be an uImage file in arch/arm/boot directory. You can install the kernel modules to your target rootfs

make ARCH=arm CROSS_COMPILE=[cross compiler] modules_install INSTALL_MOD_PATH=[path to your target rootfs]

See also