ディバイスドライバをハックしよう!

このエントリーをはてなブックマークに追加
873login:Penguin:2010/11/04(木) 22:06:18 ID:qwjxXvn/
ビルド環境に入っているものを素直に使う。
874login:Penguin:2010/11/04(木) 22:34:19 ID:S1XESMQS
>>873
ビルド環境?
すみません、Linuxはドライバの開発とOSの移植しかやったことがないので、
ビルド環境がよくわかりません。
ドライバを開発するうえで、アプリ屋さんにどのようにドライバのヘッダファイルを
渡すのが正しいやり方なのかを知りたいです。
875login:Penguin:2010/11/04(木) 22:38:36 ID:LR3hS2yn
876login:Penguin:2010/11/04(木) 23:04:47 ID:S1XESMQS
分かりました。
ioctl.hはわざわざ渡さなくても、アプリ開発で使用するカーネルヘッダに入っているので
大丈夫ということですね。
ありがとうございました。
877login:Penguin:2010/12/02(木) 23:23:04 ID:4b10+uK8
ドライバコンパイル時に静的ライブラリをリンクさせることって出来ますか?
878login:Penguin:2010/12/02(木) 23:29:16 ID:QEjw5J80
はい
879login:Penguin:2010/12/03(金) 01:20:27 ID:q4cXzrWN
どうやったら出来ますか?
2.6系のカーネルですが、-lでライブラリを指定しても
WARNING: "hoge" [/home/hoge.ko] undefined!
と言われてリンクできないんですよ。
880login:Penguin:2010/12/03(金) 01:26:12 ID:HjCnxCbQ
.koってライブラリじゃないよ
881login:Penguin:2010/12/03(金) 10:36:25 ID:CY74Qv7R
そもそもgccやbinutilsはWARNINGとか大文字は出さないだろう
何かすごい勘違いしてそう
882login:Penguin:2010/12/11(土) 14:59:04 ID:uuYvSF4I
>>879
そもそも -l のかわりにソース直指定ならリンクできるのか?
883login:Penguin:2010/12/29(水) 17:20:29 ID:4yM0+SZ6
webcam(UVC)を接続すると、/dev/video0にデバイスが作成されますが、
ここから流れてくるフォーマットについて知りたいのですが、どこか
参照するところってありますでしょうか?
884 【中吉】 【1992円】 :2011/01/01(土) 00:36:00 ID:NRMsojMl
おめおめ!
885login:Penguin:2011/05/27(金) 16:14:52.73 ID:hBkzVcCP
Cライブラリのassert()のドライバ版みたいなのないですかね?
勉強用にドライバを書いているのだけど、エラーチェックにいちいち if文を書くのが面倒くさい。
普通のアプリの場合は、assert()で一行でエラーチェックを終わらせるのだけど。
無いなら、どうやってエラーチェックしてるか教えて貰えるとありがたい。
886login:Penguin:2011/05/27(金) 16:21:32.12 ID:oqgnTIfp
BUG_ON
887login:Penguin:2011/05/27(金) 23:08:25.94 ID:NHryjoxJ
タイプ数減らしたいだけなら自分でマクロ書けばいいじゃん

#define assert(x) なんとかかんとか
888885:2011/05/28(土) 21:55:24.09 ID:DZ/zAfXL
>886
どうもありがとう。良い情報を頂きました。

>887
最悪その方法を取るけれど、既存の洗練された方法があるならそっちを使うべきでしょう?
889login:Penguin:2011/07/28(木) 17:08:37.75 ID:fa8I36t3
PCIの自作用穴あき基板ってあるんですかね?
自作基板をスロットに差してデバドラも自分で書いて使ってる人います?
890login:Penguin:2011/07/28(木) 21:19:13.92 ID:9X016Sem
FPGAでプログラムする人とかいるんじゃないかな
891login:Penguin:2011/08/30(火) 14:59:09.92 ID:0covJFQI
>>889
サンハヤトで売ってる
ttp://www.sunhayato.co.jp/products/details.php?u=242&id=07008
もう生産終了して在庫のみみたいだが…

