Personal tools

Log in

Changes

From IGEP - ISEE Wiki

Jump to: navigation, search

Linux Kernel 4.9.y

1,749 bytes added, 16:09, 7 May 2018
no edit summary
=What is Linux?=
[[Image:tux.png|left]][http://www.kernel.org The Linux Kernel Archives]Linux is a clone of the operating system Unix, written from scratch by Linus Torvalds with assistance from a loosely-knit team of hackers across the Net. It aims towards POSIX and Single UNIX Specification compliance.
It has all the features you would expect in a modern fully-fledged Unix, including true multitasking, virtual memory, shared libraries, demand loading, shared copy-on-write executables, proper memory management, and multistack networking including IPv4 and IPv6.
Although originally developed first for 32-bit x86-based PCs (386 or higher), today Linux also runs on a multitude of other processor architectures, in both 32- and 64-bit variants.
 
=<span id="Introduction" class="mw-headline">Introduction</span>=
<span style="color: #808080;">This article is for specific 2.6.37.y Linux kernel branch series. All the steps has been tested with [http://releases.ubuntu.com/12.04/ubuntu-12.04.5-desktop-amd64.iso Ubuntu 12.04 64b] and [http://labs.isee.biz/index.php/How_to_setup_a_cross_compiler#IGEP_OMAP3 IGEP SDK Yocto Toolchain 1.2.2-3].</span>
<span style="color: #000000;">In order to build the Linux Kernel for IGEP PROCESSOR BOARDS it is recommended to cross-compile the kernel, that means to build the kernel in your HOST machine for a target architecture.</span>
 
To [index.php/Ubuntu_16.04_LTS_Toolchain setup the cross-compiling] there are two fundamental variables that the kernel uses to select the target architecture. Normally these values are guessed based on your build environment, but of course that environment here does not match our target embedded system, so we'll need to override them. The variables in question are:
 
* <u>''' ARCH'''</u>''':''' The ARCH variable is the architecture you're targeting as the kernel knows it. For IGEP PROCESSOR BOARDS you'll set to "arm" architecture.
 
* <u>'''CROSS_COMPILE'''</u>''':''' Hopefully the CROSS_COMPILE variable is pretty self-explanatory. Set this to the prefix of your toolchain (including the trailing dash "-"). So if your toolchain is invoked as say arm-linux-gnueabihf-gcc, just chop off that trailing gcc and that's what you use: '''arm-linux-gnueabihf-'''
 
There is an additional variable, '''INSTALL_MOD_PATH''', which defines where the /lib directory will be created, and all the modules stored. While you don't have to transfer the kernel sources to your target device, if you build any modules, you'll want this directory.
 
The general process that it has to be followed in order to compile your Linux Kernel is usually the same:
 
# Clone the git from ISEE git with the latest stable version of the corresponding Linux Kernel.
# Select the corresponding branch inside the git repository.
# Select the correct default configuration (defconfig)
# Compile the zImage, Device Tree and Modules of that configuration.
 
=<span id="How_to_cross_compile_the_linux_kernel" class="mw-headline">Prepare the environment<br /></span>=
<span class="mw-headline">In order to compile the Linux Kernel it is necessary to prepare a suitable work environment installing several necessary packages.</span>
 
 
=<span id="How_to_cross_compile_the_linux_kernel" class="mw-headline">How to cross compile the linux kernel</span>=
<span style="color: #808080000000;">---- </span>
Para dar soporte a una nueva board basada en imx en el kernel es necesario tener un fichero de configuracion defconfig (.config) y  una dtb.
59
edits