SlideShare ist ein Scribd-Unternehmen logo
1 von 341
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
git␣clone␣git://github.com/OESF/Embedded-Master-

ARM.git
:

Resolving deltas: 100% (136625/136625), done.
Checking out files: 100% (257515/257515), done.
:

[host_pc~] > cd␣Embedded-Master-ARM/
[host_pc~] > ls

core i5 メモリ
1.5G
ubuntu on vmware
90分くらい

Makefile build development frameworks linaro packages sdk
bionic
cts
device
hardware
ndk
pms
system
bootable dalvik external
kernel
opb
prebuilt vendor
タグで正確にEM3を取得するにはgit clone終了後以下を実行
[host_pc~] > cd␣Embedded-Master-ARM
[host_pc~] > git␣checkout␣-b␣EM3␣refs/tags/EmbeddedMaster-3.1.0
This material is licensed under the Creative Commons License BY-NC-SA 4.0.

0-96

96
Androidのユーザランドのビルド

core i5 メモリ
1.5G
ubuntu on vmware
120分くらい

// Androidユーザランドのビルド
[host_pc~] > cd␣$ANDROID/Embedded-Master-ARM/
[host_pc~] > echo␣"TARGET_PRODUCT:=armadillo440"␣>␣buildspec.mk
[host_pc~] > make␣-j2

2012年5月23日現在ビルドエラーが発生します。
packages/apps配下の下記フォルダを削除することでビルドエラーの発生を回避できま
OesfAndroidSystemMonitor
OesfNaviCoopAppCarIcon
OesfNaviCoopAppPoiDest
OesfNaviCoop_PluginNavi_CoopAppRoute
OesfSystemMonitorExample

OesfMonitorLogGraphicView
OesfNaviCoopAppDispArea
OesfNaviCoop_PluginNavi_CoopAppDisplay
OesfNaviCoop_PluginNavi_CoopAppStatus

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

0-97

97
実
習

ユーザランドのファイルシステム作成
カンペ⇒01_ユーザランドのファイルシステム作
成.txt

[host_pc~] > cd␣$ANDROID
[host_pc~] > mkdir␣-p␣android-root

・・・①

