Linux 4.4系がLongtermの仲間入りをしたので、自作ARMエミュレータememuでLinux 4.4.8を動かしてみたのですが、未定義の領域にアクセスしてクラッシュしてしまい動かず…。
他のLongterm(Linux 4.1.23)は元気に動くんだけどな。何かドライバが変わったんだろうなあ。
目次: ALSA
以前(2016年2月28日の日記参照)にALSA SoC Layerについて調べましたが、詳細な解説が出来るほど良く分かってないので、現時点で分かっていることのメモ書きを貼っておこうと思います。
まず、openとcloseができるだけの、何もしないドライバを作るだけであれば、呼び出すべきAPIは4つです。
各APIに渡す構造体と、APIの関連は下記のようになっていました。これで全て網羅できているわけではありません。奥が深いです…。
実際にコードをどう書いたら良いかについては GitHub にサンプルを置いています。このコードをコンパイルしていただければ動きます(音は鳴りませんけど)。
目次: Linux
昨日(2016年4月15日の日記参照)のやり方は、やはり一般的では無かった(1時間以上掛かるし…)らしく、スマートなやり方を教えていただきました。
# apt-get install linux-headers-3.16 パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 Note, selecting 'linux-headers-3.16.0-4-all' for regex 'linux-headers-3.16' Note, selecting 'linux-headers-3.16.0-4-amd64' for regex 'linux-headers-3.16' Note, selecting 'linux-headers-3.16.0-4-common' for regex 'linux-headers-3.16' Note, selecting 'linux-headers-3.16.0-4-all-amd64' for regex 'linux-headers-3.16 ' linux-headers-3.16.0-4-commonはすでに最新版です。 以下の追加パッケージがインストールされます: cpp-4.8 gcc-4.8 libasan0 libgcc-4.8-dev linux-compiler-gcc-4.8-x86 linux-kbuild-3.16 提案パッケージ: gcc-4.8-locales gcc-4.8-multilib gcc-4.8-doc libgomp1-dbg libitm1-dbg libatomic1-dbg libasan0-dbg libtsan0-dbg libquadmath0-dbg 以下のパッケージが新たにインストールされます: cpp-4.8 gcc-4.8 libasan0 libgcc-4.8-dev linux-compiler-gcc-4.8-x86 linux-headers-3.16.0-4-all linux-headers-3.16.0-4-all-amd64 linux-headers-3.16.0-4-amd64 linux-kbuild-3.16 アップグレード: 0個、新規インストール: 9個、削除: 0個、保留: 0個。 12.7 MBのアーカイブを取得する必要があります。 この操作後に追加で39.9 MBのディスク容量が消費されます。 (以下略)
カーネルモジュールをビルドしますが、もし /usr/src/linuxを見に行ってしまうようなモジュールであれば、ちょっと書き換えが必要です。
$ make -C /usr/src/linux M=`pwd` ↓ $ make -C /lib/modules/`uname -r`/build M=`pwd`
昨日の方法と比べると、Linuxのソースコードもビルドも要らないし、格段にスマートです。素敵。
でも、カーネルモジュールがヘボくて、カーネル内でクラッシュし、結局Linuxのソースコードにデバッグprintkを埋め埋めしてビルドする羽目になったのはご愛敬です…。
< | 2016 | > | ||||
<< | < | 04 | > | >> | ||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
- | - | - | - | - | 1 | 2 |
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
合計:
本日: