1,381
edits
Changes
From IGEP - ISEE Wiki
→Download from git repository
= Summary<br><br> = X-Loader, an initial program loader for Embedded boards based on OMAP processors. <br>
Access to the latest version [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.git;a=blob_plain;f=ISEE_README.txt;h=909c072bc2512026342d802b3ef1b7e8f703458b;hb=4bb2ebd99d5b86522d786ac5b074066e9841799c ISEE_Readme.txt] for get the latest release information.
= Why IGEP-Xloader =Some important reasons exist for using this bootloader on IGEP boards.
== Maintenance 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.
== Easy to use 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.
== Upgrade faster and easy STATUS==* Support:** IGEPv2 DM3730** IGEPv2 OMAP3530** IGEP COM MODULE DM3730** IGEP COM PROTON DM3730** IGEP COM MODULE AM3703
----
[2.1.0-2] ARM Compilation bug resolved<br>
----
[2.1.0-3] Update SDRAM structure initialization<br>
[2.1.0-3] Added support for Initial RAM disk<br>
[2.1.0-3] Updated Initial RAM disk destination address
----
[2.2.0-1] Update Makefile structure
[2.2.0-1] Downgrade the boot processor speed<br>
----
[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
[2.4.0-1] Added some boot information
[2.4.0-1] New read_nand_cache function optimized for load from NAND
[2.4.0-1] BUG resolved: Refresh Setup in Micron & Hynix Memories
[2.4.0-1] BUG resolved: Reset Memory controller after initialize Malloc function
[2.4.0-1] BUG resolved: Resolve problems updating the flash content under jffs2
----
[2.4.0-2] Resolved Memory Autodetection
[2.4.0-2] Better hang board led control
[2.4.0-2] New read_nand_cache function optimized for load from OneNand
[2.4.0-2] Added Hw GPtimer functionality<br>
----
[2.5.0-1] Added System DMA driver.
[2.5.0-1] Added optimized memcpy & memset functions.
[2.5.0-1] Improved boot speed.
[2.5.0-1] Improve NAND driver support.
[2.5.0-1] Auto x-loader.bin.ift and MLO generation.
[2.5.0-1] Added DSS video support.<br>
----
[2.5.0-2] Fixed System DMA misconfiguration.
[2.5.0-2] Improve GPMC timming setup.
[2.5.0-2] Added DSS igep.ini variables.
[2.5.0-2] Added Support for new memory capacities.
[2.5.0-2] Auto x-loader.bin.ift and MLO generation.
[2.5.0-2] Minor bug fixes.
[2.6.0-2] DMA: disable dma_memcpy function due random kernel memory corruption
= Pre-Compiled Binaries = {| cellspacing="1" cellpaddingborder="1" width="905" bordercellspacing="1" stylecellpadding="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 || [http://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
|}
= Build Procedure<br> = == Build with ISEE SDK Yocto Toolchain 1.2 == === Download and Install the cross compiler if you not do it before.<br> ===Download the toolchain from this [https://www.isee.biz/support/downloads/item/igep-sdk-yocto-toolchain-1-2-2-3 link] and uncompress it as root in your / directory.
<pre>Hint: Remember setup the enviroment before build the source:
source /opt/poky/1.2/environment-setup-armv7a-vfp-neon-poky-linux-gnueabi</pre>
=== 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 <your_desired_release> -b <your_name_release>
<pre>git checkout release-2.5.0-2 -b release-2.5.0-2-local
</pre>
=== Setup the board build setup<br> ===<pre>make igep00x0_config</pre> === Build the software<br> ===<pre>make</pre> === Sign the binary x-loader (Only versions prior to 2.5.0-x)<br> ===''You should execute contrib/signGP for sign the xloader.''
<pre>contrib/signGP x-load.bin
The signed x-loader it's named: x-load.bin.ift
</pre>
== Build Native =====Download from git repository=== git clone https://git.isee.biz/arm-boot/igep-x-loader.git git checkout <your_desired_release> -b <your_name_release>
<pre style="font-weight: normal;"> git checkout release-2.5.0-2 -b release-2.5.0-2-local
</pre>
=== Configure the board settings ===<pre>make igep00x0_config</pre><pre>Edit the variable CFLAGS and add the option: -fno-stack-protectorCFLAGS := $(CPPFLAGS) -Wall -Wstrict-prototypes -fno-stack-protector</pre> === Build<br> ===<pre>make CROSS_COMPILE=arm-none-linux-gnueabi-</pre> === Sign the binary x-loader ===''You should execute contrib/signGP for sign the xloader.''
<pre>contrib/signGP x-load.bin
The signed x-loader it's named: x-load.bin.ift
</pre> = BOOT<br> =The IGEP X-Loader must reside in the microSD card or in the Nand Memory.
=== Prepare Copy the microsd card files in the first (FAT) partition===In the first partition you must copy in this order:
<pre> 48 /* Linux Images */
49 const char* LinuxImageNames [] = {
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 be supported. '''kernel build command example''':
<pre>make ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi- zImage modules
</pre>
=== Second Partition ===Copy all your rootfs in this second partition.
<pre>sudo make ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi- modules_install INSTALL_MOD_PATH=[path to your target rootfs]
</pre>
== Nand Boot == === Nand Partitions<br> ===We've defined 3 partitions on the Nand Memory.
<pre>MTD partitions on "omap2-onenand":
(a) 0x000000000000-0x000000080000 : "X-Loader"
(b) 0x000000080000-0x000000c80000 : "Boot"
(c) 0x000000c80000-0x000020000000 : "File System"
</pre> ==== X-Loader Partition ====* Not fs formated (onenand raw)* Size: 0x80000 (512 KiB)* The xloader must be signed before copy it into the flash memory.
<pre>Suggested procedure:
Erase and copy the x-loader into the first flash partition (mtd0):
writeloader -i <x-loader.bin.ift> -o /dev/mtd0
</pre> ==== <span id="1299156619608S" style="display: none;"> </span>Boot Partition ====* filesystem used jffs2 zlib/lzo compressed filesystem.* Suggested size: 0xC00000 (12 MiB). X-Loader only support jffs2 partitions for boot partition.
<pre>Suggested procedure:
Create your partition:
mount -t jffs2 /dev/mtdblock1 /mnt
</pre> <u>Next uses:</u>
<u></u>You can mount the partition over your boot directory in the rootfs <pre>mount -t jffs2 /dev/mtdblock1 /boot</pre> You can use the cp command for copy your kernel and igep.ini configuration file. <pre>cp igep.ini /bootcp zImage /boot</pre> ==== Rootfs Partition ====
<pre>cp igep.ini /bootcp zImage /boot</pre>====Rootfs Partition== Boot Priority ==* fs (your prefered fs supported by linux, maybe a good choice it should be ubifs)XLoader first try load from mmc and * Size, all or you can create more partitions if it fails then try from OneNandyou wish ...<br> :)
'''MLO (x-loader) in MMC, igep.ini and , zImage in Onenand.from MMC'''<br/>If only MLO all it's provided this one present in the mmc it don't try to load the other information boot from the Onenand.
==Configuration file: igep.ini==[http://en.wikipedia.org/wiki/INI_file This entry in wikipedia] can help you how a ini file it's structured.
Inside the sources/scripts directory you can found a [http://git.isee.biz/?p=pub/scm/igep-x-loader.git;a=blob;f=scripts/igep.ini;h=ce093fe80c81d8888bf79464f847059b312bba83;hb=refs/heads/master igep.ini] example file.
The actual XLoader can handle two kind tags:
[kernel] Used for internal XLoader setup.<br>
[kparams] Used for pass the linux kernel parameters.
=== TAG: [kernel] ===
<pre> 1 [kernel]
2 kaddress=0x80008000
11 dss=<0 or 1> Enable or Disable Video Output
12 dss_color=<0x00FF8000> Write your desired color in hex value
13 dss_bitmap=<filename> Raw display image</pre> {| cellspacingborder="1" cellpaddingwidth="1800" widthcellspacing="8001" bordercellpadding="1"
|-
|| Parameter Name || Description || Default Value || Comments
|-
|| kaddress || Kernel copy address || 0x80008000 || hex memory address
|-
|| rdaddress || Ram Disk location address || 0x81600000 || hex memory address
|-
|| serial.low || Serial number (low part) || 0 - 99999999 || numeric
|-
|| serial.high || Serial number (high part) || 0 - 99999999 || numeric
|-
|| revision || Revision ID || 0 - 9999 || numeric
|-
|| kImageName || Kernel, 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 binary image
|-
|| dss|| Enable Video|| 0|| 0 = Disable, 1 Enable Video Output
|-
|| dss_color|| Video Color|| 0x00FF8000|| Solid Color
|-
|| dss_bitmap|| Video Bitmap Image|| string|| filename with desired image
|}
=== TAG: [kparams] ===In this tag you can add all kernel parameters that you need, this is only an example:
<pre> 10 [kparams]
11 console=ttyS2,115200n8
</pre>
= FAQ = == How I can boot from NFS? ==Yes, you should add below parameters in the kparams tag:
<pre>#smsc911x.mac fix your mac address
smsc911x.mac=0xb2,0xb0,0x14,0xb5,0xcd,0xde
root=/dev/nfs
# Set your NFS root path as <server_ip>:<rootfs_path>
nfsroot=192.168.2.105:/srv/nfs/linaro_minimal</pre> == How I can change the assigned kernel memory? ==You can use the mem kernel variable as assign your desired kernel memory as:
<pre>[kparams]
mem=430M</pre> == How I can add more kernel variables? ==You can add more variables creating a new variable - value pair under kparams tag as:
<pre>ubi.mtd=2
root=ubi0:igep0020-rootfs
rootfstype=ubifs</pre> == How I can boot my board using a RAM disk?<br> ==Use a RAMdisk it's fully supported.
<pre>[kernel]
rdaddress=0x81600000
root=/dev/ram0 rw
</pre> == 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:
==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), the procedure can be more or less:
a) Copy your minimal kernel and your Ramdisk inside the boot partition.
b) Boot Normally from this kernel and Ramdisk, create one script your your desired command such wget http://192.168.15.22/mykernel.bin
c) Execute the script when boot (you can do that adding the script to the init enviroment)
d) if the downloading it's ok then execute the kexec call, first load the kernel and then pass to it your desired parameters.
e) finally boot the new kernel with kexec.
==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), 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.<br>
== How I can upgrade my old kernel? ==Just copy the new one, the most secure way it's copy the new one and at end replace the igep.ini file with your new one.
<pre> mount -t jffs2 /dev/mtdblock1 /boot
cp newkernel.bin /boot
cp igep.ini /boot</pre> Use a different kernel name and you always can boot from your old one. = 6 Contribution & Support & Bugs Report =
=6 Contribution & Support & Bugs Report=Contributions to this project be welcome and you can send your patches to support@iseebcn.com 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=pub/scm/igep-x-loader.git;a=summary git.isee.biz]<br/>IGEP IRC Channel: [http://webchat.freenode.net/?channels=igep http://webchat.freenode.net/?channels=igep]<br>
{{Message/Forum}}
[[Category:Boot_loaders|X_Loader]]