How to get the Poky Linux distribution

From IGEP - ISEE Wiki

Revision as of 12:37, 17 May 2011 by Eballetbo (talk | contribs) (remove beacause is obsolete)

Jump to: navigation, search

How to get the Poky Linux distribution

Poky is an open source platform build tool. It is a complete software development environment for the creation of Linux devices. It enables you to design, develop, build, debug, and test a complete, modern, software stack using Linux, the X Window System and GNOME Mobile based application frameworks for both x86 and ARM based platforms. Key features include:

  • Full, fast, cross device filesystem creation with Linux Kernel 2.6.x, GCC, GNU C library, Busybox, networking and much more.
  • Highly configurable and extendable with full documentation, granular feature control, packaging, and wide machine coverage.
  • Developer friendly with QEMU device virtulisation, SDK generation, Anjuta IDE, OProfile and GDB integration.
  • Complete GNOME Mobile platform with the X Window System, Matchbox, GTK+ 2.12, D-Bus, GStreamer and 'Sato' reference implementation.
  • Support for bleeding edge OpenGL user interfaces with the Clutter toolkit.
  • A supported, stable and proven base for real world products built on Linux and open source software.

Overview of How-To

This How-To is meant to be a starting point for people to learn build and run Poky images for IGEP v2 devices as quickly and easily as possible.

This How-To works with the Ubuntu 8.04 IGEP v2.0 SDK Virtual Machine but most of the contents are valid also for other GNU/Linux distributions. We do not issue any guarantee that this will work on other distributions.

This How-To will start out by a Poky Platform Setup Environment introducing you to the Poky environment and the way you can build an Poky-based image.

Next, we will cover the Poky images supported.

Lastly, we will learn how to Installing and Using the Result on a NFS-mounted root filesystem.

Requirements

  • Ubuntu 8.04 IGEP v2.0 SDK Virtual Machine

Feedback and Contributing

At any point, if you see a mistake you can contribute to this How-To.

