Android組込み開発基礎コース Armadillo-440編

41 %
59 %
Information about Android組込み開発基礎コース Armadillo-440編
Technology

Published on March 10, 2014

Author: OESF_Education

Source: slideshare.net

Description

OESF公認
Android組込み開発基礎コース Armadillo-440編
公式トレーニングテキスト(日本語)

Contributed by:
【作成】株式会社OKIソフトウェア
    株式会社リーディング・エッジ社
    
【ご注意】
本テキストは、Creative Commons License BY-NC-SA 4.0のもとで提供されます。OESF会員またはコンソーシアムメンバーでない場合、本編の改変の有無にかかわらず、いかなる形態でも商用目的での利用は禁止されています。

20130317改変 Android組込み開発 基礎コース Armadillo-440 編 This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-0

テキストのご利用に関して ・ 本コースのテキストは、 Creative Commons License BY-NC-SA 4.0に基づいて提供されています。改変の有無にかかわらず、商用 目的での利用は禁止されています。 ・ 本教育プログラムは、その中で提供される教材全てを含め、OESF からのいかなる保証もなしに提供されます。OESFは、本コースの内 容またはコースの詳細な情報を使用することに起因して、または 誤って使用することに起因して何らかの障害や法的な行為が生じて も、いかなる責任も負いません。 This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-1 1

トレーニングの目的 • LinuxとAndroidの違いを理解します • LinuxとAndroidの起動手順の違いを理解します • 組込みLinuxとAndroidの開発環境を構築できるよ うになります • Androidのビルドおよび実機での動作方法を理解 します • 実機のデバッグ方法を理解します • 演習を通してプラットフォーム開発を体験します This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-2 2

受講するに当たって必要なスキル • OSの概念を理解している事 • Java言語またはC/C++言語の開発経験がある事 – 基本的なJavaやC/C++の言語仕様について理解があれば 問題ありません • Linuxのコマンド操作経験がある事 – 演習では実際にLinuxコマンドを操作して移植作業を実 施します • Eclipseを使用した経験がある事 – Androidのアプリケーション開発はEclipseを使用しま す This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-3 3

目次 1章. Linux概要 2章. Android概要 3章.ターゲットのボード 4章.実機でAndroidを動かす(実習) 5章.デバイスの組み込み 6章. NDK/JNI概要 7章. シリアルデバイスアプリケーション作成(実 習) This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-4 4

第1章 Linux概要 This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-5

1章の概要 • • • • • • Linuxとは ルートファイルシステム 起動シーケンス Initの概要 組み込み向けOS 組み込みLinux This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-6 6

Linuxとは?      1998年~ オープンソースで完全フリーで世界中で最もよく使われている GPLライセンス(ソースコードの公開義務) UNIX*1のクローンなのでUNIXの一部資産が流用可能 リーナス・トーバルズ氏が開発/公開したOS :カーネルのみの提供( kernel.org)  Linus中心の強固な管理体制と安定性の確保  主なLinuxシステム(ブートローダーやfsも含む)のディストリビューシ ョン  Debian系:パッケージ管理はdeb形式  Debian GNU Linux、Ubuntu: とが理念 コミュニティベース、100%フリーであるこ  RedHat系:パッケージ管理はRPM形式  Fedora、VineLinux : RedHatLinux後継のコミュニティによる実験 要素が強い *1 : UNIXは現在BSD系UNIXとして存続(FreeBSD,NetBSD) This material is Linux(商用)  RedHat Enterpriselicensed under the Creative Commons License BY-NC-SA 4.0. 0-7 7

Debian系Linuxの起動シーケンス Power ON or Reboot initrd 起動に必要なドライバが格納さ れている一時的なルートファイ ルシステム(初期RAMディス ク) /etc/initt ab BIOS ブートデバイスの専用ブロック読み出し ブートロー ダ Boot カーネル メモリに展開 基本設定 ・ネットワーク ・キーボード ・デバイス初期化 デーモンの起動 (rcスクリプト経 login:hogetaro 由) ini t シェル password: $ login LILO/GRUBなど 起動パラメータの設定 CPU初期化 ハードウェアのチェック ドライバ読みこみ 起動用ファイル(init) が ある領域のマウント initは以下のいずれかの場所にある /sbin/init, /etc/init, /bin/init, /bin/sh This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-8 8

Debian系Linuxのinitが行う設定 • initが行う各種設定はinittabに記載されている情報 を元に行う # デフォルトランレベル3 init デーモン 1 デーモン 2 id:3:initdefault: # ブート時の処理(システム初期化スクリプト) si::systeminit:/etc/init.d/rcS #各ランレベル用のrcスクリプトを実行し、その終了を待 つ 10:0:wait:/etc/init.d/rc 0 11:1:wait:/etc/init.d/rc 1 デーモン 12:2:wait:/etc/init.d/rc 2 3 13:3:wait:/etc/init.d/rc 3 14:4:wait:/etc/init.d/rc 4 15:5:wait:/etc/init.d/rc 5 16:6:wait:/etc/init.d/rc 6 # 1度だけ実行される処理(/sbin/update実行) ud::once:/sbin/update # 端末制御(ランレベル2~5で/sbin/mingetty実行) # 終了されると再実行 1:2345:respawn:/sbin/mingetty tty1 : # ランレベル5の時のログイン処理(/ etc/X11/prefdmを 実行) 0-9 # 終了されると再実行 This material is licensed under the Creative Commons License BY-NC-SA 4.0. /etc/initt ab 9

Debian系Linux の inittabの書式 initdefa ult アクションの種 類 システム起動完了時に入るべきランレ ベル /etc/init.d/rcSがやること ∟/etc/default/rcSを実行 ∟/etc/rcS.d内のスクリプト全てを実行 • • • • • • ホスト名の設定 クロックの設定 キーマップの設定 言語とフォントの設定 ハードディスクの検査と修復 ハードディスクのマウント respawn プロセスが終了したらすぐに再起動す る ondemand respawnと同じだがオンデマンドラン レベルが指定された場合のみ実行する wait プロセスが終了するまで待機してラン レベルになったときだけ実行する once 指定ランレベルになったときだけ一度 だけ実行する ランレベルと動作モー ド 0 Halt off 何もしない 1 boot システム起動中に実行する シングルユーザモ ード bootwait システム起動中に実行し、プロセスが 終了するまで待機 2 3 4 マルチユーザモー ド (text) sysinit システム起動中に実行する( boot,bootwaitより先に実行される) 5 マルチユーザ(X) 6 reboot ctrlaltd el SIGINTを受け取ったときに実行する Commons License BY-NC-SA 4.0. This material is licensed under the Creative 0-10 10