[host_pc~] > cd␣$ANDROID/Embedded-Master-ARM/out/target/product/armadillo440
[host_pc~] > cp␣-Rdpf␣root/*␣$ANDROID/android-root
・・・②
[host_pc~] > cp␣-Rdpf␣system/* $ANDROID/android-root/system/
・・・③
[host_pc~]
[host_pc~]
[host_pc~]
[host_pc~]
[host_pc~]

>
>
>
>
>

cd␣$ANDROID/android-root
sudo␣chown␣-R␣root.root␣.
・・・④
sudo␣chmod␣777␣-R␣system/usr/keychars
・・・⑤
sudo␣chmod␣777␣-R␣system/usr/keylayout
・・・⑤
sudo␣chmod␣777␣system/etc/dhcpcd/dhcpcd-run-hooks ・・・⑤

①v2_armadillo440-trainingフォルダ直下に「android-root」というフォルダを作成
②$ANDROID/Embedded-Master-ARM/out/target/product/armadillo440/root/以下のすべてのファイルや
フォルダを「android-root」フォルダにコピー
③$ANDROID/Embedded-Master-ARM/out/target/product/armadillo440/system/以下のすべてのファイル
やフォルダを「android-root/system」フォルダにコピー
④「android-root」フォルダにroot権限を付与
⑤system/usr/keychars、system/usr/keylayout(ハードキーのバインド設定ファイル類)と
system/etc/dhcpd//dhcpcd-run-hooksに実行権限を付与する

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

0-98

98
実
習

固定IPアドレスの設定について

Androidのネットワーク設定は移植先のターゲットボードのルートファイル
システムにあるハードウェア専用の起動スクリプトinit.<hardware名>.rc
で設定されている
Armadillo440の場合 → $ANDROID/androidroot/init.armadillo440.rc
:

on boot
コメントをはずす
setprop ro.sf.lcd_density 120
sudo gedit init.armadillo440.rc
setprop ro.radio.use-ppp no
setprop ro.radio.noril yes
setprop status.battery.state Slow#LAN
service lan-setup
setprop status.battery.level 5
setprop status.battery.level_raw /system/etc/init.armadillo440.sh
50
setprop status.battery.level_scale 9 oneshot
setprop net.eth0.dns1 8.8.8.8
setprop net.dns1 8.8.8.8
symlink /dev/snd/dsp /dev/eac
このシェルスクリ
chmod 0666 /dev/snd/dsp
write /sys/class/backlight/pwm-backlight/brightness
プトも確認(次
255

ページ)

#LAN
##service lan-setup /system/etc/init.armadillo440.sh
##
oneshot
This material is licensed under the Creative Commons License BY-NC-SA 4.0.

0-99

99
実
習

固定IPアドレス設定
カンペ⇒02_固定IPアドレス設
定.txt

//Androidのネットワーク設定ファイルに固定IPアドレスを設定しておく
[host_pc~] > cd␣$ANDROID/android-root
[host_pc~] > cd␣system/etc
[host_pc~] > sudo␣gedit␣init.armadillo440.sh

gedit起動、編集
#!/system/bin/sh
netcfg eth0 up
netcfg eth0 dhcp

#!/system/bin/sh
ifconfig␣eth0␣192.168.1.11
保存してgedit終了

//実行権限をつける
[host_pc~] > sudo␣chmod␣a+x init.armadillo440.sh

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

0-100

100
実
習

Androidファイルシステムの完成
カンペ⇒03_ファイルシステムの完
成.txt

//Androidユーザランドのファイルシステムをアーカイブにする
[host_pc~] > cd␣$ANDROID/android-root
[host_pc~] > tar␣cvzf␣$ANDROID/rootfs_a_training.tar.gz .
[host_pc~] > cd␣$ANDROID
[host_pc~] > ls
[host_pc~] > rootfs_a_training.tar.gz␣android-root␣EmbeddedMaster-ARM

ユーザランドのファイルシステム

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

0-101

101
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形式の画像 )
空のディレクトリはAndroid起動時にカーネルやinitによって自動作成されます
This material is licensed under the Creative Commons License BY-NC-SA 4.0.

0-102

102
Androidのユーザランドの
ファイルシステム構成(/system/)
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-103

103
実
習

Androidカーネルの作成
カンペ⇒04_カーネルの作成.txt

[host_pc~] > cd␣$ANDROID/Embedded-Master-ARM/kernel/armadillo440
[host_pc~] > make␣ARCH=arm␣CROSS_COMPILE=$ANDROID/Embedded-MasterARM/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi␣armadillo400_android_defconfig ・・・①
[host_pc~] > make␣ARCH=arm␣CROSS_COMPILE=$ANDROID/Embedded-MasterARM/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi- ・・・②

//カーネルのイメージファイル作成
[host_pc~] > gzip␣-c␣arch/arm/boot/Image␣>␣linux_training.bin.gz
①カーネルのコンフィギュレーションファイル
(armadillo400_android_defconfig)に記載してある設
定を.configに適用
②arm-eabi-というクロスコンパイラでカーネルをコンパ
イル
③イメージファイルをgzipで圧縮

Androidのカーネルイメー
ジ

※①②は実習時間短縮のためすでに実行済みなのでオブ
ジェクトファイルなどはできています。
This material is licensed under the Creative Commons License BY-NC-SA 4.0.

0-104

104
Linuxカーネルのコンパイルオプション設定

■Linuxカーネルのコンパイルオプション設定とは
①ある機能をコンパイル「する/しない」の設定
→カーネルのオプション設定項目は膨大
②機能をコンパイルする上でどんな形でコンパイルするかの設定
→機能を静的にカーネルのバイナリに組み込むか
→機能をモジュールとしてコンパイルするのか

■コンパイル設定方法
・GUI設定ツールを使用して設定を行う
→$make menuconfig
・設定用ファイルを用意してmakeコマンドで設定を行う
→$make <ターゲットのハード名>_<*>_defconfig

■設定内容はmenuconfig終了後「.config」ファイルに収めら
This material is licensed under the Creative Commons License BY-NC-SA 4.0.

0-105

105
KconfigとMakefile
■Linuxカーネルのコンパイルオプション設定で設定できる
オプション名は「Kconfig」というファイルで設定されてい
ます
■ハードウェアのドライバのソースコードが収まっている
ディレクトリには必ず「Kconfig」と「Makefile」が存在し
ます
■新しいハードウェアを追加するたびにこのKconfigファイ
ルにオプション名を追加し、Makefileにはそのオプション
に関係のあるソースコード(オブジェクトファイル)の依
存関係の設定を行います
This material is licensed under the Creative Commons License BY-NC-SA 4.0.

0-106

106
KconfigとMakefile
具体例を見てみましょう。
USBメモリの機能を追加するためのパラメータ(オプション名)とそれに関連するドライバ
のソースコードを探す方法です。
USBメモリはストレージ設備(USB Mass Storage)なのでdrivers/usb/storage/ディレク
トリ内のKconfigを見てみます。
config USB_STORAGE_DATAFAB
bool "Datafab Compact Flash Reader support (EXPERIMENTAL)"
depends on USB_STORAGE && EXPERIMENTAL
help
Support for certain Datafab CompactFlash readers.
Datafab has a web page at <http://www.datafabusa.com/>.

⇒Datafab社製の製品でコンパクトフラッシュリーダーに関連
する機器
config USB_STORAGE_SDDR55
bool "SanDisk SDDR-55 SmartMedia support
(EXPERIMENTAL)"
depends on USB_STORAGE && EXPERIMENTAL
help
Say Y here to include additional code to support
the
Sandisk SDDR-55
SmartMedia reader in the USB Mass Storage driver.
⇒SanDisk社製の製品でスマートメディアカードに関連する機

器

config USB_STORAGE ←USBメモリの機能のオプション
tristate "USB Mass Storage support"
名
depends on USB && SCSI
---help--Say Y here if you want to connect
USB mass storage devices to your
computer's USB port. This is the driver you
need for USB
floppy drives, USB hard disks, USB tape drives,
USB CD-ROMs,
USB flash devices, and memory sticks, along
with
similar devices. This driver may also be used
for
some cameras
and card readers.
This option depends on 'SCSI' support being
enabled,
but you probably also need 'SCSI device
support:
SCSI disk support'
(BLK_DEV_SD) for most USB storage devices.

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

0-107

To compile this driver as a module, choose M

107
KconfigとMakefile
次にMakefileを見てみます
# Makefile for the USB Mass Storage device drivers.
# 15 Aug 2000, Christoph Hellwig
# Rewritten to use lists instead of if-statements.
#
EXTRA_CFLAGS

:= -Idrivers/scsi

obj-$(CONFIG_USB_STORAGE)

+= usb-storage.o

usb-storage-obj-$(CONFIG_USB_STORAGE_DEBUG)
usb-storage-obj-$(CONFIG_USB_STORAGE_USBAT)
:
<省略>
usb-storage-obj-$(CONFIG_USB_STORAGE_KARMA)
usb-storage-objs :=

←このオプションに対するモジュール
+= debug.o
+= shuttle_usbat.o
+= karma.o

scsiglue.o protocol.o transport.o usb.o 
←scsiglue.c、protocol.c、
initializers.o $(usb-storage-obj-y)transport.c、usb.c、

ifneq ($(CONFIG_USB_LIBUSUAL),)
obj-$(CONFIG_USB)
+= libusual.o
endif

initializers.c及びこれらと
同名のヘッダファイルがモ
ジュールの実体
であることがわかります

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

0-108

108
「.config」ファイルについて
.config
#
# Automatically generated make config: don’t edit
# :
# :
CONFIG_64BIT=y
#CONFIG_X86_32 is not set
CONFIG_X86_64BIT=y
CONFIG_X86=y
・・・

値

意味

=y

この項目に対応する機能は静的にカーネルに組込まれる

=m

この項目に対応する機能は、モジュールとしてコンパイルされ
る。機能の中にはモジュールとしてコンパイルできないものが
ある。その場合対応する設定項目がこの値をとることはない。

# CONFIG_* is not set

この項目に対応する機能はコンパイルされない。コメントアウ
ト。

カーネルをビルドするとこのファイルの設定値でカーネルが作られる
.configを直接手で編集してはいけない
ある機能が他の機能に依存している可能性がある
機能の依存関係はKconfigが把握している
This material is licensed under the Creative Commons License BY-NC-SA 4.0.

0-109

109
「.config」の新規作成

・「.config」がまだ存在しない場合
→$make menuconfig → <Exit>
→「.config」が生成
→Kconfigにおいてdefault指定された機能のみ
「.config」に適用

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

0-110

110
「.config」の更新
・「.config」がすでに存在する場合
→ソースツリーのルートに配置
→$make oldconfig
新しく追加された設定項目について1つ1つ設定するか確認さ

れる
(とりあえずすべてリターンでデフォルトを適用)

→「.config」が再生成
→$make menuconfigでカスタム設定→<Exit>
→「.config」更新

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

0-111

111
参
考

menuconfigの操作方法
↑

項目の選択カーソルを上に移動
項目の選択カーソルを下に移動

<TAB> 、← 、→

動作メニュー(
Select/Exit/Help)を切り替え

<Enter>

選択されている動作メニューに
応じて動作を行う

y

項目を<*>(有効:静的組込み)

n

項目を<>無効にする

m

項目を<M>(有効:モジュール
としてコンパイルする)

<SPACE>

<Exit>→
「新しい設定を保存するか?」
→
YES→.configに保存

動作

↓

[host_pc~] > make␣menuconfig

キー

項目を<M>/<*>/<>のトグルで切
り替える

<ESC><ESC>

上の階層に戻る(<Exit>と同じ
)

?

選択されている項目に関するヘ
ルプを表示(<Help>と同じ)

設定項目を検索する。設定項目
/
のシンボル名からメニュー上の
0-112
位置を探す場合に便利
This material is licensed under the Creative Commons License BY-NC-SA 4.0.

112
アーキテクチャ毎の「.config」設定ファイル

・アーキテクチャ毎の「.config」の設定ファイルを
作成する
→$make defconfig
→アーキテクチャ毎のデフォルト設定に基づいた「.config」の設定ファ
イルが生成
→生成される場所

<linuxのソース>/arch/<arch>/configs/
<ターゲットのハード名
>_<*>_defconfig

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

0-113

113
実
習

armadillo400_android_defconfig

下記のファイルを開いて確認してみましょう
$ANDROID/Embedded-MasterARM/kernel/armadillo440/arch/arm/configs/armadillo400_android_defconfig

このファイルはカーネルのコンフィギュレーションの設定値(ターゲットボードの
ハードウェアおよびAndroidに特化した設定)が記載されたファイルです
makeコマンドでこのファイルを指定することによってカーネルオプションとし
て.configに反映されます

armadillo400_android_defconfigの一部抜粋
# Networking options
CONFIG_ANDROID_PARANOID_NETWORK=y
# Voltage and Current regulators
CONFIG_ANDROID_PMEM=y
# Android
CONFIG_ANDROID=y
CONFIG_ANDROID_BINDER_IPC=y
CONFIG_ANDROID_LOGGER=y
# CONFIG_ANDROID_RAM_CONSOLE is not set
CONFIG_ANDROID_TIMED_OUTPUT=y
CONFIG_ANDROID_TIMED_GPIO=y
CONFIG_ANDROID_LOW_MEMORY_KILLER=y
This material is licensed under the Creative Commons License BY-NC-SA 4.0.

0-114

114
armadillo400_android_defconfig
# #MX25 Options
#
CONFIG_MACH_ARMADILLO420=y
CONFIG_MACH_ARMADILLO440=y
# #Armadillo-400 Board options
#
# CONFIG_ARMADILLO400_GPIO_A_B_GPIO is not set
CONFIG_ARMADILLO400_GPIO_A_B_I2C=y
# CONFIG_ARMADILLO400_GPIO_A_B_KEY is not set
CONFIG_ARMADILLO400_GPIO_C_D_GPIO=y
# CONFIG_ARMADILLO400_GPIO_C_D_I2C is not set
## Select wakeup source
#
CONFIG_ARMADILLO400_UART2_WAKE_SRC_SELECT=y
# CONFIG_ARMADILLO400_UART3_WAKE_SRC_SELECT is not set
# CONFIG_ARMADILLO400_UART5_WAKE_SRC_SELECT is not set
CONFIG_ARMADILLO400_TOUCHSCREEN_WAKE_SRC_SELECT=y
CONFIG_ARMADILLO400_TOUCHSCREEN_IS_WAKE_SRC=1
CONFIG_ARMADILLO400_GPIO_KEYS_WAKE_SRC_SELECT=y
CONFIG_ARMADILLO400_GPIO_KEYS_IS_WAKE_SRC=1
CONFIG_UTMI_MXC=y
# #Mapping drivers for chip access
#
CONFIG_MTD_ARMADILLO=y

# #Display device support
#
CONFIG_LOGO=y
CONFIG_LOGO_ARMADILLO_CLUT224=y
## System on Chip audio support
#
CONFIG_SND_SOC=y
CONFIG_SND_MXC_SOC=y
CONFIG_SND_MXC_SOC_SSI=y
CONFIG_SND_SOC_ARMADILLO440_WM8978=y

#NFS設定
## Miscellaneous filesystems
#
CONFIG_NETWORK_FILESYSTEMS=y
CONFIG_NFS_FS=y
CONFIG_NFS_V3=y
CONFIG_NFS_V3_ACL=y
CONFIG_ROOT_NFS=y
CONFIG_LOCKD=y
CONFIG_LOCKD_V4=y
CONFIG_NFS_ACL_SUPPORT=y
CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=y

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

0-115

115
参
考

makeコマンド関連
[host_pc~] > make
カーネルのコンパイルをする。ソースツリーのルートディレクトリで実行。

[host_pc~] > make␣modules_install
コンパイルされたモジュールを/lib/modulesにインストール。

[host_pc~] > make␣install
カーネルバイナリイメージを/boot以下にインストールされる。
Fedora系ではブート時初期化ファイルシステムイメージも作成される。

[host_pc~] > update-initramfs␣–c␣–k␣<カーネルバージョン

>

Debian系においてブート時初期化ファイルシステムイメージも作成する際に使用するコマンド
ファイルまたはディレクトリ名

内容

/lib/modules/<カーネルバージョン>/

モジュールが配置されるディレクトリ

/boot/vmlinuz-<カーネルバージョン>

カーネルイメージファイル

/boot/initramfs-<カーネルバージョン> または
/boot/initrd.img-<カーネルバージョン>

ブート時初期化用ファイルシステムイメージ

/boot/Systemmap-<カーネルバージョン>

アドレス情報ファイル

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

0-116

116
参
考

mekeコマンド関連
[host_pc~] > make␣clean
ソースツリーをコンパイル前に戻す。オブジェクトファイルは削除される
が.configやコンパイル時に生成された一部ファイルは削除されない。

[host_pc~] > make␣help
使用可能なmakeターゲットを表示する。

[host_pc~] > make␣<dir>/<file>.o
指定したオブジェクトファイルを生成するのに必要なコンパイルだけを行う。
<dir>だけを指定した場合は、 .config によって生成されることになっている
そのディレクトリ内すべてのオブジェクトファイルが生成される。

[host_pc~] > make␣<dir>/<file>.ko
指定したモジュールだけを生成する

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

0-117

117
makeコマンド(クロスコンパイル)
クロスコンパイルに必要な変数

変数

意味

ARCH

ターゲットアーキテクチャ

CROSS_COMPILE

クロスコンパイラのプレフィックスを指定

[host_pc~] > make␣ARCH=arm CROSS_COMPLIE=armv5tel-linux-␣uImage
クロスコンパイラarmv5tel-linux-gccによってARM向けのカーネルをクロスコンパイルする。
生成するカーネルのバイナリイメージはuImage形式がよく使われる。
arch/arm/boot/uImageとして生成される。

[host_pc~] > make␣ARCH=arm CROSS_COMPLE=armv5tel-linux-␣modules
クロスコンパイラarmv5tel-linux-gccによってARM向けのカーネルモジュールをクロスコン
パイルで生成する。

[host_pc~] > make␣ARCH=arm CROSS_COMPLE=armv5tel-linux-␣

INSTALL_MOD_PATH=~/armroot-2.6.38␣modules_install
ホームディレクトリに~/armroot-2.6.38/lib/modulesというディレクトリが生成されその
下にクロスコンパイルで生成されたモジュールがインストールされる。
シンボリックリンク(build、source)->カーネルがコンパイルされたソースツリーをさす。
This material is licensed under the Creative Commons License BY-NC-SA 4.0.

0-118

118
実
習

コンフィギュレーションの確認
makeコマンドやmake menuconfigでカーネルコンフィギュレーション値
が反映されたか確認する場合は

•方法1:「.config」をlessで確認(実習)
•方法2:make menuconfigコマンドでGUIから確認(参考)
// 方法1:カーネルの設定(.configへの適用)を確認する
[host_pc~] > cd␣$ANDROID/Embedded-Master-ARM/kernel/armadillo440
[host_pc~] > less␣config
lessで開いて検索( 「/」キーのあとにキーワードを入れてリターン)し設定が反映され
ているかを確認する
# Voltage and Current regulators
CONFIG_ANDROID_PMEM=y
#Android
CONFIG_ANDROID=y
CONFIG_ANDROID_BINDER_IPC=y
CONFIG_ANDROID_LOGGER=y
など
This material is licensed under the Creative Commons License BY-NC-SA 4.0.

0-119

119
参
考

コンフィギュレーションの確認
//方法2:make menuconfigコマンドでGUIから確認
[host_pc~] > cd␣$ANDROID/Embedded-Master-ARM/kernel/
[host_pc~] > make menuconfig

Androidに特化したカーネルオプションの確認

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

0-120

120
参
考

コンフィグレーションの確認
NFS設定を行った場合の確認

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

0-121

121
メモ

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

0-122

122
Armadillo440
製品版Linuxイメージファイル
アットマークテクノのサイトから出荷時状態のLinuxカーネル、ユーザランド、ダウン
ローダー「Hermit-at」をダウンロードする
http://armadillo.atmark-techno.com/armadillo-440/downloads
「Hermit-at」はAndroidをArmadillo440の移植する際に使用するので開発PCにインス
トールする
Linuxカーネルやユーザランドも必要なので必ず開発PCにダウンロードして保存しておく

【Hermit-at】

hermit-at_2.1.0_i386.deb
ダブルクリックしてインストールすること

【製品版Linuxカーネ
ル】
linux-a400-1.06.bin.gz
【製品版Linuxユーザラン
ド】
0-123
romfs-a440-1.04.img.gz
This material is licensed under the Creative Commons License BY-NC-SA 4.0.

123
実習の開発環境まとめ
開発用PC
【実習用のAndroidソースコードのrootパス】

/home/aj741327/work/v2_armadillo440-training/Embedded-Master-ARM
【Android用Linuxカーネルのソースコードのrootパス】

/home/aj741327/work/v2_armadillo440-training/EmbeddedMasterARM/kernel
【環境変数】
[host_pc~]

> export␣ANDROID=/home/aj741327/work/v2_armadillo440-

training
Android
kernelイメージ

$ANDROID/Embedded-MasterARM/kernel/armadillo440/linux_training.bin.gz

Androidユーザラン
ドのファイルシステ $ANDROID/rootfs_a_training.tar.gz
ム

Armadillo440製品版Linux
kernelイメージ

~/work/atmark/linux-a400-1.06.bin.gz

ユーザランドイメー
ジ

~/work/atmark/romfs-a440-1.04.img.gz

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

0-124

124
ダウンローダ:Hermitについて
開発用PCにRS232Cの端子がない場合はUSB-RS232C変換ケーブ
ルを使用してUSBで接続してください

開発用PC

hermit
Armadillo用
ブートローダ兼ダウンロー
ダ

# 開発PCからイメージファイルをArmadilloにダウンロードするダウンローダとして使用す
る
# (例)atmarktechno製のLinuxカーネルイメージをarmadilloのフラッシュメモリに書き
込む
[host_pc~] > cd␣~/work/atmark
[host_pc~] > hermit␣download␣--input-file␣linux-a400-1.06.bin.gz␣--region␣kernel␣--

port␣ /dev/ttyUSB0
This material is licensed under the Creative Commons License BY-NC-SA 4.0.

0-125

125
ブートローダ:Hermitについて
開発用PCにRS232Cの端子がない場合はUSB-RS232C変換
ケーブルを使用してUSBで接続してください
JP2ショート状態
(hermit起動モー
ド)

開発用PC
【C-Kermitの使い方】
*ホームディレクトリで起動させる
こと

Armadillo440
hermit
Armadillo用
ブートローダ兼ダウンロー
ダ

C-Kermit
シリアル通信ソ
フト

起動
接続
ヘルプ
切断
c
終了

# シリアル通信ソフトを介してarmadilloのブートローダーに接続する

kermit
c
?
ctrl +  ctrl +
q

[host_pc~] > kermit
← C-Kermit起動
Executing /home/aj741327/.mykermrc...
?SET SPEED has no effect without prior SET LINE
C-Kermit 8.0.211, 10 Apr 2004, for Linux
Copyright (C) 1985, 2004,
Trustees of Columbia University in the City of New York.
Type ? or HELP for help.
(/home/aj741327/) C-Kermit>c
← ターゲット(armadillo-440)にシ

リアル接続
[armadillo] hermit>

ンプトが表示(接続済み) This material is licensed under the Creative Commons License BY-NC-SA 4.0.

← armadilloのhermitプロ
0-126

126
Armadillo440でAndroidを起動する手順

①
②
③
④
⑤
⑥
⑦

製品版Linuxで起動
Armadillo440側のネットワークの設定
microSDのパーティションと初期化
Android RootfsをArmadillo-440へ転送
Android RootfsをmicroSDに展開
AndroidのLinuxカーネルのメモリ書き込み
Android起動

0-127

This material is licensed under the Creative Open Embedded Software Foundation, All rights reserved
Copyright 2009-2012, Commons License BY-NC-SA 4.0.

127
製品版Linuxで起動してみよう
JP2をショート

C-Kermit
シリアル通信ソフ
ト
カンペ⇒05_製品版Linuxのブート手
順.txt

1.JP2をショートにする
2.シリアルケーブルでPCとArmadillo-440を接続する
3.LANケーブルでPCとArmadillo-440を接続する
4.Micro SDカード(1G以上)をスロットに挿入して電源を入
れる
5.C-Kermit起動(前頁参照)
6.Armadillo440の起動

microSD

実
習

hermit> clearenv //起動パラメータをク
リア

1G以上のmicroSD

hermit> boot //起動コマンド

Armadillo-440は出荷時状態です
Armadillo440用の標準カーネル
と標準ユーザランドが載っていま
す

・・・・起動ログが流れます
login : root //ログイン名入力
password : root //パスワード入力
[root@armadillo440-0 (ttymxc1) ~]# //起動

完了

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

0-128

128
実
習

Armadillo440側のネットワークの設定
作業PC側のネットワーク設定
ip:192.168.1.10
subnet:255.255.255.0

カンペ⇒06_製品版Linuxのネットワーク設
定.txt

192.168.1.10

[armadillo ~] # vi␣/etc/config/interfaces
#␣/etc/network/interfaces␣--␣configuration␣file␣for␣ifup(8),␣ifdown(8)
auto␣lo␣eth0
iface␣lo␣inet␣loopback
iface␣eth0␣inet␣static
address␣192.168.1.11
netmask␣255.255.255.0
network␣192.168.1.0
broadcast␣192.168.1.255
gateway␣192.168.1.1

viで編集

192.168.1.11

[armadillo
[armadillo
[armadillo
[armadillo
[armadillo

~]
~]
~]
~]
~]

#
#
#
#
#

cd␣/etc/config
flatfsd␣–s //コンフィギュレーション領域に保存
ifdown␣eth0
ifup␣eth0
ifconfig //確認

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

0-129

129
実
習

microSDのパーティションと初期化
パーティションのイメージ
mmcblk0p1
FAT 1-100M
mmcblk0p2

microSD

4G

ext3
残り全部の容量

[armadillo ~] # fdisk␣/dev/mmcblk0
The number of cylinders for this disk is set to 30656.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Command (m for help): d //削除コマンド
Selected partition 1 //パーティション1を指定(不要なパーティションが残っていた

場合念のため削除)
This material is licensed under the Creative Commons License BY-NC-SA 4.0.

0-130

130
実
習

microSDのパーティションと初期化
Command (m for help): n //新規パーティション追加コマンド
Command action
e
extended
p
primary partition (1-4)
p //パーティション
Partition number (1-4): 1 //パーティション1を選択
First cylinder (1-30656, default 1): リターン(default 1) //シリンダの開始値
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-30656, default 30656): +100M //シ

リンダの終了値
Command (m for help): n //新規パーティション追加コマンド
Command action
e
extended
p
primary partition (1-4)
p //パーティション
Partition number (1-4): 2 //パーティション2を選択

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

0-131

131
実
習

microSDのパーティションと初期化

First cylinder (3054-30656, default 3054):リターン(default 3054 ) //シリンダの開

始値
Using default value 3054
Last cylinder or +size or +sizeM or +sizeK (3054-30656, default 30656): ):

リターン(default 30656 ) //シリンダの終了値
Using default value 30656
Command (m for help): w //パーティション作成実行して終了
The partition table has been altered!
Calling ioctl() to re-read partition table.
mmcblk0: p1 p2
mmcblk0: p1 p2
Syncing disks.
[armadillo ~] # mkdosfs␣/dev/mmcblk0p1

↑パーティション1(データ保存領域) はWindowsとのデータ交換を考え
てDOS用
ファイルシステムFATでフォーマット
[armadillo ~] # mke2fs␣-j␣/dev/mmcblk0p2

↑パーティション2(Android ユーザーランド領域) はEXT3 でフォー
マット

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

0-132

132
実
習

Android RootfsをArmadillo-440へ転送
開発PC

armadillo440

/home/ftp/pub/

FTP

rootfs_a_training.tar.gz

192.168.1.11
カンペ⇒07_Android RootFSのFTP転送.txt

192.168.1.10

$ANDROIDの有効化
[host_pc~] > export ANDROID=~/work/v2_armadillo440-train

[host_pc~] > cd␣$ANDROID
[host_pc~] > ftp␣192.168.1.11
login name:ftp
login password:なし
ftp> cd␣pub
ftp> bin
ftp> put␣rootfs_a_training.tar.gz
ftp> bye
[host_pc~] >
This material is licensed under the Creative Commons License BY-NC-SA 4.0.

0-133

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

Weitere ähnliche Inhalte

Was ist angesagt?

カスタムROM開発者の視点から見たAndroid
カスタムROM開発者の視点から見たAndroidカスタムROM開発者の視点から見たAndroid
カスタムROM開発者の視点から見たAndroidandroid sola
 
Androidの新ビルドシステム
Androidの新ビルドシステムAndroidの新ビルドシステム
Androidの新ビルドシステムl_b__
 
iOSアプリ UIテスト自動化入門
iOSアプリ UIテスト自動化入門iOSアプリ UIテスト自動化入門
iOSアプリ UIテスト自動化入門Shingo Tamaki
 
Scheduling in Android
Scheduling in AndroidScheduling in Android
Scheduling in AndroidOpersys inc.
 
Android カスタムROMの作り方
Android カスタムROMの作り方Android カスタムROMの作り方
Android カスタムROMの作り方Masahiro Hidaka
 
[Black Belt Online Seminar] AWS上でのログ管理
[Black Belt Online Seminar] AWS上でのログ管理[Black Belt Online Seminar] AWS上でのログ管理
[Black Belt Online Seminar] AWS上でのログ管理Amazon Web Services Japan
 
Androidを利用した外部機器の制御
Androidを利用した外部機器の制御Androidを利用した外部機器の制御
Androidを利用した外部機器の制御Takashi Kanamaru
 
Machine configoperatorのちょっとイイかもしれない話
Machine configoperatorのちょっとイイかもしれない話 Machine configoperatorのちょっとイイかもしれない話
Machine configoperatorのちょっとイイかもしれない話 Toshihiro Araki
 
Android組み込み開発テキスト pandaboard es編
Android組み込み開発テキスト pandaboard es編Android組み込み開発テキスト pandaboard es編
Android組み込み開発テキスト pandaboard es編OESF Education
 
どう変わる? 新シスコ認定トレーニング ~CCNAとCCNP Enterprise~
どう変わる? 新シスコ認定トレーニング ~CCNAとCCNP Enterprise~どう変わる? 新シスコ認定トレーニング ~CCNAとCCNP Enterprise~
どう変わる? 新シスコ認定トレーニング ~CCNAとCCNP Enterprise~Trainocate Japan, Ltd.
 
NginxとLuaを用いた動的なリバースプロキシでデプロイを 100 倍速くした
NginxとLuaを用いた動的なリバースプロキシでデプロイを 100 倍速くしたNginxとLuaを用いた動的なリバースプロキシでデプロイを 100 倍速くした
NginxとLuaを用いた動的なリバースプロキシでデプロイを 100 倍速くしたtoshi_pp
 
IT エンジニアのための 流し読み Windows 10 - Microsoft の更新プログラム管理インフラ比較 ~ WU / WSUS / SCCM ...
IT エンジニアのための 流し読み Windows 10 - Microsoft の更新プログラム管理インフラ比較 ~ WU / WSUS / SCCM ...IT エンジニアのための 流し読み Windows 10 - Microsoft の更新プログラム管理インフラ比較 ~ WU / WSUS / SCCM ...
IT エンジニアのための 流し読み Windows 10 - Microsoft の更新プログラム管理インフラ比較 ~ WU / WSUS / SCCM ...TAKUYA OHTA
 
Ansibleではじめるサーバー・ネットワークの自動化(2018/07/05)
Ansibleではじめるサーバー・ネットワークの自動化(2018/07/05)Ansibleではじめるサーバー・ネットワークの自動化(2018/07/05)
Ansibleではじめるサーバー・ネットワークの自動化(2018/07/05)akira6592
 
Android enterpriseで実現できる端末管理の世界
Android enterpriseで実現できる端末管理の世界Android enterpriseで実現できる端末管理の世界
Android enterpriseで実現できる端末管理の世界Daisuke Tsutsumi
 

Was ist angesagt? (20)

カスタムROM開発者の視点から見たAndroid
カスタムROM開発者の視点から見たAndroidカスタムROM開発者の視点から見たAndroid
カスタムROM開発者の視点から見たAndroid
 
Androidの新ビルドシステム
Androidの新ビルドシステムAndroidの新ビルドシステム
Androidの新ビルドシステム
 
DeviceOwnerのお話
DeviceOwnerのお話DeviceOwnerのお話
DeviceOwnerのお話
 
iOSアプリ UIテスト自動化入門
iOSアプリ UIテスト自動化入門iOSアプリ UIテスト自動化入門
iOSアプリ UIテスト自動化入門
 
Scheduling in Android
Scheduling in AndroidScheduling in Android
Scheduling in Android
 
Android 10
Android 10Android 10
Android 10
 
Android カスタムROMの作り方
Android カスタムROMの作り方Android カスタムROMの作り方
Android カスタムROMの作り方
 
レシピの作り方入門
レシピの作り方入門レシピの作り方入門
レシピの作り方入門
 
[Black Belt Online Seminar] AWS上でのログ管理
[Black Belt Online Seminar] AWS上でのログ管理[Black Belt Online Seminar] AWS上でのログ管理
[Black Belt Online Seminar] AWS上でのログ管理
 
Androidを利用した外部機器の制御
Androidを利用した外部機器の制御Androidを利用した外部機器の制御
Androidを利用した外部機器の制御
 
Machine configoperatorのちょっとイイかもしれない話
Machine configoperatorのちょっとイイかもしれない話 Machine configoperatorのちょっとイイかもしれない話
Machine configoperatorのちょっとイイかもしれない話
 
Android組み込み開発テキスト pandaboard es編
Android組み込み開発テキスト pandaboard es編Android組み込み開発テキスト pandaboard es編
Android組み込み開発テキスト pandaboard es編
 
どう変わる? 新シスコ認定トレーニング ~CCNAとCCNP Enterprise~
どう変わる? 新シスコ認定トレーニング ~CCNAとCCNP Enterprise~どう変わる? 新シスコ認定トレーニング ~CCNAとCCNP Enterprise~
どう変わる? 新シスコ認定トレーニング ~CCNAとCCNP Enterprise~
 
NginxとLuaを用いた動的なリバースプロキシでデプロイを 100 倍速くした
NginxとLuaを用いた動的なリバースプロキシでデプロイを 100 倍速くしたNginxとLuaを用いた動的なリバースプロキシでデプロイを 100 倍速くした
NginxとLuaを用いた動的なリバースプロキシでデプロイを 100 倍速くした
 
イエラエセキュリティMeet up 20210820
イエラエセキュリティMeet up 20210820イエラエセキュリティMeet up 20210820
イエラエセキュリティMeet up 20210820
 
Porting Android
Porting AndroidPorting Android
Porting Android
 
IT エンジニアのための 流し読み Windows 10 - Microsoft の更新プログラム管理インフラ比較 ~ WU / WSUS / SCCM ...
IT エンジニアのための 流し読み Windows 10 - Microsoft の更新プログラム管理インフラ比較 ~ WU / WSUS / SCCM ...IT エンジニアのための 流し読み Windows 10 - Microsoft の更新プログラム管理インフラ比較 ~ WU / WSUS / SCCM ...
IT エンジニアのための 流し読み Windows 10 - Microsoft の更新プログラム管理インフラ比較 ~ WU / WSUS / SCCM ...
 
Ansibleではじめるサーバー・ネットワークの自動化(2018/07/05)
Ansibleではじめるサーバー・ネットワークの自動化(2018/07/05)Ansibleではじめるサーバー・ネットワークの自動化(2018/07/05)
Ansibleではじめるサーバー・ネットワークの自動化(2018/07/05)
 
Android enterpriseで実現できる端末管理の世界
Android enterpriseで実現できる端末管理の世界Android enterpriseで実現できる端末管理の世界
Android enterpriseで実現できる端末管理の世界
 
LXC入門 - Osc2011 nagoya
LXC入門 - Osc2011 nagoyaLXC入門 - Osc2011 nagoya
LXC入門 - Osc2011 nagoya
 

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

20130203 OSS-DB Exam Silver 技術解説無料セミナー
20130203 OSS-DB Exam Silver 技術解説無料セミナー20130203 OSS-DB Exam Silver 技術解説無料セミナー
20130203 OSS-DB Exam Silver 技術解説無料セミナーKazuko Itoda
 
PowerShell DSC と Linux
PowerShell DSC と LinuxPowerShell DSC と Linux
PowerShell DSC と LinuxKazuki Takai
 
Solaris 11 ディープダイブセミナー インストール編
Solaris 11 ディープダイブセミナー インストール編Solaris 11 ディープダイブセミナー インストール編
Solaris 11 ディープダイブセミナー インストール編SolarisJP
 
20031030 「読み込み専用マウントによる改ざん防止Linuxサーバの構築」
20031030 「読み込み専用マウントによる改ざん防止Linuxサーバの構築」20031030 「読み込み専用マウントによる改ざん防止Linuxサーバの構築」
20031030 「読み込み専用マウントによる改ざん防止Linuxサーバの構築」Toshiharu Harada, Ph.D
 
Oci file storage service deep dive 20181001 ss
Oci file storage service deep dive 20181001 ssOci file storage service deep dive 20181001 ss
Oci file storage service deep dive 20181001 ssKenichi Sonoda
 
AWS SDK for Python and CLOUDIAN HyperStore
AWS SDK for Python and CLOUDIAN HyperStoreAWS SDK for Python and CLOUDIAN HyperStore
AWS SDK for Python and CLOUDIAN HyperStoreCLOUDIAN KK
 
環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介Etsuji Nakai
 
App controllerとwindows azure packで作る大規模プライベートクラウド
App controllerとwindows azure packで作る大規模プライベートクラウドApp controllerとwindows azure packで作る大規模プライベートクラウド
App controllerとwindows azure packで作る大規模プライベートクラウドTakashi Kanai
 
Hyper-V + Linux {which Microsoft Loves}
Hyper-V + Linux {which Microsoft Loves}Hyper-V + Linux {which Microsoft Loves}
Hyper-V + Linux {which Microsoft Loves}Norio Sashizaki
 
Cloud OS Tech Day 2014:Windows Azure Pack プライベートクラウドとセルフポータル(仮)
Cloud OS Tech Day 2014:Windows Azure Pack プライベートクラウドとセルフポータル(仮)Cloud OS Tech Day 2014:Windows Azure Pack プライベートクラウドとセルフポータル(仮)
Cloud OS Tech Day 2014:Windows Azure Pack プライベートクラウドとセルフポータル(仮)wind06106
 
Androidアプリケーション開発入門
Androidアプリケーション開発入門Androidアプリケーション開発入門
Androidアプリケーション開発入門OESF Education
 
OWASP Nagoya_WordPress_Handson_2
OWASP Nagoya_WordPress_Handson_2OWASP Nagoya_WordPress_Handson_2
OWASP Nagoya_WordPress_Handson_2OWASP Nagoya
 
Oracle Database Appliance 12.1.2.1.0 アップデート及びパッチ管理について
Oracle Database Appliance 12.1.2.1.0 アップデート及びパッチ管理について Oracle Database Appliance 12.1.2.1.0 アップデート及びパッチ管理について
Oracle Database Appliance 12.1.2.1.0 アップデート及びパッチ管理について オラクルエンジニア通信
 
Cisco ACI and OpenStack - Group-based Policy (GBP) & OpFlex
Cisco ACI and OpenStack - Group-based Policy (GBP) & OpFlexCisco ACI and OpenStack - Group-based Policy (GBP) & OpFlex
Cisco ACI and OpenStack - Group-based Policy (GBP) & OpFlexTakao Setaka
 
Oracle Database Appliance 2.9 アップデート及びパッチ管理について
Oracle Database Appliance 2.9 アップデート及びパッチ管理についてOracle Database Appliance 2.9 アップデート及びパッチ管理について
Oracle Database Appliance 2.9 アップデート及びパッチ管理についてオラクルエンジニア通信
 
見せてもらおうか、新しい Microsoft Edge の性能とやらを
見せてもらおうか、新しい Microsoft Edge の性能とやらを見せてもらおうか、新しい Microsoft Edge の性能とやらを
見せてもらおうか、新しい Microsoft Edge の性能とやらを彰 村地
 
Nginx meetup 1_20181114_omo
Nginx meetup 1_20181114_omoNginx meetup 1_20181114_omo
Nginx meetup 1_20181114_omoNAOFUMI HARA
 
ITPro Expo 2014: Microsoft + Cisco UCS  (Cisco Unified Computing System)  サーバ
ITPro Expo 2014: Microsoft + Cisco UCS  (Cisco Unified Computing System)  サーバITPro Expo 2014: Microsoft + Cisco UCS  (Cisco Unified Computing System)  サーバ
ITPro Expo 2014: Microsoft + Cisco UCS  (Cisco Unified Computing System)  サーバシスコシステムズ合同会社
 

Ähnlich wie Android組込み開発基礎コース Armadillo-440編 (20)

Nsx t api-automation_202103
Nsx t api-automation_202103Nsx t api-automation_202103
Nsx t api-automation_202103
 
20130203 oss-db-lpi
20130203 oss-db-lpi20130203 oss-db-lpi
20130203 oss-db-lpi
 
20130203 OSS-DB Exam Silver 技術解説無料セミナー
20130203 OSS-DB Exam Silver 技術解説無料セミナー20130203 OSS-DB Exam Silver 技術解説無料セミナー
20130203 OSS-DB Exam Silver 技術解説無料セミナー
 
PowerShell DSC と Linux
PowerShell DSC と LinuxPowerShell DSC と Linux
PowerShell DSC と Linux
 
Solaris 11 ディープダイブセミナー インストール編
Solaris 11 ディープダイブセミナー インストール編Solaris 11 ディープダイブセミナー インストール編
Solaris 11 ディープダイブセミナー インストール編
 
20031030 「読み込み専用マウントによる改ざん防止Linuxサーバの構築」
20031030 「読み込み専用マウントによる改ざん防止Linuxサーバの構築」20031030 「読み込み専用マウントによる改ざん防止Linuxサーバの構築」
20031030 「読み込み専用マウントによる改ざん防止Linuxサーバの構築」
 
Oci file storage service deep dive 20181001 ss
Oci file storage service deep dive 20181001 ssOci file storage service deep dive 20181001 ss
Oci file storage service deep dive 20181001 ss
 
AWS SDK for Python and CLOUDIAN HyperStore
AWS SDK for Python and CLOUDIAN HyperStoreAWS SDK for Python and CLOUDIAN HyperStore
AWS SDK for Python and CLOUDIAN HyperStore
 
環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介
 
App controllerとwindows azure packで作る大規模プライベートクラウド
App controllerとwindows azure packで作る大規模プライベートクラウドApp controllerとwindows azure packで作る大規模プライベートクラウド
App controllerとwindows azure packで作る大規模プライベートクラウド
 
Hyper-V + Linux {which Microsoft Loves}
Hyper-V + Linux {which Microsoft Loves}Hyper-V + Linux {which Microsoft Loves}
Hyper-V + Linux {which Microsoft Loves}
 
Cloud OS Tech Day 2014:Windows Azure Pack プライベートクラウドとセルフポータル(仮)
Cloud OS Tech Day 2014:Windows Azure Pack プライベートクラウドとセルフポータル(仮)Cloud OS Tech Day 2014:Windows Azure Pack プライベートクラウドとセルフポータル(仮)
Cloud OS Tech Day 2014:Windows Azure Pack プライベートクラウドとセルフポータル(仮)
 
Androidアプリケーション開発入門
Androidアプリケーション開発入門Androidアプリケーション開発入門
Androidアプリケーション開発入門
 
OWASP Nagoya_WordPress_Handson_2
OWASP Nagoya_WordPress_Handson_2OWASP Nagoya_WordPress_Handson_2
OWASP Nagoya_WordPress_Handson_2
 
Oracle Database Appliance 12.1.2.1.0 アップデート及びパッチ管理について
Oracle Database Appliance 12.1.2.1.0 アップデート及びパッチ管理について Oracle Database Appliance 12.1.2.1.0 アップデート及びパッチ管理について
Oracle Database Appliance 12.1.2.1.0 アップデート及びパッチ管理について
 
Cisco ACI and OpenStack - Group-based Policy (GBP) & OpFlex
Cisco ACI and OpenStack - Group-based Policy (GBP) & OpFlexCisco ACI and OpenStack - Group-based Policy (GBP) & OpFlex
Cisco ACI and OpenStack - Group-based Policy (GBP) & OpFlex
 
Oracle Database Appliance 2.9 アップデート及びパッチ管理について
Oracle Database Appliance 2.9 アップデート及びパッチ管理についてOracle Database Appliance 2.9 アップデート及びパッチ管理について
Oracle Database Appliance 2.9 アップデート及びパッチ管理について
 
見せてもらおうか、新しい Microsoft Edge の性能とやらを
見せてもらおうか、新しい Microsoft Edge の性能とやらを見せてもらおうか、新しい Microsoft Edge の性能とやらを
見せてもらおうか、新しい Microsoft Edge の性能とやらを
 
Nginx meetup 1_20181114_omo
Nginx meetup 1_20181114_omoNginx meetup 1_20181114_omo
Nginx meetup 1_20181114_omo
 
ITPro Expo 2014: Microsoft + Cisco UCS  (Cisco Unified Computing System)  サーバ
ITPro Expo 2014: Microsoft + Cisco UCS  (Cisco Unified Computing System)  サーバITPro Expo 2014: Microsoft + Cisco UCS  (Cisco Unified Computing System)  サーバ
ITPro Expo 2014: Microsoft + Cisco UCS  (Cisco Unified Computing System)  サーバ
 

Mehr von OESF Education

Introduction of oesf education consortium
Introduction of oesf education consortiumIntroduction of oesf education consortium
Introduction of oesf education consortiumOESF Education
 
Android UIデザイン入門
Android UIデザイン入門Android UIデザイン入門
Android UIデザイン入門OESF Education
 
Android Application Development Advanced
Android Application Development AdvancedAndroid Application Development Advanced
Android Application Development AdvancedOESF Education
 
Android Application Development Basic
Android Application Development BasicAndroid Application Development Basic
Android Application Development BasicOESF Education
 
Androidプログラミング入門
Androidプログラミング入門Androidプログラミング入門
Androidプログラミング入門OESF Education
 
Androidタブレットアプリケーション開発入門
Androidタブレットアプリケーション開発入門Androidタブレットアプリケーション開発入門
Androidタブレットアプリケーション開発入門OESF Education
 
Androidアプリケーション応用 WebAPI開発
Androidアプリケーション応用 WebAPI開発Androidアプリケーション応用 WebAPI開発
Androidアプリケーション応用 WebAPI開発OESF Education
 
Android アプリケーション開発応用
Android アプリケーション開発応用Android アプリケーション開発応用
Android アプリケーション開発応用OESF Education
 
Android Application WebAPI Development Training
Android Application WebAPI Development TrainingAndroid Application WebAPI Development Training
Android Application WebAPI Development TrainingOESF Education
 

Mehr von OESF Education (9)

Introduction of oesf education consortium
Introduction of oesf education consortiumIntroduction of oesf education consortium
Introduction of oesf education consortium
 
Android UIデザイン入門
Android UIデザイン入門Android UIデザイン入門
Android UIデザイン入門
 
Android Application Development Advanced
Android Application Development AdvancedAndroid Application Development Advanced
Android Application Development Advanced
 
Android Application Development Basic
Android Application Development BasicAndroid Application Development Basic
Android Application Development Basic
 
Androidプログラミング入門
Androidプログラミング入門Androidプログラミング入門
Androidプログラミング入門
 
Androidタブレットアプリケーション開発入門
Androidタブレットアプリケーション開発入門Androidタブレットアプリケーション開発入門
Androidタブレットアプリケーション開発入門
 
Androidアプリケーション応用 WebAPI開発
Androidアプリケーション応用 WebAPI開発Androidアプリケーション応用 WebAPI開発
Androidアプリケーション応用 WebAPI開発
 
Android アプリケーション開発応用
Android アプリケーション開発応用Android アプリケーション開発応用
Android アプリケーション開発応用
 
Android Application WebAPI Development Training
Android Application WebAPI Development TrainingAndroid Application WebAPI Development Training
Android Application WebAPI Development Training
 

Kürzlich hochgeladen

SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 

Kürzlich hochgeladen (9)

SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 

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