1,381
edits
Changes
From IGEP - ISEE Wiki
no edit summary
__TOC__{{Message/Information Message|message== Ubuntu 8New [http://labs.isee.biz/index.04 php/IGEP_SDK_Virtual_Machine IGEP v2.0 SDK Virtual Machine HOWTO ==] is available}}
==Ubuntu 8.04 IGEP v2.0 SDK Virtual Machine HOWTO===== Overview of this HOWTO ===This How-To is meant to be a starting point for people who use the Ubuntu 8.04 IGEP v2.0 SDK Virtual Machine and wants to learn how to add some enhancements to the VM.
=== Requirements ===* [https://www.isee.biz/support/downloads/item/igep-virtual-machine-sdk-2-0 Ubuntu 8.04 IGEP v2.0 SDK Virtual Machine]** Try: http://www.isee.biz/component/zoo/item/igep-virtual-machine-sdk* [http://labs.isee.biz/index.php/IGEPv2 IGEPv2 board] with [[How to upgrade and recover the factory firmware|factory defaults]]* [https://www.isee.biz/support/downloads/item/igep Software User Manuals]
===Which IGEP SDK Virtual Machine do I have ?===
At this moment (2010-December), your IGEP SDK Virtual Machine could be:
* [[Ubuntu_8Ubuntu 8.04_IGEP_v204 IGEP v2.0_SDK_Virtual_Machine0 SDK Virtual Machine#Ubuntu_8.04_IGEP_v2.0_SDK_Virtual_Machine_.28version_20101124.29| 20101124]] version ( based on: Ubuntu 8.04.4 + Poky 20101124 version + IGEP0020-RC board )* [[Ubuntu_8Ubuntu 8.04_IGEP_v204 IGEP v2.0_SDK_Virtual_Machine0 SDK Virtual Machine#Ubuntu_8.04_IGEP_v2.0_SDK_Virtual_Machine_.28version_20091222.29| 20091222]] version ( based on: Ubuntu 8.04.1 + Poky 20090721 version + IGEP0020-RB board )
=== Which Poky SDK toolchain do I have ? ===You could see "Poky SDK toolchain" version at '/usr/local/poky/eabi-glibc/version-arm-none-linux-gnueab' file:
Distro: poky
Distro Version: 3.2.1
Timestamp: 20100331130432
</pre>
===Which Poky SDK rootfs version do I have ?===
You could see "Poky nfs exported rootfs demo" version at '/srv/nfs/poky/poky-image-sato/igep0020/etc/version' file:
201011231602
</pre>
* This is the lastest available IGEP SDK Virtual Machine (2010-December)
* It provides installed demos at "/srv/" directory
** TFTP exported Linux kernels at "/srv/tftp/poky/poky-image-XXXXX/igep0020/uImage" files
** NFS exported rootfs at "/srv/nfs/poky/poky-image-XXXXX/igep0020/" filesdirectories
* It provides a compiled toolchain demo at "/usr/local/poky/eabi-glibc" directory * There is a project source code example at "/home/jdoe/staging/x-loader/" directory, that is git cloned from http://git.igepisee.es biz/ public source code repositories
* It is based on Ubuntu 8.04.4 distribution
* It provides quick links to ISEE IGEP boards ecosystem
* What's New:
** OMAP3730 processor support
** Upgraded toolchain
===Virtual Machine Enhancements (version 20101124)===
====Software updates====
* mkimage:
** wget [http://es.archive.ubuntu.com/ubuntu/pool/main/u/uboot-mkimage/uboot-mkimage_0.4build1_i386.deb http://es.archive.ubuntu.com/ubuntu/pool/main/u/uboot-mkimage/uboot-mkimage_0.4build1_i386.deb]
** dpkg -i uboot-mkimage_0.4build1_i386.deb
<pre>Selecting previously deselected package uboot-mkimage.
(Reading database ... 125211 files and directories currently installed.)
Unpacking uboot-mkimage (from uboot-mkimage_0.4build1_i386.deb) ...
Setting up uboot-mkimage (0.4build1) ...
</pre>
====Upgrade the Poky's SDK====
* (Not available)
===Getting Started===
First at all, you should read [http://www.igep.es/index.php?option=com_content&view=article&id=99&Itemid=112&dir=%2Fvar%2Fwww%2Fvhosts%2Figep.es%2Fhttpdocs%2Fdownloads%2F01-ISEE_Products%2FIGEPv2/SW_User_Manuals IGEPv2 SDK User Manual] and follow its instructions.
Below steps are a quick and partial summary of [http://www.igep.es/index.php?option=com_content&view=article&id=99&Itemid=112&dir=%2Fvar%2Fwww%2Fvhosts%2Figep.es%2Fhttpdocs%2Fdownloads%2F01-ISEE_Products%2FIGEPv2/SW_User_Manuals IGEPv2 SDK User Manual]:
* Download [http://www.igep.es/index.php?option=com_content&view=article&id=99&Itemid=112&dir=%2Fvar%2Fwww%2Fvhosts%2Figep.es%2Fhttpdocs%2Fdownloads%2F01-ISEE_Products%2FIGEPv2%2FSW_Tools_SDK%2FSDK Ubuntu 8.04 IGEP v2.0 SDK Virtual Machine]
* Uncompress Ubuntu-8.04-IGEP-v2.0-20101124.7z file (Windows users use [http://www.7-zip.org/ 7-zip] / Linux users use [http://p7zip.sourceforge.net/ p7zip])
* Start up uncompressed virtual machine ( [http://www.vmware.com/products/player/ VMware Player], kvm, qemu, VirtualBox…).
* Log on virtual machine login (Username: '''jdoe''' / Password: '''letmein''' / Default IP address: '''192.168.254.10''' )
===Examples===
====Example 1: Hello world (built with cross toolchain)====
* Power up your Ubuntu 8.04 IGEP v2.0 SDK Virtual Machine
Power up your development environment and login into bash shell
* Create source code text file
First of all you need to initialize a suitable environment in the bash shell console inside your virtual machine. <br /> You can do this sourcing once the environment-setup script.
<pre>$ source /usr/local/poky/eabi-glibc/environment-setup-arm-none-linux-gnueabi
</pre>
Create a single .c file (hello-world.c), using your preferred editor (vi, nano, gedit, ...) <br /> <br /> hello-world.c:
<pre>#include <stdio.h>
int main (int argc, char **argv)
{
printf("Hello world !\n");
return 0;
}
</pre>
* Build arm binary executable
Cross toolchain tools are available into the built-in virtual machine Poky SDK. You only need open bash terminal prompt and write commands:
<pre>$ arm-none-linux-gnueabi-gcc -o hello-world hello-world.c
$ file hello-world
hello-world: ELF 32-bit LSB executable, ARM, version 1 (SYSV), for GNU/Linux 2.6.14, dynamically linked (uses shared libs), not stripped
</pre>
* Transfer arm executable file from virtual machine to IGEPv2 board
Copy the binary result to your NFS-mounted root filesystem on your local virtual machine path <pre>$ sudo cp hello-world /srv/nfs/poky/poky-image-sato/igep0020a/home/root[sudo] password for jdoe: letmein</pre>* Execute arm executable file inside IGEPv2 board And run the program in your target device (serial console or ssh network terminal) <pre># cd /home/root# ./hello-worldHello World !</pre>====Example 2: Hello world (built with autotool+cross toolchain)====Using the SDK with autotool enabled packages is straightforward; just pass the appropriate host option to configure <pre>$ ./configure --target=arm-none-linux-gnueabi --host=arm-none-linux-gnueabi</pre>Now, it shows how you can download the GNU Hello program and build for your device <br /> <br /> See log example: <pre>$ wget http://ftp.gnu.org/gnu/hello/hello-2.4.tar.gz$ tar xzvf hello-2.4.tar.gz$ cd hello-2.4$ source /usr/local/poky/eabi-glibc/environment-setup-arm-none-linux-gnueabi$ ./configure --target=arm-none-linux-gnueabi --host=arm-none-linux-gnueabi$ make$ file src/hellosrc/hello: ELF 32-bit LSB executable, ARM, version 1 (SYSV), for GNU/Linux 2.$ scp src/hello root@192.168.254.254:/home/root</pre>=== Demos (version 20101124) ======= Rootfs demos using an NFS-TFTP environment for IGEP v2 ====
IGEP SDK Virtual Machine comes with 2 installed demos:
* poky-image-sato (271M)
* poky-image-minimal (137M)
You could find these demo on TFTP (Linux kernel) and NFS (rootfs) exported directories. * TFTP exported Linux kernels at "/srv/tftp/poky/poky-image-XXXXX/igep0020/uImage" files <pre>jdoe@ubuntu:~$ cat /etc/inetd.conf tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /srv/tftp</pre> * NFS exported rootfs at "/srv/nfs/poky/poky-image-XXXXX/igep0020/" directories <pre>jdoe@ubuntu:~$ cat /etc/exports
# /etc/exports: the access control list for filesystems which may be exported
# to NFS clients. See exports(5).
/srv/nfs/poky/poky-image-minimal/igep0020 *(rw,no_root_squash,no_subtree_check,sync)
</pre>
If you want use these demos, IGEPv2 should boot with network TFTP+NFS method. Let show it:
* 1) Open [[Using serial debug port to communicate|debug serial port]] and configure U-Boot environment variables. Press any key when you see:
<pre>Hit any key to stop autoboot: 5
</pre>
Bootlog:
<pre>60
Texas Instruments X-Loader 1.4.4-0 (Oct 21 2010 - 21:21:22)
Loading u-boot.bin from onenand
U-Boot 2010.06-0 (Nov 02 2010 - 10:07:55)
OMAP3630/3730-GP ES2.0, CPU-OPP2, L3-165MHz
IGEP v2 board + LPDDR/ONENAND
I2C: ready
DRAM: 512 MiB
Muxed OneNAND(DDP) 512MB 1.8V 16-bit (0x58)
OneNAND version = 0x0031
Chip support all block unlock
Chip has 2 plane
block = 2048, wp status = 0x2
Scanning device for bad blocks
Bad eraseblock 176 at 0x01600000
Bad eraseblock 2648 at 0x14b00000
Bad eraseblock 2649 at 0x14b20000
OneNAND: 512 MiB
OneNAND: Read environment from 0x00200000
In: serial
Out: serial
Err: serial
Die ID #4ee800011ff0000001592f350102302a
Net: smc911x-0
Hit any key to stop autoboot: 5
</pre>
* 2) Now, you are inside U-Boot prompt. Configure U-Boot environment variables with:
<pre>U-Boot # setenv project poky-image-sato
U-Boot # setenv machine igep0020
U-Boot # saveenv
Saving Environment to OneNAND...
OneNAND: Saved environment to 0x00200000
U-Boot #
</pre>
All your environment variables should be similar to:
<pre>U-Boot # printenv
bootdelay=5
baudrate=115200
distro=poky
ethaddr=ac:de:48:00:02:54
ipaddr=192.168.254.254
netmask=255.255.255.0
gatewayip=192.168.254.10
serverip=192.168.254.10
addip=setenv bootargs ${bootargs} ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}::eth0:
bootargs-base=console=ttyS2,115200n8 console=tty0 omapfb.mode=dvi:1024x768MR-16@60
mmc-bootargs=setenv bootargs ${bootargs-base} root=/dev/mmcblk0p2 rw rootwait
mmc-boot=mmc init 0; if fatload mmc 0 0x80000000 boot.ini; then source; else if fatload mmc 0 0x80000000 uImage; then run mmc-bootargs; bootm 0x80000000; fi; fi
onenand-bootargs=setenv bootargs ${bootargs-base} root=/dev/mtdblock4 rootfstype=jffs2 ; run addip
onenand-boot=run onenand-bootargs; onenand read 0x80000000 0x280000 0x300000 ; bootm 0x80000000
nfs-bootargs=setenv bootargs ${bootargs-base} root=/dev/nfs nfsroot=${serverip}:/srv/nfs/${distro}/${project}/${machine} ; run addip
nfs-boot=if ping ${serverip}; then run nfs-bootargs; tftp 0x80000000 ${distro}/${project}/${machine}/uImage; bootm 0x80000000; fi;
bootcmd=run mmc-boot; run nfs-boot; run onenand-boot
stdin=serial
stdout=serial
stderr=serial
dieid#=4ee800011ff0000001592f350102302a
ethact=smc911x-0
machine=igep0020
project=poky-image-sato
Environment size: 1248/524284 bytes
</pre>
Now, we can boot with TFTP+NFS method
<pre>U-Boot # run nfs-boot
smc911x: detected LAN9221 controller
smc911x: phy initialized
smc911x: MAC ac:de:48:00:02:54
Using smc911x-0 device
host 192.168.254.10 is alive
smc911x: detected LAN9221 controller
smc911x: phy initialized
smc911x: MAC ac:de:48:00:02:54
Using smc911x-0 device
TFTP from server 192.168.254.10; our IP address is 192.168.254.254
Filename 'poky/poky-image-sato/igep0020/uImage'.
Load address: 0x80000000
Loading: #################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
##############################################
done
Bytes transferred = 2894252 (2c29ac hex)
## Booting kernel from Legacy Image at 80000000 ...
Image Name: OpenedHand Linux (Poky)/2.6.35.9
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 2894188 Bytes = 2.8 MiB
Load Address: 80008000
Entry Point: 80008000
Verifying Checksum ... OK
Loading Kernel Image ...
</pre>
* 3) When you get system up, login and check your boot method
See "root=/dev/nfs" and "nfsroot=192.168.254.10:/srv/nfs/poky/poky-image-sato/igep0020" in boot Linux cmdline string parameter:
<pre>OpenedHand Linux (Poky) 3.3.1 igep0020 ttyS2
igep0020 login: root
root@igep0020:~# cat /proc/cmdline
console=ttyS2,115200n8 console=tty0 omapfb.mode=dvi:1024x768MR-16@60 root=/dev/nfs nfsroot=192.168.254.10:/srv/nfs/poky/poky-image-sato/igep0020 ip=192.168.254.254:192.168.254.10:192.168.254.10:255.255.255.0::eth0:
root@igep0020:~#
</pre>
----
===HOWTOs===
This section describes related manuals and HOWTOs.
=== Virtual Machine Enhancements (version 20101124) =The bootloader X-loader====[[The bootloader X-loader|This HOWTO]] should be readed for advanced developers who wants hacking first stage bootloader.
===OTHER REFERENCES= Rootfs demos using an NFS-TFTP environment for IGEP v2 ====* ==Frequency Asked Questions (Not availableFAQ)====Useful webpage is "[[Frequently Asked Questions and Their Answers|Frequency Asked Questions]]" or [[Frequently Asked Questions and Their Answers|FAQ]] page. Users could find common questions about IGEPv2 board and very quick answers about IGEPv2 software and hardware issues.
====FORUM====
Lots of knowledge can be found in the free [http://www.igep.es/forum/ IGEP Support Forum]. First, search to see if anyone else has had the same issue. Then, if you don't find anything about your issue, you should create a new post.
----
* Older IGEP SDK Virtual Machine (2009-December)
=== Demos (version 20091222) ======= Rootfs demos using an NFS-TFTP environment for IGEP v2 ==== The simplest way to create a new NFS-TFTP environment for IGEP v2 is to use an already working filesystem and pre-built kernel image. Pre-built images are also available.
===== poky-image-minimal-mtdutils - A small image, just enough to allow a device to boot =====Download and install the root filesystem image (poky-image-minimal-mtdutils-igep0020.cpio) as root on the NFS server,
<pre>$ sudo mkdir -p /srv/nfs/poky/poky-image-minimal-mtdutils/igep0020
$ cd /srv/nfs/poky/poky-image-minimal-mtdutils/igep0020
$ sudo wget http://downloads.igep.es/poky/purple-3.2/v3.2.1-0/images/poky-image-minimal-mtdutils-igep0020.rootfs.cpio
$ sudo cpio -idm < poky-image-minimal-mtdutils-igep0020.rootfs.cpio
</pre> Download and copy a pre-built kernel image to poky-image-minimal project
<pre>$ sudo wget http://downloads.igep.es/poky/purple-3.2/v3.2.1-0/kernel/uImage-2.6.28-r4-igep0020-20100331100327.bin
$ sudo mkdir -p /srv/tftp/poky/poky-image-minimal-mtdutils/igep0020
$ sudo mv uImage-2.6.28-r4-igep0020-20100331100327.bin /srv/tftp/poky/poky-image-minimal-mtdutils/igep0020/
$ sudo ln -s uImage-2.6.28-r4-igep0020-20100331100327.bin /srv/tftp/poky/poky-image-minimal-mtdutils/igep0020/uImage
</pre> Export the directory tree with an entry in /etc/exports file editing with your preferred editor, like
<pre>/srv/nfs/poky/poky-image-minimal-mtdutils/igep0020 *(rw,no_root_squash,no_subtree_check,sync)
</pre> and restart the NFS server
<pre>$ sudo /etc/init.d/nfs-kernel-server restart
</pre> Now, you can power up your board, stop at u-boot, set the project variable point to poky-image-minimal-mtdutils and boot via NFS
<pre># setenv machine igep0020
# setenv project poky-image-minimal-mtdutils
# run nfs-boot
</pre> ===== poky-image-sato - X11 image with Sato theme and Pimlico applications. =====Download and install the root filesystem image (poky-image-sato-igep0020.cpio) as root on the NFS server,
<pre>$ sudo mkdir -p /srv/nfs/poky/poky-image-sato/igep0020
$ cd /srv/nfs/poky/poky-image-sato/igep0020
$ sudo wget http://downloads.igep.es/poky/purple-3.2/v3.2.1-0/images/poky-image-sato-igep0020.rootfs.cpio
$ sudo cpio -idm < poky-image-sato-igep0020.rootfs.cpio
</pre> Download and copy a pre-built kernel image to poky-image-minimal project
<pre>$ sudo wget http://downloads.igep.es/poky/purple-3.2/v3.2.1-0/kernel/uImage-2.6.28-r4-igep0020-20100331100327.bin
$ sudo mkdir -p /srv/tftp/poky/poky-image-sato/igep0020
$ sudo mv uImage-2.6.28-r4-igep0020-20100331100327.bin /srv/tftp/poky/poky-image-sato/igep0020/
$ sudo ln -s uImage-2.6.28-r4-igep0020-20100331100327.bin /srv/tftp/poky/poky-image-sato/igep0020/uImage
</pre> Export the directory tree with an entry in /etc/exports file editing with your preferred editor, like
<pre>/srv/nfs/poky/poky-image-sato/igep0020 *(rw,no_root_squash,no_subtree_check,sync)
</pre> and restart the NFS server
<pre>$ sudo /etc/init.d/nfs-kernel-server restart
</pre>
Now, you can power up your board, stop at u-boot, set the project variable point to poky-image-sato and boot via NFS
===Virtual Machine Enhancements (version 20091222)===
====Software updates====
* [http://git.isee.biz/?p=pub/scm/poky.git;a=commit;h=949b440e52d637ef52eadb50c87e615eebd64ed4 Poky v3.2.1-0 (Fri, 19 Mar 2010)]
** SDK
*** [http://downloads.igep.es/poky/purple-3.2/v3.2.1-0/sdk/poky-eabi-glibc-i586-arm-toolchain-sdk-3.2.1.tar.bz2 poky-eabi-glibc-i586-arm-toolchain-sdk-3.2.1.tar.bz2]
** Kernel
*** [http://downloads.igep.es/poky/purple-3.2/v3.2.1-0/kernel/uImage-2.6.28-r4-igep0020-20100331100327.bin uImage-2.6.28-r4-igep0020-20100331100327.bin]
*** [http://downloads.igep.es/poky/purple-3.2/v3.2.1-0/kernel/modules-2.6.28.10-r4-igep0020.tgz modules-2.6.28.10-r4-igep0020.tgz]
** Rootfs
*** poky-image-minimal-mtdutils
**** [http://downloads.igep.es/poky/purple-3.2/v3.2.1-0/images/poky-image-minimal-mtdutils-igep0020-20100331100327.rootfs.cpio poky-image-minimal-mtdutils-igep0020-20100331100327.rootfs.cpio]
**** [http://downloads.igep.es/poky/purple-3.2/v3.2.1-0/images/poky-image-minimal-mtdutils-igep0020-20100331100327.rootfs.jffs2 poky-image-minimal-mtdutils-igep0020-20100331100327.rootfs.jffs2]
**** [http://downloads.igep.es/poky/purple-3.2/v3.2.1-0/images/poky-image-minimal-mtdutils-igep0020-20100331100327.rootfs.ext3 poky-image-minimal-mtdutils-igep0020-20100331100327.rootfs.ext3]
*** poky-image-sato :
**** [http://downloads.igep.es/poky/purple-3.2/v3.2.1-0/images/poky-image-sato-igep0020-20100331110002.rootfs.cpio poky-image-sato-igep0020-20100331110002.rootfs.cpio]
**** [http://downloads.igep.es/poky/purple-3.2/v3.2.1-0/images/poky-image-sato-igep0020-20100331110002.rootfs.jffs2 poky-image-sato-igep0020-20100331110002.rootfs.jffs2]
**** [http://downloads.igep.es/poky/purple-3.2/v3.2.1-0/images/poky-image-sato-igep0020-20100331110002.rootfs.ext3 poky-image-sato-igep0020-20100331110002.rootfs.ext3]
*** poky-image-sato-sdk :
**** [http://downloads.igep.es/poky/purple-3.2/v3.2.1-0/images/poky-image-sdk-igep0020-20100331124241.rootfs.cpio poky-image-sdk-igep0020-20100331124241.rootfs.cpio]
**** [http://downloads.igep.es/poky/purple-3.2/v3.2.1-0/images/poky-image-sdk-igep0020-20100331124241.rootfs.ext3 poky-image-sdk-igep0020-20100331124241.rootfs.ext3]
*** poky-image-demo :
**** [http://downloads.igep.es/poky/purple-3.2/v3.2.1-0/images/poky-image-demo-igep0020-20100331141303.rootfs.cpio poky-image-demo-igep0020-20100331141303.rootfs.cpio]
**** [http://downloads.igep.es/poky/purple-3.2/v3.2.1-0/images/poky-image-demo-igep0020-20100331141303.rootfs.jffs2 poky-image-demo-igep0020-20100331141303.rootfs.jffs2]
**** [http://downloads.igep.es/poky/purple-3.2/v3.2.1-0/images/poky-image-demo-igep0020-20100331141303.rootfs.ext3 poky-image-demo-igep0020-20100331141303.rootfs.ext3]
====Upgrade the Poky's SDK (from 20090721 version to 20100331 version)====
Backup current SDK (If you don't know Poky SDK version, you could see [[Ubuntu 8.04 IGEP v2.0 SDK Virtual Machine#Which_Poky_SDK_toolchain_do_I_have_.3F|'Which Poky SDK toolchain do I have ?' ]] )
<pre>$ mkdir tmpdir
$ cd tmpdir
$ tar jxf poky-eabi-glibc-i586-arm-toolchain-sdk-3.2.1.tar.bz2
$ mv usr/local/poky/eabi-glibc /usr/local/poky/
</pre> Note that with the change in the poky SDK all the lines
<pre>$ source /usr/local/poky/eabi-glibc/arm/environment-setup
</pre> should become
<pre>$ source /usr/local/poky/eabi-glibc/environment-setup-arm-none-linux-gnueabi
</pre>
----