ブックマーク / blog.kmckk.com (13)

  • KMC Staff Blog:Androidで他のARM Linuxのバイナリを動かす

    2010年09月02日 Androidで他のARM Linuxのバイナリを動かす 前回はAndroid用にrubyをビルドする方法を紹介しましたが、実はビルドしなくても済む方法もあります。今回はそれを紹介します。 実はARM Ubuntu 10.04の実行ファイルのバイナリをAndroidにコピーしたらそのまま動きました。ただし必要なファイルを全てコピーする必要があります。 (ARM Ubuntu 10.04はarmv7用に最適化されています。今回AndroidはKZM-CA9-01ボードで動かしています。) bashをコピーして動かす Ubuntuの/bin/bashはダイナミックリンクされています。このファイルを起動するためには以下のダイナミックリンクライブラリが必要です。 ARMのUbuntuで以下を実行します。 user@arm-lucid:~$ ldd /bin/bash lib

  • KMC Staff Blog:AndroidのNDKツールを使ってrubyをビルドして動かす

    2010年08月26日 AndroidのNDKツールを使ってrubyをビルドして動かす 前回の知識を使ってNDKのツールで先日リリースされたruby-1.9.2をビルドしてAndroid上で動かしてみました。 (2011.7.21) アップデート記事を書きました。 RubyAndroid用にビルドする 開発環境にはUbuntu 9.04 (x86_64)を使っています。 準備 ruby 1.9.2をクロスビルドするためには、そのホストruby 1.9.2がインストールされている必要があります。(ビルド中に実行されるrubyスクリプトが1.9.2用になっているため。) $ tar xvf ruby-1.9.2-p0.tar.bz2 $ mkdir obj $ cd obj $ ../ruby-1.9.2-p0.android/configure $ make $ sudo make in

  • KMC Staff Blog:GoogleのGo言語のソースを見てみた

    2010年07月27日 GoogleGo言語のソースを見てみた Googleの発表したプログラミング言語Goはソースが公開されています。 この言語の特徴などは他のサイトをみてもらうこととして、ここではソースをながめて気がついたことを紹介します。 (2009年12月の段階で書いたものを下書きのまま置いておいたのですが公開することにしました。もしかしたら内容が古くなっていることがあるかもしれません。) 2種類のGo Goの処理系には2種類あるそうです。ひとつはPlan9由来のオリジナルのもので、もうひとつはgccのフロントエンドとして実装されたものです。 今回インストールしたのは前者のほうなので、ここではこちらをメインに紹介します。 なお、gccのフロントエンドとして実装されたものは現状(2009年12月の段階)では以下のような制限があるそうです。 ガベージコレクションが実装されていない ス

  • KMC Staff Blog:4コアSMPのAndroidでのスレッドの状態

    2010年07月06日 4コアSMPのAndroidでのスレッドの状態 KZM-CA9-01ボード(Cortex-A9 Quad core)で4コアのSMPモードでAndroidを動かして、そのスレッドの状態を PARTNER-Jetでのpsコマンドで見てみました。 起動してからブラウザを立ち上げて何ページか閲覧したところです。 使用したバージョンはAndroid2.2_r1.1でJITも有効にしています。 >ps 1: 1(0x1) /init 1: 48(0x30) /system/bin/sh 2: 49(0x31) /system/bin/servicemanager 1: 50(0x32) /system/bin/vold 3: 61(0x3d) child-thread 3: 62(0x3e) child-thread 2: 51(0x33) /system/bin/netd

  • KMC Staff Blog:Androidのlowmemorykillerが発動したときのログ

    2010年07月01日 Androidのlowmemorykillerが発動したときのログ Androidではメモリが足りなくなったときに、プロセスを強制終了させてメモリを開放させるという機構が入っています。Low memory killer と呼ばれるものです。 これが発動したときの典型的なログがとれたのでちょっと紹介します。 Android 2.2 をビルドしてemulatorを起動し、JavaScriptのベンチマークテストのページをブラウザで開きました。 このページ(V8 benchmark)です。 すると、このページの実行にはメモリがたくさん必要らしく、コンソールに以下のようなカーネルログが ... select 217 (droid.deskclock), adj 15, size 3521, to kill select 236 (d.process.media), adj

  • KMC Staff Blog:Android2.2(Froyo)のダウンロードとビルド

    2010年06月29日 Android2.2(Froyo)のダウンロードとビルド 6/24にAndroid2.2(Froyo)のソースが公開されました。さっそくビルドしてみたので、その方法を簡単に紹介します。 準備 Android2.1がビルドできた環境を用意してください。ここではその説明は省略。 私はx86_64のUbuntu 9.04を使っています。 ダウンロード froyoのブランチを明示してrepo init します。 $ mkdir android-froyo $ cd android-froyo/ $ repo init -u git://android.git.kernel.org/platform/manifest.git -b froyo $ repo sync 私がやったときには74分かかりました。 2010.7.7追記 androidのソースリポジトリにfroyo-r

  • KMC Staff Blog:組み込み向け Python バイトコード実行環境 PyMite

    2010年06月17日 組み込み向け Python バイトコード実行環境 PyMite hik さんのコメント で存在を知りました。ありがとうございます。 python-on-a-chip プロジェクトの成果物のようです。これは一言でいうと、組み込み向けの Python VM で、ROM 化のためのしくみ (Python ライブラリのバイナリイメージ、あるいはそれをバイト配列で表現した C コードを生成するしくみ) なども含んでいるようです。 README を読んでみると、最小要求 AVR などの 8 bit MPU、64 KiB フラッシュメモリ、4 KiB RAM からのターゲット上で、OS レスで Python 2.5 (のサブセット文法に相当するバイトコード) が動くそうです。ライセンスは GPL v2。 PC 上でも動くようなので、とりあえずビルドして動かしてみます。 cygwi

  • KMC Staff Blog:Go 言語は組み込みに向く ? 向かない ?

    2010年06月15日 Go 言語は組み込みに向く ? 向かない ? 興味深いインタビュー記事を読みました。 コンパイルが速くて、スクリプト言語的に書ける言語が欲しかった Go の言語仕様は、マルチコアサポートや GC など、今後組み込みソフトウェア開発でもトレンドとなってくるような機能を一通り押さえている上に、既存の C ライブラリともリンク可能※です。 ※ 正確には、cgo という一種のトランスレータを通し、リンク可能な形に変換するというしくみだったと思います。(最後に確認してからだいぶ時間が経っていますので、現在は変わっているかもしれません。) 参考: Google Go歴史 しかしこの記事によると、Google 社の開発者たちは、Go による組み込みソフトウェア開発という可能性はあまり考慮して無いようです。 将来、GoAndroidのアプリを作るといったことは? 組み込みはG

  • KMC Staff Blog:TEMU: The BitBlaze Dynamic Analysis Component

    yad-EL
    yad-EL 2010/05/19
  • KMC Staff Blog:OS 対応デバッガ

    2009年12月11日 OS 対応デバッガ 2 ちゃんねる発祥の Mona OS の開発者 higepon さんが、Mona OS のデバッグ環境を整えようと努力されているようです。 Mona OS は QEMU 上で開発されていて、QEMU は gdbstub.c というプログラムで GDB と接続し、ICE のように使うことができます。 ひげぽん OSとか作っちゃうかMona- 2009/12/08 GDB スタブを書いてみよう その1 GDB スタブを書いてみよう その2 目的 達成したいのは Mona 中のユーザープロセスのデバッグ。ユーザープロセスが出来れば Kernel は簡単だと思う。 特にユーザープロセスが死んだときにソースコード上のどこで死んだかが GDB 一発で分かるようにしたい。 弊社の JTAG デバッガ PARTNER-Jet は、まさしくこのような機能を備えてい

  • KMC Staff Blog:UNIX v6 を x86 マルチプロセッサシステムに移植した xv6

    2009年08月17日 UNIX v6 を x86 マルチプロセッサシステムに移植した xv6 MIT教育システムは当にすごいですね。 xv6 という、MIT の OS の講義のために、UNIX v6 を ANSI C で書き直して、x86 マルチプロセッサシステムに移植したものが存在することを、ひらさんの twitter で知りました。 wikipedia がよくまとまっています。Lions のように、読みやすくソースコードが編集された PDF へのリンクもあります。OS のソースコード全部で、たったの 75 ページと、非常にコンパクト。 http://en.wikipedia.org/wiki/Xv6 他にも MIT は、初級計算機科学の講義のために書かれた SICP (日語訳 : 計算機プログラムの構造と解釈)などでも非常に有名です。(こちらは Scheme でプログラムが

    yad-EL
    yad-EL 2009/08/17
  • KMC Staff Blog:K&R C ができるまで

    2009年08月07日 K&R C ができるまで 少し前の話になりますが、いただいたコメントをきっかけに、puts になぜ改行が付くのかというネタについて調べていた時、面白い論文を教えてもらいましたので紹介します。 "C and the AT&T Unix Port -- A Personal History", Stephen C. Johnson (翻訳) http://roguelife.org/~fujita/COOKIES/HISTORY/USENIX/johnson.html 初期の UNIX v6 を書いた pre K&R C が、32 bit マシンへの移植を意識した時、どのように K&R C へと変遷していったかという歴史が書かれています。C に関しての疑問を調べていくと、やはり初期の言語 B や PDP-11 とのかかわりが鍵となってきます。 The Impact on

    yad-EL
    yad-EL 2009/08/07
  • KMC Staff Blog:Android SDKのgoldfishのCPUをarm1136に置き換える方法

    2009年08月05日 Android SDKのgoldfishのCPUをarm1136に置き換える方法 AndroidのSDKではgoldfishという仮想ハードウェアをqemuで動作させています。この環境は実際のハードウェアがなくても動作させることができるのでとても便利です。goldfishはCPUがARMv5TEアーキテクチャのarm926なのですが、これをARMv6アーキテクチャのarm1136に置き換える実験をしてみたところ意外にすんなり動きました。 その手順をここで紹介します。 2009年11月のEclairのソースリリースでだいぶ状況が変わっています。こちらも参照してください。 以下の作業はUbuntu 9.04上で行いました。Androidのビルドの方法はこちら(http://d.hatena.ne.jp/embedded/20090510/p1)を参照してください。 きん

  • 1