1,381
edits
Changes
From IGEP - ISEE Wiki
→Download from git repository
=Features and Limitations===Improvements & Modifications==* Added malloc/free functionality.* Added mtd framework and onenand support, removed the old onenand drivers.* Added fs jffs2 support using mtd & onenand support (Read Only).* Added crc32 and zlib.* Jffs2 zlib compression support (Read Only).* Dual boot mmc & onenand with mmc highest priority.* Added Linux kernel boot directly (Support for 2.6.22 and highest version kernels)* Linux kernel supported images: vmlinuz, bzImage and zImage.* Support for loading Linux Ram disk (EXPERIMENTAL)* Added "ini" files parser.* The configuration resides in a plain txt (ini format file ).* Support Windows & Linux formating ini files.* boot from mmc, onenand, or mix with mmc highest priority.* Added codeblocks project and compilation rules.* Added support for vfat32 extra names.* Configure TPS65950 voltage to 1.35V if it's limited to max size: 16 KiB<br> This is not used a real limitation due all ini DM3730 processor.* Added new parameter MachineID in kernel tag file , with it's <br> copied into you can* - configure the RAM memorykernel board ID setup* Added new parameter buddy for kernels 2.6.35.y and 2.6.37.<br>y* Optimize some LPDDR Memory configuration values* Kernel Command line parameters it's limited to: 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 KiB<br> This is not a real limitation due all ini file it's <br> copied into the RAM memory* 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.<br>* Malloc it's limited to 32 MiBDSS Video driver.<br>* Cannot write comments in lines with tag=value Support ISEE toolchain yocto 1.2 based.
==TODO==* Add support for IGEP0030 - Family boardsRemove compilation warnings.<br>* Add support for other OMAP/DM/AM processor boardsSystem Rescue.<br>* Improve boot selection and priority.* Remove compilation warningsunused code.<br>* Add in the tag=value inline comments
[kparams]<br>console=ttyS2,115200n8<br>;earlyprintk=serial,ttyS2,115200<br>mem=512M<br>boot_delay=0<br>;mpurate=800<br>;loglevel=7<br>omapfb.mode=dvi:1024x768MR-16@60<br>smsc911x2.mac=0xb2,0xb0,0x14,0xb5,0xcd,0xde<br>;ubi1.mtd=2<br>;root=ubi0:igep00200-rootfs <br>;rootfstype=ubifs<br>root=/dev/mmcblk0p2 rw rootwait3] Update SDRAM structure initialization
[2.1.0-----------------------------------3] Added support for Initial RAM disk
---- [kernel] ----<br>* kaddress=0x80008000
---- [kparams] ----<br>Kernel parameters, all these parameters are passed directly to the kernel using the<br>kernel command line.
[2.4.4 OneNand Partition settings<br>0-------------------------------<br>We suggest use minimum 3 partitions on the OneNand.1] New read_nand_cache function optimized for load from NAND
[2.5.1 Build with Ubuntu Cross Compiler gcc 40-2] Added DSS igep.5ini variables.1
<pre>git checkout release-2.5.0-2 -b release-2.5.0-2-local</pre> ===Setup the board build setup===<pre>make igep00x0_config</pre>===Build the software===<pre>make</pre>===Sign the binary x-loader (Only versions prior to 2.5.0-x)===''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> ==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===<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.binThe signed x-loader it's named: x-load.bin.ift</pre>=BOOT=The IGEP X-Loader must reside in the microSD card or in the Nand Memory. ==MMC Boot=====Prepare the microsd card===You can follow this howto about how [http://code.google.com/p/beagleboard/wiki/LinuxBootDiskFormat prepare the microsd card] or [[How to boot from MicroSD Card]] Get 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. ===Copy the files in the first (FAT) partition===In the first partition you must copy in this order: # 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] also you can change the configuration file name editing the file: [http://git.igep.es/?p=pub/scm/igep-x-loader.git;a=blob;f=include/configs/igep00x0.h igep00x0.h] (#define IGEP_BOOT_CFG_INI_FILE "igep.ini")# Your desired kernel image. Load Order: <pre> 48 /* Linux Images */ 49 const char* LinuxImageNames [] = { 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 }; 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. Also you can use the [http://releases.linaro.org/platform/linaro-m/headless/final/linaro-m-headless-tar-20101108-2.tar.gz linaro 10.11 minimal image] download the image and untar (as root) in your microsd card second partition. Remember install the kernel modules in this partition. Example: <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===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. You should copy the x-loader in the firsts 4 blocks (first 512 KiB), this is not a 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. <pre>Suggested procedure: Sign the x-loader before write it on the flash or microsd card.Sign x-loader:You should execute contrib/signGP for sign the xloader that resides inside the flash memory.contrib/signGP x-load.binThe signed x-loader it's named: x-load.bin.ift Erase and copy the x-loader into the first flash partition (mtd0):flash_eraseall /dev/mtd0writeloader -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. <u>Create the boot partition:</u> <pre>Suggested procedure: Erase all mtd1 content:flash_eraseall /dev/mtd1 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====* 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 wish ... :) ==Boot Priority==XLoader first try load from mmc and if it fails then try from OneNand. '''MLO (x-loader), igep.ini, zImage from MMC'''<br/>If all it's present in the mmc it don't try to boot from Onenand. '''MLO (x-loader) in MMC, igep.ini and zImage in Onenand.'''<br />If only MLO it's provided this one try to load the other information from the Onenand. It means that XLoader always try to load the information from MMC and if it fails then try to load from 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. [kparams] Used for pass the linux kernel parameters. ===TAG: [kernel] ===<pre> 1 [kernel] 2 kaddress=0x80008000 3 rdaddress=0x81600000 4 serial.low=00000001 5 serial.high=00000000 6 Contribution 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=<kernel> or <binary> 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>{| border="1" width="800" cellspacing="1" cellpadding="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 12 ;earlyprintk=serial,ttyS2,115200 13 mem=512M 14 boot_delay=0 15 ;mpurate=800 16 ;loglevel=7 17 omapfb.mode=dvi:1024x768MR-16@60\r 18 smsc911x.mac=0xb2,0xb0,0x14,0xb5,0xcd,0xde\r 19 ;ubi.mtd=2 20 ;root=ubi0:igep0020-rootfs 21 ;rootfstype=ubifs 22 root=/dev/mmcblk0p2 rw rootwait Also remember you can comment any line using ';' or '#' characters. </pre> =FAQ===How I can boot from NFS?==Yes, you should add below parameters in the kparams tag: <pre>#smsc911x.mac fix your mac addresssmsc911x.mac=0xb2,0xb0,0x14,0xb5,0xcd,0xde# IP set you IP settings <local_ip>:<server_ip>:<gateway>:<network_mask>::<interface>: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 <server_ip>:&lt; Support rootfs_path&gt; Report Bugsnfsroot=192.168.2.105:/srv/nfs/linaro_minimal<br/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>boot_delay=0</pre>==How I can modify my MAC address?==You can assign your desired mac address using the variable smsc911x.mac as: <pre>smsc911x.mac=0xb2,0xb0,0x14,0xb5,0xcd,0xde</pre>==How I can boot my board using ubi root filesystem?==You should use these parameters: <pre>ubi.mtd=2 root=ubi0:igep0020-rootfs rootfstype=ubifs</pre>==How I can boot my board using a RAM disk?==Use a RAMdisk it's fully supported. <pre>[kernel]rdaddress=0x81600000kRdImageName=ramdisk.bin [kparams]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: <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) ==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. ==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. <brpre> 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=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 [http://git.isee.biz/?p=pub/scm/igep-x-loader.git;a=summary git.esisee.biz]<br/>IGEP IRC Channel: [http://webchat.freenode.net/?channels=igep http://webchat.freenode.net/?channels=igep<br><br>] {{Message/Forum}} [[Category:Boot_loaders|X_Loader]]