2011年12月16日
Android 2.3までは0で割り算しても無視されていました。4.0では普通のARM Linuxと同様にSIGFPEのシグナルを発行するようになりました。どこでこの違いがあらわれるかやっと突き止めたのでここにメモしておきます。
2011年12月15日
2011年12月13日
Android 4.0をソースコードからeng(=Engineering)モードでビルドすると、システム全体でStrictモードが有効になります。その状態だとStrictモード違反のログが大量に出て、logcatのリングバッファがすぐに一周してしまい、ブート直後のログが失われてしまいます。
そこで、ソースコードを修正してこのログを出ないようにしました。
2011年12月12日
Android2.3まではSurfaceflingerはSystemServerの中のスレッドとして動作していましたが、Android4.0では独立したプロセスになっていました。
システムの各種の資源を節約するには、SystemServerの中で動かす方がよいと思いますが、Surfaceflingerにデバッガをあてて調べるには独立したプロセスになっているほうが好都合です。
2011年12月08日
2011年12月07日
2011年12月06日
前回、KZM-A9-DualボードでAndroid4.0を動かす方法を紹介しましたが、そのときはまだタッチパネルが使えませんでした。android-portingのメーリングリストで情報を見つけ、なんとかタッチパネルを使えるようにしたのでそれを紹介します。
2011年12月05日
Android4.0(Ice Cream Sandwich)のソースコードを見て、RenderScriptにLLVMの技術が使われているのがわかりました。(正確には3.xからですが、ソースが公開されていなかったので詳細を確認できませんでした。)
技術的な興味で少し調べたのでここにメモを残します。
2011年11月30日
2011年11月22日
2011年11月09日
2011年11月01日
2011年10月19日
Linuxカーネルのタイマー割り込みのところのソースを見ていたら、簡単なしくみのプロファイラが組み込まれているのを見つけました。これはタイマー割り込みのところでプログラムカウンタがどこを指していたかを累計していき、readprofileというツールでその結果を見ることができます。
2011年10月12日
以前、「Cortex-A9のサイクルカウンタを利用した簡単な実行時間の計測方法」という記事を書きました。このときには特権モードで使用することを前提としていました。この記事の最後にも書いたとおり、ユーザーモードからパフォーマンスモニタのレジスタにアクセスするためにはあらかじめUser Enable Register(PMUSERENR)にてアクセスを許可しておく必要があります。簡単なカーネルモジュールを作ってこれをやってみました。
2011年10月05日
NDKを使用してネイティブライブラリをビルドして組み込んだアプリケーションは、ndk-gdbを使ってデバッグすることができます。しかし、ndk-gdbがエラーで起動できないという場面に遭遇し、調べてみると、なんとアプリをたくさんインストールしてある端末でそのようなことが発生するということがわかりました。以下はその詳細です。