・FPGAにPCIバスコントローラIPを組込む
 (QuickPCIのようなPCIコア搭載のASSPも可)
・PLXのPCIバスブリッジLSIを使う

とかが簡単かな?
ただし、多chロジアナかPCIバスアナライザがないとH/Wのデバッグつらそう
892電板住人:2011/09/08(木) 22:50:33.11 ID:5S22Lom/
>891
なせばなるってか。
http://elm-chan.org/works/pci/report.html

USB highspeed で足りなくなる用途ってのがなかなかなくて
なんか作る前に PCI がオワコンになってしまた。
893login:Penguin:2011/09/08(木) 22:57:53.59 ID:gAMXe89X
汎用のPCIプロトコルICがあればいいのにね
プロトコルが複雑なせいで使いにくいよ、PCIは
894login:Penguin:2011/09/08(木) 23:36:34.13 ID:M1WIsemQ
>>893(やーさん)
891が言ってるPLXのPCI bridge LSIが、いわゆる汎用のPCIプロトコルICだろ?
ttp://www.plxtech.com/products/fastlane/
ttp://www.plxtech.com/products/expresslane/bridges
895login:Penguin:2011/09/09(金) 00:51:36.99 ID:i51Tyjoe
>894
MOUSERで買えるんだな。知らなかった。
俺が知ってるのはこっち。
http://shop.trenz-electronic.de/catalog/product_info.php?products_id=801
896login:Penguin:2011/09/09(金) 08:48:41.83 ID:RO54tTej
PCIってバスマスタ機能ついてないと強烈に遅いからなぁ
ターゲットアクセスONLYだったらUSBの方が全然マシ
897login:Penguin:2011/09/09(金) 12:22:55.91 ID:c/CggDIE
USBはターゲット側から割り込みかけられんのがなあ
3.0が一般的になれば解決しそうだが
898login:Penguin:2011/09/16(金) 20:45:13.24 ID:sbRt/b8G
http://page2.auctions.yahoo.co.jp/jp/auction/b124613538
旦那、アナライザが出てきましたぜ
899login:Penguin:2011/09/17(土) 13:18:09.75 ID:1xn24TfS
>>898
一瞬安いと思ってしまったが、いまさら使い道ないよなぁ
900login:Penguin:2011/10/01(土) 08:26:06.16 ID:PYdveQ5P
create_workqueueでカーネルスレッドいっぱい作るドライバが多いな
core-i7とか12個もできたりする
901login:Penguin:2012/04/10(火) 20:10:51.64 ID:K9bAsJRY
NICレジスタのとあるフィールドを、MMIOを使って書き換えようとしています。

1.pci_get_device()でデバイス情報取得
2.pci_resource_start()で物理アドレス取得
3.ここで、一応request_mem_region()をコールしますが、既にベンダー提供の
デバイスドライバでrequest_mem_region()されているので、0が返ってきます。
が、構わず続けて、
4.ioremap_nocache()でマッピングされたアドレスを取得

4.の結果を以ってレジスタのREADはできた(ethtool -dとの比較結果が一致)のですが、
writeb()を使って書き込んでも反映されていません(ethtool -dで確認)。

そこで質問なのですが、既にrequest_mem_region()されているレジスタについては、
READはできてもWRITEは不可といったことなんでしょうか?
それとも、他にフラグ操作等足らない操作があるのでしょうか?
902login:Penguin:2012/04/10(火) 20:13:57.19 ID:TjB2iYHy
同じリソースに2ヶ所(個別の管理している?)からアクセス(書き込み)したら、どうなるかわかってる?
903login:Penguin:2012/04/11(水) 07:08:07.09 ID:Ov29jEBq
>>902
実際にはある条件を満たすパケットを捨てる/捨てないを担う1bitの書き換えなのですが、
それでも横から弄られたら破綻するかなと思います。

