Difference between revisions of "Linux Kernel 4.9.y"

From IGEP - ISEE Wiki

Jump to: navigation, search
(Created page with "=<span id="Introduction" class="mw-headline" style="color: #808080;">Introduction</span>= <span style="color: #808080;">This article is for specific 2.6.37.y Linux kernel bran...")
 
Line 1: Line 1:
=<span id="Introduction" class="mw-headline" style="color: #808080;">Introduction</span>=
+
=<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: #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>
  
Line 10: Line 10:
 
<span style="color: #808080;">Depending the Kernel configuration used, 2.6.37.y series support the following IGEP OMAP3 Processor Boards:</span>
 
<span style="color: #808080;">Depending the Kernel configuration used, 2.6.37.y series support the following IGEP OMAP3 Processor Boards:</span>
  
==<span id="igep00x0_defconfig" class="mw-headline" style="color: #808080;">igep00x0_defconfig</span>==
+
==<span id="igep00x0_defconfig" class="mw-headline">igep00x0_defconfig</span>==
 
* <span style="color: #808080;">IGEP v2 '''(WIFI/no WIFI)''' (IGEP0020'''RC''')</span>
 
* <span style="color: #808080;">IGEP v2 '''(WIFI/no WIFI)''' (IGEP0020'''RC''')</span>
 
* <span style="color: #808080;">IGEP COM MODULE / ELECTRON '''(WIFI/no WIFI)''' (IGEP0030'''RE''')</span>
 
* <span style="color: #808080;">IGEP COM MODULE / ELECTRON '''(WIFI/no WIFI)''' (IGEP0030'''RE''')</span>
Line 24: Line 24:
 
* <span style="color: #808080;">IGEP COM MODULE / ELECTRON '''(no WIFI)'''</span>
 
* <span style="color: #808080;">IGEP COM MODULE / ELECTRON '''(no WIFI)'''</span>
  
=<span id="Setup_IGEP_SDK_Yocto_Toolchain_1.2.2-3" class="mw-headline" style="color: #808080;">Setup IGEP SDK Yocto Toolchain 1.2.2-3</span>=
+
=<span id="Setup_IGEP_SDK_Yocto_Toolchain_1.2.2-3" class="mw-headline">Setup IGEP SDK</span><span id="Setup_IGEP_SDK_Yocto_Toolchain_1.2.2-3" class="mw-headline" style="color: #808080;"> Yocto Toolchain 1.2.2-3</span>=
==<span id="Install" class="mw-headline" style="color: #808080;">Install</span>==
+
==<span id="Install" class="mw-headline">Install</span>==
<span style="color: #808080;">Download - [http://www.isee.biz/support/downloads/item/igep-sdk-yocto-toolchain-1-2-2-3 isee.biz]</span>
+
<span style="color: #000000;">Download - [http://www.isee.biz/support/downloads/item/igep-sdk-yocto-toolchain-1-2-2-3 isee.biz]</span>
  
<span style="color: #808080;">follow the next steps:</span>
+
<span style="color: #000000;">follow the next steps:</span>
  
* <span style="color: #808080;">Open a terminal</span>
+
* <span style="color: #000000;">Open a terminal</span>
* <span style="color: #808080;">Located your downloaded file, in my case is inside /home/jdoe/Downloads:</span>
+
* <span style="color: #000000;">Located your downloaded file, in my case is inside /home/jdoe/Downloads:</span>
  
<pre><span style="color: #808080;">jdoe@ubuntu ~ $ cd Downloads/</span></pre>
+
<pre><span style="color: #000000;">jdoe@ubuntu ~ $ cd Downloads/</span></pre>
* <span style="color: #808080;">Extract binaries in root directory with root privileges</span>
+
* <span style="color: #000000;">Extract binaries in root directory with root privileges</span>
  
<pre><span style="color: #808080;">jdoe@ubuntu ~/Downloads $ sudo tar jxf igep-sdk-yocto-toolchain-*.tar.bz2 -C /</span></pre>
+
<pre><span style="color: #000000;">jdoe@ubuntu ~/Downloads $ sudo tar jxf igep-sdk-yocto-toolchain-*.tar.bz2 -C /</span></pre>
* <span style="color: #808080;">Make sure that binaries are installed correctly.</span>
+
* <span style="color: #000000;">Make sure that binaries are installed correctly.</span>
  
<pre><span style="color: #808080;">jdoe@ubuntu ~/Downloads $ ls /opt/poky/
+
<pre><span style="color: #808080;"><span style="color: #000000;">jdoe@ubuntu ~/Downloads $ ls /opt/poky/
1.2  1.2.1 </span></pre>
+
1.2  1.2.1</span> </span></pre>
==<span id="Configure" class="mw-headline" style="color: #808080;">Configure</span>==
+
==<span id="Configure" class="mw-headline" style="color: #000000;">Configure</span>==
<span style="color: #808080;">Open a terminal and type:</span>
+
<span style="color: #000000;">Open a terminal and type:</span>
  
<pre><span style="color: #808080;"> export PATH=/opt/poky/1.2/sysroots/i686-pokysdk-linux/usr/bin/armv7a-vfp-neon-poky-linux-gnueabi:$PATH  </span></pre>
+
<pre><span style="color: #000000;"> export PATH=/opt/poky/1.2/sysroots/i686-pokysdk-linux/usr/bin/armv7a-vfp-neon-poky-linux-gnueabi:$PATH  </span></pre>
=<span id="Compiled_binaries" class="mw-headline" style="color: #808080;">Compiled binaries</span>=
+
=<span id="Compiled_binaries" class="mw-headline" style="color: #000000;">Compiled binaries</span>=
 
<span class="mw-headline" style="color: #808080;">Binaries: latest stable kernel version IGEP OMAP3 devices is: '''2.6.37-12 (20161206)'''</span>
 
<span class="mw-headline" style="color: #808080;">Binaries: latest stable kernel version IGEP OMAP3 devices is: '''2.6.37-12 (20161206)'''</span>
  
Line 68: Line 68:
 
||<span style="color: #808080;">[http://downloads.isee.biz/pub/releases/linux_kernel/v2.6.37-12/ti-connectivity-wilink8-0.tar.gz ti-connectivity-wilink8-0]([http://downloads.isee.biz/pub/releases/linux_kernel/v2.6.37-12/ti-connectivity-wilink8-0.tar.gz.md5 md5sum)]</span>
 
||<span style="color: #808080;">[http://downloads.isee.biz/pub/releases/linux_kernel/v2.6.37-12/ti-connectivity-wilink8-0.tar.gz ti-connectivity-wilink8-0]([http://downloads.isee.biz/pub/releases/linux_kernel/v2.6.37-12/ti-connectivity-wilink8-0.tar.gz.md5 md5sum)]</span>
 
|}
 
|}
=<span id="Build_kernel_from_sources" class="mw-headline" style="color: #808080;">Build kernel from sources</span>=
+
=<span id="Build_kernel_from_sources" class="mw-headline" style="color: #000000;">Build kernel from sources</span>=
<span style="color: #808080;">'''Download''' the latest stable version sources and follow next steps:</span>
+
<span style="color: #000000;">'''Download''' the latest stable version sources and follow next steps:</span>
  
 
<pre><span style="color: #808080;">wget <a class="external free" href="http://downloads.isee.biz/pub/releases/linux_kernel/v2.6.37-12/linux-omap-2.6.37-12.tar.gz" target="_blank" rel="nofollow noreferrer noopener">http://downloads.isee.biz/pub/releases/linux_kernel/v2.6.37-12/linux-omap-2.6.37-12.tar.gz</a>
 
<pre><span style="color: #808080;">wget <a class="external free" href="http://downloads.isee.biz/pub/releases/linux_kernel/v2.6.37-12/linux-omap-2.6.37-12.tar.gz" target="_blank" rel="nofollow noreferrer noopener">http://downloads.isee.biz/pub/releases/linux_kernel/v2.6.37-12/linux-omap-2.6.37-12.tar.gz</a>
Line 75: Line 75:
 
cd linux-omap-2.6.37-12
 
cd linux-omap-2.6.37-12
 
</span></pre>
 
</span></pre>
<span style="color: #808080;">Also, it could download from GIT Repositories ([http://git.isee.biz/ http://git.isee.biz/]) and test the last unstable version at your own risk (see "''Linux mainline tree (development)''" chapter in [index.php/The_Linux_kernel The Linux kernel])</span>
+
<span style="color: #000000;">Also, it could download from GIT Repositories ([http://git.isee.biz/ http://git.isee.biz/]) and test the last unstable version at your own risk (see "''Linux mainline tree (development)''" chapter in [index.php/The_Linux_kernel The Linux kernel])</span>
  
==<span id="Important_procedures" class="mw-headline" style="color: #808080;">Important procedures</span>==
+
==<span id="Important_procedures" class="mw-headline" style="color: #000000;">Important procedures</span>==
 
* <span style="color: #808080;">Remove rootfs modules binaries from any previous Kernel</span>
 
* <span style="color: #808080;">Remove rootfs modules binaries from any previous Kernel</span>
 
* <span style="color: #808080;">If you switch to another configuration, clean kernel sources with command: make mrproper</span>
 
* <span style="color: #808080;">If you switch to another configuration, clean kernel sources with command: make mrproper</span>
  
==<span id="igep00x0_defconfig_2" class="mw-headline" style="color: #808080;">igep00x0_defconfig</span>==
+
==<span id="igep00x0_defconfig_2" class="mw-headline" style="color: #808080;">igep00x0_<span style="color: #000000;">defconfig</span></span>==
<span style="color: #808080;">'''Configure''' Linux kernel for IGEP OMAP3 old Marvell WIFI:</span>
+
<span style="color: #808080;"><span style="color: #000000;">'''Configure''' Linux kernel</span> for IGEP OMAP3 old Marvell WIFI:</span>
  
 
<pre><span style="color: #808080;">make ARCH=arm igep00x0_defconfig
 
<pre><span style="color: #808080;">make ARCH=arm igep00x0_defconfig
 
</span></pre>
 
</span></pre>
<span style="color: #808080;">Then '''build''' the kernel and kernel modules. The result will be an ''zImage'' file in arch/arm/boot directory. Execute:</span>
+
<span style="color: #808080;"><span style="color: #000000;">Then '''build''' the kernel and kernel modules.</span> The result will be an ''zImage'' file in arch/arm/boot directory. Execute:</span>
  
 
<pre><span style="color: #808080;">make ARCH=arm CROSS_COMPILE=[your cross compiler] zImage modules
 
<pre><span style="color: #808080;">make ARCH=arm CROSS_COMPILE=[your cross compiler] zImage modules
 
</span></pre>
 
</span></pre>
<span style="color: #808080;">For example, if you are using IGEP SDK Yocto Toolchain then you should execute following cmdline:</span>
+
<span style="color: #000000;">For example, if you are using IGEP SDK Yocto Toolchain then you should execute following cmdline:</span>
  
 
<pre><span style="color: #808080;">make ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi-  zImage modules
 
<pre><span style="color: #808080;">make ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi-  zImage modules
 
</span></pre>
 
</span></pre>
<span style="color: #808080;">You can '''install''' the kernel image to your target boot</span>
+
<span style="color: #000000;">You can '''install''' the kernel image to your target boot</span>
  
 
<pre><span style="color: #808080;">cp arch/arm/boot/zImage /media/boot/zImage
 
<pre><span style="color: #808080;">cp arch/arm/boot/zImage /media/boot/zImage
 
</span></pre>
 
</span></pre>
<span style="color: #808080;">You can '''install''' the kernel modules to your target rootfs</span>
+
<span style="color: #000000;">You can '''install''' the kernel modules to your target rootfs</span>
  
 
<pre><span style="color: #808080;">make ARCH=arm modules_install INSTALL_MOD_PATH=[path to your target rootfs]</span></pre>
 
<pre><span style="color: #808080;">make ARCH=arm modules_install INSTALL_MOD_PATH=[path to your target rootfs]</span></pre>
=<span id="Kernel_Parameters" class="mw-headline" style="color: #808080;">Kernel Parameters</span>=
+
=<span id="Kernel_Parameters" class="mw-headline" style="color: #000000;">Kernel Parameters</span>=
<span style="color: #808080;">This chapter describes some [index.php/How_do_I_edit_my_kernel_command_line kernel command line] parameters you can pass to the kernel during system startup. They also depend on the presence of the hardware with which they are associated.</span>
+
<span style="color: #000000;">This chapter describes some [index.php/How_do_I_edit_my_kernel_command_line kernel command line] parameters you can pass to the kernel during system startup. They also depend on the presence of the hardware with which they are associated.</span>
  
<span style="color: #808080;">The '''board.ei485''' parameter allows to use UART1 as RS232 port instead of EI485</span>
+
<span style="color: #000000;">The '''board.ei485''' parameter allows to use UART1 as RS232 port instead of EI485</span>
  
<pre><span style="color: #808080;"> board.ei485=  [yes, no]
+
<pre><span style="color: #000000;"> board.ei485=  [yes, no]
               Format: <string>
+
               Format:  
 
               no: disable ei485, use UART1 as RS232, supported by igep0020
 
               no: disable ei485, use UART1 as RS232, supported by igep0020
 
               default: yes
 
               default: yes
 
</span></pre>
 
</span></pre>
<span style="color: #808080;">The '''buddy''' parameter allows enable or disable expansion boards</span>
+
<span style="color: #000000;">The '''buddy''' parameter allows enable or disable expansion boards</span>
  
<pre><span style="color: #808080;"> buddy=  [igep0022, base0010]
+
<pre><span style="color: #000000;"> buddy=  [igep0022, base0010]
           Format: <string>
+
           Format:  
 
           igep0022: enable expansion board, supported by igep0020
 
           igep0022: enable expansion board, supported by igep0020
 
                     board
 
                     board
Line 123: Line 123:
 
           default: none
 
           default: none
 
</span></pre>
 
</span></pre>
<span style="color: #808080;">The '''buddy.revision''' parameter allows to pass hardware revision for buddy boards</span>
+
<span style="color: #000000;">The '''buddy.revision''' parameter allows to pass hardware revision for buddy boards</span>
  
<pre><span style="color: #808080;"> buddy.revision= [A, B]
+
<pre><span style="color: #000000;"> buddy.revision= [A, B]
           Format: <string>
+
           Format:  
 
           A: enable hardware buddy revision A, only available for base0010
 
           A: enable hardware buddy revision A, only available for base0010
 
           B: enable hardware buddy revision B, only available for base0010
 
           B: enable hardware buddy revision B, only available for base0010
 
           default: A
 
           default: A
 
</span></pre>
 
</span></pre>
<span style="color: #808080;">The '''buddy.modem''' parameter allows enable or disable modem</span>
+
<span style="color: #000000;">The '''buddy.modem''' parameter allows enable or disable modem</span>
  
<pre><span style="color: #808080;"> buddy.modem=  [yes]
+
<pre><span style="color: #000000;"> buddy.modem=  [yes]
               Format: <string>
+
               Format:  
 
               yes: enable modem on buddy board, supported by igep0022 expansion board.
 
               yes: enable modem on buddy board, supported by igep0022 expansion board.
 
               default: none
 
               default: none
 
</span></pre>
 
</span></pre>
==<span id="Scenarios" class="mw-headline" style="color: #808080;">Scenarios</span>==
+
==<span id="Scenarios" class="mw-headline" style="color: #000000;">Scenarios</span>==
<span style="color: #808080;">Consider the following situations:</span>
+
<span style="color: #000000;">Consider the following situations:</span>
  
<span style="color: #808080;">'''Scenario A.''' You have and IGEP0020 board plus IGEP0022 expansion board, then you should add in your [index.php/How_do_I_edit_my_kernel_command_line kernel command line]</span>
+
<span style="color: #000000;">'''Scenario A.''' You have and IGEP0020 board plus IGEP0022 expansion board, then you should add in your [index.php/How_do_I_edit_my_kernel_command_line kernel command line]</span>
  
<pre><span style="color: #808080;">buddy=igep0022
+
<pre><span style="color: #000000;">buddy=igep0022
 
</span></pre>
 
</span></pre>
<span style="color: #808080;">Optionally, to enable the IGEP0022 modem which is disabled by default you should add in your [index.php/How_do_I_edit_my_kernel_command_line kernel command line]</span>
+
<span style="color: #000000;">Optionally, to enable the IGEP0022 modem which is disabled by default you should add in your [index.php/How_do_I_edit_my_kernel_command_line kernel command line]</span>
  
<pre><span style="color: #808080;">buddy=igep0022 buddy.modem=yes
+
<pre><span style="color: #000000;">buddy=igep0022 buddy.modem=yes
 
</span></pre>
 
</span></pre>
<span style="color: #808080;">NOTE: UART2 can be used for bluetooth OR modem in expansion board but NOT at same time. They are INCOMPATIBLE.</span>
+
<span style="color: #000000;">NOTE: UART2 can be used for bluetooth OR modem in expansion board but NOT at same time. They are INCOMPATIBLE.</span>
  
<span style="color: #808080;">'''Scenario B.''' You have and IGEP0030 board plus BASE0010 expansion board, then you should add in your [index.php/How_do_I_edit_my_kernel_command_line kernel command line]</span>
+
<span style="color: #000000;">'''Scenario B.''' You have and IGEP0030 board plus BASE0010 expansion board, then you should add in your [index.php/How_do_I_edit_my_kernel_command_line kernel command line]</span>
  
<pre><span style="color: #808080;">buddy=base0010
+
<pre><span style="color: #000000;">buddy=base0010
 
</span></pre>
 
</span></pre>
<span style="color: #808080;">'''Scenario C.''' You have and IGEP0030 board plus BASE0010 Rev. B expansion board, then you should add in your [index.php/How_do_I_edit_my_kernel_command_line kernel command line]</span>
+
<span style="color: #000000;">'''Scenario C.''' You have and IGEP0030 board plus BASE0010 Rev. B expansion board, then you should add in your [index.php/How_do_I_edit_my_kernel_command_line kernel command line]</span>
  
<pre><span style="color: #808080;">buddy=base0010 buddy.revision=B
+
<pre><span style="color: #000000;">buddy=base0010 buddy.revision=B
 
</span></pre>
 
</span></pre>
<span style="color: #808080;">'''Scenario D.''' You have and IGEP0032 board plus BASE0010 Rev. B expansion board, then you should add in your [index.php/How_do_I_edit_my_kernel_command_line kernel command line]</span>
+
<span style="color: #000000;">'''Scenario D.''' You have and IGEP0032 board plus BASE0010 Rev. B expansion board, then you should add in your [index.php/How_do_I_edit_my_kernel_command_line kernel command line]</span>
  
<pre><span style="color: #808080;">buddy=base0010 buddy.revision=B
+
<pre><span style="color: #000000;">buddy=base0010 buddy.revision=B
 
</span></pre>
 
</span></pre>
<span style="color: #808080;">'''Scenario E.''' You have and IGEP0030 board plus ILMS0015 expansion board, then you should add in your [index.php/How_do_I_edit_my_kernel_command_line kernel command line]</span>
+
<span style="color: #000000;">'''Scenario E.''' You have and IGEP0030 board plus ILMS0015 expansion board, then you should add in your [index.php/How_do_I_edit_my_kernel_command_line kernel command line]</span>
  
<pre><span style="color: #808080;">buddy=ilms0015
+
<pre><span style="color: #000000;">buddy=ilms0015
 
</span></pre>
 
</span></pre>
=<span id="Layout" class="mw-headline" style="color: #808080;">Layout</span>=
+
=<span id="Layout" class="mw-headline" style="color: #000000;">Layout</span>=
 
<span style="color: #808080;">Machine specific files are located in '''arch/arm/mach-omap2/''' directory with name '''board-igep*.c''' :</span>
 
<span style="color: #808080;">Machine specific files are located in '''arch/arm/mach-omap2/''' directory with name '''board-igep*.c''' :</span>
  
Line 180: Line 180:
 
* <span style="color: #808080;">'''exp-ilms0015.c''': For ILMS0015 expansion board</span>
 
* <span style="color: #808080;">'''exp-ilms0015.c''': For ILMS0015 expansion board</span>
  
=<span id="Adding_New_Expansion_Boards" class="mw-headline" style="color: #808080;">Adding New Expansion Boards</span>=
+
=<span id="Adding_New_Expansion_Boards" class="mw-headline" style="color: #000000;">Adding New Expansion Boards</span>=
 
<span style="color: #808080;">This chapter is meant to be a starting point for people to learn how to add your own expansion board in three steps.</span>
 
<span style="color: #808080;">This chapter is meant to be a starting point for people to learn how to add your own expansion board in three steps.</span>
  
 
==<span id="Step_1:_Add_new_expansion_board_file" class="mw-headline" style="color: #808080;">Step 1: Add new expansion board file</span>==
 
==<span id="Step_1:_Add_new_expansion_board_file" class="mw-headline" style="color: #808080;">Step 1: Add new expansion board file</span>==
<span style="color: #808080;">As you can see in Layout chapter, an expansion board is called exp-<your board name>.c and should be located in arch/arm/mach-omap2 directory, so the first step will be add a new file for your new expansion board. Following example creates a new expansion board file called exp-dummy.c (arch/arm/mach-omap2/exp-dummy.c)</span>
+
<span style="color: #808080;">As you can see in Layout chapter, an expansion board is called exp-.c and should be located in arch/arm/mach-omap2 directory, so the first step will be add a new file for your new expansion board. Following example creates a new expansion board file called exp-dummy.c (arch/arm/mach-omap2/exp-dummy.c)</span>
  
 
<pre><span style="color: #808080;"> #include <linux/kernel.h>
 
<pre><span style="color: #808080;"> #include <linux/kernel.h>
Line 276: Line 276:
 
<span style="color: #808080;">Try to change rootfs owner from root to your username.</span>
 
<span style="color: #808080;">Try to change rootfs owner from root to your username.</span>
  
<pre><span style="color: #808080;"> sudo chown <username> -R /media/rootfs</span></pre>
+
<pre><span style="color: #808080;"> sudo chown -R /media/rootfs</span></pre>
 
==<span id="wlcore:_Unknown_symbol" class="mw-headline" style="color: #808080;">wlcore: Unknown symbol</span>==
 
==<span id="wlcore:_Unknown_symbol" class="mw-headline" style="color: #808080;">wlcore: Unknown symbol</span>==
 
<span style="color: #808080;">Probably, you didn't erase old module binaries from rootfs. Open IGEP terminal and type:</span>
 
<span style="color: #808080;">Probably, you didn't erase old module binaries from rootfs. Open IGEP terminal and type:</span>

Revision as of 10:11, 7 May 2018

Introduction

This article is for specific 2.6.37.y Linux kernel branch series. All the steps has been tested with Ubuntu 12.04 64b and IGEP SDK Yocto Toolchain 1.2.2-3.

All configurations support the following IGEP Expansions Boards:

  • IGEP v2 EXPANSION (IGEP0022)
  • IGEP PARIS / BERLIN (BASE0010)
  • IGEP NEW YORK (ILMS0015)

Depending the Kernel configuration used, 2.6.37.y series support the following IGEP OMAP3 Processor Boards:

igep00x0_defconfig

  • IGEP v2 (WIFI/no WIFI) (IGEP0020RC)
  • IGEP COM MODULE / ELECTRON (WIFI/no WIFI) (IGEP0030RE)

igep00x0_wilink8_defconfig

  • IGEP v2 (WIFI/no WIFI) (IGEP0020RF)
  • IGEP COM MODULE / ELECTRON (WIFI/no WIFI) (IGEP0030RG)

igep00x0_nowifi_defconfig

Alternative configuration:

  • IGEP v2 (no WIFI)
  • IGEP COM MODULE / ELECTRON (no WIFI)

Setup IGEP SDK Yocto Toolchain 1.2.2-3

Install

Download - isee.biz

follow the next steps:

  • Open a terminal
  • Located your downloaded file, in my case is inside /home/jdoe/Downloads:
<span style="color: #000000;">jdoe@ubuntu ~ $ cd Downloads/</span>
  • Extract binaries in root directory with root privileges
<span style="color: #000000;">jdoe@ubuntu ~/Downloads $ sudo tar jxf igep-sdk-yocto-toolchain-*.tar.bz2 -C /</span>
  • Make sure that binaries are installed correctly.
<span style="color: #808080;"><span style="color: #000000;">jdoe@ubuntu ~/Downloads $ ls /opt/poky/
1.2  1.2.1</span> </span>

Configure

Open a terminal and type:

<span style="color: #000000;"> export PATH=/opt/poky/1.2/sysroots/i686-pokysdk-linux/usr/bin/armv7a-vfp-neon-poky-linux-gnueabi:$PATH  </span>

Compiled binaries

Binaries: latest stable kernel version IGEP OMAP3 devices is: 2.6.37-12 (20161206)

Platform Kernel source zImage binary (igep00x0_defconfig) Modules binaries (igep00x0_defconfig) zImage binary (igep00x0_wilink8_defconfig) Modules binaries (igep00x0_wilink8_defconfig) Compat Wireless source (only for igep00x0_wilink8_defconfig) Firmware binaries (only for igep00x0_wilink8_defconfig)
IGEP00x0 2.6.37-12(md5sum) zImage-2.6.37-12.bin (md5sum) modules-2.6.37-12(md5sum) zImage-2.6.37-12-wilink8.bin(md5sum) modules-2.6.37-12-wilink8(md5sum) compat-wireless-wilink8-0(md5sum) ti-connectivity-wilink8-0(md5sum)

Build kernel from sources

Download the latest stable version sources and follow next steps:

<span style="color: #808080;">wget <a class="external free" href="http://downloads.isee.biz/pub/releases/linux_kernel/v2.6.37-12/linux-omap-2.6.37-12.tar.gz" target="_blank" rel="nofollow noreferrer noopener">http://downloads.isee.biz/pub/releases/linux_kernel/v2.6.37-12/linux-omap-2.6.37-12.tar.gz</a>
tar xzf linux-omap-2.6.37-12.tar.gz
cd linux-omap-2.6.37-12
</span>

Also, it could download from GIT Repositories (http://git.isee.biz/) and test the last unstable version at your own risk (see "Linux mainline tree (development)" chapter in [index.php/The_Linux_kernel The Linux kernel])

Important procedures

  • Remove rootfs modules binaries from any previous Kernel
  • If you switch to another configuration, clean kernel sources with command: make mrproper

igep00x0_defconfig

Configure Linux kernel for IGEP OMAP3 old Marvell WIFI:

<span style="color: #808080;">make ARCH=arm igep00x0_defconfig
</span>

Then build the kernel and kernel modules. The result will be an zImage file in arch/arm/boot directory. Execute:

<span style="color: #808080;">make ARCH=arm CROSS_COMPILE=[your cross compiler] zImage modules
</span>

For example, if you are using IGEP SDK Yocto Toolchain then you should execute following cmdline:

<span style="color: #808080;">make ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi-  zImage modules
</span>

You can install the kernel image to your target boot

<span style="color: #808080;">cp arch/arm/boot/zImage /media/boot/zImage
</span>

You can install the kernel modules to your target rootfs

<span style="color: #808080;">make ARCH=arm modules_install INSTALL_MOD_PATH=[path to your target rootfs]</span>

Kernel Parameters

This chapter describes some [index.php/How_do_I_edit_my_kernel_command_line kernel command line] parameters you can pass to the kernel during system startup. They also depend on the presence of the hardware with which they are associated.

The board.ei485 parameter allows to use UART1 as RS232 port instead of EI485

<span style="color: #000000;"> board.ei485=  [yes, no]
               Format: 
               no: disable ei485, use UART1 as RS232, supported by igep0020
               default: yes
</span>

The buddy parameter allows enable or disable expansion boards

<span style="color: #000000;"> buddy=   [igep0022, base0010]
          Format: 
          igep0022: enable expansion board, supported by igep0020
                    board
          base0010: enable expansion board, supported by igep0030
                    board and igep0032 (only rev. B)
          ilms0015: enable expansion board, supported by igep0030
                    board
          default: none
</span>

The buddy.revision parameter allows to pass hardware revision for buddy boards

<span style="color: #000000;"> buddy.revision= [A, B]
          Format: 
          A: enable hardware buddy revision A, only available for base0010
          B: enable hardware buddy revision B, only available for base0010
          default: A
</span>

The buddy.modem parameter allows enable or disable modem

<span style="color: #000000;"> buddy.modem=  [yes]
               Format: 
               yes: enable modem on buddy board, supported by igep0022 expansion board.
               default: none
</span>

Scenarios

Consider the following situations:

Scenario A. You have and IGEP0020 board plus IGEP0022 expansion board, then you should add in your [index.php/How_do_I_edit_my_kernel_command_line kernel command line]

<span style="color: #000000;">buddy=igep0022
</span>

Optionally, to enable the IGEP0022 modem which is disabled by default you should add in your [index.php/How_do_I_edit_my_kernel_command_line kernel command line]

<span style="color: #000000;">buddy=igep0022 buddy.modem=yes
</span>

NOTE: UART2 can be used for bluetooth OR modem in expansion board but NOT at same time. They are INCOMPATIBLE.

Scenario B. You have and IGEP0030 board plus BASE0010 expansion board, then you should add in your [index.php/How_do_I_edit_my_kernel_command_line kernel command line]

<span style="color: #000000;">buddy=base0010
</span>

Scenario C. You have and IGEP0030 board plus BASE0010 Rev. B expansion board, then you should add in your [index.php/How_do_I_edit_my_kernel_command_line kernel command line]

<span style="color: #000000;">buddy=base0010 buddy.revision=B
</span>

Scenario D. You have and IGEP0032 board plus BASE0010 Rev. B expansion board, then you should add in your [index.php/How_do_I_edit_my_kernel_command_line kernel command line]

<span style="color: #000000;">buddy=base0010 buddy.revision=B
</span>

Scenario E. You have and IGEP0030 board plus ILMS0015 expansion board, then you should add in your [index.php/How_do_I_edit_my_kernel_command_line kernel command line]

<span style="color: #000000;">buddy=ilms0015
</span>

Layout

Machine specific files are located in arch/arm/mach-omap2/ directory with name board-igep*.c :

  • board-igep0020.c: For IGEP0020 machine
  • board-igep0030.c: For IGEP0030 machine
  • board-igep0032.c: For IGEP0032 machine

Expansion board files, also are located in arch/arm/mach-omap2/ directory with name exp-*.c :

  • exp-igep0022.c: For IGEP0022 expansion board
  • exp-base0010.c: For BASE0010 expansion board
  • exp-ilms0015.c: For ILMS0015 expansion board

Adding New Expansion Boards

This chapter is meant to be a starting point for people to learn how to add your own expansion board in three steps.

Step 1: Add new expansion board file

As you can see in Layout chapter, an expansion board is called exp-.c and should be located in arch/arm/mach-omap2 directory, so the first step will be add a new file for your new expansion board. Following example creates a new expansion board file called exp-dummy.c (arch/arm/mach-omap2/exp-dummy.c)

<span style="color: #808080;"> #include <linux/kernel.h>
 #include <linux/init.h>

 void __init dummy_init(void)
 {
 	pr_info("Initializing expansion board ... \n");
 }
</span>

next, add the new file to be built

<span style="color: #808080;">diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile
index 7505be9..a6572f2 100644
--- a/arch/arm/mach-omap2/Makefile
+++ b/arch/arm/mach-omap2/Makefile
@@ -156,6 +156,7 @@ obj-$(CONFIG_MACH_IGEP0020)         += board-igep0020.o \
 obj-$(CONFIG_MACH_IGEP0030)            += board-igep0030.o \
                                           board-igep00x0.o \
                                           exp-base0010.o \
+                                          exp-dummy.o \
                                           hsmmc.o
 obj-$(CONFIG_MACH_OMAP3_TOUCHBOOK)     += board-omap3touchbook.o \
                                           hsmmc.o
</span>

Step 2: Register new expansion board

Now, edit board-igep00x0.h and add an identifier for the new expansion board, for example,

<span style="color: #808080;">diff --git a/arch/arm/mach-omap2/board-igep00x0.h b/arch/arm/mach-omap2/board-igep00x0.h
index 6b9b677..a2325d7 100644
--- a/arch/arm/mach-omap2/board-igep00x0.h
+++ b/arch/arm/mach-omap2/board-igep00x0.h
@@ -15,6 +15,7 @@
 #define IGEP00X0_BUDDY_NONE            0x01
 #define IGEP00X0_BUDDY_IGEP0022        0x01
 #define IGEP00X0_BUDDY_BASE0010        0x02
+#define IGEP00X0_BUDDY_DUMMY           0x03

 #define IGEP00X0_BUDDY_HWREV_A         (1 << 0)
 #define IGEP00X0_BUDDY_HWREV_B         (1 << 1)
</span>

also, edit in board-igep00x0.c the buddy_early_param to add the new expansion board,

<span style="color: #808080;">diff --git a/arch/arm/mach-omap2/board-igep00x0.c b/arch/arm/mach-omap2/board-igep00x0.c
index 2a2d8eb..f2b5b27 100644
--- a/arch/arm/mach-omap2/board-igep00x0.c
+++ b/arch/arm/mach-omap2/board-igep00x0.c
@@ -192,6 +192,9 @@ static int __init buddy_early_param(char *str)
                if (!strcmp(name, "base0010")) {
                        igep00x0_buddy_pdata.model = IGEP00X0_BUDDY_BASE0010;
                        pr_info("IGEP: IGEP0030 machine + BASE0010 (buddy)\n");
+               } else if (!strcmp(name, "dummy")) {
+                       igep00x0_buddy_pdata.model = IGEP00X0_BUDDY_DUMMY;
+                       pr_info("IGEP: IGEP0030 machine + DUMMY (buddy)\n");
                } else
                        pr_err("IGEP: Unknown buddy for IGEP0030 machine\n");
        }
</span>

Step 3: Run expansion board initialization

Finally, modify the machine file and add support for the new expansion board, for example:

<span style="color: #808080;">diff --git a/arch/arm/mach-omap2/board-igep0030.c b/arch/arm/mach-omap2/board-igep0030.c
index 2b97257..44b319d 100644
--- a/arch/arm/mach-omap2/board-igep0030.c
+++ b/arch/arm/mach-omap2/board-igep0030.c
@@ -204,6 +204,8 @@ static struct omap_board_mux board_mux[] __initdata = {

 /* Expansion board: BASE0010 */
 extern void __init base0010_init(struct twl4030_platform_data *pdata);
+/* Expansion board: DUMMY */
+extern void __init dummy_init(void);

 static void __init igep0030_init(void)
 {
@@ -223,6 +225,10 @@ static void __init igep0030_init(void)
        /* - BASE0010 (adds twl4030_pdata)  */
        if (igep00x0_buddy_pdata.model == IGEP00X0_BUDDY_BASE0010)
                base0010_init(&twl4030_pdata);
+       /* - DUMMY  */
+       if (igep00x0_buddy_pdata.model == IGEP00X0_BUDDY_DUMMY)
+               dummy_init();
+

        /* Add twl4030 common data */
        omap3_pmic_get_config(&twl4030_pdata, TWL_COMMON_PDATA_USB |
</span>

Known issues

See http://processors.wiki.ti.com/index.php/AM35x-OMAP35x-PSP_04.02.00.07_Release_Notes#Known_Issues_-_AM.2FDM37x

modules are not installed correctly

Try to change rootfs owner from root to your username.

<span style="color: #808080;"> sudo chown  -R /media/rootfs</span>

wlcore: Unknown symbol

Probably, you didn't erase old module binaries from rootfs. Open IGEP terminal and type:

<span style="color: #808080;">depmod -a
depmod -A </span>

Finally reboot the system