Scratchbox ja Maemo. Nokia 770 Internet Tablet-ohjelmistokehitys. Timo Savola. Movial Oy. FUUG:in kevätristeily 20.3.2006. <tsavola@movial.



Samankaltaiset tiedostot
KYMENLAAKSON AMMATTIKORKEAKOULU

GTK+ ohjelmointi. Juha Järvensivu 2007

Eclipse 3.1 Pikaopas versio 1.0

Tapahtumapohjainen ohjelmointi. Juha Järvensivu 2007

P e d a c o d e ohjelmointikoulutus verkossa

Mobiilimaailma murroksessa 2011 Tommi Teräsvirta, Tieturi

Linux. 00 Keskeiset piirteet. Unix ja Linux Helsingin ammattikorkeakoulu Stadia Vesa Ollikainen (muokannut M.Mäki-Uuro) Kysymyksiä

Tikon Ostolaskujenkäsittely/Web-myyntilaskutus versio 6.3.0

Tikon Ostolaskujenkäsittely/Web-myyntilaskutus versio 6.4.0

Luento 5. Timo Savola. 28. huhtikuuta 2006

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

.NET ajoympäristö. Juha Järvensivu 2007

Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen

Javan asennus ja ohjeita ongelmatilanteisiin

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

Tapahtumapohjainen ohjelmointi. Juha Järvensivu 2008

Web Services tietokantaohjelmoinnin perusteet

Luento 3. Timo Savola. 7. huhtikuuta 2006

erasmartcardkortinlukijaohjelmiston

erasmartcard-kortinlukijaohjelmiston asennusohje (mpollux jää toiseksi kortinlukijaohjelmistoksi)

Tech Conference Visual Studio 2015, C#6,.NET4.6. Heikki Raatikainen. #TechConfFI

JOVISION IP-KAMERA Käyttöohje

5. HelloWorld-ohjelma 5.1

Käyttöliittymän lokalisointi. Juha Järvensivu 2008

AS C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin

Visma GATEWAY INSTALLER. asennusopas

Luento 2. Timo Savola. 31. maaliskuuta 2006

Valppaan asennus- ja käyttöohje

Eclipse 3.2 pikku opas versio 1.0. Esittely Uuden projektin perustaminen Sovelluksen luominen Koodin siistiminen Vinkkejä

WEIKKA. Asennus opas. Hannu-Matti Lemettinen HML Productions

AutoCAD Electrical - Päivitys

Viva-16. Käyttöohje Veikko Nokkala Suomen Videovalvonta.com

ZENworks Application Virtualization 11

Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä:

1. NetBeans-ohjelman asennus ja käyttöönotto pva

Jouko Nielsen. Ubuntu Linux

Eclipse ja JUnit-ohjelmoijatestit

Aditro Tikon ostolaskujen käsittely versio SP1

Tietorakenteet ja algoritmit

Aditro Tikon ostolaskujen käsittely versio 6.2.0

Visma Liikkuvan työn ratkaisut Päivitysohje. Pääkäyttäjän opas

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.

Garmin Astro ohjelmistopäivitys

Pedacode Pikaopas. Web-sovelluksen luominen

Olio-ohjelmointi Javalla

Käyttöohje. Teknocalor MagiCAD plugin

Pedacode Pikaopas. Tietokantaa hyödyntävän sovelluksen luominen

Asentaminen Bionic Beaver

Henkilö- ja koulutusrekisterin asennusohje

Lakki. Lisää ot sik k o osoit t am alla. Nöyrästi vain lakki kourassa... Jussi Vänskä Espotel Oy. vierailuluentosarja OTM kurssi 2010

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

CVS. Kätevä väline usein päivitettävien tiedostojen, kuten lähdekoodin, hallitsemiseen

Febdok 6.0 paikallisversion asennus OHJEISTUS

P e d a c o d e ohjelmointikoulutus verkossa

Selvitysraportti. MySQL serverin asennus Windows ympäristöön

1. Adobe Digital Editions ohjelman käyttöönotto

Arduino ohjelmistokehitys

3. Binääripuu, Java-toteutus

TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos. Harjoitustyö 4: Cache, osa 2

