横浜Androidプラットフォーム部の第5回勉強会がかながわ労働プラザで開催されました
20名以上参加されていて勉強になるお話を聞く事ができました。
その際に聞いて来た話のメモを公開
詳しくはつづきで
bc10でUSB Wifiを使う
@klasicista
bc10とは?
ビーグルボード互換のボード
評価ボードよりだけど、持って歩けるように作ってる
ビーグルボード R4の設計基準
GPS、加速度センサを直接基盤
PSPと同じ解像度の有機ELディスプレイ
xMでも使える
(自前Androidでもできる)
www.hpl.hp.com
Linux Wireless Extension
無線LANドライバー用の共通API
Wireless tools
Linux Wireless Extensionの設定用ツール
WEPしか使えない
Wireless tooles for Linux
wireless.kernel.org
mac80211
SoftMACデバイス用の無線LANドライバーAPI
cfg80211
新しい無線LANドライバー設定API
nl80211
hostap.epitest.fi
WPAサプリカント
1、とりあえず
Wifi Driverとsystem/core/init/netcfgやtoolboxのifconfigだけで設定
2、しっかりと移植
external/wpa_supplicant_6と
hardware/libhardware_legacy/wifi/wifi.cを修正・調整して
↓
AndroidのUIの設定から変更
[Armadillo:06243]のスレッドにArmadillo-440で使える無線LANアダプタについて書いてある
USBでLinuxで使えるものが減って来てる?
Wifi Driverをカーネルビルドしたのと同じようにクロスコンパイル
ファームウェアに必要な設定をして読み込める場所におく
ex. /etc/Wireless/〜
insmod rt4470sta.ko
netcfg ra0 dhcp
setprop net.dns1 x.x.x.x
起動スクリプトの最後に上の設定ファイルを呼び出すように書く
設定の度に変更する必要があるので、非効率
open source projectにWifiのポーティング方法が書かれている
wpa_supplicantの改造版
オリジナル版から改造がされている
windows、symbian用のソースを除去
srcの階層が変更され、android.mkがある
SSIDがUNICODE対応
BlackListに対応(接続できないAPを設定から外す)
driver_cmd
AndroidはSIOCSIWPRIV ioctlを使ってWifiドライバにコマンドを送ってdriverの挙動をかえたり、
信号強度やAPのMACアドレスやリンク速度の情報を取得したりする
LinuxではiwlistやNetworkManagerなどで行う事をdriver内でやっている
AndroidではWifiのon/offをinsmod/rmmodで行っている
@kinnekoさんがWifiのポーティングサイトの訳を公開してくれている
CE Linux Forum Japan Technical Jamboress#35
@nekomeshi312
2.6.35がLongtermになる
Linux Con Japan 6月@横浜
init祭りのリベンジ
blog.kmckk
initはルートディレクとの直下
ブートパラメタにinit=/init
X-Window -> Wayland
3/18 5/20 9/30 12/9
BeagleBoardやらでAndroid 2.3を動かす
ソラさん
init.rcの差分
on xxx
-fs
-early-fs
-post-fs
on fs
system,data, cacheのマウントを行う
それまではon initにバラバラに書かれていた
beagle 2.3でon fsの中身をコメントアウトするとカーネルパニックを起こす
on fsごとコメントアウトするとなおる
on fsの中には何かコマンドがなりとまずそう?
コメントアウトしなくてもそもそもマウント先がないのでマウントに失敗するのでそのまま起動する
→ちょっと気持ちが悪い
system/core/init/init.c 508でエラー
on early-fs
on fsより先に実行される
公開されているinit.rcでは使用されていない
何のために使用する?
on post-fs
おおむね2.2までのon initから、on fsとon early-fsの箇所をのぞいた部分
ramdisk.img
Androidのビルドでできる
out/target/product/beagleboard/ramdisk.img
ubootで使えるように作り直す必要がある
Android 2.3からext4のsystem.imgを作成可能
ツール
out/host/linux-x86/bin/make_ext4fs
lowmemorykillerへの設定値
メモリ不足時の殺し屋
init.rcで設定している値
***ADJに変化あり
***MEMに変化あり
NS向けな設定になった?
lowmemorykiller
秋ページ数を調べる
空きページ数がminfreeに設定した値よりも小さくなる箇所を探す
これをmin_adjとして覚える
全プロセスを検索し、各プロセスのoom_adjとmin_adjを比較
min_adj以上の値を持つプロセスと、そのメモリサイズを覚える
殺すプロセスを選んでシグナルを発行
殺す基準は最もメモリを使っている&oom_adj
lowmem_shrink
shrinker_listに関数を登録
メモリ解放のために、shrink_slabはshrinker_listに登録されている関数を呼び出す
ここで登録したlowmem_shrinkerが呼び出される
early-initとearly-boot
Android2.2までにもあったが使用されていなかった
2.3からついかされたueventedで使われている
ueventdの役割
2.2まではdevice.cで行っていた処理
情報は過去のPF部資料にアリ
early-boot
init.lowmem.rcに記述があり
でもこのファイルは読み込まれない
将来的につかえるのかテンプレート?
その他
ARMv6向けにビルドする環境を作る
DalvikVM
Framework
ARM Hibernation調査(前半部分)
@sabakawa
裸基盤大好きな人
Androidである必然性のないお話
Linuxカーネルのメモリ管理に関する内容
最終形は組み込み機器の待機電力0を目指す
目立って来てるARM Androidの高速起動のソリューション
ユビキタスのQuickBoot
リネオのWarp!!
物理メモリはLinuxカーネル内で抽象化されて管理
→ハイバネーションはこの物理メモリと内部レジスタをストレージに保存して再仮想化する技術
ZONE構造体
Linux 2.4から導入された概念
メモリの断続的な実装が発生したため、ゾーン分けして管理するようになった
大容量メモリへの対応かな?
保存メモリの最適化
使用中のメモリだけを保存/読み込みすることで高速起動に寄与
次回 2/11予定
0 件のコメント:
コメントを投稿