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

  • KMC Staff Blog:速度を犠牲にせずにクラッシュ直前のログを採取するシンプルで効果的な方法

    2013年06月11日 速度を犠牲にせずにクラッシュ直前のログを採取するシンプルで効果的な方法 先日6月7日に開催されたテクニカルジャンボリーに出席し、その前に行われたLinuxCon Japanでの発表資料を使って日語で話をしてきました。 トラブルシューティングの時にはprintfなどでログを出すことがありますが、あまりにたくさんログを出すと動作が遅くなって支障がでて、少しでも速くしようとメモリにバッファリングするとクラッシュしたときに肝心のログの最後の部分が欠けてしまいます。「高速」かつ「最後のログ」が取れる簡単な方法をみつけたので紹介します。 Simple and efficient way to get the last log using MMAP from Tetsuyuki Kobayashi 「Linux」カテゴリの最新記事 タグ : embedded linux

    katochar
    katochar 2013/12/04
  • KMC Staff Blog:Makefileの依存関係の記述を自動化する簡単な方法

    2013年02月08日 Makefileの依存関係の記述を自動化する簡単な方法 ビルドにmakeコマンドを使うときにはMakefileにファイルの依存関係を書いておく必要があります。 しかし、開発の途中でインクルードするヘッダファイルが増えてくると、これらの依存関係を手作業で記述するのは面倒です。(そして、これをサボったことでハマることもよくあることです。:) ここでは、gccの機能を使ってこれを自動化する方法を紹介します。 gccのプリプロセッサで依存関係を自動生成する gccでコンパイルするときに -MD というオプションをつけると、コンパイルとともに拡張子が.dのファイルが作成されます。これはMakefileと同じ書式でそのファイルの依存関係が記述されています。 詳しくはgccのマニュアルを参照してください。 http://gcc.gnu.org/onlinedocs/gcc-4.7

  • KMC Staff Blog:QEMU の Microsoft x64 環境での不具合

    2011年08月04日 QEMU の Microsoft x64 環境での不具合 シミュレータはメモリを大量に使うので、64 ビット Windows 環境では、できれば互換モード(32 ビットモード)ではなく、64 ビットモードで動かしたいところです。 QEMU は、Linux などの x86_64 環境では、普通に動作しています。 ならば Windows でも 64 ビットモードで動くのではないかと思い、MinGW-w64でビルドして みたのですが、ビルド自体はできたものの、SEGV が発生してまともに動きませんでした。 原因を調査してみると、x86_64 と x64 環境の、さまざまな相違点が明らかになってきました。 - データモデルの違い(LP64 環境と LLP64 環境) Linux, BSD, MacOS X などの、QEMU がサポートする 64 ビット OS 環境は、全て

    katochar
    katochar 2011/08/05
    x64 互換
  • KMC Staff Blog:exitと_exitの違い/tmpfileの削除のしくみ

    2011年02月17日 exitと_exitの違い/tmpfileの削除のしくみ Linuxでのプロセスの終了処理について少し調べました。 今まであまり意識していなかったexitと_exitの違いも理解できました。 昔C言語で小さなマイコンのプログラムをしていた頃は、一度main関数を実行すると、そこから抜けることはなかったので、main関数を抜けた後のことはあまり意識することはありませんでした。 しかし、Linuxなどプロセス単位で動かす場合には、main関数を抜けた後の終了処理も理解しておく必要があると思います。 main関数とexitの関係 main関数はスタートアップルーチンから呼び出されますが、mainから戻った後にmain関数の戻り値を引数としてexitが呼び出されます。 つまり、 exit(main(argc, argv, env)); (ちなみに、mainという名前の関数は

  • KMC Staff Blog:VMWare仮想マシンに仮想ディスクを追加する

    2010年11月11日 VMWare仮想マシンに仮想ディスクを追加する ノートPCで使っていたVMWare player上のUbuntuの仮想マシンのハードディスクが足りなくなってしまいました。 実際のマシンだったらハードディスクを買ってきて、ケースを開けて増設するところですが、仮想マシンなので(ホスト側のディスクに余裕があれば)お金をかけずに簡単に仮想ディスクを追加することができます。以下はそのメモ。 仮想ハードディスクの追加 VMWare playerの仮想マシンのメニューから 仮想マシンの設定 > ハードウェア ここで「追加」のボタンを押してハードディスクを選びます。 種類は SCSIでいいでしょう。 作成したディスクのデバイスファイルの確認 作成した仮想ハードディスクを仮想マシン上のLinuxに認識させるために、仮想マシンをリブートします。 これ以降の操作は仮想マシンに固有でなくて

  • KMC Staff Blog:ブートフラッシュの書き込みに失敗してJTAG-ICEすら起動しなくなった時の脱出方法

    2010年10月19日 ブートフラッシュの書き込みに失敗してJTAG-ICEすら起動しなくなった時の脱出方法 KZM-A9-DualボードにU-bootとLinuxカーネルを移植中です。 で、さっそくやらかしました。 DDRの初期化をスキップしているU-bootのバイナリを間違えてブートのNORフラッシュに焼いてしまいました。これをやってしまうとJTAG-ICEも起動できなくなってしまいます。昔のFull ICEと違ってJTAG-ICEは起動時に一度リセットを解除するので、その瞬間にCPUが暴走すると接続できなくなってしまいます。困った! どうしよう ... 普通はブートフラッシュメモリの書き込みに失敗して、コンソールにプロンプトがでなくなってしまっても、CPUがどこかで無限ループしているようなときならば、PARTNER-JetのようなJTAG-ICEをつなげば、再度ブートフラッシュメモリ

    katochar
    katochar 2010/11/04
    参考
  • KMC Staff Blog:Linuxカーネルを別のディレクトリでビルドする

    2010年10月12日 Linuxカーネルを別のディレクトリでビルドする 今日はLinuxカーネルをビルドするときにちょっとしたTipsを紹介します。 カーネルをいじっていると、時々、同一のソースからコンフィグを少しだけ変えたものを複数作って、切り替えて交互に動作を試したいということがよくあります。 そのたびにコンフィグファイルを差し替えて再ビルドしてもよいのですが、そのコンフィグファイルごとに別々のディレクトリでビルドできると便利です。 そのためにはmakeの時に O=dir をつけます。 $ mkdir test1 $ make xxxx_defconfig O=test1 $ make menuconfig O=test1 $ make -j4 O=test1 これで、test1/.config の内容でtest1/vmlinux がビルドされます。 ただし、O=dir をつけずにビ

  • KMC Staff Blog:Android on Ubuntuで一般ユーザでのsocketシステムコールがPermission deniedになる

    2010年10月07日 Android on Ubuntuで一般ユーザでのsocketシステムコールがPermission deniedになる Android on Ubuntu で、なぜか一般ユーザでsocketシステムコールがPermission deniedになってしまいます。sudo すれば大丈夫です。 この問題に気がついてはいたのですが、きっとUbuntuの新しいセキュリティの設定が何か足りないせいだろうと思っていました。しかし、Debianで動かしても同じことがおきました。 このことをたまたまtwitterでつぶやいたら、有力な情報を教えてもらったので調べてみました。 一般ユーザでsocketシステムコールがPermission deniedになるというのはこんなことです。 user@arm-lucid:~$ ping 192.168.1.26 socket: Permissi

    katochar
    katochar 2010/10/27
  • 1