|
|
(74 intermediate revisions by 6 users not shown) |
Line 1: |
Line 1: |
− | == How to cross compile the linux kernel == | + | =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. |
| | | |
− | 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.
| + | 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. |
| | | |
− | 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.
| + | 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. |
| | | |
− | === 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 Processor Boards 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.
| + | =How to cross compile the linux kernel= |
| + | In order to build the Linux Kernel for IGEP PROCESSOR BOARDS it's recommended to cross-compile the kernel, that's, build the kernel in your HOST machine for a target architecture. |
| | | |
− | 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.
| + | To [[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 ARCH and CROSS_COMPILE. |
| | | |
− | === Requirements ===
| + | The ARCH variable is the architecture you're targetting as the kernel knows it. For IGEP PROCESSOR BOARDS you'll set to "arm" architecture. |
| | | |
− | *'''Ubuntu 8.04 IGEP v2.0 SDK Virtual Machine'''
| + | 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-. |
| | | |
− | === IGEP platforms ===
| + | 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. |
| | | |
− | * IGEP0020 is also know as IGEP v2 platform.
| + | As example, once you've downloaded the kernel source, you should follow these steps: |
− | * IGEP0030 is also know as OMAP3 IGEP module.
| |
| | | |
− | === Supported kernels === | + | make ARCH=arm CROSS_COMPILE=[cross compiler] [defconfig] |
| + | make ARCH=arm CROSS_COMPILE=[cross compiler] zImage modules |
| + | Newest kernels can require build the dtbs too as: |
| | | |
− | First of all setup the build environment sourcing this script
| + | make ARCH=arm CROSS_COMPILE=[cross compiler] zImage modules dtbs |
| | | |
− | source /usr/local/poky/eabi-glibc/arm/environment-setup
| + | The result will be a zImage file in <code>${KERNEL_SOURCES}/arch/arm/boot</code> |
| | | |
− | or
| + | And dabs will be in <code>${KERNEL_SOURCES}/arch/arm/boot/dts</code> |
| | | |
− | source /usr/local/poky/eabi-glibc/environment-setup-arm-none-linux-gnueabi
| + | At last you can install the kernel modules to your target rootfs using this command |
| | | |
− | if you have updated your SDK environment to latest version (see [[Ubuntu 8.04 IGEP v2.0 SDK Virtual Machine]])
| + | make ARCH=arm CROSS_COMPILE=[cross compiler] modules_install INSTALL_MOD_PATH=[path to your target rootfs] |
| + | Example: |
| | | |
− | === Linux OMAP v2.6.33 series (stable) === | + | make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- omap2plus_defconfig<br>make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage modules dtbs<br>make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- modules_install INSTALL_MOD_PATH=/media/user/rootfs |
| | | |
− | Latest stable kernel version is: '''2.6.33.7-0 (20100825)'''
| + | ==Linux kernels== |
| + | ===IGEP Boards based on Texas Instruments Processors=== |
| + | * [[Linux Kernel 2.6.37.y]] (OMAP35xx and DM3730) processor board based. |
| + | * [[Linux Kernel 4.9.y]] (OMAP35xx, DM3730, AM335x) processor board based. |
| + | * [[Linux Kernel 3.8.y]] (OMAP5432) processor board based. |
| | | |
− | Supported platforms: IGEP0020 and IGEP0030
| + | ===IGEP Boards based on NXP-Freescale Processors=== |
| + | * [[Linux Kernel 3.14.28.y]] (iMX6) processor board based. |
| + | * [[Linux Kernel 4.9.y]] (iMX6) processor board based. |
| | | |
− | {| border="1"
| |
− | |-
| |
− | ! '''Platform'''
| |
− | ! '''Sources'''
| |
− | ! '''uImage binary'''
| |
− | ! '''Modules binaries'''
| |
− | |-
| |
− | | IGEP00x0
| |
− | | [http://downloads.igep.es/sources/linux-omap-2.6.33.7-0.tar.gz 2.6.33.7-0] ([http://downloads.igep.es/sources/linux-omap-2.6.33.7-0.tar.gz.md5 md5sum])
| |
− | | [http://downloads.igep.es/binaries/kernel/v2.6.33.7-0/uImage-2.6.33.7-0.bin uImage-2.6.33.7-0.bin] ([http://downloads.igep.es/binaries/kernel/v2.6.33.7-0/uImage-2.6.33.7-0.bin.md5 md5sum])
| |
− | | [http://downloads.igep.es/binaries/kernel/v2.6.33.7-0/linux-omap-modules-2.6.33.7-0.tar.gz modules-2.6.33.7-0] ([http://downloads.igep.es/binaries/kernel/v2.6.33.7-0/linux-omap-modules-2.6.33.7-0.tar.gz.md5 md5sum)]
| |
− | |}
| |
| | | |
− | Download the IGEP Linux kernel sources and follow next steps:
| + | [[Category:Linux Kernel]] |
− | | |
− | wget http://downloads.igep.es/sources/linux-omap-2.6.33.tar.gz
| |
− | tar xzf linux-omap-2.6.33.tar.gz
| |
− | cd [kernel version]
| |
− | make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- <board-config>
| |
− | make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- menuconfig
| |
− | | |
− | where the last line is only required if you want to manualy modify the kernel options and
| |
− | | |
− | *<board-config> is igep0020_defconfig for IGEP v2 platform.
| |
− | *<board-config> is igep0030_defconfig for OMAP3 IGEP module.
| |
− | | |
− | Then build the kernel with:
| |
− | | |
− | make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- 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=arm-none-linux-gnueabi- modules_install INSTALL_MOD_PATH=[path to your target rootfs]
| |
− | | |
− | '''CHANGELOG'''
| |
− | | |
− | *[http://git.igep.es/?p=pub/scm/linux-omap-2.6.git;a=commit;h=41815090632f051ae8f2281eef5827a7cd985837 2010-08-25 Release 2.6.33.7-0]
| |
− | **add SGX drivers pulled from TI SDK 3.01.00.06
| |
− | *[http://git.igep.es/?p=pub/scm/linux-omap-2.6.git;a=commit;h=ed7f5d0c802527869c6f87ded0d0fc620c73ecb2 2010-07-29 Release 2.6.33.6-0]
| |
− | **add support auto RS485 direction control
| |
− | **fix bufferram management for OneNAND
| |
− | **usb: make disconnect and suspend interrupts work again
| |
− | *[http://git.igep.es/?p=pub/scm/linux-omap-2.6.git;a=commit;h=7c1be0293958b1aa661b224cecf96bbf8a34bc61 2010-06-11 Release 2.6.33.5-0]
| |
− | **add support for OMAP3 IGEP module (igep0030)
| |
− | | |
− | === Linux OMAP v2.6.28 series (stable) ===
| |
− | | |
− | Latest stable kernel version is: '''2.6.28.10-3 (20100318)'''
| |
− | | |
− | Supported platforms: IGEP0020
| |
− | | |
− | {| border="1" class="simple"
| |
− | |-
| |
− | | '''Platform'''
| |
− | ! '''Sources'''
| |
− | ! '''uImage binary'''
| |
− | ! '''Modules binaries'''
| |
− | |-
| |
− | | IGEP0020
| |
− | | [http://downloads.igep.es/sources/linux-omap-2.6.28.10-3.tar.gz 2.6.28.10-3] ([http://downloads.igep.es/sources/linux-omap-2.6.28.10-3.tar.gz.md5 md5sum])
| |
− | | [http://downloads.igep.es/binaries/kernel/v2.6.28.10-3/uImage-2.6.28.10-3.bin uImage-2.6.28.10-3.bin] ([http://downloads.igep.es/binaries/kernel/v2.6.28.10-3/uImage-2.6.28.10-3.bin.md5 md5sum])
| |
− | | [http://downloads.igep.es/binaries/kernel/v2.6.28.10-3/linux-omap-modules-2.6.28.10-3.tar.gz modules-2.6.28.10-3] ([http://downloads.igep.es/binaries/kernel/v2.6.28.10-3/linux-omap-modules-2.6.28.10-3.tar.gz.md5 md5sum)]
| |
− | |}
| |
− | | |
− | Download the IGEP v2 Linux kernel sources and follow next steps:
| |
− | | |
− | wget http://downloads.igep.es/sources/linux-omap-2.6.28.tar.gz
| |
− | tar xzf linux-omap-2.6.28.tar.gz
| |
− | cd [kernel version]
| |
− | make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- igep0020_defconfig
| |
− | make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- 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=arm-none-linux-gnueabi- modules_install INSTALL_MOD_PATH=[path to your target rootfs]
| |
− | | |
− | === 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>
| |
− | | |
− | 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=arm-none-linux-gnueabi- omap3_defconfig
| |
− | make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- 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=arm-none-linux-gnueabi- modules_install INSTALL_MOD_PATH=[path to your target rootfs]
| |
− | | |
− | == Reference: Kernel features ==
| |
− | | |
− | {| border="1" cellspacing="2" cellpadding="2" style="color: black; border-collapse: collapse;"
| |
− | |- style="background: none repeat scroll 0% 0% rgb(209, 209, 209); text-align: center;"
| |
− | ! ''' Kernel version '''
| |
− | ! ''' Ethernet '''
| |
− | ! ''' USB OTG '''
| |
− | ! ''' USB host '''
| |
− | ! ''' WIFI SDIO '''
| |
− | ! ''' Bluetooth '''
| |
− | ! ''' Audio IN '''
| |
− | ! ''' Audio OUT '''
| |
− | ! ''' DVI-D (Vesa) '''
| |
− | ! ''' HDMI (720p) '''
| |
− | ! ''' OneNAND '''
| |
− | ! ''' IGEP0020 '''
| |
− | ! ''' IGEP0030 '''
| |
− | |- style="text-align: center;"
| |
− | | style="text-align: left;" | 2.6.33.7-0 ([http://git.igep.es/?p=pub/scm/linux-omap-2.6.git;a=commit;h=41815090632f051ae8f2281eef5827a7cd985837 20100825])
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | |- style="text-align: center;"
| |
− | | style="text-align: left;" | 2.6.33.6-0 ([http://git.igep.es/?p=pub/scm/linux-omap-2.6.git;a=commit;h=ed7f5d0c802527869c6f87ded0d0fc620c73ecb2 20100729])
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | |- style="text-align: center;"
| |
− | | style="text-align: left;" | 2.6.33.5-0 ([http://git.igep.es/?p=pub/scm/linux-omap-2.6.git;a=commit;h=7c1be0293958b1aa661b224cecf96bbf8a34bc61 20100611])
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | |- style="text-align: center;"
| |
− | | style="text-align: left;" | 2.6.33.4-0 ([http://git.igep.es/?p=pub/scm/linux-omap-2.6.git;a=commit;h=e26b3cb4dad330ba57df7d62ada045875d0a3221 20100517])
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% yellow;" | PASS (rev. B only)
| |
− | | style="background: none repeat scroll 0% 0% red;" | FAIL
| |
− | |- style="text-align: center;"
| |
− | | style="text-align: left;" | 2.6.33.2-0 ([http://git.igep.es/?p=pub/scm/linux-omap-2.6.git;a=commit;h=4fe0a5750b1658dc4fc177e25648d263807d3184 20100406])
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% red;" | FAIL
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% red;" | FAIL
| |
− | |- style="text-align: center;"
| |
− | | style="text-align: left;" | 2.6.28.10-3 ([http://git.igep.es/?p=pub/scm/linux-omap-2.6.git;a=commit;h=452be20337eabca99d0e012720b3b8ff05f7097e 20100318])
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% red;" | FAIL
| |
− | |- style="text-align: center;"
| |
− | | style="text-align: left;" | 2.6.28.10-2 ([http://git.igep.es/?p=pub/scm/linux-omap-2.6.git;a=commit;h=2b15dcde40cf725b95141df88e9a7702316e48cf 20091222])
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% yellow;" | PASS (rev. B only)
| |
− | | style="background: none repeat scroll 0% 0% red;" | FAIL
| |
− | |- style="text-align: center;"
| |
− | | style="text-align: left;" | 2.6.28.10-1 ([http://git.igep.es/?p=pub/scm/linux-omap-2.6.git;a=commit;h=ceb0923118949490108f2e637877cd23e0a46e65 20091109])
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% yellow;" | FAIL
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% yellow;" | PASS (rev. B only)
| |
− | | style="background: none repeat scroll 0% 0% red;" | FAIL
| |
− | |- style="text-align: center;"
| |
− | | style="text-align: left;" | 2.6.28.10-0 ([http://git.igep.es/?p=pub/scm/linux-omap-2.6.git;a=commit;h=f12323fa4f65c024970174e79ba8da8f184dceaa 20090903])
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% red;" | FAIL
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% red;" | FAIL
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% yellow;" | PASS (rev. B only)
| |
− | | style="background: none repeat scroll 0% 0% red;" | FAIL
| |
− | |}
| |
− | | |
− | == Reference: QA, diagnosis & tests ==
| |
− | | |
− | === OneNAND ===
| |
− | | |
− | This page describes basic testing of OneNAND/NAND Flash devices, controllers, and wear levelling filesystems.
| |
− | | |
− | ==== Simple read and write test ====
| |
− | | |
− | How to test:
| |
− | | |
− | #run 'nandtest -l 4194304 -k -p 5 /dev/mtd4'.
| |
− | | |
− | Result should be like this:
| |
− | <pre>ECC corrections: 0
| |
− | ECC failures : 0
| |
− | Bad blocks : 0
| |
− | BBT blocks : 0
| |
− | 003c0000: checking...
| |
− | Finished pass 1 successfully
| |
− | 003c0000: checking...
| |
− | Finished pass 2 successfully
| |
− | 003c0000: checking...
| |
− | Finished pass 3 successfully
| |
− | 003c0000: checking...
| |
− | Finished pass 4 successfully
| |
− | 003c0000: checking...
| |
− | Finished pass 5 successfully
| |
− | </pre>
| |
− | {| border="1" cellspacing="2" cellpadding="2" style="color: black; border-collapse: collapse;"
| |
− | |- style="background: none repeat scroll 0% 0% rgb(209, 209, 209); text-align: center;"
| |
− | ! ''' 2.6.28.y '''
| |
− | ! ''' 2.6.33.y '''
| |
− | ! ''' 2.6.34.y '''
| |
− | |- style="text-align: center;"
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | | style="background: none repeat scroll 0% 0% green;" | PASS
| |
− | |}
| |
− | | |
− | ==== Flash filesystem performance ====
| |
− | | |
− | How to test: run
| |
− | | |
− | #flash_eraseall /dev/mtd4
| |
− | #mkdir /mnt/qa
| |
− | #mount -t jffs2 /dev/mtdblock4 /mnt/qa
| |
− | #cd /mnt/qa
| |
− | #bonnie++ -u 0:0 -s 32 -m 16 -r 16
| |
− | | |
− | Result should be like this:
| |
− | <pre>Using uid:0, gid:0.
| |
− | Writing with putc()...done
| |
− | Writing intelligently...done
| |
− | Rewriting...done
| |
− | Reading with getc()...done
| |
− | Reading intelligently...done
| |
− | start 'em...done...done...done...
| |
− | Create files in sequential order...done.
| |
− | Stat files in sequential order...done.
| |
− | Delete files in sequential order...done.
| |
− | Create files in random order...done.
| |
− | Stat files in random order...done.
| |
− | Delete files in random order...done.
| |
− | | |
− | Version 1.03c ------Sequential Output------ --Sequential Input- --Random-
| |
− | -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
| |
− | Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
| |
− | 16 32M 268 8 282 0 311 0 3082 99 +++++ +++ 331.8 1
| |
− | ------Sequential Create------ --------Random Create--------
| |
− | -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
| |
− | files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
| |
− | 16 50 1 2296 24 48 1 48 1 2440 21 48 1
| |
− | 16,32M,268,8,282,0,311,0,3082,99,+++++,+++,331.8,1,16,50,1,2296,24,48,1,48,1,2440,21,48,1
| |
− | </pre>
| |
− | {| border="1" align="left" cellspacing="2" cellpadding="2" width="867" style="color: black; border-collapse: collapse;"
| |
− | |- style="background: none repeat scroll 0% 0% rgb(209, 209, 209); text-align: center;"
| |
− | | colspan="2" | '''Kernel 2.6.33'''<br>
| |
− | | colspan="6" style="text-align: center;" | '''Sequential Output'''
| |
− | | colspan="4" | '''Sequential Input'''
| |
− | | colspan="2" rowspan="2" |
| |
− | '''Random'''<br> '''Seeks'''
| |
− | | |
− | | colspan="1" | <br>
| |
− | | colspan="6" | '''Sequential Create'''
| |
− | | colspan="6" | '''Random Create'''
| |
− | |- style="background: none repeat scroll 0% 0% rgb(209, 209, 209); text-align: center;"
| |
− | | Filesystem<br>
| |
− | | Size(MB)
| |
− | | colspan="2" | Per Char
| |
− | | colspan="2" | Block
| |
− | | colspan="2" | Rewrite
| |
− | | colspan="2" | Per Char
| |
− | | colspan="2" | Block
| |
− | | Files
| |
− | | colspan="2" | Create
| |
− | | colspan="2" | Stat
| |
− | | colspan="2" | Delete
| |
− | | colspan="2" | Create
| |
− | | colspan="2" | Stat
| |
− | | colspan="2" | Delete
| |
− | |- style="background: none repeat scroll 0% 0% rgb(209, 209, 209); text-align: center;"
| |
− | | colspan="2" | <br>
| |
− | | <font size="-2">K/sec</font>
| |
− | | <font size="-2">%CPU</font>
| |
− | | <font size="-2">K/sec</font>
| |
− | | <font size="-2">%CPU</font>
| |
− | | <font size="-2">K/sec</font>
| |
− | | <font size="-2">%CPU</font>
| |
− | | <font size="-2">K/sec</font>
| |
− | | <font size="-2">%CPU</font>
| |
− | | <font size="-2">K/sec</font>
| |
− | | <font size="-2">% CPU</font>
| |
− | | <font size="-2">/ sec</font>
| |
− | | <font size="-2">%CPU</font>
| |
− | | <br>
| |
− | | <font size="-2">/sec</font>
| |
− | | <font size="-2">%CPU</font>
| |
− | | <font size="-2">/ sec</font>
| |
− | | <font size="-2">%CPU</font>
| |
− | | <font size="-2">/sec</font>
| |
− | | <font size="-2">%CPU</font>
| |
− | | <font size="-2">/sec</font>
| |
− | | <font size="-2">%CPU</font>
| |
− | | <font size="-2">/ sec</font>
| |
− | | <font size="-2">%CPU</font>
| |
− | | <font size="-2">/sec</font>
| |
− | | <font size="-2">%CPU</font>
| |
− | |-
| |
− | | style="text-align: center;" | '''JFFS2'''
| |
− | | style="text-align: center;" | 32M
| |
− | | style="text-align: center;" | 268
| |
− | | style="text-align: center;" | 8
| |
− | | 282
| |
− | | style="text-align: center;" | 0
| |
− | | style="text-align: center;" | 311
| |
− | | style="text-align: center;" | 0
| |
− | | style="text-align: center;" | 3082
| |
− | | style="text-align: center;" | 99
| |
− | | style="text-align: center;" | +++++
| |
− | | style="text-align: center;" | +++
| |
− | | style="text-align: center;" | 331.8
| |
− | | style="text-align: center;" | 1
| |
− | | style="text-align: center;" | 16
| |
− | | style="text-align: center;" | 50
| |
− | | style="text-align: center;" | 1
| |
− | | style="text-align: center;" | 2296
| |
− | | style="text-align: center;" | 24
| |
− | | style="text-align: center;" | 48
| |
− | | style="text-align: center;" | 1
| |
− | | 48
| |
− | | style="text-align: center;" | 1
| |
− | | style="text-align: center;" | 2440
| |
− | | style="text-align: center;" | 21
| |
− | | style="text-align: center;" | 48
| |
− | | style="text-align: center;" | 1
| |
− | |}
| |
− | | |
− | [[Category:Software|Kernel]]
| |
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.
This How-To is meant to be a starting point for people to learn build a kernel image for IGEP Processor Boards as quickly and easily as possible.
In order to build the Linux Kernel for IGEP PROCESSOR BOARDS it's recommended to cross-compile the kernel, that's, build the kernel in your HOST machine for a target architecture.
The ARCH variable is the architecture you're targetting as the kernel knows it. For IGEP PROCESSOR BOARDS you'll set to "arm" architecture.
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.
As example, once you've downloaded the kernel source, you should follow these steps:
At last you can install the kernel modules to your target rootfs using this command