Personal tools

Log in

Changes

From IGEP - ISEE Wiki

Jump to: navigation, search

The IGEP X-loader

3,449 bytes added, 16:32, 7 May 2019
Download from git repository
= Summary<br><br> =X-Loader, an initial program loader for Embedded boards based on OMAP processors.
XAccess to the latest version&nbsp;[http://git.isee.biz/?p=pub/scm/igep-x-loader.git;a=summary here] and read the [http://git.isee.biz/?p=pub/scm/igep-x-Loader, an initial program loader .git;a=blob_plain;f=ISEE_README.txt;h=909c072bc2512026342d802b3ef1b7e8f703458b;hb=4bb2ebd99d5b86522d786ac5b074066e9841799c ISEE_Readme.txt] for Embedded boards based on OMAP processorsget the latest release information. <br>
= Features and Limitations<br> Why IGEP-Xloader=Some important reasons exist for using this bootloader on IGEP boards.
== Improvements &amp; Modifications<br> Security==This is one of the most important reasons why we develop this new IGEP X-loader. you will Probably know that flash devices get new bad memory blocks with normal usage that can make unusable or can damange the software residing inside the flash (ex: upgrading the software, copying a new kernel ... ), in these cases your board won't be usable anymore if you don't use a right nand filesystem that insures data integrity. Using the old schema we've 4 important partitions on flash without any protection, x-loader, u-boot, u-boot enviroment and kernel.
*Malloc/free functionality. *Mtd framework and onenand support, removed IGEP X-loader resolves this situation as the old onenand drivers. *Jffs2 support using mtd &amp; onenand support (Read Only). *Crc32 and zlib. *Jffs2 zlib compression support (Read Only). *Dual boot mmc &amp; onenand with mmc highest priority. *Linux kernel boot directly (Support for 2.6.22 configuration and highest version kernels) *Linux kernel supported images: vmlinuz, bzImage and zImage. *Support for loading Linux Ram disk (EXPERIMENTAL) *"ini" files parser. *The configuration resides in reside inside a plain txt (ini format file). *Support Windows &amp; Linux formating ini files. *Boot from mmc, onenand, or mix with mmc highest priority. *Codeblocks project and compilation rules. *Support for gcc 4.5.1jffs2 partition.<br>
== Limitations<br> Maintenance==With the old schema 3 different software existed (x-loader, u-boot, kernel) that did exactly the same job, so you had to reconfigure the board, increasing the complexity of maintenance for the board system and provide a major bug source because we had to assure that all software was aligned with all changes. Also, from a second point of view, we did the job three times so the boot process was more complex and slow.
*The ini configuration file ==Easy to use==With this new approach use the software it's limited more easy to use, if you've the boot information stored inside a jffs2 partition you can use the linux kernel to max size: 16 KiB *Kernel Command line parameters access it's limited directly without the use of any flash tool tomodify the software (ex: 4 KiB *Malloc using nandwrite it's limited to 32 MiBrisky due to its inability to guarantee data integrity over the Nand Flash memory). *Cannot write comments in lines with tag=value<br>
== TODO<br> Upgrade faster and easy==Upgradint to a new kernel it's easier and faster, you only need to copy the new kernel inside the boot partition, copy your new igep.ini inside and reboot the board with all security.
=Features and Limitations===Improvements &amp; Modifications==* Added malloc/free functionality.* Added mtd framework and onenand support, removed the old onenand drivers.* Added fs jffs2 support using mtd &amp; onenand support (Read Only).* Added crc32 and zlib.* Jffs2 zlib compression support (Read Only).* Dual boot mmc &amp; onenand with mmc highest priority.*Added Linux kernel boot directly (Support for IGEP0030 - Family boards2.6.22 and highest version kernels)* Linux kernel supported images: vmlinuz, bzImage and zImage. *Support for other OMAP/DM/AM processor boardsloading Linux Ram disk (EXPERIMENTAL)* Added "ini" files parser.* The configuration resides in a plain txt (ini format file).* Support Windows &amp; Linux formating ini files.* boot from mmc, onenand, or mix with mmc highest priority. *Remove Added codeblocks project and compilation warningsrules.* Added support for vfat32 extra names.* Configure TPS65950 voltage to 1.35V if it's used a DM3730 processor. *Comments Added new parameter MachineID in kernel tag lines<br>file, with it you can* &nbsp;&nbsp;&nbsp; - configure the kernel board ID setup* Added new parameter buddy for kernels 2.6.35.y and 2.6.37.y* Optimize some LPDDR Memory configuration values* Removed some OneNand Debug information* Removed some FAT incorrect warnings* Added Support Initial Ram disk* Reconfigure Makefile options* Support Kernels 2.6.35, 2.6.37, 3.6.4* Added support for boot ARM binary files (such u-boot or QNX kernel)* Support for Numonyx, Micron and hynix POP Memories.* Memory autodetection.* Added GPTimer functionality.* Support Numonyx, Micron and hynix memories.* DMA Copy support* Omtimized memcpy and memset functions.* DSS Video driver.* Support ISEE toolchain yocto 1.2 based.
== STATUS<br> Limitations==* The ini configuration file it's limited to max size: 16 KiB* Kernel Command line parameters it's limited to: 4 KiB* Malloc it's hardcode limited to 32 MiB.* Video is limited to 1024 x 768 x 16 bits.* Video Memory is limited to 1280 x 720 x 32 bits.
==TODO==*Support IGEP0020 Revision B &amp; C family boardsRemove compilation warnings. *Tested with IGEPv2 (DM3730@1Ghz and 512/512 MB Ram/Onenand) System Rescue.*Tested with IGEPv2 (AM3703@1Ghz Improve boot selection and 512/512 MB Ram/Onenand) priority.*Tested with IGEPv2 (OMAP3530@720Mhz and 512/512 MB Ram/Onenand)<br>Remove unused code.
= Build Procedure<br> =STATUS==* Support:** IGEPv2 DM3730** IGEPv2 OMAP3530** IGEP COM MODULE DM3730** IGEP COM PROTON DM3730** IGEP COM MODULE AM3703
== Build VERSION CHANGES==[2.1.0-1] This version only can be build with Ubuntu Cross Compiler gcc linaro 4.5.1 ==2 other compilers be not supported.
<span style="font[2.1.0-style: italic;1] Removed some uncontrolled "><span style="font-weight: bold;printf">Enviroment</span></span>'''''Ubuntu 10with incorrect information.10'''''
=== Install the cross compiler if you not do it before[2.<br> ===<pre>apt-get install cpp-41.5-arm-linux-gnueabi g++0-41] Modified some code under __DEBUG__ option.5-arm-linux-gnueabi</pre> === Setup the board settings<br> ===<pre>make igep0020-sdcard_config</pre> === Build<br> ===<pre>make</pre> === Sign the binary x-loader<br> ===
''You should execute contrib/signGP [2.1.0-1] Added Support for TPS65950-A3 initialization at 1.35V [2.1.0-1] Added support for IGEP Module 0030 [2.1.0-1] Added support dynamic Machine ID selection (same xloader boot IGEPv2 &amp; IGEP Module) ---- [2.1.0-2] ARM Compilation bug resolved ---- [2.1.0-3] Update SDRAM structure initialization [2.1.0-3] Added support for sign Initial RAM disk [2.1.0-3] Updated Initial RAM disk destination address ---- [2.2.0-1] Update Makefile structure [2.2.0-1] Downgrade the xloaderboot processor speed ---- [2.3.0-1] Add NAND flash devices and Micron MT29CXGXXMAXX memories support [2.3.0-2] Add Hynix NAND memorie and IGEP0032 support [2.3.0-2] Added lzo compression schema. ---- [2.3.0-3] Add Support for execute ARM binaries [2.3.0-3] Bug Fixes related to I and D Cache ---- [2.4.'' 0-1] Added Memory test feature <pre>contrib/signGP x[2.4.0-1] Added some boot information [2.4.0-1] New read_nand_cache function optimized for loadfrom NAND [2.bin4.0-1] BUG resolved: Refresh Setup in Micron &amp; Hynix Memories The signed x[2.4.0-loader it's named1] BUG resolved: x-loadReset Memory controller after initialize Malloc function [2.bin4.ift0-1] BUG resolved: Resolve problems updating the flash content under jffs2</pre> == Build with IGEP SDK ==---- [2.4.0-2] Resolved Memory Autodetection
=== Setup the Enviroment<br> ===<pre>source /usr/local/poky/eabi[2.4.0-glibc/environment-setup-arm-none-linux-gnueabi</pre> === Setup the 2] Better hang board settings<br> ===<pre>make igep0020-sdcard_config</pre> === Build<br> ===<pre>make CROSS_COMPILE=arm-none-linux-gnueabi-</pre> === Sign the binary x-loader ===led control
''You should execute contrib/signGP for sign the xloader[2.'' <pre>contrib/signGP x-load4.binThe signed x-loader it's named: x0-2] New read_nand_cache function optimized for load.bin.ift</pre> == Build Native ==from OneNand
=== Configure the board settings<br> ===<pre>make igep0020[2.4.0-sdcard_config</pre><pre>Edit the variable CFLAGS and add the option: -fno-stack-protectorCFLAGS&nbsp;:= $(CPPFLAGS) -Wall -Wstrict-prototypes -fno-stack-protector</pre> === Build<br> ===<pre>make CROSS_COMPILE=arm-none-linux-gnueabi-</pre> === Sign the binary x-loader ===2] Added Hw GPtimer functionality
''You should execute contrib/signGP for sign the xloader.'' <pre>contrib/signGP x-load.binThe signed x-loader it's named: x-load.bin.ift</pre> = BOOT<br> =-
The IGEP X[2.5.0-Loader must reside in the microSD card or in the OneNand1] Added System DMA driver.<br>
== MMC Boot ==[2.5.0-1] Added optimized memcpy &amp; memset functions.
=== Prepare the microsd card ===[2.5.0-1] Improved boot speed.
You can follow this howto about how [http://code2.google5.com/p/beagleboard/wiki/LinuxBootDiskFormat prepare the microsd card0-1]Improve NAND driver support.
Get a new mmc and create two partitions, the first one must be fat [2.5.0-1] Auto x-loader.bin.ift and the second one can be formated in any format type supported by linux kernelMLO generation.<br>
=== Copy the files in the first (FAT) partition ===[2.5.0-1] Added DSS video support.
In the first partition you must copy in this order: ----
#x-loader.bin.ift (you must rename this file to MLO) / This is a signed image using contrib/signGP tool #x-loader configuration file [http://git.igep.es/?p=pub/scm/igep-x-loader.git;a=blob;f=scripts/igep.ini;h=7ecda91b2716d8984d48fa6c5eb5c74b8f0b0959;hb=HEAD igep.ini]&nbsp;also you can change the configuration file name editing the file:&nbsp;[http://git.igep.es/?p=pub/scm/igep-x-loader2.git;a=blob;f=include/configs/igep0020-sdcard5.h igep00200-sdcard.h2]&nbsp;(#define IGEP_BOOT_CFG_INI_FILE "igep.ini") #Your desired kernel imageFixed System DMA misconfiguration.
Load Order: <pre> 48 /* Linux Images */ 49 const char* LinuxImageNames [2.5.0-2] = { 50 "kparam" /* Use kparam first */ 51 "zImage", /* jffs2 it's case sensitive */ 52 "zimage", /* fat name it's not case sentitive */ 53 "vmlinuz", 54 "bzImage", 55 "bzimage", 56 0, 57 };Improve GPMC timming setup.
or you can set the name for your kernel in the configuration file using the tag: kImageName</pre> Don't use a uImage kernel format (from uboot), only standard kernel formats it's supported[2.5.0-2] Added DSS igep.ini variables.
'''kernel build command example''': <pre>$make ARCH=arm CROSS_COMPILE=arm[2.5.0-linux-gnueabi- zImage modules</pre> === Second Partition ===2] Added Support for new memory capacities.
Copy all your rootfs in this second partition[2.5.0-2] Auto x-loader.bin.ift and MLO generation.
Also you can use the [http://releases2.linaro5.org/platform/linaro-m/headless/final/linaro-m-headless-tar-201011080-2.tar.gz linaro 10.11 minimal image]&nbsp;download the image and untar (as root) in your microsd card second partitionMinor bug fixes.
Remember install the kernel modules in this partition. ----
Example[2.5.0-3] platform.S: <pre>sudo make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- modules_install INSTALL_MOD_PATH=[path downgrade MPU boot clock from 1GHz to your target rootfs]</pre> == OneNand Boot ==800 MHz
=== OneNand Partitions<br> ===----
We suggest use minimum 3 partitions on the OneNand[2. <pre>MTD partitions on "omap2-onenand":(a) 0x000000000000-0x000000080000&nbsp;: "X-Loader"(b) 0x000000080000-0x000000c80000&nbsp;: "Boot"(c) 0x000000c80000-0x000020000000&nbsp;: "File System"</pre> ==== X6.0-Loader Partition ====1] Remove OMAP35xx support
*Not fs formated (onenand raw) *Suggested size: 0x80000 (512 KiB) *The xloader must be signed before copy it into the flash memory[2.6.0-1] New DMA driver, now can handle different DMA channels and transfers
You should copy the x-loader in the firsts 4 blocks (first 512 KiB), this is not a&nbsp;formated partition due the ROM not permits boot from a formated partition in flash, you should use flash_eraseall and nandwrite for copy x-loader in the first blocks[2.6. <pre>&lt;u&gt;Suggested procedure:&lt;/u&gt;Erase and copy the x0-loader into the first flash partition1] GPMC:$nand_eraseall /dev/mtd0$nandwrite -p /dev/mtd0 &lt;x-loader&gt;Add support for use prefetch engine
Sign x-loader:You should execute contrib/signGP for sign the xloader that resides inside the flash memory[2.contrib/signGP x-load6.binThe signed x0-loader it's named1] NAND: x-load.bin.iftAdded a new Nand driver
Due the Onenand 512 MiB has two dies it's necessary split the x[2.6.0-loader and convert it to a 1 die binary.This is a know OMAP/DM/AM OneNand/Nand boot limitation.] NAND: Modify memory setup timmings
This is the procedure for create the x-loader OneNand binary:You should execute: (You can use copy paste in your console)split -b 2K x-load.bin.ift split-for file in `ls split-a?`; do cat $file &gt;&gt; x-load-ddp.bin.ift; cat $file &gt;&gt; x-load-ddp.bin.ift; done
This last command generate a file named x-load-ddp[2.bin6.ift this is the x0-loader for copy it in the OneNand.</pre> ==== <span style="display2] DMA: none;" id="1299156619608S">&nbsp;</span>Boot Partition ====disable dma_memcpy function due random kernel memory corruption
*fs used jffs2 zlib compressed filesystem=Pre-Compiled Binaries={| border="1" width="905" cellspacing="1" cellpadding="1"|-! scope="col"|Release! scope="col"|Download link! scope="col"|Support|-||2.6.0-2||[http://downloads.isee.biz/pub/releases/IGEP_xloader/igep-x-loader-2.6.0-2.tar.bz2 igep-x-loader-2.6.0-2.tar.bz2]||[[The_IGEP_X-loader#STATUS | DM3730 Boards]]|-||2.5.0-2||[http://downloads.isee.biz/pub/releases/IGEP_xloader/igep-x-loader-2.5.0-2.tar.bz2 igep-x-loader-2.5.0-2.tar.bz2]||[[The_IGEP_X-loader#STATUS | All OMAP3 Boards]]|-||2.4.0-2||[http://downloads.isee.biz/pub/releases/IGEP_xloader/igep-x-loader-2.4.0-2.tar.bz2 igep-x-loader-2.4.0-2.tar.bz2]||[[The_IGEP_X-loader#STATUS | All OMAP3 Boards]] except IGEP COM MODULE AM3703|-||2.1.0-2||[http://downloads.isee.biz/pub/releases/IGEP_xloader/igep-x-loader-2.1.0-2.tar.bz2 igep-x-loader-2.1.0-2.tar.bz2]||[[The_IGEP_X-loader#STATUS | All OMAP3 Boards]] except IGEP COM MODULE AM3703|-||2.1.0-3||[http://downloads.isee.biz/pub/releases/IGEP_xloader/igep-x-loader-2.1.0-3.tar.bz2 igep-x-loader-2.1.0-3.tar.bz2]||[[The_IGEP_X-loader#STATUS | All OMAP3 Boards]] except IGEP COM MODULE AM3703|-||2.2. 0-1*Suggested size||[http: 0xC00000 (12 MiB)//downloads.isee.biz/pub/releases/IGEP_xloader/igep-x-loader-2.2.0-1.tar.bz2 igep-x-loader-2.2.0-1.tar.bz2]||[[The_IGEP_X-loader#STATUS | All OMAP3 Boards]] except IGEP COM MODULE AM3703|}
X=Build Procedure===Build with ISEE SDK Yocto Toolchain 1.2=====Download and Install the cross compiler if you not do it before.===Download the toolchain from this [https://www.isee.biz/support/downloads/item/igep-sdk-yocto-toolchain-1-2-2-Loader only support jffs2 partitions for boot partition3 link] and uncompress it as root in your / directory.
<upre>Prepare Hint: Remember setup the boot partition for enviroment before build the first usesource:</u>
<u><source /opt/poky/1.2/u>You should follow the same procedure used for copy the xenvironment-setup-armv7a-vfp-neon-poky-linux-loader in the first partition. gnueabi</pre>Suggested procedure:Erase and copy the x-loader into the first flash partition:$nand_eraseall /dev/mtd0$nandwrite -p /dev/mtd0 &lt;your_boot_initial_jffs2_file&gt;
===Download the sources from our git repository===
<pre>git clone git://git.isee.biz/pub/scm/igep-x-loader.git
</pre>
===Get your desired tag / release===
git checkout &lt;your_desired_release&gt; -b &lt;your_name_release&gt;
Your initial boot partition can be a empty file the first time.</pre> git checkout release-2.5.0-2 -b release-2.5.0-2-local<u>Next uses:</upre>
<u></u>You can mount ===Setup the partition over your boot directory in the rootfs board build setup===<pre>$mount /dev/mtdblck1 /bootmake igep00x0_config</pre> And you can use ===Build the cp command for copy your kernel and igep.ini configuration file. software===<pre>$cp igep.ini /bootmake</pre> ==== Rootfs Partition =Sign the binary x-loader (Only versions prior to 2.5.0-x)===''You should execute contrib/signGP for sign the xloader.''
*fs (your prefered fs supported by linux, maybe a good choice <pre>contrib/signGP x-load.binThe signed x-loader it should be ubifs) *Size, all or you can create more partitions if you wish 's named: x-load.bin..&nbsp;:)ift</pre>
== Boot Priority Build Native=====Download from git repository=== git clone https://git.isee.biz/arm-boot/igep-x-loader.git git checkout &lt;your_desired_release&gt; -b &lt;your_name_release&gt;
XLoader first try load from mmc and if it fails then try from OneNand<pre style="font-weight: normal;"> git checkout release-2.5.0-2 -b release-2.5.0-2-local<br/pre>
'''MLO ===Configure the board settings===<pre>make igep00x0_config</pre><pre>Edit the variable CFLAGS and add the option: -fno-stack-protectorCFLAGS&nbsp;:= $(CPPFLAGS) -Wall -Wstrict-prototypes -fno-stack-protector</pre>===Build===<pre>make CROSS_COMPILE=arm-none-linux-gnueabi-</pre>===Sign the binary x-loader), igep.ini, zImage from MMC===''You should execute contrib/signGP for sign the xloader.'<br>If all it's present in the mmc it don't try to boot from Onenand.<br>
<pre>contrib/signGP x-load.binThe signed x-loader it'''MLO (s named: x-loader) in MMC, igepload.ini and zImage in Onenandbin.'''ift<br/pre>If only MLO it's provided this one try to load =BOOT=The IGEP X-Loader must reside in the other information from&nbsp;microSD card or in the OnenandNand Memory.
It means that XLoader always try to load ==MMC Boot=====Prepare the microsd card===You can follow this howto about how [http://code.google.com/p/beagleboard/wiki/LinuxBootDiskFormat prepare the information from MMC and if it fails then try microsd card] or [[How to load boot from OneNand. MicroSD Card]]
== Configuration file: igepGet a new microsd card and create two partitions, the first one must be fat16/32 and the second one can be formated in any format type supported by linux kernel.ini ==
[http://en.wikipedia.org/wiki/INI_file This entry ===Copy the files in wikipedia] can help the first (FAT) partition===In the first partition you how a ini file it's structured. must copy in this order:
The actual XLoader # x-loader.bin.ift (you must rename this file to MLO before copy it) / This is a signed image using contrib/signGP tool# x-loader configuration file [http://git.igep.es/?p=pub/scm/igep-x-loader.git;a=blob;f=scripts/igep.ini;h=ce093fe80c81d8888bf79464f847059b312bba83;hb=HEAD igep.ini]&nbsp;also you can handle two kind tagschange the configuration file name editing the file:&nbsp;[http: //git.igep.es/?p=pub/scm/igep-x-loader.git;a=blob;f=include/configs/igep00x0.h igep00x0.h]&nbsp;(#define IGEP_BOOT_CFG_INI_FILE "igep.ini")# Your desired kernel image.
[kernel] Used for internal XLoader setup.<br> Load Order:
<pre> 48 /* Linux Images */ 49 const char* LinuxImageNames [kparams] Used for pass the linux kernel parameters. = { 50 "kparam" /* Use kparam first */ 51 "zImage", /* jffs2 it's case sensitive */ 52 "zimage", /* fat name it's not case sentitive */ 53 "vmlinuz", 54 "bzImage", 55 "bzimage", 56 0, 57 };
=== TAGor you can set the name for your kernel in the configuration file using the tag: [kImageName</pre>Don't use a uImage kernel format (from uboot), only standard kernel]&nbsp; ===formats be supported.
<span class="Apple-style-span" style="line-height: normal; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px;" /><span style="color: rgb(255, 0, 0); ">''# kaddress (Kernel copy destination address)'kernel build command example'''</span>:
<span classpre>make ARCH="Apple-style-span" stylearm CROSS_COMPILE="line-height: normal; -webkit-borderarm-horizontalpoky-spacing: 1px; linux-webkitgnueabi-border-vertical-spacing: 1px;">kaddress=0x80008000zImage modules</spanpre>
<span style="color: rgb(255, 0, 0); ">''<span class="Apple-style-span" style="line-height: normal; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; "># rdaddress&nbsp;(RamDisk copy destination address)</span>''</span<span classSecond Partition=="Apple-style-span" style="line-height: normal; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px;">rdaddress=0x84000000</span>Copy all your rootfs in this second partition.
<span style="colorAlso you can use the [http: rgb(255, 0, 0); ">''<span class="Apple//releases.linaro.org/platform/linaro-style-span" style="line-height: normal; -webkit-borderm/headless/final/linaro-horizontal-spacing: 1px; m-webkitheadless-bordertar-vertical20101108-spacing: 1px2.tar.gz linaro 10.11 minimal image]&nbsp; "># Serial Hardware ID</span>''</spandownload the image and untar (as root) in your microsd card second partition.
<span class="Apple-style-span" style="line-height: normal; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px;">serialRemember install the kernel modules in this partition.low=00000001serial.high=00000000</span>
<span class="Apple-style-span" style="line-heightExample: normal; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px;" /><span style="color: rgb(255, 0, 0); ">''# Revision Hardware ID''</span>
<span classpre>sudo make ARCH="Apple-style-span" stylearm CROSS_COMPILE="linearm-height: normal; poky-webkitlinux-bordergnueabi-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px;">revisionmodules_install INSTALL_MOD_PATH=0001[path to your target rootfs]</spanpre>
<span style="color: rgb(255, 0, 0); ">''<span class="Apple-style-span" styleNand Boot=====Nand Partitions="line-height: normal; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; "># Kernel Image Name</span>''</span<span class="Apple-style-span" style="line-height: normal; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px;">kImageName=zImage-test</span>We've defined 3 partitions on the Nand Memory.
''<span style=pre>MTD partitions on "omap2-onenand"color: rgb(255, 0, 0a)0x000000000000-0x000000080000&nbsp; : "><span class="Apple-styleX-spanLoader" style="line(b) 0x000000080000-height: normal0x000000c80000&nbsp; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; "># Kernel Ramdisk Name</span></span>''<span style=Boot"color: rgb(255, 0, 0c)0x000000c80000-0x000020000000&nbsp; : " File System"</pre><span class===="AppleX-style-span" styleLoader Partition===="line-height* Not fs formated (onenand raw)* Size: normal; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px;">kRdImageName=rdImage-test0x80000 (512 KiB)</span>* The xloader must be signed before copy it into the flash memory.
<br> You should copy the x-loader in the firsts 4 blocks (first 512 KiB), this is not a&nbsp;formated partition due the ROM not permits boot from a formated partition in flash, you should use flash_eraseall and [http://git.isee.biz/?p=pub/scm/writeloader.git;a=summary writeloader] for copy x-loader in the first blocks.
4.2 Setup igep.ini file<brpre>------------------------<br># Note this format permits use the characters<br># '#' and ';' as comment check file size restrictions Suggested procedure:
[kernel]<br>kaddress=0x80008000<br>;rdaddress=0x84000000<br>serialSign the x-loader before write it on the flash or microsd card.low=00000001<br>serialSign x-loader:You should execute contrib/signGP for sign the xloader that resides inside the flash memory.high=00000000<br>revision=0001<br>;kImageName=<br>;kRdImageName= contrib/signGP x-load.binThe signed x-loader it's named: x-load.bin.ift
[kparams]Erase and copy the x-loader into the first flash partition (mtd0):flash_eraseall /dev/mtd0writeloader -i &lt;x-loader.bin.ift&gt; -o /dev/mtd0<br/pre>console=ttyS2,115200n8<br>;earlyprintk=serial,ttyS2,115200<br>mem=512M<br>boot_delay=0<br>;mpurate=800<br>;loglevelspan id=7<br>omapfb.mode"1299156619608S" style=dvi"display:1024x768MR-16@60<brnone;">smsc911x.mac=0xb2,0xb0,0x14,0xb5,0xcd,0xde&nbsp;<br/span>;ubi.mtdBoot Partition=2<br>;root=ubi0:igep0020-rootfs <br>;rootfstype=ubifs<br>root=* filesystem used jffs2 zlib/dev/mmcblk0p2 rw rootwait lzo compressed filesystem.* Suggested size: 0xC00000 (12 MiB).
X----Loader only support jffs2 partitions for boot partition.
Tags Supported<bru>Create the boot partition:</u>---------------
----
[kernel] ----<br>* kaddress=0x80008000
Kernel copy address, you should use the same address used in kernel image<brpre>configuration. If you don't know what it means maybe it's better don't change it. Suggested procedure:
*rdaddress=0x84000000<br>Kernel RAM disk copy address. <br>If you don't know what it means maybe it's better don't change it.Erase all mtd1 content:flash_eraseall /dev/mtd1
*serial.low=00000001Create your partition:mount -t jffs2 /dev/mtdblock1 /mnt<br/pre>* serial.high=00000000<bru>Board serial Number, you can read this information using Next uses:</proc/cpuinfou>
*revision=0001<bru>Board Revision ID, you </u>You can read this information using /proc/cpuinfomount the partition over your boot directory in the rootfs
*kImageName=zImage<brpre>Kernel file name, if you don'mount -t provide this tag it try to load these others:<br>jffs2 /dev/mtdblock1 / DEFAULT IMAGESboot<br/pre>"zImage"<br>"zimage"<br>"vmlinuz"<br>"bzImage"<br>"bzimage"You can use the cp command for copy your kernel and igep.ini configuration file.
*kRdImageName=rdimage<brpre>cp igep.ini /bootcp zImage /boot</pre>Kernel RAM Disk file====Rootfs Partition====* fs (your prefered fs supported by linux, maybe a good choice it should be ubifs)* Size, all or you can create more partitions if you don't provide this tag it try to load these otherswish ...&nbsp;:<br>// DEFAULT IMAGES<br>"initrd")
----==Boot Priority==XLoader first try load from mmc and if it fails then try from OneNand.
[kparams] ---'''MLO (x-loader), igep.ini, zImage from MMC'''<br/>Kernel parameters, If all these parameters are passed directly it's present in the mmc it don't try to the kernel using the<br>kernel command lineboot from Onenand.
kernel parameters documentation:<br>http://www.kernel'''MLO (x-loader) in MMC, igep.org/doc/Documentation/kernel-parametersini and zImage in Onenand.txt'''<br/>http://www.kernel.org/pub/linux/kernel/people/gregkh/lkn/lkn_pdf/ch09If only MLO it's provided this one try to load the other information from&nbsp;the Onenand.pdf
4.3 Boot Priority<br>-----------------<br>First It means that XLoader always try mmc to load the information from MMC and if it fails then try to load from OneNand.
Examples==Configuration file:<br>a) MLO (x-loader), igep.ini, zImage from MMC<br>If all ==[http://en.wikipedia.org/wiki/INI_file This entry in wikipedia] can help you how a ini file it's present in the mmc it don't try to boot from Onenandstructured.
b) MLO (Inside the sources/scripts directory you can found a [http://git.isee.biz/?p=pub/scm/igep-x-loader) in MMC, .git;a=blob;f=scripts/igep.ini and zImage in Onenand;h=ce093fe80c81d8888bf79464f847059b312bba83;hb=refs/heads/master igep.<br>If only MLO it's provided this one try to load the other information from<br>the Onenandini] example file.
4.4 OneNand Partition settings<br>-------------------------------<br>We suggest use minimum 3 partitions on the OneNand. The actual XLoader can handle two kind tags:
Creating 3 MTD partitions on "omap2-onenand":<br>0x000000000000-0x000000080000&nbsp;: "X-Loader"<br>0x000000080000-0x000000c80000&nbsp;: "Boot"<br>0x000000c80000-0x000020000000&nbsp;: "File System" [kernel] Used for internal XLoader setup.
4.4.1) Xloader partition<br>* Not fs formated (raw)<br>* Suggested size: 0x80000 (512 KiB)<br>* The xloader must be signed before copy it in [kparams] Used for pass the flash memorylinux kernel parameters.
You should ===TAG: [kernel]&nbsp;===<pre> 1 [kernel] 2 kaddress=0x80008000 3 rdaddress=0x81600000 4 serial.low=00000001 5 serial.high=00000000 6 revision=0001 7 kImageName=zImage-test 8 kRdImageName=rdImage-test 9 MachineID=xxxx Where Machine ID = 2344 for IGEPv2, ID = 2717 for IGEP COM Module, ID = 3203 for IGEP COM PROTON 10 Mode=&lt;kernel&gt; or &lt;binary&gt; 11 dss=&lt;0 or 1&gt; Enable or Disable Video Output 12 dss_color=&lt;0x00FF8000&gt; Write your desired color in hex value 13 dss_bitmap=&lt;filename&gt; Raw display image</pre>{| border="1" width="800" cellspacing="1" cellpadding="1"|-||Parameter Name||Description||Default Value||Comments|-||kaddress||Kernel copy the xaddress||0x80008000||hex memory address|-loader in the firsts 4 blocks ||rdaddress||Ram Disk location address||0x81600000||hex memory address|-||serial.low||Serial number (low part)||0 - 99999999||numeric|-||serial.high||Serial number (first 512 KiBhigh part)||0 - 99999999||numeric|-||revision||Revision ID||0 - 9999||numeric|-||kImageName||Kernel, this is not a <br>formated partition due the ROM not permits binary image name||N/A||Kernel or binary image name|-||kRdImageName||Ramdisk||N/A||Ram Disk image name|-||MachineID||Machine ID (kernel ID)||2717||2717 (IGEP COM Module) | 2344 IGEPv2 | 3203 (IGEP COM PROTON)|-||Mode||Boot Mode||kernel||kernel=linux kernel / binary=boot from therebinary image|-||dss||Enable Video||0||0 = Disable, you should use tools:<br>flash_eraseall and nandwrite for copy x1 Enable Video Output|-||dss_color||Video Color||0x00FF8000||Solid Color|-loader in the first blocks. ||dss_bitmap||Video Bitmap Image||string||filename with desired image|}
Suggested procedure===TAG:&nbsp;[kparams]===In this tag you can add all kernel parameters that you need, this is only an example:
nand_eraseall /dev/mtd0<brpre>nandwrite 10 [kparams] 11 console=ttyS2,115200n8 12&nbsp;;earlyprintk=serial,ttyS2,115200 13 mem=512M 14 boot_delay=0 15&nbsp;;mpurate=800 16&nbsp;;loglevel=7 17 omapfb.mode=dvi:1024x768MR-p /dev/mtd0 16@60\r 18 smsc911x.mac=0xb2,0xb0,0x14,0xb5,0xcd,0xde\r 19&nbsp;;ubi.mtd=2 20&ltnbsp;x;root=ubi0:igep0020-loaderrootfs 21&gtnbsp; ;rootfstype=ubifs 22 root=/dev/mmcblk0p2 rw rootwait
*Sign x-loader<br>You should execute contrib/signGP for sign the xloader that resides inside the flash memoryAlso remember you can comment any line using ';' or '#' characters.
contrib</signGP x-load.bin <brpre>The signed x-loader it's named: x-load.bin.ift
Due =FAQ===How I can boot from NFS?==Yes, you should add below parameters in the Onenand 512 MiB has two dies it's necessary split the x-loader and convert it to a 1 die binary.<br>This is a know OMAP/DM/AM OneNand/Nand boot limitation. kparams tag:
This is the procedure for create the x-loader OneNand binary<pre>#smsc911x.mac fix your mac addresssmsc911x.mac=0xb2,0xb0,0x14,0xb5,0xcd,0xde# IP set you IP settings &lt;local_ip&gt;:&lt;server_ip&gt;:&lt;gateway&gt;:&lt;network_mask&gt;::&lt;interface&gt;:ip=192.168.2.123:192.168.2.105:192.168.2.1:255.255.255.0::eth0:# Set root as nfsroot=/dev/nfs# Set your NFS root path as &lt;server_ip&gt;:&lt;rootfs_path&gt;nfsroot=192.168.2.105:/srv/nfs/linaro_minimal<br/pre>You should execute: (==How I can change the assigned kernel memory?==You can use copy paste in the mem kernel variable as assign your console) desired kernel memory as:
split -b 2K x-load.bin.ift split-<brpre>[kparams]mem=430M</pre>for file in `ls split-==How I can add more kernel variables?==You can add more variables creating a?`; do cat $file &gt;&gt; x-load-ddp.bin.ift; cat $file &gt;&gt; x-loadnew variable -ddp.bin.ift; done value pair under kparams tag as:
This last command generate a file named x-load-ddp.bin.ift this is the x-loader for copy it in <pre>boot_delay=0</pre>==How I can modify my MAC address?==You can assign your desired mac address using the OneNandvariable&nbsp;smsc911x. mac as:
4.4.2 Boot Partition<brpre>--------------------smsc911x.mac=0xb2,0xb0,0x14,0xb5,0xcd,0xde<br/pre>* fs used jffs2 zlib compressed ==How I can boot my board using ubi root filesystem.<br>* Suggested size?==You should use these parameters: 0xC00000 (12 MiB)
First time creation:<brpre>a) Use the same procedure described in point 4ubi.mtd=2.1. Copy your jffs2 compressed image in the<br>partition, it can be a empty file.
b) Erase the partition and mount it as jffs2 filesystem then you can copy with cp command. root=ubi0:igep0020-rootfs
Next Times:rootfstype=ubifs<br/pre>Copy the files ==How I can boot my board using cp command, or edit directlya RAM disk?==Use a RAMdisk it's fully supported.
when <pre>[kernel boots you can enable mount this partition over /boot directory for access all boot content]rdaddress=0x81600000kRdImageName=ramdisk. bin
4.4.3 Rootfs <br>------------<br>* fs (your prefered fs supported by linux, maybe a good choice it should be ubifs)<br>* Size, all or you can create more partitions if you wish ...&nbsp;:) [kparams]root=/dev/ram0 rw
<br/pre>5 Build procedure<br>===============Can I change the Processor frecuency?== Yes you can, IGEP X-loader configures the processor to boot at 600 Mhz you can select a different boot speed using the variable mpurate as:
5.1 Build with Ubuntu Cross Compiler gcc 4.5.<pre>mpurate=800</pre>If you don't force any frequency the linux kernel will put your processor at the maximum speed (ex: DM3730 will run at 1 Ghz)
*This is tested with Ubuntu 10.10
a) Install the cross compiler:<br>apt-get install cpp-4.5-arm-linux-gnueabi g++-4.5-arm-linux-gnueabi
b==How I can boot downloading the kernel using wget?==The way for do that it's using one minimal kernel and RAMdisk (ex: using image-core-minimal from poky) Configure , the board<br>make igep0020-sdcard_config procedure can be more or less:
ca) Build<br>make Copy your minimal kernel and your Ramdisk inside the boot partition.
db) Sign x-loader<br>You should execute contribBoot Normally from this kernel and Ramdisk, create one script your your desired command such wget http://signGP for sign the xloader that resides inside the flash memory192.168.15.<br>contrib22/signGP x-load.bin <br>The signed x-loader it's named: x-loadmykernel.bin.ift
<br>5.2 Build with IGEP SDK c) Execute the script when boot (you can do that adding the script to the init enviroment)
ad) Source if the enviroment<br>source /usr/local/poky/eabi-glibc/environment-setup-arm-none-linux-gnueabi downloading it's ok then execute the kexec call, first load the kernel and then pass to it your desired parameters.
be) Edit finally boot the file Makefile<br>Find the define: new kernel with kexec.
And Set the variable as:<br>CROSS_COMPILE = arm-none-linux-gnueabi-
b) Configure the board<br>make igep0020-sdcard_config
c==My board not boot and I don't know what to do ...==When you test your IGEP X-loader, igep.ini file and kernel we suggest use a microsd card in front of use directly the flash nand, if your flash not boot copy all files in one microsd card and boot from there. You can check what happens removing some files from your microsd card for example if you wish test if your flashed kernel it's loaded in a right way then remove the kernel from your microsd card (note: use the same kernel name) build<br>make , IGEP X-loader first try load the file from your microsd card but if it's not found then it try to find the file in the flash.
d) Sign x-loader<br>You should execute contrib/signGP for sign ==How I can upgrade my old kernel?==Just copy the xloader that resides inside new one, the flash memory.<br>contrib/signGP x-load.bin <br>The signed x-loader most secure way it's named: x-loadcopy the new one and at end replace the igep.binini file with your new one.ift
<brpre>5.3 Build Native mount -t jffs2 /dev/mtdblock1 /boot
a) Configure the board<br>make igep0020-sdcard_config cp newkernel.bin /boot
b) Modify the config cp igep.mk fileini /boot<br/pre>Edit the variable CFLAGS Use a different kernel name and add the option: -fno-stack-protector you always can boot from your old one.
CFLAGS=6 Contribution &amp; Support &amp; Bugs Report=Contributions to this project be welcome and you can send your patches to support@iseebcn.com&nbsp;or you can use the igep forum for it.<br />You can access to IGEP-x-Loader repository using our git at [http://git.isee.biz/?p= $(CPPFLAGS) pub/scm/igep-Wall x-Wstrict-prototypes -fno-stack-protector loader.git;a=summary git.isee.biz]<br />IGEP IRC Channel: [http://webchat.freenode.net/?channels=igep http://webchat.freenode.net/?channels=igep]
c) build <br>make CROSS_COMPILE=""
d) Sign x-loader<br>You should execute contrib{{Message/signGP for sign the xloader that resides inside the flash memory.<br>contrib/signGP x-load.bin <br>The signed x-loader it's named: x-load.bin.ift Forum}}
<br>6 Contribution &amp; Support &amp; Report Bugs<br>======================================<br>Contributions to this project be welcome and you can send your patches to support@iseebcn.com<br>or you can use the igep forum for it.<br>You can access to IGEP-x-Loader repository using our git at git.igep.es<br>IGEP IRC Channel[[Category: http://webchat.freenode.net/?channels=igep<br><span style="display: none;" id="1299156619619E">&nbsp;</span><br>Boot_loaders|X_Loader]]