Personal tools

Log in

Changes

From IGEP - ISEE Wiki

Jump to: navigation, search

Linux Kernel 4.9.y

2,519 bytes added, 10:20, 7 May 2018
no edit summary
<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, 2Para dar soporte a una nueva board basada en imx en el kernel es necesario tener un fichero de configuracion defconfig (.6config) y  una dtb.37.y series support the following IGEP OMAP3 Processor Boards:</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 COM MODULE / ELECTRON '''(WIFI/no WIFI)''' (IGEP0030'''RE''')</span>Por defecto empezaremos con un defconfig ya creado por igep para procesadores imx
<div class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div class="codeContent panelContent pdl"><span div id="igep00x0_wilink8_defconfighighlighter_162759" class="mwsyntaxhighlighter sh-confluence nogutter java">{| border="0" cellspacing="0" cellpadding="0"|-headline| class="code"|<div class="container" styletitle="colorHint: #808080;double-click to select code"><div class="line number1 index0 alt2"><code class="java plain">igep00x0_wilink8_defconfigimx6_igep0046_defconfig</code>  </div>|}</div></div></div></spandiv>Para que el kernel compile la dtb es necesario tener una dts con la configuración de los periféricos y los drivers que los gestionan,ademas de una anidación al dtsi del procesador correspondiente ( en este caso imx6 ya sea quad, dual, solo ...) En el caso de igep con procesadores imx <div class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div class="codeContent panelContent pdl"><div id="highlighter_265765" class="syntaxhighlighter sh-confluence nogutter java">{| border="0" cellspacing="0" cellpadding="0"* |-| class="code"|<span stylediv class="container" title="colorHint: #808080;double-click to select code"><div class="line number1 index0 alt2"><code class="java plain">DUAL</code>  <div class="line number2 index1 alt1"><code class="java plain">imx6dl-igep-base0040ra1.dts</code></div><div class="line number3 index2 alt2"><code class="java plain">imx6dl-igep-base0040rc2.dts</code></div><div class="line number4 index3 alt1"><code class="java plain">IGEP v2 '''(WIFIimx6dl-igep-base0040rd102.dts</code></no WIFI)'''div><div class="line number5 index4 alt2"> (IGEP0020'''RF''')</spandiv><div class="line number6 index5 alt1"><code class="java plain">QUAD</code></div><div class="line number7 index6 alt2"><code class="java plain">imx6q-igep-base0040ra1.dts</code></div><div class="line number8 index7 alt1"><code class="java plain">imx6q-igep-base0040rc2.dts</code></div>* <span stylediv class="line number9 index8 alt2"><code class="color: #808080;java plain">IGEP COM MODULE imx6q-igep-base0040rd102.dts</ ELECTRON '''(WIFIcode></no WIFI)'''div><div class="line number10 index9 alt1"> (IGEP0030'''RG''')</spandiv><div class="line number11 index10 alt2"><code class="java plain">GENERICA</code></div><div class="line number12 index11 alt1"><code class="java plain">imx6qdl-igep-base0040ra.dtsi</code></div><div class="line number13 index12 alt2"><code class="java plain">imx6qdl-igep-base0040rb.dtsi</code></div><div class="line number14 index13 alt1"><code class="java plain">imx6qdl-igep-igep0046ra.dtsi</code></div><div class="line number15 index14 alt2"><code class="java plain">imx6qdl-igep-igep0046rc.dtsi</code></div></div>|}</div></div></div></div>Las DTS están anidadas, esto quiere decir que se cogerá la dtb generada a partir de la .dts dependiendo del procesador que monte igep en este caso. Para que el kernel compile las .dts en dtb se ha de añadir en el Makefile de arch/arm/boot/dts/
<div class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div class="codeContent panelContent pdl"><span div id="igep00x0_nowifi_defconfighighlighter_599857" class="mwsyntaxhighlighter sh-headlineconfluence nogutter java" style>{| border="0" cellspacing="color0" cellpadding="0"|-| class="code"|<div class="container" title="Hint: #808080;double-click to select code">igep00x0_nowifi_defconfig</spandiv class="line number1 index0 alt2">==<span stylecode class="color: #808080;java plain">Alternative configuration:(dentro de dtb-$(CONFIG_SOC_IMX6Q) += \)</spancode>
* <span style="color: #808080;">IGEP v2 '''(no WIFI)'''</span>
* <span style="color: #808080;">IGEP COM MODULE / ELECTRON '''(no WIFI)'''</span>
<div class="line number2 index1 alt1"><code class="java spaces">   </code><code class="java plain">imx6dl-igep-base0040rc2.dtb \</code></div>
<div class="line number3 index2 alt2"><code class="java spaces">    </code><code class="java plain">imx6dl-igep-base0040rd102.dtb \</code></div>
<div class="line number4 index3 alt1"><code class="java spaces">    </code><code class="java plain">imx6q-igep-base0040rc2.dtb \</code></div>
<div class="line number5 index4 alt2"><code class="java spaces">    </code><code class="java plain">imx6q-igep-base0040rd102.dtb \</code></div>
</div>
|}</div>
</div>
</div>
</div>
=<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">Install</span>==
* <span style="color: #808080;">If you switch to another configuration, clean kernel sources with command: make mrproper</span>
<pre><span style="color: #000000;">Para compilar el kernel se ha de seguir los siguientes pasos:</span></pre>1- Descargar la rama correspondiente con git 2- Configurar el kernel con la minima configuracion que nos ofrece <div class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div class="codeContent panelContent pdl"><span div id="igep00x0_defconfig_2highlighter_902183" class="mwsyntaxhighlighter sh-confluence nogutter java">{| border="0" cellspacing="0" cellpadding="0"|-headline| class=" stylecode"|<div class="container" title="colorHint: #808080;double-click to select code"><div class="line number1 index0 alt2">igep00x0_<span stylecode class="color: #000000;java plain">defconfigmake ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- imx6_igep0046_defconfi</code>  </div>|}</div></div></spandiv></spandiv>3- Ejecutar el menuconfig para optimizar la configuracion a traves del menú. <div class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div class="codeContent panelContent pdl"><div id="highlighter_965738" class="syntaxhighlighter sh-confluence nogutter java">{| border="0" cellspacing="0" cellpadding="0"|-| class="code"|<span stylediv class="container" title="colorHint: #808080;double-click to select code"><span stylediv class="color: #000000;line number1 index0 alt2">'''Configure''' Linux kernel</spancode class="java plain"> for IGEP OMAP3 old Marvell WIFI:make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig</spancode
<pre/div>|}<span style="color: #808080;"/div>make ARCH=arm igep00x0_defconfig</spandiv></prediv><span style="color: #808080;"><span style="color: #000000;">Then '''build''' the kernel and kernel modules.</spandiv> The result will be an ''zImage'' file in arch/arm/boot directoryGuardar la configuracion del menuconfig en . Execute:</span>config
<pre><span style="color: #808080;">make ARCH=arm CROSS_COMPILE=[your cross compiler] zImage modules</span></pre><span style="color: #000000;">For example, if you are using IGEP SDK Yocto Toolchain then you should execute following cmdline:</span>4- Compilar la imagen los modulos y las dtb
<prediv class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div class="codeContent panelContent pdl"><div id="highlighter_56426" class="syntaxhighlighter sh-confluence nogutter java">{| border="0" cellspacing="0" cellpadding="0"|-| class="code"|<span stylediv class="container" title="colorHint: #808080;double-click to select code"><div class="line number1 index0 alt2"><code class="java plain">make ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabignueabihf- zImage modules</span></pre><span style="color: #000000;">You can '''install''' the kernel image to your target bootdtbs</spancode>
<pre><span style="color: #808080;">cp arch/arm/boot/zImage /media/boot/zImage
</span></pre>
<span style="color: #000000;">You can '''install''' the kernel modules to your target rootfs</span>
<pre/div>|}<span style="color: #808080;"/div>make ARCH=arm modules_install INSTALL_MOD_PATH=[path to your target rootfs]</spandiv></prediv>=<span id="Kernel_Parameters" class="mw-headline" style="color: #000000;">Kernel Parameters</spandiv>=<span style="color: #000000;">This chapter describes some [index.php/How_do_I_edit_my_kernel_command_line 5- Instalar en el rootfs los modulos del 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>que son cargables ( es decir que no estan built-in)
<span stylediv class="colorcode panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div class="codeContent panelContent pdl"><div id="highlighter_785157" class="syntaxhighlighter sh-confluence nogutter java">{| border="0" cellspacing="0" cellpadding="0"|-| class="code"|<div class="container" title="Hint: #000000;double-click to select code">The '''board.ei485''' parameter allows to use UART1 as RS232 port instead of EI485<div class="line number1 index0 alt2"><code class="java plain">sudo make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- modules_install INSTALL_MOD_PATH=/opt/nfs-server/rootfs/ubuntu-xenial-armhf-base</spancode>
<pre><span style="color: #000000;"> board.ei485= [yes, no]
Format:
no: disable ei485, use UART1 as RS232, supported by igep0020
default: yes
</span></pre>
<span style="color: #000000;">The '''buddy''' parameter allows enable or disable expansion boards</span>
<pre/div>|}<span style="color: #000000;"/div> 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</spandiv></prediv><span style="color: #000000;"/div>The '''buddyNota: Es muy importante que el INSTALL_MOD_PATH sea el correcto y de lugar justo al contenido que se esperaría en un sistema linux (usr, bin, etc, home, opt), este comando ademas se ha de ejecutar con sudo.revision''' parameter allows to pass hardware revision for buddy boards</span>
<pre><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></pre><span style="color: #000000;">The '''buddySi éste comando falla, es muy probable que instale los modulos en el Host PC pudiendo dejar inservible el actual SO.modem''' parameter allows enable or disable modem</span>
<pre><span style="color: #000000;"> buddy.modem= [yes]
Format:
yes: enable modem on buddy board, supported by igep0022 expansion board.
default: none
</span></pre>
==<span id="Scenarios" class="mw-headline" style="color: #000000;">Scenarios</span>==
<span style="color: #000000;">Consider the following situations:</span>
560
edits