Embedded

early_printk、printasciiとは

printk()は、printf()と基本的にはやってることが同じで、 call_console_drivers()という関数を内部で呼び、 シリアルコンソールドライバを通して、シリアルのメモリマップIOに、バイト列をwriteする。 カーネルのブート時には、init_IRQ()で、割り込みが有…

ELFバイナリのメモリ・リソース消費量

バイナリ・ハックス#11にも載っているが、 %nm --size-sort hoge.o | egrep ' t | T ' | lessで、.textのサイズが表示される。サイズが0のものは表示されない。で、全部の合計が、objdumpで調べたELFヘッダのサイズと一致しない。そんなときは、dfフラグ…

2階層ページテーブルのアドレッシング

http://www.nminoru.jp/~nminoru/programming/arch/virtual_memory.html#3-2http://72.14.235.132/search?q=cache:F4ntpKWAIgoJ:d.hatena.ne.jp/xna/20080923/1222096400+DTLB+ITLB&cd=1&hl=ja&ct=clnk&gl=jp&client=firefox-ahttp://72.14.235.132/search?q…

make:verbose

make時に、引数にV=1 export KBUILD_VERBOSE=1 とすると、verboseモードになり、詳細になる。

insmod: error inserting 'hoge.ko': -1 Invalid module format対処

modinfoで、hoge.koを見る。 vermagicをチェックする。 Makefileを見る。 カーネルバージョンとモジュールバージョンが一致するか確認する。 一致しなければ、バージョンチェックをゆるくするカーネルコンフィグレーションパラメータがあるので、それを探す。