Etäkokousohjeet ammattilaisille, jotka eivät työskentele HUS:n palveluksessa ja eivät omista VRK-korttia

Object Framework - One. OF-1 is a high-productive Multi-UI OpenEdge data driven development framework. Veli-Matti Korhonen

jbaci Concurrency Simulator

Yhteydensaantiongelmien ja muiden ongelmien ratkaisuita

CUDA. Moniydinohjelmointi Mikko Honkonen

Kieliversiointityökalu Java-ohjelmistoon. Ohje

Lab A1.FARM_Hyper-V.v3

Android ohjelmointi. Mobiiliohjelmointi 2-3T5245

11. Javan valintarakenteet 11.1

SISÄLLYS 1 YLEISTÄ VERSIOT Tukiaika Variaatiot OHJELMISTO Paketinhallinta Komentorivisyntaksi

T Käyttöliittymäsuunnittelu. Tehtävä 1: Komentorivipohjainen käyttöliittymä

Tekla Structures Dialogien muokkaus

Aditro Tikon ostolaskujen käsittely versio SP1

Lohtu-projekti. Testaussuunnitelma

5. HelloWorld-ohjelma 5.1

T Testiraportti - järjestelmätestaus

Paavo Räisänen. WampServer palvelimen asennus ja käyttö Eclipsen kanssa, sekä ensimmäinen FTP yhteys.

Office 365 palvelujen käyttöohje Sisällys

AutoCAD Electrical - Päivitys

HELIA 1 (1) Outi Virkki Käyttöliittymät ja ohjelmiston suunnittelu :04

Visma Liikkuvan työn ratkaisut

Ohjeet e kirjan ostajalle

11. Javan valintarakenteet 11.1

815338A Ohjelmointikielten periaatteet Harjoitus 4 vastaukset

Etäkokousohjeet HUS:n ulkopuolisille ammattilaisille, joilla on käytössä VRK-kortti

Ohjelmointiharjoituksia Arduino-ympäristössä

TIETORAKENTEET JA ALGORITMIT

P e d a c o d e ohjelmointikoulutus verkossa

on ohjelmoijan itse tekemä tietotyyppi, joka kuvaa käsitettä

Rinnakkaisohjelmointi kurssi. Opintopiiri työskentelyn raportti

Sonera sovelluspalomuurin muutoshallintaohjeistus

Ohjeita Siemens Step7, Omron CX Programmer käyttöön

Machine Control Studio - Kuinka päästä alkuun. Ohjelmointiympäristö Unidrive M ja MCi2x0 laitteille

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

Backup Exec 3600 Appliance

ASENNUS- JA KÄYTTÖOHJE

Qt kaikkialla?

Purot.net Wiki. Tutkielma. Paavo Räisänen. Centria Ammattikorkeakoulu

XPages käyttö ja edut Jarkko Pietikäinen toimitusjohtaja, Netwell Oy

Transkriptio:

Scratchbox ja Maemo Nokia 770 Internet Tablet-ohjelmistokehitys Timo Savola <tsavola@movial.fi> Movial Oy FUUG:in kevätristeily 20.3.2006

Osa I Scratchbox

Scratchbox Ristiinkääntöympäristö Cross-compilation toolkit Cross-compilation SDK Cross-development tool Self-contained mini-distribution Linux From Scratch sandbox

Scratchbox Tarkoitus Helpottaa Linux-pohjaisten sulautettujen laitteiden kehitystä käyttäen olemassaolevia vapaita ohjelmistoja 1. Käännön nopeutus Ristiinkääntö 2. Työskentelyn helpottaminen/nopeutus Ristiinkäännön automatisointi Kohdejärjestelmän ja työkalujen erottaminen

Scratchbox Sandbox Ohjelmat asennetaan suoraan standardeihin hakemistoihin --prefix=/usr configure löytää vain/automaattisesti oikeat kirjastot ym. Ohjelmat voidaan suorittaa normaalisti, koska kirjastot ja muut tiedostot löytyvät oletetuista paikoista Sisältö voidaan siirtää sellaisenaan kohdelaitteelle, koska se ei sisällä turhia työkaluja Kääntötyökalut ovat poissa jaloista /scratchbox sisältää kääntäjät ja muut tarpeelliset työkalut Linkattu etsimään kirjastoja /scratchbox-hakemiston alta

