Getting Started Guide - Cisco...Getting Started Guide - Cisco ... the .*
Getting started with open mobile development on the Openmoko platform
-
Upload
jean-michel-bouffard -
Category
Technology
-
view
1.400 -
download
2
description
Transcript of Getting started with open mobile development on the Openmoko platform
Getting started withopen mobiledevelopment on theOpenmoko platformPresented at osbootcamp YYZ1 (Mobile embedded development conference Waterloo, Canada)
by JeanMichel Bouffard
<jean[email protected]>
2
Summary
✔ Setting up the development environment✔ OM toolchain✔ OpenEmbedded build system
✔ Creating a simple first project for the platform✔ Running the application
✔ Openmoko emulator✔ FreeRunner device
✔ Packaging a custom distribution✔ Adding new hardware components
3
Introduction
✔ Openmoko OM2008.x distribution build environment is using:
✔ OpenEmbedded (http://wiki.openembedded.net)✔ Examples from this tutorial are done using:
✔ Ubuntu 8.10 i686 host system✔ Official OM2008.x Openmoko distributions
4
Introduction
✔ Choose your development toolkit
5
Introduction
✔ Choose your build system✔ Toolchain
✔ Installs only a crosscompiler and basic libraries for application development
✔ Can build applications only✔ Unstable and less recommended
✔ OpenEmbedded✔ Install the complete build system for Openmoko
distributions✔ Can build applications and full OS images✔ More stable and recommended
6
Setting up the development environment Toolchain
✔ Requirements✔ autotools build system✔ default packages:
✔ autoconf, automake, binutils, gcc, gccc++, libtool, ccache, intltool
✔ distro dependent packages (Ex. Ubuntu 8.10):✔ libglib2.0dev libxrenderdev libmokoui2dev libgconf2dev
mtools fakeroot alien check ubootmkimage✔ Complete list available on the openmoko wiki at
http://wiki.openmoko.org/wiki/Toolchain
7
Setting up the development environment Toolchain
✔ Installation✔ download toolchain archive from
http://downloads.openmoko.org/toolchains✔ extract archive to /
✔ Prepare environment variables✔ use “setupenv” script
> wget http://downloads.openmoko.org/toolchains/openmokoi686armlinuxgnueabitoolchain.tar.bz2
> cd /> tar xjvf ~/openmokoi686armlinuxgnueabitoolchain.tar.bz2> . /usr/local/openmoko/arm/setupenv
8
Setting up the development environment Toolchain
✔ The clean toolchain is like a Linux system without any development libraries, so dependencies related to the new software project must be installed
✔ Preparation of environment✔ Modifications of the toolchain must be done as a “super user”✔ Set environment with the “setupenv” script
✔ Installation of libraries✔ Update packages list with “opkgtarget”✔ Search and install packages with “opkgtarget”
> sudo bash> . /usr/local/openmoko/arm/environmentsetup> opkgtarget update> opkgtarget list | grep gtk+dev> opkgtarget install gtk+dev
9
Setting up the development environment Toolchain
✔ Application development can be done on the host system with desktop development tools
✔ Building for the target platform using the toolchain✔ Preparation of environment
✔ Application development can be done as a “normal user”✔ Set environment with the “setupenv” script
✔ Building applications✔ Configure application with “omconf”✔ Build application as usual with “make”
> . /usr/local/openmoko/arm/environmentsetup> cp r /usr/local/openmoko/source/openmokosample2 ~/> omconf openmokosample2> cd openmokosample2> make
10
Setting up the development environment OpenEmbedded
✔ Install required packages✔ Default packages:
✔ subversion, texi2html, texinfo, help2man✔ ncurses, zlib (or libz), OpenSSL, GTK++
✔ Complete list can be found at http://wiki.openmoko.org/wiki/MokoMakeFile#Required_software
✔ Download MokoMakefile✔ http://www.rwhitby.net/files/openmoko/Makefile
> mkdir ~/moko; cd ~/moko> wget http://www.rwhitby.net/files/openmoko/Makefile
11
Setting up the development environment OpenEmbedded
✔ Start build:✔ make setup✔ To accelerate the build on a multicore computer, add these two
lines in the file “build/conf/local.conf”✔ PARALLEL_MAKE = "j 4"✔ BB_NUMBER_THREADS = "4"
✔ make setupmachineomgta02✔ make image
✔ Wait (6220 steps generate 10GB of data in ~10 hours!)> make setup> make setupmachineomgta02> make image
12
Setting up the development environment OpenEmbedded
✔ You will encounter build errors✔ Check errors in log files
✔ For instance, compilation log files for the alsautils package can be found in ~/moko/build/tmp/work/armv4tangstromlinuxgnueabi/alsautils1.0.15r1/temp/log.do_compile.xxxx
✔ Correct errors if any✔ Update environment, clean package and restart build
✔ make updatemakefile setup update✔ make cleanpackage<pkg_error>; make image
> tail ~/moko/build/tmp/work/armv4tangstromlinuxgnueabi/alsautils1.0.15r1/temp/log.do_compile.25688
> make updatemakefile > make setup update> make cleanpackagealsautils> make image
13
Setting up the development environment OpenEmbedded
✔ Add additional requirements for the development✔ make buildpackage<pkg_req>
✔ Newly built packages will be written to the deployment folder
✔ ~/moko/build/tmp/deploy/glibc/opk/armv4t/✔ Missing packages are not part of the generated
OM2008.x image, they need to be installed along with the new application
> make buildpackagelibglade
14
Creating a simple first project for the platform
✔ For this example, we will build a GTK+ application✔ Anjuta development environment✔ Glade Interface Designer
15
Creating a simple first project for the platform
16
Creating a simple first project for the platform
17
Creating a simple first project for the platform
✔ Glade interface designer lets you create an interface easily for your new application
✔ Follow UI design recommendations✔ Instantaneous save, finger usage, efficient layout, etc
18
Creating a simple first project for the platform
✔ An icon and desktop item must beadded
✔ /data/openmokocalc.png✔ /data/openmokocalc.desktop✔ /data/Makefile.am
[Desktop Entry]Encoding=UTF8Name=Openmoko CalcComment=Simple calculator applicationExec=openmokocalcIcon=openmokocalcTerminal=falseType=ApplicationCategories=Application;Utilities;MimeType=text/xvcard;SingleInstance=trueStartupNotify=true
## desktop integration: .desktop file#desktopdir = $(datadir)/applicationsdist_desktop_DATA = openmokocalc.desktop
## desktop integration: application icon#appicondir = $(datadir)/pixmapsdist_appicon_DATA = openmokocalc.png
/data/Makefile.am/data/openmokocalc.desktop
/data/openmokocalc.png
19
Creating a simple first project for the platform
✔ Build the application for the host computer
20
Creating a simple first project for the platform
✔ Test the application...
✔ ...then create a source tarball
21
Creating a simple first project for the platform
✔ BitBake is used to manage builds in OpenEmbedded✔ A BitBake recipe is needed to identify how to build a
packageDESCRIPTION = "Openmoko Calculator"AUTHOR = "JeanMichel Bouffard <jean[email protected]>"HOMEPAGE = "http://www.crc.ca/mmb"SECTION = "console/applications"PRIORITY = "optional"LICENSE = "GPL"DEPENDS = ""RDEPENDS = ""PN = "openmokocalc"PV = "0.1"PR = "r0"EXTRA_OECONF += ""
SRC_URI = "file://openmokocalc0.1.tar.gz"
inherit autotools
/openmokocalc.bb
22
Creating a simple first project for the platform
✔ Build application for Openmoko using the “bitbake” command
✔ configuration script is executed with flags for crosscompiler✔ compiler and linker are executed✔ application installation is validated✔ ipk package is created
✔ application can be found in:✔ ~/moko/build/tmp/deploy/glibc/opk/armv4t/
> cd ~/moko/build> . ../setupenv> bitbake b ~/workspace/openmoko_calc/openmokocalc.bb> cp ~/moko/build/tmp/deploy/glibc/opk/armv4t/openmokocalc_0.1r0_arm4t.ipk ~/.
23
Running the application Emulator
✔ An emulator base on the QEMU project is available✔ The use of the emulator is not recommended
✔ The emulator supports the Neo 1973 only✔ The latest ON2008.x distributions do not support the Neo
1973✔ To use the emulator anyway:
✔ The MokoMakefile can build and install the emulator automatically
> cd ~/moko> make qemu
24
Running the application Device
✔ Flashing the operating system into the device✔ Two main partitions must be written into internal flash memory
✔ The Linux kernel (kernel)✔ The OS and applications files (rootfs)
✔ Start the phone in flashing mode by holding the option button while pressing the power button
✔ Use “dfuutil” (distributed with OpenEmbedded)✔ “dfuutil l“ confirms that the phone is working if listed✔ “dfuutil a <partition> R D <image>” starts flashing
> ./dfuutil l> sudo ./dfuutil a kernel R D ./uImage2.6.24+gitr0r2.01omgta02.bin (takes 12
minutes)> sudo ./dfuutil a rootfs R D ./openMokoasuimageomgta02.jffs2 (takes 1015 minutes)
25
Running the application Device
✔ Boot Neo FreeRunner by pressing the power button✔ Connect USB connector✔ Activate networking
✔ By default, the usb0 interface is enabled on the FreeRunner at address 192.168.0.202
✔ Use “ifconfig” to enable usb0 interface on host✔ Add “route” to usb0 if host main address is 192.168.0.x
> sudo ifconfig usb0 192.168.0.200 netmask 255.255.255.0> sudo route add host 192.168.0.202 dev usb0 (required if host address is in 192.168.0.x
range)
26
Running the application Device
✔ Transfer application package to device✔ Use Secure copy (scp) to [email protected]
✔ Connect to device✔ Use secure shell (ssh) connection [email protected]
✔ Install application✔ Use opkg package manager to install .ipk files
host> scp *.ipk [email protected]:.host> ssh [email protected] (no password)freerunner> opkg install libglade2.00_2.6.2r2_arm4t.ipkfreerunner> opkg install openmokocalc_0.1r0_arm4t.ipkfreerunner> exit
27
Running the application Device
✔ Run application from OM2008.x menu using the installed icon
28
Packaging a custom distribution
✔ Custom distribution can be generated by using the “local overlay” option from OpenEmbedded
✔ Provides a local structure for custom code and build configurations
✔ Create the following file structure in ~/moko✔ local local/conf local/classes local/packages
local/packages/images local/packages/tasks
> mkdir local local/conf local/classes local/packages local/packages/images local/packages/tasks p
29
Packaging a custom distribution
✔ Copy the main configuration file into the local overlay✔ from “build/conf/site.conf” to “local/conf/site.conf”
✔ Edit these lines✔ BBFILES := "${OMDIR}/openembedded/packages/*/*.bb $
{OMDIR}/oe/packages/*/*.bb ${OMDIR}/local/packages/*/*.bb"✔ BBFILE_COLLECTIONS = "upstream local overlay"
✔ Add these lines✔ BBFILE_PATTERN_overlay = " ^ ${OMDIR}/local/"✔ BBFILE_PRIORITY_overlay = "20"
> cp build/conf/site.conf local/conf/site.conf> vi local/conf/site.conf
30
Packaging a custom distribution
✔ Modify “~/moko/setupenv” script to take into account the new local overlay
✔ export BBPATH="${OMDIR}/local:${OMDIR}/build:${OMDIR}/openembedded"
✔ The local overlay will now be taken into account when building packages
> vi ~/moko/setupenv
31
Packaging a custom distribution
✔ Generate the new build configuration files✔ local/packages/images/exampleopenmokodevelimage.bb
require creatoropenmokoimage.bbIMAGE_INSTALL += "taskopenmokodebug"
## OpenMoko Image Recipe#export IMAGE_BASENAME = "${PN}"export IMAGE_LINGUAS = ""export IMAGE_INSTALL = "\${MACHINE_TASK_PROVIDER} \taskopenmokolinux \taskopenmokonet \taskopenmokoui \taskopenmokobase \taskopenmokophone \taskopenmokogames \taskopenmokopim \taskopenmokoexample \"inherit imageLICENSE = MITROOTFS_POSTPROCESS_COMMAND += 'date "+%m%d%H%M%Y" >${IMAGE_ROOTFS}/etc/timestamp'
✔ local/packages/images/exampleopenmokoimage.bb
32
Packaging a custom distribution
✔ local/packages/tasks/taskopenmokocreator.bb
✔ Start build operation✔ Using the “bitbake” command
DESCRIPTION = "OpenMoko: Example of a custom configuration"SECTION = "openmoko/base"LICENSE = "original"PR = "r0"inherit taskRDEPENDS_taskopenmokoexample = "\libglade \openmokocalc \"
> cd ~/moko/build> . ../setupenv> bitbake exampleopenmokodevelimage
33
Adding new hardware components
✔ Different connections are available to extend hardware capabilities:
✔ USB✔ SDIO✔ Bluetooth✔ I2C✔ Serial interfaces
✔ USB port is available outside the case. Other connections would require further modifications
34
Adding new hardware components USB peripherals
✔ Internal USB test points can be used to integrate a USB component
✔ Schematics available from http://openmoko.com
✔ Marked on FreeRunner schematic as HTP4901, HTP4902, HTP4903, HTP4904
✔ Configuration✔ USB port must be switched from
device to host mode of operation✔ USB power mode can be selected to
provide power to the device from the FreeRunner battery
35
Conclusion
✔ Application development for the Openmoko platform is comparable to desktop development
✔ Many new improvements of the operating system and the available software are expected in the next months
✔ Development tools need to be improved to offer better stability and ease of use
✔ The toolchain should be the way to go for easy software development, but configuration issues make it difficult to use
✔ The OpenEmbedded environment is not practical because of the large disk space and build time requirements
36
Conclusion
✔ More information at:✔ Openmoko Open. Mobile. Free.
http://wiki.openmoko.org✔ Openmoko developer guide
http://wiki.openmoko.org/wiki/Openmoko_developer_guide✔ OpenEmbedded Crosscompile environment to create a
complete Linux Distribution for embedded systems.http://wiki.openembedded.net/index.php/Main_Page
✔
37
THANK YOU