Debian系Linux の ルートファイルシステム root / bin boot dev etc lib mnt(media) opt proc home/root sbin sys tmp usr var コマンド類 起動ファイル デバイスファイル 設定ファイル ライブラリ、カーネルモジュール マウントポイント 追加アプリケーション カーネル情報(cpu、process、メモリ情報の参照 ユーザのホームディレクトリ システム管理コマンド(shtdown、mountなど) システムレポジトリ 一時ファイル 各種ユーザプログラム 可変データ(ログ、キャッシュ、スプーラなど) This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-11 11

組込み機器向けOSの条件 • 少ない資源(メモリ)で動作可 能 • リアルタイムオペレーティング システム This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-12 12

従来の組込み向けOS OS名 VxWorks WindowsCE T-kernel T-kernel Extension Windows Phone7 iOS Symbian OS 提供 開発環境 主な用途 価格 対応PF ウィンドリバー Eclipse 組込み機器全般 有償 ソースコードは 別途購入 マイクロソフト Windows CE Toolkit for Visual C++/Visual BASIC (Visual Studio) 組込み機器全般 有償 Closed Source ARM他 多数 組込み機器全般 無償/有償 Open Source (ただし独自の ライセンス) ARM SH M32 Visual Studio WindowsPhone専用 プロプライエタ リ EULA形式の契約 書が必要 ARM Apple XCodeIDE iPhone/ iPad専用 プロプライエタ リ EULA形式の契約 書が必要 ARM Nokia Carbide C++ (Eclipse) MOAP,S60,UIQ3 携帯電話/スマー トフォン SDKは有償版と 無償版がある OpenSource 0-13 ARM T-Engineフォーラ ム MicroSoft Eclipse for PMC T-Kernel This material is licensed under the Creative Commons License BY-NC-SA 4.0. ARM他 多数 13

組込み向けLinux OS名 MontaVista Linux 提供 米モンタビスタソフトウ ェア 主な用途 携帯電話向け 価格 対応PF 有償 x86、 PowerPCMIPS など Wind River Linux Wind River 組込み機器全般 有償 x86、 PowerPC、 MIPS、 Tizen Linux Foundation/LiMo Tizen Association 組込み機器全般 無償 オープンソース ARM Intel(X86) AxLinux アックス 組込み機器全般 有償 ARM、OMAP SHなど 組込み機器全般 オープンソース ソフトウェアコン ポーネント:提供 各社ライセンスに よる ARM他 多数 スマートフォン タブレット 無償 オープンソース ARM Lineo uLinux リネオ ソリューション ズ株式会社 Android Google & OHA 無償 ARM オープンソース OMAPなど Tizen Association・・・docomo, intel, orange, Panasonic, SAMSUNG, NEC, Sprint, HUAWEI, vodafoneなどが参加 Embedded Master OESF 組込み機器全般 This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-14 14

組込みLinuxの特徴 • Linuxカーネルに少数のフリーソフトウェアを組み合わせ たもの • 組込みCPUアーキテクチャのサポート • ARM、MIPS、X86など • RAMや二次記憶装置などの容量が小さい • 2MB以下のメモリで起動可能 • 組込み機器のアプリケーションや対象ハードウェアに必要 な機能に特化 • MMUユニット※のないCPUでも動作可能(CONFIG_MMU=n) • シングルプロセッサに最適化可能(CONFIG_SMP=n) • NANDの直接使用(JFFS2、UBIFS) • ファイルシステム • マウント速度が速い(YAFFS2など) • 読み出し専用(romfs) This material is licensed under the Creative Commons License BY-NC-SA 4.0. ※MMU:メモリ管理ユニット 0-15 15

組込みLinuxのリアルタイム性能 •ソフトリアルタイム (CONFIG_PREEMPT) •ハードリアルタイム (CONFIG_PREEMPT_RT patch set) •他のカーネルとの組み合わせでリアルタイム性を向上 •RTAI (Adeos+Linux) •RTLinux (Realtime executive+Linux) •Linux on ITRON (ITRON+Linux) •T-Linux (T-Engine+Linux) •L4-Linux (L4+Linux) •Litron (TOPPERS/JSPカーネル+Linux) •Wind River Real-Time Core for Linux (Real-Time Core+Linux) 参考:http://monoist.atmarkit.co.jp/mn/articles/0501/12/news113. This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-16 16

組込みLinuxの開発環境 •一般的なツール •Eclipse C/C++ Development Tooling (CDT) :EclipseでのCやC++の開発 に必須 •Target Management (RSE) •Linux Tools Project :プロファイラや動的解析などの機能を統合 •Tools for mobile Linux (TmL) •EGit :バージョン管理システムの一つ、Gitの統合 •Mylyn :バグトラッカの統合 •特定のOSに特化したEclipseプラグイン •Moblin Eclipse Plug-in •Android Development Tools (ADT) •その他の開発環境 •Qemu:エミュレータ •distcc、icecc:分散コンパイル用コンパイラ •専用の商用製品など This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-17 17

組込みLinuxに関わる団体 • Linux Foundation (CE Linux Forumを吸収) • Linuxオペレーティングシステムの普及をサポートする非営利のコンソー シアム • 旧CE Linux Forumが開催する定期的な無料イベント開催 • 日本テクニカルジャンボリー http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboreeGuidance • LiMo Foundation • Linuxを使った携帯電話のアプリケーション環境の標準化団体 • モトローラ、NEC、パナソニック、サムスン電子、NTTドコモ、ボーダ フォンなど • Open Handset Alliance (OHA) • Googleとともに携帯向けAndroidの開発推進を行うアライアンス • Open Embedded Software Foundation (OESF) • 組み込み機器向けAndroidに関わる企業間の協力を目的とした一般社団法 人 • Linaro • ARMのチップベンダである参加企業の各SoCに最適化されたツール、カー ネル、ミドルウェアを提供することなどを目的とした非営利団体 This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-18 18

メモ マスタ タイトルの書式設定 This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-19

第2章 Android概要 This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-20

2章の概要 • Androidとは – 主な機能、歴史 • • • • Androidアプリケーションの動作環境 Androidのアーキテクチャ アプリケーション開発環境 プラットフォーム開発環境 – ソースコード – ルートファイルシステム – Androidの起動処理 • エミュレータ This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-21

Androidとは Androidとは GoogleとOHAが提供する携帯端末用プラットフォームである 主に携帯電話、タブレットなどのプラットフォームとして利用されている 現在では、携帯電話、タブレット問わずさまざまなハードウェアにAndroidは搭 載されている マスタ タイトルの書式設定 AndroidはOS AndroidはLinuxカーネルをベースにしたオープンソースなOSであるため多くのハ ードウェアメーカーからプラットフォームとして採用されている Androidのライセンス 主にApache2.0ライセンスなので複写・修正・再配布が自由 カーネルなどの一部はGPLライセンス This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-22

ハンドセット、タブレット以外の Android ノートPC MediaController 腕時計型 マスタ タイトルの書式設定 This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-23

Android組込みハードウェア マスタ タイトルの書式設定 2-24

Androidの主な機能 【プラットフォーム全般】 ブラウザによるWebサイトの閲覧 →ベースはオープンソースWebKitエンジン 2D、3Dグラフィック →カスタム2Dグラフィックライブラリ、 OpenGL/ES 軽量データベース →構造化されたデータ領域のためのSQLite搭載 一般的なオーディオ、ビデオと静止画フォーマットをサポート →MPEG4、H.264、MP3、AAC、AMR、JPG、PNG、GIF、WebM Dalvik VM(ダルビック バーチャルマシン) →JavaVMよりもモバイル端末などの低メモリ環境に最適化 Bluetooth、EDGE、3G、WiFi、カメラ、GPS、コンパス、加速度計 【開発】 リッチな開発環境(Eclipse、DDMSなど)と端末エミュレータ 豊富で整ったアプリケーションフレームワークと拡張の自由 →コンポーネントの再利用と置き換えが可能 This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-25 25

豊富なインタフェース Androidのインタフェース NFC タッチパネル 各種センサ トラックボール カメラ GPS GPS ソフトキーボード/ハードキーボード NFC(Near Field Communication) Bluetooth Bluetooth マスタ タイトルの書式設定 This material is licensed under the Creative Commons License BY-NC-SA 4.0. タッチパネル 0-26

Androidの歴史 年月 できごと 2003年10月 Android社発足 2005年 8月 GoogleがAndroid社を買収 2007年11月 Open Handset Alliance (OHA)が発足 Android SDK 1.0 リリース 2008年10月 世界初のAndroid搭載スマートフォン 発売 「T-Mobile G1」 2009年 4月 Android SDK 1.5r1 リリース 2009年 5月 Android SDK 1.5r2 リリース 2009年 月 7 NTTドコモより、日本国内初のAndroid携帯 「HT-03A」発 売 Android SDK 1.5r3 発表 This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-27 27

Androidの歴史 年月 できごと 2009年 9月 Android SDK 1.6 発表 2009年10月 Android SDK 2.0 発表 2010年 1月 Android SDK 2.1 発表 2010年 5月 Android SDK 2.2 発表 2010年 12月 Android SDK 2.3 発表 2011年 2月 Android SDK 3.0 発表 2011年 5月 Android SDK 3.1 発表 2011年 7 月 Android SDK 3.2 発表 2011年 10月 2011年 12月 Android SDK 4.0 Android SDK 4.0.3 2012年 6月 Android SDK 4.1! 2012年 11月 スマートフォン向け タブレット向 け Android SDK 4.2 スマートフォン向け と タブレット向けの融 合 This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-28 28

プラットフォーム Androidのバージョン一覧 1.5 2.3 Cupcake Gingerbread Donuts HoneyComb 2.0–2.1 4.0 Eclair Ice Cream Sandwich 2.2 4.1-4.2 Froyo Jelly Bean マスタ タイトルの書式設定 3.0–3.2 1.6 2-29

Androidのバージョン 2.x系 2.x系の新機能 Version コードネーム APIレベル リリース 新機能 2.0/2.1 Eclair 5, 6, 7 2009/10/26 (2.0) 2009/12/3 (2.0.1) 2010/1/12 (2.1) • マルチタッチ • LiveWallPaper • Bluetooth マスタ タイトルの書式設定 2.2 Froyo 8 2010/5/21 • Dalvik VM にJITコンパイラを搭載 (2〜5倍高速化) • クラウドとデバイスの連携API (C2DM) • テザリング対応 • Adobe Flash対応 • インストール済アプリの自動更 新 2.3 Gingerbread 9, 10 2010/12/6 • • • • • • ゲームのための改良 並列GC(目標3ms以下の停止) NFC(近距離無線通信)対応 複数のカメラを扱えるAPIの追加 SIPの標準サポート バッテリー管理機能の向上 This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-30

Androidのバージョン 3.x系 3.xの新機能 Version コードネー ム APIレベル リリース 新機能 3.0 Honeycomb 11 2011/2/22 • 大型ディスプレイに最適化 • タブレット専用となった • マルチコアプロセッサのサポート 3.1 Honeycomb 12 2011/5/10 • • • • 3.2 Honeycomb 13 2011/7/15 • 広範囲なタブレット向けの最適化 • SDカードに対してのメディア同期 • スクリーンサポートの拡張 マスタ タイトルの書式設定 ユーザーインターフェースの改善 オープンアクセサリAPI USBホストAPI マウス、ゲームパッド、ジョイス ティックからの入力 • ホームスクリーンウィジェットのサ イズ変更 This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-31

Androidのバージョン 4.x系 4.xの新機能 Version コードネー ム APIレベル リリース 新機能 4.0 Ice Cream Sandwich 14, 15 2011/10/08 • • • • • • • • • 4.1 Jelly Bean 16 2012/06/27 • • • • • • • ハンドセットとタブレットのUIの統合 Android Beam WiFi Direct Bluetooth Health Device Profile Notificationの向上 ロック画面で、カメラと音楽の操作 ランチャーのアプリ管理の改善 画像や動画のエフェクト 正確なカメラの測光、顔認識 マスタ タイトルの書式設定 Systrace アクセシビリティの拡張 双方向テキスト対応 Unicode 6.0 の絵文字対応 Notificationの拡張 リサイズ可能なアプリウィジェット ライトアウト・フルスクリーンモードへ の遷移API • Remoteable View の追加 • デバイスの追加と除去の検知 • Android Beam の改善 This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-32

Androidのバージョン 4.x系 4.xの新機能 Version コードネーム APIレベル リリース 新機能 • マルチアカウント • クイック設定 • フォトギャラリーのアップデート。360 度撮影。 • ジェスチャ文字入力 • Miracast ワイヤレスディスプレイ • Google Play 以外からインストールするア プリにもマルウェアスキャン マスタ タイトルの書式設定 4.2 Jelly Bean 17 2012/11/13 This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-33

Androidのアーキテクチャ アプリケーション Home Contacts Phone Browser 自作アプリ ・・ ・ アプリケーションフレームワーク アクティビティ マネージャ ウィンドウ マネージャ コンテンツ プロバイダ ビューシステム 通知マネージャ パッケージ マネージャ 電話 マネージャ リソース マネージャ 位置 マネージャ XMPP サービス ライブラリ 自作 フレームワーク Androidランタイム サーフェス マネージャ メディア フレームワーク SQLite コアライブラリ OpenGL | ES FreeType WebKit Dalvik 仮想マシン SGL SSL Libc 自作ライブラリ HARDWARE ABSTRACTION LAYER Graphics Audio Camera Radio(RIL) WiFi ディスプレイ ドライバ Bluetooth ドライバ カメラドライバ フラッシュメモリ ドライバ バインダ(IPC) ドライバ キーパッド ドライバ USBドライバ WiFiドライバ オーディオ ドライバ 電源管理 ・・・ Linuxカーネル 2.6 This material is licensed under the Creative Commons License BY-NC-SA 4.0. 自作ドライバ 0-34 34

カーネルとネイティブライブラリ • Linuxカーネル2.6がベース ベースに) – – – – (ただし4.0以降のカーネルはほぼ3.1 Android用変更パッチ(電源管理、Binder、WakeLockなど) ハードウェアのドライバ類 システムデーモン GPLライセンス • HAL (Hardware Abstraction Layer) – Linuxのハードウェアドライバを抽象化しデバイスIO的な役割を果たす – Androidのユーザランドとカーネルをライセンス的に分離 • ライブラリ – Bionic libc • Unix系libcよりも高速でコンパクト(pthreadの実装) • BSDライセンス – C/C++で記述されたライブラリ • OpenGL/ES、SQLite、Webkitなど This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-35 35

Androidランタイム •コアライブラリ •Android用のJavaのコアライブラリで基本的なJava APIを提供 •J2SEをベースにしているので開発用ホストPCにJDKが入っていればアプリケー ションの開発が可能 •未サポートであるJ2SEのAPIもあるので注意 •Dalvik仮想マシン(Dalvik VM) •メモリの少ない環境でも複数のアプリケーションを同時実行できるように設計 •すべてのアプリケーションはDalvik VMのインスタンスとなって独自のプロセス として動作 •JavaVM(スタックベース) ≠ DalvikVM(レジスタベース) •Apache2.0 •アプリケーションのビルド時にdxツールがclassから.dexファイルに変換 (.dex≒.class/2) •Dalvik VMにおける実行ファイルはdexファイル Java VM .class .jar 異なる Dalvik VM .dex This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-36 36

アプリケーション層 • アプリケーションフレームワーク – Androidアプリケーション作成のための拡張可能なJavaのコンポーネ ント類 項目 説明 アクティビティマネー ジャ アプリケーションのライフサイクルや画面の共通バックスタックを管理 ウィンドウマネージャ ウィンドウの配置や外観を管理するシステムソフトウェア コンテンツプロバイダ パッケージ間(異なるアプリケーション間)でデータ共有を行う手段を提 供する ビューシステム UIの制御 通知マネージャ メッセージの到着、時間、アラームなどのイベント通知(ステータスバー やトーストなど) パッケージマネージャ アプリのインストール、更新、削除などを管理 電話マネージャ 電話の状態や通話機能を管理 リソースマネージャ アプリで使用するリソースの管理 位置マネージャ GPSデバイスによる位置情報取得や更新などを実現、管理 XMPPサービス XMPP(IMのメッセージ交換やログイン状況の通知用通信プロトコル)の サービスを管理 This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-37 37

アプリケーション層 • アプリケーション – Google製標準アプリケーション • アラーム時計、Bluetooth、ブラウザ、電卓、カメラ、コンタ クトリスト、 検索ボックス、電子メールクライアント、ギャラリー、3Dギャ ラリー、 インスタントメッセージ、ランチャー、音楽再生、 パッケージインストーラ、電話、システム設定、音声レコー ダ、 スピーチレコーダー・・・など – 独自アプリケーションはこのレイヤに該当する This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-38 38

アプリケーション開発の手法 アプリケーション アプリケーション アプリケーション アプリケーション アプリケーションフレームワーク JNI JNI JNI dalvikVM ライブラリ 自前のライブラリ Webkit OpenGLES OpenGLES OpenGLES ・・・ HAL Graphics Audio Camera Radio(RIL) WiFi ・・・ BIONIC Libc othread Libm Linker ・・・ Linuxカーネル 2.6 デバイスドライバ This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-39 39

アプリケーション開発環境 項目 必要な環境 OS Windows XP, Windows Vista(32 / 64 bit) Mac OS X 10.5.8以降(x86のみ) Linux(Ubuntu Hardy Herson、Lucid Lynx にてテス ト済) Java JDK Android開発ツール 統合開発環境 JDK 6 Android SDK 3.7(Indigo) 以降 Android Development Tools(ADT) Plug-in テキストベース 開発環境 Apache Ant(Windows版は1.7, Mac/Linux版は1.6.5以 降) *必要なマシンスペックは http://developer.android.com/intl/ja/sdk/requireme This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-40 40

プラットフォーム開発環境 項目 必要な環境(共通) スペック CPU:2G以上、 メモリ:2G以上 ハードディスク空き容量:80G以上(プラットフォームひとつあたり20G ) ネットワーク常時接続 ソースコード入手先 項目 Android Open Source Project (AOSP) Froyo(2.2)より古いAndroidのソースコード取得やビルドに必要な環境 ホストOS 必要なツール 項目 ホストOS 必要なツール Mac OS X 10.5.8以降(x86のみ) 32bit_Linux(Ubuntu 8.04 以上)(64bitLinuxの場合は下表参照) Python 2.6 - 2.7、 git1.7以上、 GNU Make 3.81 -- 3.82、JDK5 git-core, gnupg, flex, bison, gperf, libsdl-dev, libesd0-dev, libwxgtk2.6-dev, build-essential, zip, curl, libncurses5-dev, zlib1g-dev, valgrind, libreadline5-dev, repo Gingerbread(2.3)以上のAndroidのソースコード取得やビルドに必要な環 境 64bit_Linux(Ubuntu 10.04 以上) Python 2.6 - 2.7、 git1.7以上、GNU Make 3.81 -- 3.82、 JDK6 git-core gnupg flex bison gperf build-essential zip curl zlib1gdev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32zdev This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-41 41

組込み開発とは 組込み機器のプラットフォーム開発はネイティブ言語で開発(gcc)を行う 【必要な作業】 1. ホストPCにてクロス開発環境構築 – 2. 3. ホストPCにてカーネル作成 ターゲットボードに移植 – 4. 5. ターゲットボードのチップのアーキテクトに適用したクロスコンパイル環境で あること (ARM, x86, ・・・) (必要であれば)デバイスドライバ作成、組み込み ホストPCにてユーザランド作成 ターゲットボードのメモリに書き込み、起動、評価 【ターゲットボードに最低限必要なインタフェース】 – – – ネットワークポート(LANなど) シリアルポート(RS232Cなど) JTAG (ICE接続などに使用) This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-42 42

Androidのクロス開発環境 Ubuntu 追加パッケージ ホストPC (X86) Ubuntu on VMWarePlayer ターゲットボード (ARM) Armadillo-440 LAN or シリアル AOSP ボードベンダなど ソースコード取得 編集 コンパイル カーネルイメージ作成 ユーザランドのルートファイルシステム作成 実機へ転送 デバッグ *1 : コンパイラ(gcc)、プリプロセッサ & リンカ & アセンブラ(bin-utility)、 Cライブラリ、ダイナミックローダ などビルドに必要なツール一式 *2 : Linuxカーネル、ユーザランドのソースコード *3 : ボードに搭載しているハードウェアに依存するドライバやAndroidとの差異を吸収するパッチ ブートローダーなど This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-43 43

本実習で使用するホストPC構成 ゲストOS Ubuntu ver. 10.04.LTS 32_bit x86版 VMWarePlayer ver.4.04 ホストPC WindowsXP SP3 or 7 (32_bit x86マシン) VMWare Player入手先サイト 下記サイトからメジャーバージョン4.0、マイナーバージョン4.04を選択し、 「VMware Player for Windows 32-bit and 64-bit」をダウンロードします https://my.vmware.com/jp/web/vmware/free#desktop_end_user_computing/vmware_player/4_0|P LAYER-406|product_downloads Ubuntu 10.0.4LTS入手先サイト Ubuntu 10.0.4LTS CDイメージ(iso) はサポート期間が終了してしまったため、下記 サイトから 「PC (Intel x86) alternate install CD」をダウンロードします。 http://releases.ubuntu.com/lucid/ This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-44 44

Ubuntu on VMWarePlayer インストールウィ ザードに 必要な項目を入力し てインストール開始 ディスクトップ にVMWarePlayer のショートカッ トができるので ダブルクリック This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-45

Ubuntu on VMWarePlayer ディスク容量…80G ネットワーク…NAT メモリ…最低2G以上割り当てる This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-46 46

Ubuntu on VMWarePlayer Ubuntuのisoイメージをダウンロードした場所 「ISOイメージ ファイルを使用 する」にチェッ クをいれて 参照ボタン押下 「OperationSystem not found」 と表示されて止まったらEnterキーを押下 This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-47 47

Ubuntu on VMWarePlayer インストール ウィザードに 必要な項目を 入力してイン ストール開始 インストール が完了すると 再起動を促さ れるので再起 動をする This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-48 48

Ubuntu on VMWarePlayer 初回インストール時はアップデートマネージャにてセキュリティ アップデートをする *社内ネットワークなどproxyの関係で失敗する場合はproxyの設定を正しく行ってからリ トライしてください 0-49 This material is licensed under the Creative Commons License BY-NC-SA 4.0. 49

本実習のクロス開発環境の構築 ホストPCがUbuntu ver.10.0.4LTS (32_bit x86版)の場合 必要なツールのインストール $ sudo apt-get install git-core gnupg flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev $ sudo apt-get install valgrind $ sudo apt-get install libreadline5-dev JDK5のインストール Oracleのサイトからlinnux用のバイナリをダウンロードします( jdk-1_5_0_22-linuxi586.bin) http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archivedownloads-javase5-419410.html#jdk-1.5.0_22-oth-JPR $ chmod a+x jdk-1_5_0_22-linux-i586.bin $ ./jdk-1_5_0_22-linux-i586.bin $ mv jdk1.5.0_22 java-5-oracle $ sudo mkdir /usr/lib/jvm $ sudo mv java-5-oracle /usr/lib/jvm This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-50 50

本実習のクロス開発環境の構築 JDK5のインストール(続き) 下記の/update-java-0.5bツールを実行後ダイアログが表示されるので 「/usr/jvm/java-5-oracle」を選択して「OK」すれば完了 $ wget http://webupd8.googlecode.com/files/update-java-0.5b $ chmod +x update-java-0.5b $ sudo ./update-java-0.5b repoのインストール $ mkdir ~/bin $ curl http://android.git.kernel.org/repo >~/bin/repo $ chmod a+x ~/bin/repo ※export PATH=$PATH:~/bin を .bashrc へ追記 ホストPCがUbuntu 10.0.4 (64bit x86版)の場合:http://source.android.com/source/downlo 0-51 This material is licensed under the Creative Commons License BY-NC-SA 4.0. 51

android open source project (AOSP) http://source.android.com/ Androidのソースコードはgitプロジェクト単位(リポジトリ)にTree構 造となっている コミッターは個々のリポジトリをフォークして変更を加え、本Treeにコ ミットしている AOSPのkernel以外の全リポジトリは https://android.googlesource.com/platform/manifest 0-52 This material is licensed under the Creative Commons License BY-NC-SA 4.0. で管理されている 52

Android のバージョン対応表 Androidの指定バージョンのソース コードを取得する場合はAOSPの BuildNumbersで記載されている Code nameまたはTagを指定する Code name Version API level (no code name) 1.0 API level 1 (no code name) 1.1 API level 2 Cupcake 1.5 API level 3, NDK 1 Donut 1.6 API level 4, NDK 2 Eclair 2.0 API level 5 DMD64 android-1.6_r1.5 latest Donut version Eclair 2.0.1 API level 6 EPF21B android-2.1_r2.1p2 latest Eclair version Eclair 2.1 API level 7, NDK 3 FRK76C android-2.2.3_r2 latest Froyo version Froyo 2.2.x API level 8, NDK 4 GWK74 android-2.3.7_r1 Gingerbread 2.3 - 2.3.2 API level 9, NDK 5 latest Gingerbread version, Nexus S 4G ITL41D android-4.0.1_r1 Gingerbread 2.3.3 - 2.3.7 API level 10 earliest IceCreamSandwich version, Galaxy Nexus Honeycomb 3.0 API level 11 ITL41D android-4.0.1_r1.1 Galaxy Nexus Honeycomb 3.1 API level 12, NDK 6 ITL41F android-4.0.1_r1.2 Galaxy Nexus ICL53F android-4.0.2_r1 Galaxy Nexus Honeycomb 3.2.x API level 13 IceCreamSandwich 4.0.1 - 4.0.2 IceCreamSandwich 4.0.3 Build Tag IML74K android-4.0.3_r1 API level 14, NDK IML77 7 This material is licensed under the Creative Commons License BY-NC-SA 4.0. API level 15 Notes Nexus S latest IceCreamSandwich 0-53 version 53

Androidのソースコード管理 (Git) • Gitとは – 分散型バージョン管理システム – 複数リポジトリ間での変更履歴のやり取りが可能 – Linux kernelのソースコード管理に利用されている 【gitサーバにあるリポジトリのコピー】 $ git clone https://android.googlesource.com/platform/manifest + project path 例1:フレームワーク関連の最新のソースコードを取得する場合 $ git clone https://android.googlesource.com/platform/frameworks/base.git 例2:フレームワーク関連のFroyoのソースコードを取得する場合 $ git clone https://android.googlesource.com/platform/frameworks/base.git –b android-2.2.3_r2 または clone https://android.googlesource.com/platform/frameworks/base.git –b froyo $ git This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-54 54

Androidのソースコード管理 (repo) • repoとは – Gitの複数リポジトリを一括で管理するためのツール 【gitサーバにあるkernel以外のすべての標準プロジェクトを 一括で取得】 $ repo init -u https://android.googlesource.com/platform/manifest project path $ repo sync + $ repo init -u https://android.googlesource.com/platform/manifest 例1:最新のソースコードを一括取得するためのリポジトリの作成する場合 $ repo init -u https://android.googlesource.com/platform/manifest –b android例2:Froyoのソースコードを一括取得するためのリポジトリの作成する場合 2.2.2_r1 または init -u https://android.googlesource.com/platform/manifest $ repo This material is licensed under the Creative Commons License BY-NC-SA 4.0. –b froyo 0-55 55

AOSPのソースコード取得 android-2.2.2_r1のタグのついたAndroid2.2(Froyo)のコードを取得するには $ mkdir mydroid $ cd mydroid $ repo init -u https://android.googlesource.com/platform/manifest –b android2.2.2_r1 $ repo sync 上記 repo init コマンドでレポジトリの初期化を行うと.repoディレクトリが生成 $ ls .repo msnifst.xml@ manifests/ manifests.git/ repo/ manifest.xml@ (-> manifests/default.xml) にはrepo が管理する対象のプロジェ クトが定義 manifest.xml にないプロジェクトの追加またはmanifest.xml からプロジェクトを外す場合 local_manifest.xml を作成することによってカスタム設定が可能 <?xml version=“1.0”encoding=“UTF-8”?> <manifest> 削除 <remove-project name=“platform/frameworks/base” /> <project path=“frameworks/base” name=“platform/frameworks/base” revision=“android- 追加 2.2.3_r1”/> </manifest> パス名 プロジェクト名 指定のタグ名(任意) This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-56 56

repo sync 後のソースコードツリー mydroid/ bionic/ bootable/ build/ cts/ dalvik/ development/ external/ frameworks/ hardware/ packages/ prebuild/ system/bluetooth system/core system/extras Android用に開発されたCライブラリ ブートローダーリファレンスコード ビルドシステム テストスイート 仮想マシンDalvik 開発ツール、SDK、サンプルコード AOSP以外の外部オープンソースプロジェクト Androidアプリケーションフレームワーク ハードウェアライブラリとRadio Interface 標準的なAndroidアプリケーションとサービス ビルドに必要な各種バイナリファイル Bluetoothツール 最小限の実行環境 低級なデバック、テストツール This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-57 57

ソースコード詳細(packages) • packages -> アプリケーションレイヤ – apps : Android標準搭載アプリケーションのソース コード – inputmethods : 入力用メソッドのソースコードが格 納 – providers : Android標準搭載サービスのソースコー ド – experimental : 製品には入らないテストツール – wallpapers : ライブ壁紙のソースコード This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-58 58

ソースコード詳細 (packages/frameworks) • frameworks -> フレームワークレイヤ – base • Androidフレームワークのソースコードと各種サービスのソー スコード • base/core : Androidランタイムのコアライブラリ • base/libs : 外部プロジェクトのライブラリ – opt : googleや絵文字のライブラリソースコード – policies : mid、phoneの構成情報 • dalvik -> Androidランタイム – Dalvik仮想マシン本体の関連クラスライブラリ This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-59 59

ソースコード詳細(bionic/external) • external -> ライブラリレイヤ – 外部プロジェクトのライブラリ • bionic -> ライブラリレイヤ – BSDライセンス – POSIX標準Cライブラリのすべての機能は実装してい ない – 未サポート機能 • • • • • C++例外 pthreadキャンセル pthread_coreのinitメソッドからスローされたC++例外 pthread_coreのfork()するinitメソッド ロケールとワイルドキャラクタ(UnicodeライブラリICUで代 替) This material is licensed under the Creative Commons License BY-NC-SA 4.0. • ユーザアカウント関連のメソッド(getpwdなど) 0-60 60

ソースコード詳細(hardware) • hardware -> HAL – broadcom : Broadcomの無線ドライバ – libhardware :外部モジュールで構成されたデバイスドラ イバ制御用ラッパーライブラリ (外部モジュールの配置場所は/system/libs/hw配下) – libhardware_legacy : スタティックリンクされる定義で 構成されたデバイスドライバ制御用ラッパーライブラリ (WiFi、バイブレーション、電源、GPSなど) – msm7k : QualcommのMSM7K関連 – qcom : QualcommのGPSドライバ – ril : Radio Interface Layer テレフォニーサービスのベースバンドIF – ti : TIの無線ドライバ This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-61 61

ソースコード詳細(system) •system –Initなどの基本的なプロセスのコードやシステム ファイルなど –bluetooth : bluetoothのソースコード –core : 必要最小限の実行環境、基本的なコマンド 類 –extras : デバッグ、テストツールが格納 –netd : ネットワーク設定制御用デーモン –vold : ボリュームデーモン、各種メディアのマウ ント –wlan : TIの無線関連のソースコード This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-62 62

ソースコード詳細(開発環境関連) • build – ビルドシステム(Makefile、スクリプトなど)を格納 – Androidソースコードのルートでmakeするとbuild/core/main.mkからmake開始 • prebuild – 各ターゲット用、ホストOS用のビルドツールのバイナリファイル(クロスコンパイ ラ) • device – 機器に関するbuild関連の情報(Makefile)、CPUやボードに依存するソフト(スク リプト)やドライバなど • ndk – Native Development Kit関連のソフト、gdbなどのツール • sdk – Android SDKで使用されるエミュレータソフトやライブラリ • bootable – bootloader : ブートローダーのソースコードが格納 • bootloader/legacy/usbloader/main.cがブートローダーのスタート関数 – diskinstaller : x86系PCにAndroidをインストールする際に使用 – recovery : Android system recovery utilityのソースコードが格納 This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-63 63

ソースコード詳細(開発環境関連) • cts – 互換性テストスイーツ、デバイスの互換性をテストするためのツ ール など – Android認証テスト – Android Marketなどを使用できるようにするにはGoogleの認証が必要 – CTSが通らなければAndroid端末として認証されない(かなり厳格) This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-64 64

Androidのエミュレータと実機 プラットフォームが入れ替わるだけで実はエミュレータと実機は同じ ARMのエミュレートをしているのはQEMUエンジン Javaプログラム Dalvik VM Javaプログラム Dalvik VM Linux ARM版 Linux ARM版 ARM仮想マシン (QEMU) PC ARM実機マシン Androidエミュレータ Android実機マシン This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-65 65

Androidの起動シーケンス Power ON or Reboot BootROM /init.rc 基本設定 ・ネットワーク ・キーボード ・デバイス初期 化 サービスの起動 ブートローダ Boot カーネル メモリに展開 /in it ブートデバイスの専用ブロック読み出し U-Boot or Hermit 起動パラメータの設定 CPU初期化 ハードウェアのチェック, ドライバの読みこみ 起動用ファイルがある領域の マウント kernelの起動パラメータ設定時 必ずinit=/initを指定すること Home画面 デフォルトの設定ではカーネルは /sbin/init、/etc/init、/bin/init、 /bin/sh にinitを探しにいくので正常に起動でき 0-66 ない This material is licensed under the Creative Commons License BY-NC-SA 4.0. 66

Android カーネルの起動パラメータ 本実習で使用するArmadillo-440はブートローダにhermitを使用します カーネルの起動パラメータを設定するためには、開発PCとArmadillo-440を RS232Cで接続後、hermitプロンプトからsetenvコマンドで以下のように設 定します hermit>setenv␣console=ttymxc1␣root=/dev/mmcblk0p2␣init=/init␣noinitrd␣ rootwait パラメータ 説明 console=ttymxc1 カーネルコンソールはデバイスttymxc1を使用 noinitrd initrd(初期RAMディスク)を使用しない root=/dev/mmcblk0p2 MMC(SDカード)の2番目のパーティションをルートファイルシ ステムとする rw Read/Writeでルートファイルシステムをマウント rootdelay=1 ルートファイルシステムをマウントする前に指定秒間待機 rootwait ルートファイルシステムがアクセス可能になるまで待機 nfsroot nfsrootNFSを使用する場合に、ルートファイルシステムの場所 やNFSオプションを指示 init=/init initの実行ファイルはルート直下にあるinitを使用 This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-67 67

Androidのinit init /system/core/init/init.c int main(int argc, char **argv) { ブート処理 /dev、/proc、/sysをマウン ト /init.rc をパースして実行 - action_list作成 - service_list作成 起動時に一度だけ実行される /init.<hardware名>.rc をパースして実行 - action_list作成 - service_list作成 for(;;){ デーモン処理 システムが動作している限 り 繰り返し実行される } } ファイルディスクリプ タの 監視 This material is licensed under the Creative Commons License BY-NC-SA 4.0. device_fd property_fd signal_fd keychord_fd 0-68 68

Androidのinit • initの起点 – /system/core/init/init.c の main関数 • init.rc – Android Init Languageで書かれた起動用スクリプト – Action、Command、Service、Optionで構成 – /system/core/init/readme.txt で説明 ACTION部 on <target> <command> <command> : SERVICE部 service <name> <path> [argument]* <option> <option> : This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-69 69

Androidのinit(デーモン処理) • ファイルディスクリプタ – device_fd • カーネルからデバイスの状態変化通知を受けて/dev以下のデバ イスの生成と削除を行う。 • 生成するデバイスファイルのmode、uid、gidはdevices.cの構 造体かinit.rcのdeviceコマンドで指定可能 – property_fd • システムプロパティの書き込み処理 – signal_recv_fd • 子プロセスが終了したときにsignalを発生するのでそれを受け て後処理を行う – keychord_fd • あらかじめ登録した複数のキーの入力組み合わせを監視しそれ に対応するserviceを起動する This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-70 70

Androidのルートファイルシステム data root / キャッシュ、追加パッケージなど格納ディレクト (R/W) dev デバイスファイル格納ディレクトリ proc Linux設定ファイル格納ディレクトリ sys システムファイル格納ディレクトリ sbin adbd実行ファイル格納ディレクトリ system 次頁参照 init 起動処理実行ファイル init.armadillo440.rc initが実行するターゲットボード固有 起動用シェルスクリプト init.rc initが実行するAndroid固有起動用シェルスクリ default.prop Androidデフォルトプロパティ init.goldfish.rc エミュレータ起動用シェルスクリプト initlogo.rle 起動時のロゴの画像ファイル (RGB888のRAW形式をRLE形式に変換した画像 ) This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-71 71

Androidのルートファイルシステム app /system/ bin etc fonts framework lib usr xbin build.prop プリインストールのアプリケーション ファイル(.apk) 各種一般的なLinuxコマンド 設定用シェルスクリプトなど フォントファイル(.ttf) javaのandroidのライブラリ(.jar) ネイティブライブラリ(.so) キー設定ファイルなど root用のコマンドなど Androidデフォルトプロパティ This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-72

1章と2章のまとめと次回予告 以上で一般的なLinuxの概要とAndroidの概要に ついて学びました 次章からは本実習で使用するターゲットボードの 理解とAndroidを動作させる方法について学びます This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-73

メモ This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-74

第3章 ターゲットのボード This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-75

3章の概要 • • • • • 代表的なターゲットボード Armadillo-500fxの構造 Armadillo-500fxのメモリ構成 Armadillo-440の構造 Armadillo-440のメモリ構成 This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-76

各種ターゲットボード ボード名 CPU メモリ 画面 通信 I/F ストレー ジ カメラ オーディオ Armadillo-440 液晶モデル開発 セット Freescale i.MX257 400MHz (ARM9) 32MB (FLASH NOR) 128MB (LPDDR SDRAM) 4.3イ ンチタ ッチパ ネル Eth×1 シリアル、 USB microSD - オーディオ入 出力 Armadillo-500fx 液晶モデル開発 セット Freescale i.MX31 532MHz (ARM11) 32MB(FLASH NOR) 128MB(DDR SDRAM) 1G(USBSSD) 5.7イ ンチタ ッチパ ネル Eth×1 シリアル、 USB、操作ボ タン SD/MMC+mic roSD - オーディオ入 出力 Armadillo-800EVA 評価キット ルネサス [R-Mobile A1] 800MHz 2コア ARM Cortex-A9 512MB (DDR SDRAM) 8G(eMMC) 5イン チタッ チパネ ル (静電 式) Eth×1 WLAN シリアル USB HOST/OTG HDMI SD/MMC+mic roSD CMOSカメ ラモジュ ール オーディオ入 出力 BeagleBoard TI OMAP3530 600MHz (ARM11) 256MB NAND DDR2 RAM - - シリアル、 USB SD/MMC - オーディオ入 出力 BeagleBoard-xM TI DM3730 1.0GHz (ARM Cortex-A8) 512MB NAND DDR2 RAM - Eth×1 シリアル、 USB microSD 拡張端子 オーディオ入 出力 PandaBoard TI OMAP4430 1GHz 2コア ARM Cortex-A9 1GB DDR2 RAM - Eth×1 BT2.1+EDR WLAN シリアル USB HOST/OTG HDMI、DIV-D SD/MMC 拡張端子 オーディオ入 出力 PandaBoard-ES TI OMAP4460 1.2GHz 2コア ARM Cortex-A9 1GB DDR2 RAM - Eth×1 BT2.1+EDR WLAN シリアル USB HOST/OTG HDMI、DIV-D SD/MMC 拡張端子 オーディオ入 出力 This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-77

ターゲットボード ボード名 提供元 購入先 価格 Armadillo-440 液晶モデル開発セット アットマークテクノ社 アットマークテクノ社 128,000(税込) Armadillo-500fx液晶モデル開発セッ ト アットマークテクノ社 アットマークテクノ社 63,000(税込) Armadillo-800EVA評価セット アットマークテクノ社 アットマークテクノ社 99,750(税込) BeagleBoard TI/Digi-Key Beagleboard.org Digi-Key $125 BeagleBoard-xM TI/Digi-Key Beagleboard.org Digi-Key $149 PandaBoard Pandaboard.org Digi-Key 14,061(送料 ・消費税・関税 込) PandaBoard-ES Pandaboard.org Digi-Key 15,136(送料 ・消費税・関税 込) This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-78

Armadillo440 This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-79

Armadillo440 プロセッサ CPUコア Freescale i.MX257 (MCIMX257) ARM926EJ-S CPUコアクロック 400MHz BUSクロック 133MHz メモリ 128MB (LPDDR) 32MB (NOR) USB USB2.0×2(High Speed/FullSpeed) タッチパネルインタ ーフェースボード 抵抗膜式タッチスクリーンコントロ ーラー SD シリアルポート microSDスロット RS232C、 オーディオ I2S I/F、デジタルオーディオCODEC 画像出力 18bit LCD I/F、DATA IMAGE社製LCD インターフェース EthernetFXボード LAN (10BASE-T/100BASE-TX ) This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-80

Armadillo440-通常Linux 開発用PC カーネルの起動パラメータ [armadillo] hermit> clearenv [armadillo] hermit> setenv [armadillo] hermit> boot シリアル通信ソフ ト NOR Flashメモリ(32M) linux-440.bin.gz をRAMにロードして実行 bootloader ブートローダ領域(Hermit) kernel Linuxカーネル領域 userland Linuxユーザランド領域 linux-romfs440をマウント 各プロセスの実行 config Linuxカーネルパラメータ保存領域 通常Linuxが起動 This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-81 81

参 考 Armadillo440-Androidデバッグ時 (NFSブート) 開発用PC カーネルの起動パラメータ [armadillo] hermit> setenv␣console=ttymxc0,␣115200␣root=/dev/nfs␣rw␣nfsroot=192.16 8.1.10:/home/mydoroid/out/target/product/genelic/root␣init=/i nit␣ip=102.168.1.11␣noinitrd [armadillo] hermit> boot NOR Flashメモリ(32M) linux-440android.bin.gzをRAMに ロードして実行 シリアル通信ソ フト Androidユーザランド android-rootfs 192.168.1.1 0 bootloader ブートローダ領域(Hermit) Android対応kernel Linuxカーネル領域 linux-440-android.bin userland Linuxユーザランド領域 config Linuxカーネルパラメータ保存領域 NFSルートマウント root=/dev/nfs マウント 各プロセスの実行 Androidが起動 LAN接続 192.168.1.11 This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-82

Armadillo440-Androidデバッグ時 (microSDブート) 開発用PC カーネルの起動パラメータ [armadillo] hermit> setenv␣console=ttymxc1␣root=/dev/mmcblk0p2␣init=/init␣noinitr d␣rootwait [armadillo] hermit> boot シリアル通信ソフ ト NOR Flashメモリ(32M) linux-440-android.bin.gz をRAMにロードして実行 組み込み済み bootloader ブートローダ領域(Hermit) Android対応kernel ルートマウント root=/dev/mmcblk0p2 マウント 各プロセスの実行 Linuxカーネル領域 linux-440-android.bin userland /dev/mmcblk0 microSD Android /dev/mmcblk0p2 rootfs Linuxユーザランド領域 config Androidが起動 Linuxカーネルパラメータ保存領域 This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-83

Armadillo440-Android 製品イメージ 開発用PC カーネルの起動パラメータ [armadillo] hermit> clearenv [armadillo] hermit> boot シリアル通信ソフ ト NOR Flashメモリ(32M) linux-440-android.bin.gz をRAMにロードして実行 組み込み済み bootloader ブートローダ領域(Hermit) Android対応kernel Linuxカーネル領域 linux-440-android.bin Androidのルートをマウント 各プロセスの実行 Androidが起動 /dev/mmcblk0 /dev/mmcblk0p1 マウント Android /system(RO) Androidルート Root(RO) config microSD /dev/mmcblk0p2 マウント Android /dara(RW) Linuxカーネルパラメータ保存領域 This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-84

メモ This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-85

第4章 実機でAndroidを動かす This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-86 86

4章の概要 • • • • • • • • • 目指すシステム Androidソースコード取得 Androidカーネルイメージ作成 Androidユーザランドのファイルシステム作成 Androidユーザランドのファイルシステム構成 Armadillo-440の標準Linuxとネットワーク設定 Android起動用microSDの準備とAndroidカーネルの準備 Android起動 デバッグ環境の構築 – – – – Android SDK のインストール ネットワーク設定 ddms adbコマンドとadb shellコマンド This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-87 87

本章で目指すシステム Armadillo-440に搭載させたmicroSD内のEM3で起動 する /dev/mmcblk0 microSD Android rootfs /dev/mmcblk0p2 This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-88 88

Linuxコマンドの復習 ●UbuntuのターミナルのシェルではTabキーでディレクトリ名やファイル名の補完ができま す ●ホームディレクトリについて 本実習の開発環境におけるユーザ(aj741327)のホームディレクトリは以下のディレクトリ です /home/aj741327 ●Linuxではホームディレクトリのことを【 ~/ 】で簡略化して表現することができます。 <使用例> ホームディレクトリにあるworkというディレクトリに移動したい場合 cd /home/aj741327/work cd ~/work 同じ ●ワイルドカード「*」 Aというディレクトリ内にあるすべてのjavaのソースファイルをまとめて指定したいときな ど「*」を利用して 以下のように指定できます A/*.java This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-89

Linuxコマンドの復習 pwd 現在のディレクトリパスを表示 cd ディレクトリ間移動 cd ../ 一つ前のディレクトリに移動 ls –la カレントディレクトリのファイルを 一覧表示 -l : ファイルの詳細も示す -a : .ファイル(隠しファイル)も表示 cp A B ファイルのコピー A:コピー元ファイル名 B:コピー先ファイル名 mv A B ファイルの移動、ファイル名の変更 A:元ファイルファイル名 B;移動先ファイル名 rm A ファイル、ディレクトリの削除 -r –R :ディレクトリ内の削除 -f :警告メッセージを表示しない -d:ディレクトリごと削除(スーパーユーザのみ) mkdir A ディレクトリの生成 -p:指定したディレクトリをサブディレクトリごと 作成する。ツリー状のディレクトリも作成可能 chmod モード A パーミッションの変更 Aというファイルをモードで指定したパーミッショ ンに変更 モード:777(全ユーザにrwxの権限)やa+x(全ユ ーザに実行権限) chown usr01 A chown usr01:g1 A ファイル所有者の変更 Aの所有者をuser01に変更 Aの所有者をuser01、所属グループg1に変更 -R :ディレクトリとその中野ファイルの所有者を 変更 fdisk パーティションの作成、削除、変更 mkfs ファイルシステムの作成(フォー マット) -t fstype 作成するファイル・システムを指定する This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-90

Linuxコマンドの復習 mount A B ファイルシステムのマウント AをBにマウントする umount B ファイルシステムのアンマウント Bをアンマウントする ps 実行中プロセスの情報表示 top プロセスの稼動状況などのリアルタイム 表示 env 環境変数の表示 export 環境変数の設定 exit 現在のユーザのログアウト reboot システムの再起動 sudo 別ユーザでコマンド実行 cat テキストファイルの内容を閲覧、ファイ ルの連結 less ファイルの内容をページ単位で表示 gzip A gzファイルに圧縮 Aを圧縮する -d:圧縮ファイルを展開する tar オプ ション A.tar (/A) アーカイブの作成、展開やtarファイル の圧縮、解凍 tar cvf A.tar /A:/Aディレクトリ以下をA.tarという名前で アーカイブする tar xvf A.tar:A.tarというアーカイブをすべて展開する( 処理経過表示) ftp コンピュータ間のファイルの送受信 ftp 192.168.1.11 ping コンピュータ間の接続状態のテスト ping 192.168.1.11 export <環境変数名>=<パス> This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-91

EM3とは EM(EmbeddedMaster)とはOESFのディストリビューション ワー キンググループを中心に仕様策定、構築、公開をしている 組込み機器向けのAndroidのディストリビューションのシリー ズです http://www.oesf.jp/ Androidのフレームワークに準拠 し、AndroidのAPIとの互換性を保 ちつつ、情報家電等の組込みシス テムで共通に必要となる、 各種 機能を拡張しております。また、 開発に際してはOESFで選定した ハードウェアプラットホームを ターゲットとしています This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-92

Embedded Master 開発者サイト AOSPと同様にEMにも開発者のためのサイト (http://developer.oesf.biz/em/developer/)があります。 各バージョンのリリース情報やソースコードの取得方法、 ターゲットボードでの動作のさせ方など、詳しい開発情報が 得られます。 This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-93

Embedded Master バージョン バージョ ン コード 説明 5 Fig TBD 4 EggPlant Andrid 4.0がベース 詳細は近日にアナウンス予定 Durian Andrid 2.2がベース OPBのバージョンアップ、 グラフ・チャートAPI、OSGi拡張機能 2 Cinnamon Andrid 2.0がベース 拡張ビルド環境(OESF Platform Builder: OPB) マーケットプレイスSDKの提供 1 Blue Berry 3 シンボル EMの初代バージョン。Android1.6がベース 高解像度スクリーンのサポート This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-94

EM3ソースコードの取得 Armadillo440用のカー ネルコードの取得方法 の説明リンク サポートしているカーネルの機能 Core: Android^(TM) 2.2_r1.3 wpa_supplicant(version 0.5.11) OESF boot screen Usb keyboard supported ALSA sound supported ・ALSA-library(version 1.0.23) ・ALSA-Utility(version 1.0.23) ・ビルド環境のセットアッ プ (OBPを使用する場合はEclipseの pluginであるCDTをインストールす る必要があるが今回は使用しない) ・EM3 for ARMのソース コードの取得方法 This material is licensed under the Creative Commons License BY-NC-SA 4.0. 0-95 95

EM3ソースコードの取得 [host_pc~] [host_pc~] [host_pc~] [host_pc~] [host_pc~] > > > > > cd␣~work mkdir␣v2_armadillo440-training export␣ANDROID=~/work/v2_armadillo440-training cd␣$ANDROID gi

#lan presentations

Add a comment

Comments

jeaxiseangasy | 20/11/14

Related presentations

Related pages

Android組込み開発基礎コース Armadillo-440編 ...

Android組込み開発基礎コース Armadillo-440編. Android™組込み開発基礎コース Armadillo-440編. 1. Linux ...
Read more

Android組込み開発基礎コース Armadillo-440編 ...

Android組込み開発基礎コース Armadillo-440編. 1.Linux ...
Read more

Android組込み開発基礎コース Armadillo-440編

OESF公認 Android組込み開発基礎コース Armadillo-440編 公式トレーニングテキスト(日本語) Contributed by: 【作成 ...
Read more

「OESF公認 Android組込み開発基礎コース ...

「OESF公認 Android組込み開発基礎コース Armadillo-440編 」 ...
Read more

Android組込み開発基礎コース BeagleBoard編 ...

Android組込み開発基礎コース Armadillo-440編; Android組込み開発基礎コース ... Android™組込み開発基礎コース BeagleBoard ...
Read more

CherryBit

Android組込み開発基礎コース 【Armadillo-440編 】 会社 ...
Read more

CherryBit

・Android組込み開発基礎コース Armadillo-440編 ⇒ 詳細 対応 ...
Read more

Androidセミナー/トレーニング情報|IT ...

「OESF公認 Android組込み開発基礎コース Armadillo-440編 」 ...
Read more