Personal tools

Log in

Changes

From IGEP - ISEE Wiki

Jump to: navigation, search

Linux Kernel 4.9.y

19,244 bytes added, 10:07, 7 May 2018
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..."
=<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 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;">All configurations support the following IGEP Expansions Boards:</span>

* <span style="color: #808080;">IGEP v2 EXPANSION (IGEP0022)</span>
* <span style="color: #808080;">IGEP PARIS / BERLIN (BASE0010)</span>
* <span style="color: #808080;">IGEP NEW YORK (ILMS0015)</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 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 id="igep00x0_wilink8_defconfig" class="mw-headline" style="color: #808080;">igep00x0_wilink8_defconfig</span>==
* <span style="color: #808080;">IGEP v2 '''(WIFI/no WIFI)''' (IGEP0020'''RF''')</span>
* <span style="color: #808080;">IGEP COM MODULE / ELECTRON '''(WIFI/no WIFI)''' (IGEP0030'''RG''')</span>

==<span id="igep00x0_nowifi_defconfig" class="mw-headline" style="color: #808080;">igep00x0_nowifi_defconfig</span>==
<span style="color: #808080;">Alternative configuration:</span>

* <span style="color: #808080;">IGEP v2 '''(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="Install" class="mw-headline" style="color: #808080;">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: #808080;">follow the next steps:</span>

* <span style="color: #808080;">Open a terminal</span>
* <span style="color: #808080;">Located your downloaded file, in my case is inside /home/jdoe/Downloads:</span>

<pre><span style="color: #808080;">jdoe@ubuntu ~ $ cd Downloads/</span></pre>
* <span style="color: #808080;">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>
* <span style="color: #808080;">Make sure that binaries are installed correctly.</span>

<pre><span style="color: #808080;">jdoe@ubuntu ~/Downloads $ ls /opt/poky/
1.2 1.2.1 </span></pre>
==<span id="Configure" class="mw-headline" style="color: #808080;">Configure</span>==
<span style="color: #808080;">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>
=<span id="Compiled_binaries" class="mw-headline" style="color: #808080;">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>

{| border="1"
|-
!|<span style="color: #808080;">'''Platform'''</span>
!|<span style="color: #808080;">'''Kernel source'''</span>
!|<span style="color: #808080;">'''zImage binary (igep00x0_defconfig)'''</span>
!|<span style="color: #808080;">'''Modules binaries (igep00x0_defconfig)'''</span>
!|<span style="color: #808080;">'''zImage binary (igep00x0_wilink8_defconfig)'''</span>
!|<span style="color: #808080;">'''Modules binaries (igep00x0_wilink8_defconfig)'''</span>
!|<span style="color: #808080;">'''Compat Wireless source (only for igep00x0_wilink8_defconfig)'''</span>
!|<span style="color: #808080;">'''Firmware binaries (only for igep00x0_wilink8_defconfig)'''</span>
|-
||<span style="color: #808080;">IGEP00x0</span>
||<span style="color: #808080;">[http://downloads.isee.biz/pub/releases/linux_kernel/v2.6.37-12/linux-omap-2.6.37-12.tar.gz 2.6.37-12]([http://downloads.isee.biz/pub/releases/linux_kernel/v2.6.37-12/linux-omap-2.6.37-12.tar.gz.md5 md5sum])</span>
||<span style="color: #808080;">[http://downloads.isee.biz/pub/releases/linux_kernel/v2.6.37-12/zImage-2.6.37-12.bin zImage-2.6.37-12.bin] ([http://downloads.isee.biz/pub/releases/linux_kernel/v2.6.37-12/zImage-2.6.37-12.bin.md5 md5sum])</span>
||<span style="color: #808080;">[http://downloads.isee.biz/pub/releases/linux_kernel/v2.6.37-12/modules-2.6.37-12.tar.gz modules-2.6.37-12]([http://downloads.isee.biz/pub/releases/linux_kernel/v2.6.37-12/modules-2.6.37-12.tar.gz.md5 md5sum)]</span>
||<span style="color: #808080;">[http://downloads.isee.biz/pub/releases/linux_kernel/v2.6.37-12/zImage-2.6.37-12-wilink8.bin zImage-2.6.37-12-wilink8.bin]([http://downloads.isee.biz/pub/releases/linux_kernel/v2.6.37-12/zImage-2.6.37-12-wilink8.bin.md5 md5sum])</span>
||<span style="color: #808080;">[http://downloads.isee.biz/pub/releases/linux_kernel/v2.6.37-12/modules-2.6.37-12-wilink8.tar.gz modules-2.6.37-12-wilink8]([http://downloads.isee.biz/pub/releases/linux_kernel/v2.6.37-12/modules-2.6.37-12-wilink8.tar.gz.md5 md5sum)]</span>
||<span style="color: #808080;">[http://downloads.isee.biz/pub/releases/linux_kernel/v2.6.37-12/compat-wireless-wilink8-0.tar.gz compat-wireless-wilink8-0]([http://downloads.isee.biz/pub/releases/linux_kernel/v2.6.37-12/compat-wireless-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 style="color: #808080;">'''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>
tar xzf linux-omap-2.6.37-12.tar.gz
cd linux-omap-2.6.37-12
</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 id="Important_procedures" class="mw-headline" style="color: #808080;">Important procedures</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 id="igep00x0_defconfig_2" class="mw-headline" style="color: #808080;">igep00x0_defconfig</span>==
<span style="color: #808080;">'''Configure''' Linux kernel for IGEP OMAP3 old Marvell WIFI:</span>