そもそも、ベンダー側ドライバがこのbitを操作するioctl()なりEXPORT関数なりを用意
してないので、サポート外動作というのは理解しています。
一応、この辺はベンダー側にNDAでもいいんで提供してもらえるように依頼しています。

今回は、それまでに時間がかかるのでとりあえずでも弄ることができないかとあれこれ
やっています。
最悪は、このbitをドライバロード時に設定しているドライバソースを弄ればなんとか
なりそうなんですが、ソースを弄ることなく外から設定できるといいな、と。
904login:Penguin:2012/04/11(水) 07:42:58.51 ID:k8CqWmKf
ioremap()の場合ですが、こんな事書いてる人もいますね。
ttp://0x74.blogspot.jp/2009/05/linuxrequestmemregionio.html

その後バージョンが上がって変わってるかもしれません。
905login:Penguin:2012/04/11(水) 14:34:19.38 ID:idMu7gyr
>実際にはある条件を満たすパケットを捨てる/捨てないを担う1bitの書き換えなのですが、
スレタイに通りに、NDAドライバをハックして
バイナリパッチのほうが早くね
906login:Penguin:2012/04/11(水) 19:39:13.21 ID:Ov29jEBq
>>904
今回、MMIO使って書き換えてみようと考えたのが、そこのページを見たためでした。
結局まだうまくいってませんが…

>>905
とりあえず、ドライバソースを弄る方で先にやってみようと思います。
907906:2012/04/12(木) 20:02:46.16 ID:lbSIQeJF
結局、ドライバソースを弄って無事目的を果たせました。
908login:Penguin:2012/10/08(月) 17:33:01.99 ID:Z+p5tcDI
kernel技術者の需要ってどんなもんでしょう?
技術者が不足している分野と、
待遇の目安など教えてもらえると嬉しいです。
909login:Penguin:2012/10/09(火) 10:23:13.53 ID:fG1BPWH9
今それが見えてない時点でアウトだと思うよ
910login:Penguin:2012/10/09(火) 10:46:20.92 ID:HshUGVwS
いや、なら他を当たるまでなので別によいです
webなりDBなり頑張ります
911login:Penguin:2012/10/09(火) 11:24:00.87 ID:fG1BPWH9
ジャンルには関係ないとは思うが、まあいいか
912login:Penguin:2012/10/09(火) 12:26:59.26 ID:sI4/BkKw
>>910
まだ選択の余地があるなら他に進んだ方がいいと思う。プログラム業なんて、>>909みたいなカスしかいないから。
913login:Penguin:2012/10/09(火) 13:10:40.17 ID:GPpGUb7J
プログラム業
914login:Penguin:2013/03/26(火) 08:51:30.75 ID:CLzKF3Up
age
915login:Penguin:2014/02/13(木) 19:42:26.30 ID:StvXlIag
/dev/input で
type=EV_MSC code=MSC_SCAN って
なにを意味してんの?
916login:Penguin:2014/02/23(日) 12:43:47.37 ID:ytOaVGS4
ecb ってなにドライバー?
917login:Penguin:2014/02/26(水) 10:47:34.06 ID:w6lQvC2s
キン肉ドライバー!
918login:Penguin:2014/04/02(水) 15:13:48.18 ID:rDv+tjOg
ドバイスデライバァ!
919login:Penguin:2014/04/09(水) 11:07:29.91 ID:MFnWvffb
奇跡、神秘、真実、夢
920login:Penguin:2014/10/23(木) 17:16:44.71 ID:p9q2EMHG
書籍読みながらサンプル動かしてるけど楽しい!
もっと早くから勉強しとくんだった・・・
921login:Penguin:2014/10/30(木) 21:21:48.26 ID:xfEc1Jae
ユーザーランドで動作するデバイスドライバ
って作れる?
922login:Penguin
>>921
User Space I/O (uio)のこと?