Scratchbox Ristiinkääntö Kääntöympäristö näyttää kohdeympäristöltä gcc-komento osoittaa valittuun ristiinkääntäjään uname-kirjastokutsu valehtelee configure ei yritä ristiinkääntää Ristiinkääntäjät toimivat kuten natiivikääntäjä Kääntöskriptien oletukset käyvät toteen Kääntäjien (ja joidenkin muiden työkalujen) vipuja voi säätää ympäristömuuttujilla SBOX EXTRA COMPILER ARGS jne. SBOX BLOCK STRIP estää strip-ohjelman suorittamisen Tukee saumatonta ccache:n ja distcc:n käyttöä

Scratchbox CPU transparency Eri arkkitehtuureille käännetyt ohjelmat voidaan suorittaa configure:n testiohjelmien (conftest) ajo onnistuu Unit-testit toimivat Valmiita ohjelmia voidaan kokeilla Toteutettu Linuxin binfmt misc-moduulin avulla Scratchbox rekisteröi tulkin kohdebinääriformaatille Valittu ohjelma suorittaa binäärin Scratchbox Remote Shell (sbrsh) QEMU Valintaa voi vaihtaa ympäristömuuttujalla SBOX CPUTRANSPARENCY METHOD

Scratchbox Binäärien suorittaminen sbrsh:lla Ohjelma suoritetaan kohdelaitteelle luodussa sandboxissa mahdollisimman saumattomasti Standard I/O ja terminaaliemulaatio Ympäristömuuttujat Paluukoodi Fakeroot

Scratchbox Binäärien suorittaminen QEMU:lla Ohjelma emuloidaan Systeemikutsut ohjataan natiivikernelille I/O, signalointi yms. toimii saumattomasti Kohdeohjelmat voivat suorittaa Scratchboxin työkaluja

Scratchbox Suorituksen uudelleenohjaus exec-kirjastokutsuja muutettu LD PRELOAD Kutsuvat Scratchboxin työkaluja kohdetiedostojärjestelmästä mahdollisesti löytyvien ohjelmien sijaan /usr/bin/make /scratchbox/tools/bin/make Tarpeellista jos... Kääntöskripti käyttää hardkoodattuja polkuja Installointiskripti asettaa oman PATH:in Toimintaa voi säädellä ympäristömuuttujilla SBOX REDIRECT FROM DIRS SBOX REDIRECT TO DIRS SBOX REDIRECT BINARIES SBOX REDIRECT IGNORE

Scratchbox Rakenne Scratchbox 2?

Scratchbox Ketkä? Movial Nokia Muut Kehitystyö Kaupalliset palvelut Sponsoroi kehitystä Käyttää Internet Tabletin kehityksessä Muutama satunnainen ulkopuolinen kehittäjä Yhteistyötä/dialogia Emdebian-projektin kanssa ARMedslack Huhun mukaan...

Osa II Maemo

Maemo Maemo SDK Root image (tai rootstrap ) käytettäväksi Scratchboxissa Sisältää kaiken tarpeellisen Maemo-yhteensopivien ohjelmien kehitykseen Nokia 770 Internet Tablet on toistaiseksi ainoa Maemo-yhteensopiva laite Internet Tablet-ohjelmiston suljettuja osia ei ole sisällytetty Perustuu Debianiin Käyttää Scratchboxin Debian-kehitystyökaluja (Debian devkit) Päivitys onnistuu APTilla

Maemo Alusta X-server (freedesktop.org/kdrive) Matchbox GTK+ 2.6 GConf GNOME-VFS D-BUS GStreamer 0.8 SDL SQLite

Maemo Application Framework LibOSSO Notifikaatiot Persistenssi... Hildon UI Ohjelmat Home Task Navigator Status Bar Control Panel

Maemo Hildon UI GTK-pohjainen käyttöliittymä Widgettikirjasto GTK-muutoksia (binääriyhteensopiva) Hildon-widgetit integroivat sovelluksen ympäristöön Sulautuu teemaan Näkyy Task Navigatorissa HildonApp Sovelluksen pääluokka HildonAppView HildonApp sisältää ainakin yhden tällaisen Muita widgettejä