<pre><span style="color: #808080;">make ARCH=arm igep00x0_defconfig
</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>

<pre><span style="color: #808080;">make ARCH=arm CROSS_COMPILE=[your cross compiler] zImage modules
</span></pre>
<span style="color: #808080;">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
</span></pre>
<span style="color: #808080;">You can '''install''' the kernel image to your target boot</span>

<pre><span style="color: #808080;">cp arch/arm/boot/zImage /media/boot/zImage
</span></pre>
<span style="color: #808080;">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>
=<span id="Kernel_Parameters" class="mw-headline" style="color: #808080;">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: #808080;">The '''board.ei485''' parameter allows to use UART1 as RS232 port instead of EI485</span>

<pre><span style="color: #808080;"> board.ei485= [yes, no]
Format: <string>
no: disable ei485, use UART1 as RS232, supported by igep0020
default: yes
</span></pre>
<span style="color: #808080;">The '''buddy''' parameter allows enable or disable expansion boards</span>

<pre><span style="color: #808080;"> buddy= [igep0022, base0010]
Format: <string>
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></pre>
<span style="color: #808080;">The '''buddy.revision''' parameter allows to pass hardware revision for buddy boards</span>

<pre><span style="color: #808080;"> buddy.revision= [A, B]
Format: <string>
A: enable hardware buddy revision A, only available for base0010
B: enable hardware buddy revision B, only available for base0010
default: A
</span></pre>
<span style="color: #808080;">The '''buddy.modem''' parameter allows enable or disable modem</span>

<pre><span style="color: #808080;"> buddy.modem= [yes]
Format: <string>
yes: enable modem on buddy board, supported by igep0022 expansion board.
default: none
</span></pre>
==<span id="Scenarios" class="mw-headline" style="color: #808080;">Scenarios</span>==
<span style="color: #808080;">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>

<pre><span style="color: #808080;">buddy=igep0022
</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>

<pre><span style="color: #808080;">buddy=igep0022 buddy.modem=yes
</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: #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>

<pre><span style="color: #808080;">buddy=base0010
</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>

<pre><span style="color: #808080;">buddy=base0010 buddy.revision=B
</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>

<pre><span style="color: #808080;">buddy=base0010 buddy.revision=B
</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>

<pre><span style="color: #808080;">buddy=ilms0015
</span></pre>
=<span id="Layout" class="mw-headline" style="color: #808080;">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;">'''board-igep0020.c''': For IGEP0020 machine</span>
* <span style="color: #808080;">'''board-igep0030.c''': For IGEP0030 machine</span>
* <span style="color: #808080;">'''board-igep0032.c''': For IGEP0032 machine</span>

<span style="color: #808080;">Expansion board files, also are located in '''arch/arm/mach-omap2/''' directory with name '''exp-*.c''' :</span>

* <span style="color: #808080;">'''exp-igep0022.c''': For IGEP0022 expansion board</span>
* <span style="color: #808080;">'''exp-base0010.c''': For BASE0010 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 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 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>

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

void __init dummy_init(void)
{
pr_info("Initializing expansion board ... \n");
}
</span></pre>
<span style="color: #808080;">next, add the new file to be built</span>

<pre><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></pre>
==<span id="Step_2:_Register_new_expansion_board" class="mw-headline" style="color: #808080;">Step 2: Register new expansion board</span>==
<span style="color: #808080;">Now, edit board-igep00x0.h and add an identifier for the new expansion board, for example,</span>

<pre><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></pre>
<span style="color: #808080;">also, edit in board-igep00x0.c the buddy_early_param to add the new expansion board,</span>

<pre><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></pre>
==<span id="Step_3:_Run_expansion_board_initialization" class="mw-headline" style="color: #808080;">Step 3: Run expansion board initialization</span>==
<span style="color: #808080;">Finally, modify the machine file and add support for the new expansion board, for example:</span>

<pre><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></pre>
=<span id="Known_issues" class="mw-headline" style="color: #808080;">Known issues</span>=
<span style="color: #808080;">See [http://processors.wiki.ti.com/index.php/AM35x-OMAP35x-PSP_04.02.00.07_Release_Notes#Known_Issues_-_AM.2FDM37x http://processors.wiki.ti.com/index.php/AM35x-OMAP35x-PSP_04.02.00.07_Release_Notes#Known_Issues_-_AM.2FDM37x]</span>

==<span id="modules_are_not_installed_correctly" class="mw-headline" style="color: #808080;">modules are not installed correctly</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>
==<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>

<pre><span style="color: #808080;">depmod -a
depmod -A </span></pre>
<span style="color: #808080;">Finally reboot the system</span>
560
edits