How to get involved (http://pokylinux.org/support/)

There are many ways to get involved with the Poky project. Poky has a friendly community providing informal support and discussion.

Mailing list

To subscribe send mail to;

poky+subscribe <at> openedhand <dot> com

And follow simple instructions in subsequent reply. Archives are available here.

Bugs

Problems with Poky should be reported in the bug tracker: http://bugzilla.o-hand.com/

IRC

Chat with the Poky development team and community in #poky on freenode.

References

Much of this How-To is extracted from different sources. If you would like to read some of the original articles or resources, please visit them and thank the authors:

Poky Platform Setup Environment

Poky is derivative of the Open Embedded. In order to function properly, the Virtual Machine need some adaptations of the development system.

The first thing we need to do is set Bash as default sh shell, execute

$ sudo dpkg-reconfigure dash

and answer no when asked whether you want to install dash as /bin/sh. So, now, "/bin/sh" file links to "/bin/bash" (not to "/bin/dash").

An other change we need to perform is to change some default settings of the kernel. Edit the /etc/sysctl.conf file as root with your preferred editor and set the vm.mmpap_min_addr to 0

$ sudo nano /etc/sysctl.conf
vm.mmap_min_addr = 0

then, run this command

$ sudo sysctl -p

Install extra packages necessary for bitbake to function.

$ sudo apt-get update
$ sudo aptitude install subversion cvs git-core \
       build-essential help2man diffstat texi2html texinfo \
       libncurses5-dev gawk python-dev python-psyco python-pysqlite2 \
       scrollkeeper gnome-doc-utils gettext automake mercurial libx11-dev \
       libgl1-mesa-dev libglu1-mesa-dev libsdl1.2-dev

Poky version 3.2 codename Purple (stable branch)

Poky version 3.2 ( stable branch) is available from a GIT repository located at git://git.igep.es/pub/scm/poky.git. The first thing you will do is clone the Poky project.

$ git clone git://git.igep.es/pub/scm/poky.git
Initialized empty Git repository in /home/eballetbo/Software/staging/poky/.git/
remote: Counting objects: 52944, done.
remote: Compressing objects: 100% (16209/16209), done.
remote: Total 52944 (delta 34820), reused 52910 (delta 34806)
Receiving objects: 100% (52944/52944), 35.52 MiB | 249 KiB/s, done.
Resolving deltas: 100% (34820/34820), done.

Then, switch to stable branch (Purple v3.2)

$ cd poky
$ git checkout origin/release/purple -b release/purple
warning: You appear to be on a branch yet to be born.
warning: Forcing checkout of origin/release/purple.
Branch release/purple set up to track remote branch refs/remotes/origin/release/purple.
Switched to a new branch "release/purple"

After that, you need to link an user board configuration (local.conf). The configuration file who defines various configuration variables which govern what Poky platform does.

$ ln -s ../../meta-contrib/build/conf/local.conf.igep0020 build/conf/local.conf

At this point the Poky build environment needs to be set up, you will do this with the poky-init-build-env script. Sourcing this file in a shell makes changes to PATH and sets other core bitbake variables based on the current working directory.

Refer to http://www.pokylinux.org/doc/poky-handbook.html#ref-images for standard images

Refer to Ubuntu 8.04 IGEP v2.0 SDK Virtual Machine to how to install and use poky images on a NFS-mounted root filesystem.

Poky version 3.3 codename Green (under development)

Note: This is currently work in progress Use ONLY for testing and development purposes.

The Poky handbook guides users through getting started with Poky and explains how the build system components fit together and interact. The setup and use of the SDK is also covered along with other common development tasks such as debugging and profiling applications. It also contains extensive reference material on many other aspects of Poky such as the classes, variables and other technical details.

A customized Poky version 3.3 for IGEP platforms is available from a GIT repository located at git://git.igep.es/pub/scm/poky.git.

The first thing you will do is clone the Poky project.

$ git clone git://git.igep.es/pub/scm/poky.git
$ cd poky

At this point the Poky build environment needs to be set up, you will do this with the poky-init-build-env script. Sourcing this file in a shell makes changes to PATH and sets other core bitbake variables based on the current working directory.

$ source poky-init-build-env
$ bitbake poky-image-sato

Notes, tips and tricks for the new demo image

Change default bootargs
fw_setenv bootargs-base 'mem=506M console=ttyS2,115200n8 console=tty0 omapfb.mode=dvi:1024x768MR-32@60 omapfb.vram=0:8M,1:4M'
Bring up eth0
udhcpc -i eth0
ALSA active the headset path
amixer set -D hw:0 'Headset' 6dB
amixer set -D hw:0 'HeadsetL Mixer AudioL2' on
amixer set -D hw:0 'HeadsetR Mixer AudioR2' on
SGX Video Acceleration

You can test the SGX with a DEMO, grab and untar the SDK Demo Package

wget http://neuvoo.org/neuvoo/distfiles/SGX-3.01.00.07-SDK.tar.gz
tar xzf SGX-3.01.00.07-SDK.tar.gz

Then to run the demos just get into the X11 Binaries directory (e.g. OGLES/SDKPackage/Binaries/CommonX11/Demos/EvilSkull) and run the demo:

./OGLESEvilSkull
DSP using dspbridge
fw_setenv bootargs-base 'mem=506M console=ttyS2,115200n8 console=tty0 omapfb.mode=dvi:1024x768MR-32@60 omapfb.vram=0:8M,1:4M'
wget http://download.blender.org/peach/bigbuckbunny_movies/big_buck_bunny_480p_surround-fix.avi
modprobe mailbox_mach
modprobe bridgedriver base_img=/lib/dsp/baseimage.dof phys_mempool_base=0x9FA00000
DISPLAY=:0 gst-launch -v playbin uri=file:/home/root/big-buck-bunny-480p-surround.avi
TFT and Touchscreen

Seiko 7.0 inch WVGA (800 x RGB x 480) TFT:

fw_setenv bootargs-base 'console=ttyS2,115200n8 console=tty0 omapdss.def_disp=lcd-70 omapfb.mode=dvi:1024x768MR-32@60'

Powertip 4.3 inch (480 x RGB x 272) TFT:

fw_setenv bootargs-base 'console=ttyS2,115200n8 console=tty0 omapdss.def_disp=lcd-43 omapfb.mode=dvi:1024x768MR-32@60'

DVI output:

fw_setenv bootargs-base 'console=ttyS2,115200n8 console=tty0 omapdss.def_disp=dvi omapfb.mode=dvi:1024x768MR-32@60'

Edit the InputDevice section in your xorg.conf

cat >> /etc/X11/xorg.conf << EOF
Section "InputDevice"
       Identifier      "Configured Touchscreen"
       Driver          "tslib"
       Option          "CorePointer"           "true"
       Option          "SendCoreEvents"        "true"
       Option          "Device"                "/dev/input/touchscreen0"
       Option          "Protocol"              "Auto"
EndSection
EOF

Add "Configured Touchscreen" in "ServerLayout" section and remove "Configured Mouse"

Section "ServerLayout"
   Identifier    "Default Layout"
   Screen        "Default Screen"
   InputDevice    "Generic Keyboard"
#   InputDevice    "Configured Mouse"
   InputDevice    "Configured Touchscreen"
   Option         "AllowEmptyInput" "no"
EndSection

Edit /etc/formfactor/machconfig like this

HAVE_TOUCHSCREEN=1
HAVE_KEYBOARD=0

calibrate your touchscreen

for Powertip 4.3 inch (480 x RGB x 272) TFT:

echo -n "8407 -476 -31410144 3 -4861 38051952 655366" > /etc/pointercal

for Seiko 7.0 inch WVGA (800 x RGB x 480) TFT:

echo -n "13714 0 -56041568 1 -8076 63332096 6553665536" > /etc/pointercal

or calibrate it yourself until you are happy with the result, for example:

 /etc/init.d/xserver-nodm stop

 TSLIB_CALIBFILE=/etc/pointercal TSLIB_TSDEVICE=/dev/input/touchscreen0 TSLIB_CONSOLEDEVICE=none ts_calibrate

 /etc/init.d/xserver-nodm start
Modem
diff --git a/sound/soc/codecs/twl4030.c b/sound/soc/codecs/twl4030.c
index e633c01..3778990 100644
--- a/sound/soc/codecs/twl4030.c
+++ b/sound/soc/codecs/twl4030.c
@@ -57,7 +57,7 @@ static const u8 twl4030_reg[TWL4030_CACHEREGNUM] = {
 	0x00, /* REG_AVTXL2PGA		(0xC)	*/
 	0x00, /* REG_AVTXR2PGA		(0xD)	*/
 	0x00, /* REG_AUDIO_IF		(0xE)	*/
-	0x00, /* REG_VOICE_IF		(0xF)	*/
+	0x04, /* REG_VOICE_IF		(0xF)	*/
 	0x00, /* REG_ARXR1PGA		(0x10)	*/
 	0x00, /* REG_ARXL1PGA		(0x11)	*/
 	0x6c, /* REG_ARXR2PGA		(0x12)	*/
CAN

Several tools are provided by socketCAN:

  • candump: dump traffic on a CAN network
  • cansend: simple command line tool to send CAN-frames via CAN_RAW sockets
  • cangen: CAN frames generator for testing purpose
  • canplayer: send CAN frames from a file to a CAN interface
/sbin/ip link set can0 up type can bitrate 125000

On the receiver side:

candump can0

On the sender side:

cansend can0 123#AABBCCDD
cansend can0 123#R 
cansend can0 1F334455#1122334455667788
cansend can0 1F334455#R

On the receiver side, you must see the following messages:

can0  123  [4] AA BB CC DD
can0  123  [0] remote request
can0  1F334455  [8] 11 22 33 44 55 66 77 88
can0  1F334455  [0] remote request

Switch roles and do again

--- That's all folks ---