Maemo Hildonin (lähi)tulevaisuus HildonProgram HildonApp Rajapinta yleisiin asetuksiin HildonWindow HildonAppView Käytetään kuten GtkWindow-luokkaa Teemaukseen ym. liittyviä lisäyksiä GTK-ohjelmien porttaus helpottuu Porttaamattomatkin ohjelmat integroituvat paremmin Application Frameworkkiin

Maemo Paketointi Ohjelmat asennetaan Application Installerilla Käyttää sisäisesti dpkg:tä Asennus tapahtuu normaalikäyttäjänä Maemo-paketit ovat melkein tavallisia Debian-paketteja Riippuvat maemo-paketista Tiedostot sijaitsevat /var/lib/install-hakemiston alla Installointi- ja poistoskriptejä ei voi ajaa Ohjelmat rekisteröidään asentamalla.desktop-tiedosto

Maemo Kehitysympäristö Scratchbox 0.9.8 (tai 1.0) ARM-kääntäjä (GCC 3.3, glibc 2.3) QEMU Maemo Xephyr (tai Xnest)

Maemo Vaihtoehtoinen tapa Ohjelma suoritetaan kohdelaitteella Ikkuna avautuu laitteen omien ohjelmien sekaan Käyttää kuitenkin Scratchboxiin asennettuja kirjastoja Application Framework-integraatio toimii puutteellisesti D-BUS

Osa III Esimerkkejä

Esimerkkejä Hildon-ohjelma Yksinkertainen tekstieditori Zoom-napit näyttävät viestejä Menusta aukeaa tiedostodialogi

Esimerkkejä #include <hildon-widgets/hildon-app.h> #include <hildon-widgets/hildon-file-chooser-dialog.h> #include <hildon-widgets/gtk-infoprint.h> #include <gtk/gtk.h> #include <gdk/gdkkeysyms.h> gboolean on_key_press(gtkwidget *, GdkEventKey *, GtkWindow *); void on_open_activate(gtkwidget *, GtkWindow *); int main(int argc, char ** argv) { GtkWidget * app; GtkWidget * appview; gtk_init(&argc, &argv);

Esimerkkejä app = hildon_app_new(); hildon_app_set_title(hildon_app (app), "Editor"); appview = hildon_appview_new(null); hildon_appview_set_fullscreen_key_allowed( HILDON_APPVIEW (appview), TRUE); g_signal_connect(g_object (appview), "key-press-event", G_CALLBACK (on_key_press), app); hildon_app_set_appview(hildon_app (app), HILDON_APPVIEW (appview));

Esimerkkejä GtkMenu * menu; GtkWidget * item; menu = hildon_appview_get_menu(hildon_appview (appview)); item = gtk_menu_item_new_with_label("open..."); gtk_widget_show(item); g_signal_connect(g_object (item), "activate", G_CALLBACK (on_open_activate), app); gtk_menu_append(menu, item);

Esimerkkejä GtkWidget * textview; textview = gtk_text_view_new(); gtk_container_add(gtk_container (appview), textview); gtk_widget_show_all(app); gtk_main(); return 0; }

Esimerkkejä gboolean on_key_press(gtkwidget * appview, GdkEventKey * event, GtkWindow * app) { if (event->keyval == HILDON_INCREASE_KEY) gtk_infoprintf(app, "Increase"); else if (event->keyval == HILDON_DECREASE_KEY) gtk_infoprintf(app, "Decrease"); return FALSE; }

Esimerkkejä void on_open_activate(gtkwidget * item, GtkWindow * app) { GtkWidget * dialog; } dialog = hildon_file_chooser_dialog_new(app, GTK_FILE_CHOOSER_ACTION_OPEN); gtk_dialog_run(gtk_dialog (dialog)); gtk_widget_destroy(dialog);

Esimerkkejä GTK-ohjelma Käännetään ja ajetaan Vim tar xfj vim-6.4.tar.bz2 cd vim64./configure --enable-gui=gtk2 make src/vim -g sbrsh Nokia 770

?