[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 05/09 09:40 / Filesize : 265 KB / Number-of Response : 871
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:login:Penguin [02/01/31 01:14 ID:t3s191ys]
ディバイスドライバの改造、製作にまつわる情報交換、質問、
噂話、ぐち、政治、経済に関するスレです。できる限り生産的にいきましょーや。


295 名前:login:Penguin mailto:sage [03/09/03 16:47 ID:iWz7WMbL]
>>290
info ld
-rの説明読め。


296 名前:login:Penguin mailto:sage [04/01/07 22:36 ID:ui3n7e6w]
だいぶ下がってますが、
2.6 と 2.4 のドライバ記述って何か変りました?
2.6 まだインストしてないので報告キボンヌ・・・
2.2 -> 2.4 程は変ってないのかなー?

297 名前:login:Penguin [04/01/16 18:02 ID:ZUOtu/O9]
PCIのデバイスドライバを作成していますが、
全くできません。
less /proc/iomemで書かれているアドレスで
read、write関数を使って書いたり、読んだりしてもだめです。
何がいけないんでしょうか?


298 名前:login:Penguin mailto:sage [04/01/16 19:15 ID:JS8EwlnL]
とりあえず、lspci -vvv を晒してみたらどうでしょう。
もちろんデバイス指定でね。
それを見て私が答えられるかどうかはまた別の話ですけど。


299 名前:login:Penguin [04/01/16 19:52 ID:ZUOtu/O9]
lspci -vvvで次のような表示になりました。
00:11.0 Class ff00: Altera Corporation: Unknown device 1998 (rev 07)
Control: I/O- Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
Status: Cap- 66Mhz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
Interrupt: pin A routed to IRQ 16
Region 0: Memory at dffe0000 (32-bit, non-prefetchable) [size=64K]

300 名前:298 mailto:sage [04/01/16 20:57 ID:JS8EwlnL]
FPGAですね。

私もそんなに知っているわけではないので、
あまりあてにはしないで欲しいのですけれど…
lspciの結果は特に変なところは無いと思います。
Class ff00はどのクラスにも属さないと言うことだと思うのでちょっと気にはなりますが、
読み書きぐらいはできるでしょうね、きっと。

だとすると、あとはドライバのソースでチョンボがあるか
FPGAの中で書きこみ禁止になっているとかですかね。
FPGAにどんなipが載っているのか分からないので、あくまで推測ですけど。

あんまり力になれなくてごめんね。


301 名前:login:Penguin mailto:sage [04/01/18 02:27 ID:+zT3hNOG]
>>298
read/writeのかわりに
ioremap_nocache()で対象アドレスのページを取得して、
ポインタで直接参照してみたら?

よみたい物理アドレスが
(unsigned int) p_adr
だとしたら

unsigned char p_read(unsigned int p_adr){
unsigned int v_page,v_offset;
unsigned char ret;
v_offset=p_adr&0x0fff;
v_page=ioremap_nocache(p_adr&0xfffff000, 0x1000);
ret=*((unsigned char *)(v_page + v_offset));
iounmap(v_page);
return (ret);
}

適当だけどこんな感じで。ページサイズが4K決め打ちだけど。

302 名前:login:Penguin [04/01/18 02:28 ID:+zT3hNOG]
>>299のマチガイだ。

303 名前:login:Penguin mailto:sage [04/01/19 07:32 ID:kPFQP2Tn]
PCIバスアナライザで観測しながらアクセスしてみそ



304 名前:login:Penguin mailto:sage [04/01/22 14:27 ID:O8v9hJ5s]
>>303

持っているならいい方法だけどね。
買おうとすると激しく高い。
レンタルでも中古でも激しく高い。

でも、欲しいね。

305 名前:login:Penguin [04/01/28 10:42 ID:N5b+GE5n]
マジレスすれば
ロジアナでPCIバスを観測するか、PCIバスアナライザを使うか
どっちかしないと、PCIデバイス/ドライバの開発は無理だろう

306 名前:login:Penguin mailto:sage [04/01/28 12:46 ID:OnT2yC/X]
んなこたーない!
297 が FPGA開発を同時にやってるならまだしも・・・
あったほうが楽なのは確かだが、無理ではない。

ハード屋さんはバスレベルで確認して提出するはず。
read/write 出来ないのはドライバの不具合。

>>297 は pci_find_device 関数など、基本から勉強したほうがよさそう。

307 名前:305 mailto:sage [04/01/28 15:27 ID:N5b+GE5n]
無理ではないって言っても、そんなマゾプレイみたいなコトしたくないよ
目隠しして半田付けしろっていうのに近いな

PCIのロジックって複雑だから、実機でバグが露呈するのはよくあること
430FXで動いたからって 875Pでは動かないとか余裕であるよ
市場に流通してるチップセットすべてで確認しないと市販は無理

名の通った枯れてるチップならまだしも、実機の動作チェックもしてない
FPGAの回路をつかったPCIカードなら、最初から疑ってかからなきゃダメだと思います

> ハード屋さんはバスレベルで確認して提出するはず。

PCIバスの全パターンをシミュレーションできる検証ツールってすごく高いよ
特にFPGAの開発のために検証環境買うのはコストにあわない
PCIバスアナライザがある環境で実機試験して、少しずつ直すほうが早くて安い

308 名前:login:Penguin mailto:sage [04/01/28 18:36 ID:XM3JMqvR]
>>307
そーゆーのはハード屋さんの仕事じゃないかと。
PCIブリッジの違いで動かないなんてのは設定云々じゃない限りドライバじゃ直せん。


309 名前:login:Penguin mailto:sage [04/01/28 19:09 ID:ceOaOw14]
> そーゆーのはハード屋さんの仕事じゃないかと。

おれもそう思う。
でも、実際はソフト組み込んだらなんかおかしくて、
実は結局、微妙にハードが悪かったなんて事は良くある話だね。
きっと >>305 は苦い思いをしたんだろうよ。

310 名前:login:Penguin mailto:sage [04/01/29 18:47 ID:ci1wDtTm]
>実は結局、微妙にハードが悪かったなんて事は良くある話だね。
ハード絡みやってりゃ必ずあるね。
慣れてくればハード、ソフトどっちが悪いか何となくわかるようになるけど。
制御チップ動かす時なんかはオシロ、ロジアナの出番が増える。

さすがに PCI制御用FPGAまで計測器突っ込んだ亊はないけどね・・・
そこまで行くと スレ違いですね >> 307

311 名前:307 mailto:sage [04/01/30 07:19 ID:tIkj6Ynv]
私はPWBAからASIC/FPGA デバイスドライバ アプリ まで全部自分で開発する
ある意味何でも屋です

FPGAの検証を実機でやるときにデバイスドライバを作ってるはずだから
バスレベルで動作検証済なら、そのとき使ったドライバをハード屋さんから
もらってくればいいんだと思います

もちろんLinuxじゃない別のOSで検証してる場合もあるだろうけど
今の時代はLinuxでやってるケースがほとんどではないかなぁ

Linuxは
1. ソースが公開されてて、ドキュメントも多くドライバ書くのが楽
2. CDからブートしてRAMDISKだけで動くシステムを簡単に作れる

等の利点があって、特に2が重要
PCIバスのハードのデバッグだとしばしばフリーズするので
正しくshutdownしないままリセットすることが頻発する。
winだろうがlinuxだろうがHDDにOSが入ってるシステムだと、
リセット連発していると、次の起動時に時間がかかるし
そのうちHDDの内容が不整合を起こしてくる。
1CD ramdiskオンリー システムだと、気軽にリセットできて楽なんだ。
まぁlinuxじゃなくてFreeBSDでもいいんだけど。

私は5〜6年くらい前はFreeBSD(2.x/3.xの時代)でPCIカードのハードのデバグ
やってたけど、今世紀に入ってからLinux(2.2の頃から)でやるようになった。
時代の流れで、商品としてlinuxへの対応が必要ってことになったので
最初からlinux用のドライバ書いておけば後が楽になるからね。

スレ違いだったかな
駄文失礼

312 名前:login:Penguin mailto:sage [04/02/03 23:12 ID:j9rA+N1w]
>駄文失礼

気にしなくていいぜ。(w

313 名前:login:Penguin [04/02/09 07:11 ID:7h6uvjnn]
すいません、どうしようもない質問なんですが、
実験的にカーネルパニックを発生させるドライバを作るのには
どうすればよいでしょうか?
カーネル関数panic()を使っても
ハングするだけでパニックしないんです。。。
どうか教えてください。



314 名前:login:Penguin mailto:sage [04/02/09 20:13 ID:oe9mNV77]
このスレは俺に勇気をくれた。

315 名前:login:Penguin mailto:sage [04/02/10 00:02 ID:0xm4A1oM]
>>313
コンソールに"Kernel panic: …"って出てないの?


316 名前:login:Penguin mailto:sage [04/02/10 00:52 ID:4iNUE3rF]
>>313->panic();


317 名前:login:Penguin [04/02/10 21:13 ID:WwFCucZO]
>>315−316
返信ありがとうございます!
単純にパニックするよりoops画面が表示するようにしたいのです。
mmapあたりをいじくるドライバを作れば、
oops画面を表示させることは可能ですか?

318 名前:殴られそうだが mailto:sage [04/02/10 23:35 ID:0xm4A1oM]
>>317
試してないけど、
*(unsigned long)0 = 0;
とか。


319 名前:login:Penguin [04/02/11 00:21 ID:QfDGoor4]
>>318
似たようなので、
x=0;
x=x/x;
ってのをやってみたのですがダメですた。
やっぱLinuxって頑強だと思いますた。
mmapも見てみたらカーネル空間でなく補助記憶空間に
マップするだけのようですし・・・
アドレス例外でoopsできるような方法とかあるのですかね??

320 名前:login:Penguin mailto:sage [04/02/11 17:17 ID:ViS2X9Xm]
Oopsとpanicを混同しているような気がしないでもない。


321 名前:login:Penguin [04/02/12 00:21 ID:9Bh5Rhh+]
>>320
すみません。。。
パニックとシステムフォルト(oops)と勘違いしていたようです。。。
ドライバからシステムフォルト(oops)
させるような方法ってあるのでしょうか?

322 名前:login:Penguin mailto:sage [04/02/14 07:34 ID:kX0ZpYOB]
linuxはsolarisみたいにクラッシュダンプ取れますか??

323 名前:login:Penguin mailto:sage [04/02/16 00:01 ID:dUYGf/LZ]
>>322
ttp://lkcd.sourceforge.net/




324 名前:login:Penguin mailto:sage [04/02/19 02:35 ID:tYIYueC9]
Linuxでのデバイス・ノード管理は現在
従来の/dev以下のデバイス・ノードファイル、devfs、udevが
存在しているようですが、デバイスドライバを書くような
デバドラ開発者にはこの状態は影響するのでしょうか?


325 名前:login:Penguin [04/02/19 10:34 ID:iwEBqmwA]
私は従来の/dev以下のデバイス・ノードファイルを使ってます
devfsに対応するのも簡単だけど優先度低いから先送り

326 名前:login:Penguin mailto:sage [04/02/24 22:37 ID:BGHqYIMS]
modpostについて詳しく解説している文書をご存知でしたら教えて下さい。

327 名前:login:Penguin mailto:sage [04/03/17 23:57 ID:P4QfZyWd]
データシートをどうやって手に入れるか
それが問題だ

328 名前:login:Penguin mailto:sage [04/03/18 10:56 ID:WBeyRceU]
何のデータシート?

329 名前:login:Penguin [04/04/08 16:25 ID:E32BiKCa]
mmapについて質問させてください。

メモリデバイスをmmapするとき、ページサイズを4096Byteとした場合、
mmapされたデバイスの先頭からの"物理アドレス"と
mmapしたプロセスのデバイスに割り当てられた"仮想アドレス"の
下位12bit(2^12 = 4096)は一致するのでしょうか?

mmapではプロセスの仮想空間にページサイズ単位で
ファイルやデバイスを割り当てることが出来るわけですよね。
ページサイズが関係してくると言うことはMMUのようなものが
作用して、この割り当てを管理しているのですよね。
(あるいはMMUそのものなんですか?そこが分かってないのですが)

もしも、MMUの管理下にあるならば、実空間と仮想空間のアドレスの
下位12bitは一致するはずです。
MMUはページサイズ以下のアドレスを知らないはずですから。
ここまでは私の理解に間違えはないですよね。

でも、mmapが実際にどんな風に動いているか良く分からないので、
上のような疑問が沸いてしまったのです。
どなたかお分かりいになる方がいましたら教えてください。



330 名前:login:Penguin mailto:sage [04/04/08 17:57 ID:/VjqMrH1]
>>329
つ[ mmap.c ]

331 名前:login:Penguin [04/04/09 00:53 ID:E9wQ2At3]
いいなこのスレ

332 名前:login:Penguin mailto:sage [04/04/09 00:58 ID:ImS0ZAox]
>>330
ha?

333 名前:login:Penguin mailto:sage [04/04/09 00:59 ID:ImS0ZAox]
あぁソース嫁ってことかw




334 名前:login:Penguin mailto:sage [04/04/09 14:52 ID:8RpqlllW]
>>329
CPU/MMUアーキテクチャに依存する話だね。
IA32に限っていえばその理解でいいと思うよ。
他archでもまずそうなってるだろう。
そうなってないMMUなんて見たことない。


335 名前:login:Penguin mailto:sage [04/04/09 15:39 ID:dsP5+/oo]
2次キャッシュを UBS mem に格納して使いたし。可能?

336 名前:login:Penguin mailto:sage [04/04/09 21:34 ID:/keZpBhh]
>>335
CPUの2次キャッシュをUSBメモリにやらせるってこと?

337 名前:login:Penguin [04/04/10 01:41 ID:04yJkWho]
AGE

338 名前:login:Penguin [04/04/13 23:49 ID:bzoEXS/o]
USBのデバイスドライバ作る時のTIPSを教えてください

339 名前:login:Penguin mailto:sage [04/04/14 15:26 ID:XimV19c+]
デバイスを破壊出来るデバイスドライバーの作り方教えてください

340 名前:login:Penguin mailto:sage [04/04/14 23:18 ID:QKI6oVKA]
>>339
1.どこからかゴルフのドライバーを手に入れる。
2.ドライバーのフェイスにデバイスを貼り付ける(ガムテープでも可)

しかる後にドライバーを振りかぶり、路面、ブロック塀etc.にぶつけること。

341 名前:login:Penguin mailto:sage [04/04/15 10:49 ID:D/fT1Zhi]
>>340
( ´д)ヒソ(´д`)ヒソ(д` )

342 名前:login:Penguin mailto:sage [04/04/19 20:10 ID:TjHP8JDs]
>>340
( ´д)チョメ(´д`)チョメ(д` )


343 名前:login:Penguin mailto:age [04/04/27 21:12 ID:ftQXOuAJ]
v2.6.x 用の module (.ko) の作り方ってどっかに落ちてませんか?
v2.4.x だと gcc -c するだけで insmod できるイメージができましたが、
v2.6.x だとなんか後工程があるんですよね?



344 名前:login:Penguin [04/04/27 21:18 ID:VEIU93yI]
>>339
FDDにアクセスして、その音で音楽を鳴らす。
CDDのトレイを頻繁に出し入れする。
ってトレイは入れられたっけ?

345 名前:login:Penguin mailto:sage [04/04/28 09:36 ID:r7A4ZD5z]
>>344
出し入れ可能だけど、作り方は教えられないのでは?
もう既に完成してしまっているし ソース嫁としか言えないと思う

346 名前:login:Penguin mailto:sage [04/04/29 22:03 ID:ugZV/Avt]
>>344
CDDのトレイを開け閉めする位ならioctlで……

347 名前:login:Penguin [04/05/05 09:59 ID:IcDQ6/Fz]
v2.4でUSBキーボードドライバにRAWレベルアクセスする方法知りませんか?
usb/usbkbd.cを単品でモジュール化してみたけど、プログラムからのアクセス
方法がわからない・・・
usb_register時にマイナーバージョンの情報を登録してないみたいだけど
デバイスファイルでアクセスしようと思うと無理なのかな〜・・・

348 名前:login:Penguin [04/07/17 17:55 ID:z93SFsgN]
落ちそう・・・見込みなさそうだけど上げ

349 名前:login:Penguin [04/07/18 17:33 ID:qhsm/Ia2]
>>343
linuxdevices.com/articles/AT4389927951.htmlとか
lwn.net/Articles/driver-porting/とかではどう?

350 名前:login:Penguin [04/07/27 03:02 ID:AwmCdxXP]


Moz2chで見てると
レスがだんだん右にずれていくます。



351 名前:login:Penguin [04/07/27 03:08 ID:AwmCdxXP]

USBに2台のWebカメラをつなげてまちゅが

May 30 08:31:05 localhost kernel: usb-uhci.c: interrupt,status 3, frame# 1728

しばらく動いた後に/var/log/messageに出力されてカメラがハングしてちまいます。
USBのデバイスドライバは何を言ったのでしょうか?おちえてください。



352 名前:login:Penguin mailto:sage [04/07/27 03:23 ID:7ve9Hskt]
>>351
要はエラーが起きたのですね。それ以上あまり解析のタシにはなりません。
status 3 ってのは、割り込みが起きて、IOC と Error が立っていたんです。
# IOCの方は、割り込みを発生する機能なので、エラーじゃないですが。


353 名前:login:Penguin [04/08/02 14:39 ID:QD1yhPkc]
チップセットのドライバって具体的にはどんなことやってるの?



354 名前:login:Penguin [04/08/02 16:42 ID:4u8OC/CN]
すごく恥かしいあんなことやこんなこと

355 名前:login:Penguin [04/08/02 17:48 ID:Wbtl3uph]
>>354
激しく気になります。

356 名前:login:Penguin mailto:sage [04/08/03 23:29 ID:HnnAhZGX]
突然ですが、デバドラのioctlからpollやselectって呼べるかどなたか知ってますか?
pollやselectの引数の構造体に何を入れていいのかわかりません。

357 名前:login:Penguin mailto:sage [04/08/03 23:47 ID:0P3Qaw2+]
>>356
ioctlのハンドラからsys_selectとか呼びたいって事ですか?
呼べないことはないと思うけど…

なんでそんな変な事をする必要があるのか興味がありますな。
引数は普通にselectに食わせているものを同じように渡せば良いはず。


358 名前:login:Penguin mailto:sage [04/08/04 09:37 ID:NoJQortH]
>>357
3つのCPUおよびOSがある組込み系のデバドラを考えてます。
普通はioctlやselectをモジュール側に個別に書くのでしょうが、
それだとダメみたいです。デバドラ側で一括して処理を行うようにしないといけません。
ioctlをモジュール側から呼びだして、デバイス側ではそのioctl処理からpoll(割り込み処理)を
考えてます。なぜioctlかと言うと、ユーザデータをデバドラに渡したい(アドレスのチェック)からです。

359 名前:login:Penguin mailto:sage [04/08/04 10:00 ID:H7hK0Jjq]
>>358
>ioctlをモジュール側から呼びだして、デバイス側ではそのioctl処理からpoll(割り込み処理)を考えてます。
ちょっと待てよ、そこで言ってるモジュール側とデバイス側の区別がわからないのだが?


360 名前:login:Penguin mailto:sage [04/08/04 10:24 ID:AG/Dol7k]
一般に、デバドラ内部からシステムコールやライブラリ関数は呼べないよ。
書いてあることだけじゃいまいち要領を得ないが、taskletなりtask_queueなりを
自分で管理して、カーネルのスケジューラに登録するのが常套手段だ。

カーネルスケジューラはは2.2系 2.4系 2.6系で大きく異なるから
各バージョンすべてで動作する共通コードを書くのは結構大変
泣ける マジで

361 名前:login:Penguin mailto:sage [04/08/04 14:21 ID:NoJQortH]
>>359
モジュール側とはライブラリのソースで、デバイス側とはデバイスドライバのソースです。
表現が下手ですね。文章もあまりうまくないのでごめんなさい。
ライブラリ側では、whileループでバッファの中身をチェックしています。
バッファが空になるまで、プロセスを眠らすことがそもそもの目的です。


362 名前:login:Penguin mailto:sage [04/08/04 14:35 ID:NoJQortH]
>>360
ありがとうございます。げえ、かなり大変そうですね。。。かなり萎えてきました。
今いろいろいじくり回してて、デバドラのioctlのfile構造体のメンバf_opを、
poll(select)の関数を指すようにしてやっています。
そのために、ioctlとは別のfile_operation構造体をつくってそこでpollを宣言しました。


363 名前:login:Penguin mailto:sage [04/08/04 14:40 ID:+wO9AS9w]
>>356 の言う「モジュール」=「ライブラリのソース」は「ユーザランドの
アプリケーションが使うライブラリ」かな?



364 名前:login:Penguin mailto:sage [04/08/04 15:22 ID:NoJQortH]
はい。そうです。
わかりにくくてすいません。

365 名前:login:Penguin mailto:sage [04/08/05 00:11 ID:UYjeE7ll]
>>362
なんか、あさっての方向に走ってないか?
- poll() したいなら poll() を実装する
- イベント待ちをしたいread()だろうがioctl()だろうがかまわず待て

やりたいことを確認したほうがいいぞ。
- なにをどう待ちたい?
- 付加的にやりたいことは何?

後者は、
> なぜioctlかと言うと、ユーザデータをデバドラに渡したい(アドレスのチェック)からです。
がわからんかったって話。


366 名前:login:Penguin mailto:sage [04/08/05 00:11 ID:UYjeE7ll]
あうあ
- - イベント待ちをしたいread()だろうがioctl()だろうがかまわず待て
+ - イベント待ちをしたいなら、read()だろうがioctl()だろうがかまわず待て


367 名前:login:Penguin mailto:sage [04/08/05 00:45 ID:CMe3HEND]
大丈夫か!? >>364よ!!
がんばれよ! 見守ってるからさ!

368 名前:login:Penguin [04/08/05 12:51 ID:dMydmJ+4]
書いてあることだけじゃいまいち要領を得ないが

アクセス待ち、アクセス完了まで時間がかかる、排他処理が必要である
ようなデバイスで

・ノンブロックでアクセス処理したい
・複数のプロセスから同時にアクセスされる状況に対応したい
・複数のデバイスを一元的に管理したい (リソース管理など)

こんな条件だと勝手に仮定すると
たしかに大きいデバイスドライバを書いて、そこですべて管理するのも
ひとつの解決法ではある。
でもユーザランドでスレッド/子プロセスを使って、ノンブロック処理を
実装することも出来るし、唯一の解でもない。

まぁ、情報が出せないというよりは、状況を理解してないので
うまく説明できないって感じなので、もうちょっと頭を使って
問題を整理してから、もう一回質問するがよかろう

369 名前:login:Penguin [04/10/29 11:01:48 ID:rDkd0V/P]
lsusbだとデバイス名が把握できてるということは、
個々のドライバ部分に問題があって動かないという風に考えてもいいでしょうか?
linux-2.6において
usbcore
uhci_hcd
cdc_acm
という三つのドライバにより動かしたいハードウェアがあるんですが、
cdc_acmをロードしてもうんともすんとも言いません

370 名前:login:Penguin mailto:sage [04/10/31 20:53:26 ID:fFX2rhTr]
.netとかjavaみたいなバイトコードなドライバーでハードウェア
を制御する環境を作るって可能ですか?

371 名前:login:Penguin mailto:sage [04/10/31 21:36:34 ID:uzVMAm7i]
>>369
まあそうでしょうな。
lsusbはハード的につながっていれば見えるし。

>>370
そりゃ作れん事は無いが…
速度が厳しくないかい?


372 名前:login:Penguin mailto:思っただけで、実現する技術が無いので sage [04/11/01 02:36:54 ID:dfNRJQ4+]
>>371
JITなりリコンパイラーなり方法はあるだろうし、全てのドライバーが
速度を必要とするわけじゃないと考えたわけで。部分的にでも・・・と
何にしてもバイナリの非互換性がどうにかならんかなぁと。

カーネル毎にコンパイルはダリ

373 名前:login:Penguin mailto:sage [04/11/01 06:48:36 ID:IqBdvM7D]
>>370
Kernelから呼び出すような仕組みにしても、
Javaで言うnativeなのが無いと駄目じゃない?
レジスタとかメモリ領域さわれないし。
結局そこ(nativeなモジュール)で非互換性が出る気がする。



374 名前:login:Penguin mailto:sage [04/11/01 15:55:17 ID:lkrLxjNC]
>>373
そのへんはバイトコードインタプリタで抽象化すればいいのではないかと。
PCIあたりならかなりの所まで出来そうな気がするなあ。

そういやOpenFirmwareなんてのがあったのう…あれはForthだっけ?


375 名前:login:Penguin mailto:sage [04/11/01 22:34:23 ID:dfNRJQ4+]
成るほど・・・
>>373
やっぱりそういうところで不備が出てきますか。。。言語拡張で・・・となると
Javaじゃなくなるし、コンパイラーも自前に用意しなきゃならなくなるし。。。

>>374
漏れもそんな感じの考えでいたんだけど、やっぱそれが難しいんでしょうね。
とはいえ、可能性があることはわかりました。ありがとうございます。
>>OpenFirmware
調べてみましたが上の考えのBIOS版みたいなもんでしょうか?

とりあえず、神が現れることを祈りつつ作れる作れない、作る作らないは別として
自分でも調べてみようと思います。厨の妄想に付き合っていただきありがとうございました。

376 名前:login:Penguin mailto:sage [04/11/02 12:28:29 ID:lgEgFui9]
カーネルのバージョンによってカーネルが持つ構造体が微妙に違うことがよくある。
(メンパが増えてるとか)

現状のinsmodによるデバイスドライバのダイナミックリンクは
その手の構造体の違いを解決してくれないので、原則的に
カーネルバージョンに依存したドライバしかリンクできない。

強制的に違うバージョンのドライバをinsmodすることも可能だが
正常に動く保証はない。たまたま動くことはあるけれども。

377 名前:login:Penguin mailto:sage [04/11/02 18:53:41 ID:chaRCRYs]
まあソース見て「あーこれなら動くな」と思ったら
迷わず-f

378 名前:login:Penguin mailto:sage [04/11/03 13:41:27 ID:1PHyje+L]
ドライバのソースがあるならリビルドする方がいいような気がするのう。
いっぱいコンパイラに怒られたりすると直す気が失せるが…


379 名前:login:Penguin mailto:sage いやしかし勉強になる。。。 [04/11/06 23:30:41 ID:9J0OxvoL]
>>376
なるほど。JAVA云々無しにしてもやっぱカーネルとは別離すべきなのかも。
いや、マイクロ・モノリシックの話じゃなくて仕様的なものを。moduleの管理も
こんなんでいいの?って気もするし。Xもドライバー持ってるってのがよくわから
んし(嫌味とかじゃなくて本当にわからんのです。)

って偉そうな事言っててもしょうがないな・・・たまにはソースぐらい読もう・・・

380 名前:login:Penguin mailto:sage [04/11/07 08:11:19 ID:/P0s9FI4]
>>636 > 昨日Linuxにふれたものですから
であり、(非常に一般的なやりかたにもかかわらず)やりかたがわからないとい
う人が tamagoをいれたい理由はなにかしら?
特に強い理由がないなら、「いれるな」が正しいガイドだと思うのですよ。

>>635
つかいかたは man xmodmap でみるといい。
キーコードは xev で調べられます。使いかたは man xev でみるといい。


381 名前:login:Penguin mailto:sage [04/11/08 12:46:18 ID:ir5Tmuq8]
Xサーバはroot権限のユーザランドプロセスで /dev/ioとか /dev/memに
直接アクセスしてビデオチップを制御する。
Xのドライバといわゆるデバイスドライバとは動作メカニズムがまったく違う。

382 名前:login:Penguin mailto:sage [04/11/09 23:51:44 ID:+nDFjkMc]
ユーザ空間からmmapでマッピングしてデバイスいじくるときって、
アプリがマッピング先のメモリに書き込む動作と同時に
デバイスにデータって書きこまれるんでしょうか?
バッファリングみたいのって気にしなくてもいいの?

383 名前:login:Penguin mailto:sage [04/11/10 01:00:51 ID:8UeNJl+2]
>>382
デバイスをmmapしてアクセスするときは、単にMMUがそこを指しているだけで、
ディスク上のファイルをmmapしたときのようなバッファリングはありませんよ。
類似のがある場合はあって、それはキャッシュなのです。
/dev/fb* は通常キャッシュが抑止されています。
/dev/mem は O_SYNCでopenしてやるとキャッシュを抑止します。





384 名前:login:Penguin mailto:sage [04/11/10 07:34:29 ID:WP1ExQ+t]
PCIデバイスの場合 各共有メモリ空間ごとにprefetchableビットが定義されている
ほとんどのPCIカードはprefetchableがdisableになっておりキャッシュ無効になってる

385 名前:login:Penguin mailto:sage [04/11/10 14:40:19 ID:OHaab6bm]
>>383
>>384
CPUキャッシュですか。
環境にもよるのでしょうけど、基本的にはあまり気にしなくてもいいのですね。
実は、drivers/char/mem.c みたんですけど、mmap システムコールを呼んだときと、
そこにアクセスした時のコードの流れがよくわからないのでちょっと???でした。

あとは、コンパイラのオプティマイズも気にしておいたほうがいいのでしょうね。

386 名前:login:Penguin mailto:sage [04/11/10 18:01:50 ID:MrVsce1+]
>>385
CPUキャッシュはユーザー空間から叩く手段がないので、
カーネルとハードウエア側の制御にお任せするしかないです。

最適化の方はvolatile付けておけば大丈夫でしょう。
なにもしないと最近のコンパイラは賢すぎてとんでもないことをやってくれますからな。


387 名前:login:Penguin mailto:sage [04/11/10 23:54:53 ID:8UeNJl+2]
>>385
キャッシュは気にしてください。キャッシュがあると
. 書き込みがキャッシュが溢れるまでなされない。
. 読みだしも同様。
. 同一ラインにのる近隣のレジスタがいっしょにアクセスされちゃう
という、デバイスの制御にとっては致命的なことがいろいろ。


388 名前:382 385 mailto:sage [04/11/11 00:27:04 ID:95L6p31P]
すみません。
キャッシュを気にししなくてもよいと書いたのは、
キャッシュが働かないので、気にしなくても良いという意味で
書いていました。

387さんのおっしゃるとおり、デバイスアクセスでキャッシュが
働いてしまうと、ひどい目にあいますね。

ところで、mmapのキャッシュ無効化ってmem.cの
noncached_address を修正すれば有効無効をユーザで
任意に操作可能になるんですかね?
ハードやBIOSでキャッシュ関係の細工が何かあったりしたらだめなのかもしれませんが。




389 名前:login:Penguin mailto:sage [04/11/12 00:12:24 ID:nxDtrzpb]
>>388
抑止の方は O_SYNC でできますよ。その行の後半の条件がそうでしょ?


390 名前:login:Penguin [04/11/14 11:26:16 ID:ZhMJfRu+]
USBサブシステムを読んでいるんですが、
デバイス、バス、ドライバの三つの関係のイメージを
教えてください。なんだかソース読んでいてもよく分かりません。

またxxx_probeという関数に渡ってくるstruct usb_interfaceとは
どこで確保されいてる構造体なんでしょうか?

391 名前:login:Penguin [04/11/21 11:06:40 ID:RzBM8DsM]
technokitのUSB-IOをFedora Core 3に接続したら、/dev/hiddev0が勝手にできたので、
これに対しCでプログラムを作って、
fd = open("/dev/hiddev0", O_WRONLY);
して、
write(fd, command, 8);
した。commandは0x01FF00000000。けど全然反応が無い。

USB-IOのエンドポイント0には、0x01FFを送ったら、ポート0が反転するはずなんだけどなあ。
hid使わずに、ちゃんと専用ドライバ使わないとだめなの?

392 名前:login:Penguin mailto:sage [04/11/21 17:22:45 ID:fkgrUhvM]
デバイスドライバはカーネルメモリを消費するらしいのですが、
現在のカーネルメモリーの残量を知るにはどうしたらよいですか?

393 名前:391 [04/11/21 17:37:11 ID:RzBM8DsM]
>390 /usr/include/usb.h



394 名前:login:Penguin mailto:age [04/12/12 18:20:03 ID:fch5Qtg6]
Linuxデバイスドライバの勉強を始めました。
がまずは、オライリーの本で解説してる、
サンプルコードから入ろうと思ったんですが、
asm/system.hをincludeしているコードは、

/usr/src/linux/include/asm/system.h: 関数 `__set_64bit_var' 内:
/usr/src/linux/include/asm/system.h:190: 警告:
dereferencing type-punned pointer will break strict-aliasing rules

と警告を出されてしまいます。
同じ現象に遭遇した香具師いませんか?
コンパイラはgcc3.3、kernel2.4.26。
ちなみに、警告された部分は、
#define ll_low(x) *(((unsigned int*)&(x))+0)
#define ll_high(x) *(((unsigned int*)&(x))+1)

static inline void __set_64bit_var (unsigned long long *ptr,
unsigned long long value)
{
__set_64bit(ptr,ll_low(value), ll_high(value)); //190行目
}


395 名前:394 mailto:sage [04/12/12 18:22:17 ID:fch5Qtg6]
あ、マシンは i686です。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<265KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef