|
|
Line 84: |
Line 84: |
| |- | | |- |
| | style="width: 160.1px;"|IGEPv5 OMAP5432 | | | style="width: 160.1px;"|IGEPv5 OMAP5432 |
− | | style="width: 124.9px;"| | + | | style="width: 124.9px;"|[https://git.isee.biz/linux-kernel/linux-omap-2.6/blob/linux-3.8.y-omap5/arch/arm/configs/omap2plus_defconfig omap2plus_defconfig] |
| | style="width: 566px;"|<span style="color: #000000;"><code class="java plain">make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- <br /></code></span> | | | style="width: 566px;"|<span style="color: #000000;"><code class="java plain">make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- <br /></code></span> |
| |- | | |- |
| | style="width: 160.1px;"|IGEPv2 DM3730 | | | style="width: 160.1px;"|IGEPv2 DM3730 |
− | | style="width: 124.9px;"| | + | | style="width: 124.9px;"|[https://git.isee.biz/linux-kernel/linux-omap-2.6/blob/linux-3.17.y/arch/arm/configs/omap3-igep00x0_defconfig omap3-igep00x0_defconfig] |
| | style="width: 566px;"|<span style="color: #000000;"><code class="java plain">make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-</code></span> | | | style="width: 566px;"|<span style="color: #000000;"><code class="java plain">make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-</code></span> |
| |- | | |- |
| | style="width: 160.1px;"|IGEP COM AQUILA AM335x | | | style="width: 160.1px;"|IGEP COM AQUILA AM335x |
− | | style="width: 124.9px;"| | + | | style="width: 124.9px;"|[https://git.isee.biz/linux-kernel/linux-omap-2.6/blob/linux-4.1.y-am335x/arch/arm/configs/am335x_igep0033_defconfig am335x_igep0033_defconfig] |
| | style="width: 566px;"|<span style="color: #000000;"><code class="java plain">make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-</code></span> | | | style="width: 566px;"|<span style="color: #000000;"><code class="java plain">make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-</code></span> |
| |- | | |- |
| | style="width: 160.1px;"|IGEP COM MODULE DM3730/AM3703 | | | style="width: 160.1px;"|IGEP COM MODULE DM3730/AM3703 |
− | | style="width: 124.9px;"| | + | | style="width: 124.9px;"|[https://git.isee.biz/linux-kernel/linux-omap-2.6/blob/linux-3.17.y/arch/arm/configs/omap3-igep00x0_defconfig omap3-igep00x0_defconfig] |
| | style="width: 566px;"|<span style="color: #000000;"><code class="java plain">make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-</code></span> | | | style="width: 566px;"|<span style="color: #000000;"><code class="java plain">make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-</code></span> |
| |- | | |- |
Line 120: |
Line 120: |
| | | |
| * zImage: located in '''arch/arm/boot/zImage''' | | * zImage: located in '''arch/arm/boot/zImage''' |
− | * DTB: located in arch/arm/boot/dts/<target_board>.dtb. Depending of the board the dtb file will be different. In the following table it is detailed the corresponding dtb filename for each b''' <br />''' | + | * DTB: located in arch/arm/boot/dts/.dtb. Depending of the board the dtb file will be different. In the following table it is detailed the corresponding dtb filename for each b''' <br />''' |
| | | |
| | | |
− | {| class="contenttable sortable" | + | {| class="contenttable sortable" style="width: 890px;" |
| |- | | |- |
− | !|BOARD | + | ! style="width: 281.467px;"|BOARD |
− | !|DTB NAME | + | ! style="width: 588.533px;"|DTB NAME |
| |- | | |- |
− | || | + | | style="width: 281.467px;"|IGEPv2 DM3730 |
− | || | + | | style="width: 588.533px;"|[https://git.isee.biz/linux-kernel/linux-omap-2.6/blob/isee-linux-v.4.9.y/arch/arm/boot/dts/omap3-igep0020-rev-f.dts omap3-igep0020-rev-f.dts] |
| |- | | |- |
− | || | + | | style="width: 281.467px;"|IGEP COM MODULE DM3730/AM3703 |
− | || | + | | style="width: 588.533px;"|[https://git.isee.biz/linux-kernel/linux-omap-2.6/blob/isee-linux-v.4.9.y/arch/arm/boot/dts/omap3-igep0030-rev-g.dts omap3-igep0030-rev-g.dts] |
| |- | | |- |
− | || | + | | style="width: 281.467px;"|IGEP COM AQUILA AM335x |
− | || | + | | style="width: 588.533px;"|[https://git.isee.biz/linux-kernel/linux-omap-2.6/blob/isee-linux-v.4.9.y/arch/arm/boot/dts/am335x-igep0033.dtsi am335x-igep0033.dtsi] |
| |- | | |- |
− | || | + | | style="width: 281.467px;"|IGEPv5 OMAP5432 |
− | || | + | | style="width: 588.533px;"|[https://git.isee.biz/linux-kernel/linux-omap-2.6/blob/isee-linux-v.4.9.y/arch/arm/boot/dts/omap5-igep0050.dts omap5-igep0050.dts] |
| |- | | |- |
− | || | + | | style="width: 281.467px;"|IGEP SMARC AM335x |
− | || | + | | style="width: 588.533px;"|[https://git.isee.biz/linux-kernel/linux-omap-2.6/blob/isee-linux-v.4.9.y/arch/arm/boot/dts/am335x-igep-base0040.dts am335x-igep-base0040.dts] |
| |- | | |- |
− | || | + | | style="width: 281.467px;"|IGEP SMARC iMX6 Quad |
− | || | + | | style="width: 588.533px;"|[https://git.isee.biz/linux-kernel/linux-imx/blob/isee-imx_4.9.11_1.0.0_ga/arch/arm/boot/dts/imx6q-igep-base0040rd102.dts imx6q-igep-base0040rd102.dts] |
| |- | | |- |
− | || | + | | style="width: 281.467px;"|IGEP SMARC iMX6 Dual Lite |
− | || | + | | style="width: 588.533px;"|[https://git.isee.biz/linux-kernel/linux-imx/blob/isee-imx_4.9.11_1.0.0_ga/arch/arm/boot/dts/imx6dl-igep-base0040rd102.dts imx6dl-igep-base0040rd102.dts] |
| |} | | |} |
| ''' ''' | | ''' ''' |
Line 157: |
Line 157: |
| | | |
| sudo make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=/media/rootfs/ modules_install | | sudo make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=/media/rootfs/ modules_install |
− | Para dar soporte a una nueva board basada en imx en el kernel es necesario tener un fichero de configuracion defconfig (.config) y una dtb.
| |
− |
| |
− | 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"><div id="highlighter_162759" class="syntaxhighlighter sh-confluence nogutter java">
| |
− | {| cellspacing="0" cellpadding="0" border="0"
| |
− | |-
| |
− | | class="code"|<div class="container" title="Hint: double-click to select code"><div class="line number1 index0 alt2"><code class="java plain">imx6_igep0046_defconfig</code>
| |
− |
| |
− | </div>
| |
− | </div>
| |
− | |}</div>
| |
− | </div>
| |
− | </div>
| |
− | 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">
| |
− | {| cellspacing="0" cellpadding="0" border="0"
| |
− | |-
| |
− | | class="code"|<div class="container" title="Hint: 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">imx6dl-igep-base0040rd102.dts</code></div>
| |
− | <div class="line number5 index4 alt2"> </div>
| |
− | <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>
| |
− | <div class="line number9 index8 alt2"><code class="java plain">imx6q-igep-base0040rd102.dts</code></div>
| |
− | <div class="line number10 index9 alt1"> </div>
| |
− | <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"><div id="highlighter_599857" class="syntaxhighlighter sh-confluence nogutter java">
| |
− | {| cellspacing="0" cellpadding="0" border="0"
| |
− | |-
| |
− | | class="code"|<div class="container" title="Hint: double-click to select code"><div class="line number1 index0 alt2"><code class="java plain">(dentro de dtb-$(CONFIG_SOC_IMX6Q) += \)</code>
| |
− |
| |
− |
| |
− | <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: #000000;">Download - [http://www.isee.biz/support/downloads/item/igep-sdk-yocto-toolchain-1-2-2-3 isee.biz]</span>
| |
− |
| |
− | <span style="color: #000000;">follow the next steps:</span>
| |
− |
| |
− | * <span style="color: #000000;">Open a terminal</span>
| |
− | * <span style="color: #000000;">Located your downloaded file, in my case is inside /home/jdoe/Downloads:</span>
| |
− |
| |
− | <pre><span style="color: #000000;">jdoe@ubuntu ~ $ cd Downloads/</span></pre>
| |
− | * <span style="color: #000000;">Extract binaries in root directory with root privileges</span>
| |
− |
| |
− | <pre><span style="color: #000000;">jdoe@ubuntu ~/Downloads $ sudo tar jxf igep-sdk-yocto-toolchain-*.tar.bz2 -C /</span></pre>
| |
− | * <span style="color: #000000;">Make sure that binaries are installed correctly.</span>
| |
− |
| |
− | <pre><span style="color: #808080;"><span style="color: #000000;">jdoe@ubuntu ~/Downloads $ ls /opt/poky/
| |
− | 1.2 1.2.1</span> </span></pre>
| |
− | ==<span id="Configure" class="mw-headline" style="color: #000000;">Configure</span>==
| |
− | <span style="color: #000000;">Open a terminal and type:</span>
| |
− |
| |
− | <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: #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>
| |
− |
| |
− | {| 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: #000000;">Build kernel from sources</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>
| |
− | tar xzf linux-omap-2.6.37-12.tar.gz
| |
− | cd linux-omap-2.6.37-12
| |
− | </span></pre>
| |
− | <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: #000000;">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>
| |
− |
| |
− | <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"><div id="highlighter_902183" class="syntaxhighlighter sh-confluence nogutter java">
| |
− | {| cellspacing="0" cellpadding="0" border="0"
| |
− | |-
| |
− | | class="code"|<div class="container" title="Hint: double-click to select code"><div class="line number1 index0 alt2"><code class="java plain">make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- imx6_igep0046_defconfi</code>
| |
− |
| |
− | </div>
| |
− | </div>
| |
− | |}</div>
| |
− | </div>
| |
− | </div>
| |
− | 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">
| |
− | {| cellspacing="0" cellpadding="0" border="0"
| |
− | |-
| |
− | | class="code"|<div class="container" title="Hint: double-click to select code"><div class="line number1 index0 alt2"><code class="java plain">make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig</code>
| |
− |
| |
− | </div>
| |
− | </div>
| |
− | |}</div>
| |
− | </div>
| |
− | </div>
| |
− | Guardar la configuracion del menuconfig en .config
| |
− |
| |
− | 4- Compilar la imagen los modulos y las dtb
| |
− |
| |
− | <div 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">
| |
− | {| cellspacing="0" cellpadding="0" border="0"
| |
− | |-
| |
− | | class="code"|<div class="container" title="Hint: double-click to select code"><div class="line number1 index0 alt2"><code class="java plain">make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage modules dtbs</code>
| |
− |
| |
− | </div>
| |
− | </div>
| |
− | |}</div>
| |
− | </div>
| |
− | </div>
| |
− | 5- Instalar en el rootfs los modulos del kernel que son cargables ( es decir que no estan built-in)
| |
− |
| |
− | <div class="code 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">
| |
− | {| cellspacing="0" cellpadding="0" border="0"
| |
− | |-
| |
− | | class="code"|<div class="container" title="Hint: double-click to select code"><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</code>
| |
− |
| |
− | </div>
| |
− | </div>
| |
− | |}</div>
| |
− | </div>
| |
− | </div>
| |
− | '''Nota: 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.'''
| |
− |
| |
− | '''Si éste comando falla, es muy probable que instale los modulos en el Host PC pudiendo dejar inservible el actual SO.'''
| |
− |
| |
− | ==<span id="Scenarios" class="mw-headline" style="color: #000000;">Scenarios</span>==
| |
− | <span style="color: #000000;">Consider the following situations:</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: #000000;">buddy=igep0022
| |
− | </span></pre>
| |
− | <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: #000000;">buddy=igep0022 buddy.modem=yes
| |
− | </span></pre>
| |
− | <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: #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: #000000;">buddy=base0010
| |
− | </span></pre>
| |
− | <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: #000000;">buddy=base0010 buddy.revision=B
| |
− | </span></pre>
| |
− | <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: #000000;">buddy=base0010 buddy.revision=B
| |
− | </span></pre>
| |
− | <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: #000000;">buddy=ilms0015
| |
− | </span></pre>
| |
− | =<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;">'''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: #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 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-.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 -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>
| |