1 名前:login:Penguin [02/01/31 01:14 ID:t3s191ys] ディバイスドライバの改造、製作にまつわる情報交換、質問、 噂話、ぐち、政治、経済に関するスレです。できる限り生産的にいきましょーや。
167 名前:開発メモ mailto:sage [03/04/14 14:29 ID:Y6l/xCVk] Warning: loading module.o will taint the kernel: no license がでたときは、 #include <linux/module.h> MODULE_LICENSE("GPL"); printk の出力はdmesgで見ることができる。
168 名前:login:Penguin mailto:sage [03/04/14 22:12 ID:ktmIntrh] >>160 こんなんが参考になるかも・・・ www-online.kek.jp/~yasu/Kenshu/usb-driver.html >>167 > printk の出力はdmesgで見ることができる。 cat /proc/kmsg としても見れます。 カーネルバッファにメッセージが追加される度にコンソールに表示されます。 でも表示内容の文頭に <4> というようなログレベルが付いてまうけど・・・
169 名前:login:Penguin mailto:sage [03/04/16 10:03 ID:Rj9RiWI4] #define MODULE #include <linux/module.h> int init_module(void){ printk("<1>こんにちは\n"); return 0;} void cleanup_module(void){ printk("さやうなら\n");} を gcc -c hello.c でコンパイル insmod ./hello.o で組みこもうとすると ./hello.o: Note: modules without a GPL compatible license cannot use GPLONLY_ symbols というメッセージがでます。 カーネルのバージョン管理だと小間生のですが、カーネルの再構築をせずにすり抜ける ことは不可能でしょうか?
170 名前:山崎渉 mailto:(^^) [03/04/17 11:54 ID:KRn99/cy] (^^)
171 名前:login:Penguin mailto:sage [03/04/18 01:19 ID:HcWYqirI] >>169 >>167 ?
172 名前:山崎渉 mailto:(^^)sage [03/04/20 06:14 ID:xFRXxEWb] ∧_∧ ( ^^ )< ぬるぽ(^^)
173 名前:login:Penguin [03/04/21 11:26 ID:dxqbEfvS] insmod test.o をするとこんなエラーがでます。 どんなライブラリをリンクすればいいのでしょうか? ./test.o: unresolved symbol remap_page_range ./test.o: unresolved symbol __wake_up ./test.o: unresolved symbol schedule ./test.o: unresolved symbol kmalloc ./test.o: unresolved symbol vfree ./test.o: unresolved symbol usb_deregister ./test.o: unresolved symbol video_register_device ./test.o: unresolved symbol remove_wait_queue ./test.o: unresolved symbol video_unregister_device ./test.o: unresolved symbol usb_free_urb ./test.o: unresolved symbol usb_alloc_urb ./test.o: unresolved symbol usb_register ./test.o: unresolved symbol __pollwait ./test.o: unresolved symbol kfree ./test.o: unresolved symbol usb_string ./test.o: unresolved symbol add_wait_queue ./test.o: unresolved symbol usb_submit_urb ./test.o: unresolved symbol usb_control_msg ./test.o: unresolved symbol __vmalloc ./test.o: unresolved symbol printk ./test.o: unresolved symbol usb_set_interface ./test.o: unresolved symbol vmalloc_to_page ./test.o: unresolved symbol __generic_copy_to_user ./test.o: unresolved symbol usb_unlink_urb
174 名前:login:Penguin mailto:sage [03/04/21 11:35 ID:TzNUZhnB] >>173 カーネルのバージョンとtest.cがわからないとちゃんと答えられない
175 名前:login:Penguin mailto:sage [03/04/21 11:37 ID:65INoG+s] >>173 find ライブラリのありそうなパス -exec grep -l "remap_page_range" {} \; とかやってみるとか?
176 名前:login:Penguin mailto:sage [03/04/21 12:03 ID:UyUiMYQq] >>173 MODVERSIONSでせう。 test.cコンパイルするときに-DMODVERSIONSつけてみ。 当然includeはカーネルと同じものを使うこと。
177 名前:173 [03/04/21 12:48 ID:dxqbEfvS] カーネルは、2.4.20 です。 ソースはこれです。usbカメラのドライバです。 www.smcc.demon.nl/webcam/pwc-8.10.tar.gz このソースの *.c を INCLUDEDIR = /usr/src/linux/include/ CFLAGS = -O2 -DMODULE -D__KERNEL__ -static -Wall -Wstrict-prototypes -DMODVERSIONS -I$(INCLUDEDIR) -DEXPORT_SYMTAB でコンパイルしてできた、*.o を、 ld -o test.o -r ./*.o でリンク。insmod test.o で、173のメッセージがでます。 ROM化されたカーネルに、モジュールをいれてusbカメラを使えるようにしようと思ったのですが・・・ ちなみに、同じソースをカーネルに組みこめば動作するのは確認しました。
178 名前:login:Penguin mailto:sage [03/04/21 19:06 ID:UyUiMYQq] >>177 そのカーネルの.configは? CONFIG_MODVERSIONS=nのときに-DMODVERSIONS付けても同じ事になったような気がするが。
179 名前:うまうま mailto:sage [03/04/22 01:26 ID:0SpJ1zOH] >>177 お馬さん本2巻目の 「11.3.1 モジュールでバージョンサポートを使う」 「11.3.2 バージョン付きシンボルのエクスポート」 あたりをみたらどうよ? サンプルコードもあったよ 健闘を祈る!
180 名前:177 [03/04/23 19:22 ID:TY1i8cop] みなさん、ありがとうございます。 --static を外したら、うまく出来ました。 >>178 組込みのLinuxなんですが、開発元がソースをよこしてくれないので不明です。 GPL的にいいのだろうか・・・
181 名前:login:Penguin [03/04/23 21:19 ID:DUkd9IIg] linkあげ ・カーネル2.6のドライバ・モデル ttp://japan.linux.com/kernel/03/04/14/0833230.shtml
182 名前:login:Penguin [03/04/24 12:36 ID:LW5TaSjX] Linux で USB制御とかを学ぶのに便利な電子工作キットのおすすめってありません? できるだけ安いの。
183 名前:うまうま [03/04/25 12:03 ID:HCQr+NWK] >>182 モルフィー企画のUSBキットはいかが? www.morphyplanning.co.jp/ 確かLinuxドライバを開発しているサイトがあった気がする。
184 名前:bloom [03/04/25 12:26 ID:1KQi+Ees] homepage.mac.com/ayaya16/
185 名前:login:Penguin [03/05/02 11:48 ID:LZsBxbHZ] USB デバイスを/dev 以下のデバイスノードに割りあてるにはどうすればいいのでしょうか? 馬本を見ながら、 devfs = devfs_mk_dir(NULL, "matsu", NULL); if(!devfs) return -EBUSY; devfs_register(devfs, "nt401", DEVFS_FL_AUTO_DEVNUM, 0, 0, S_IFCHR | S_IRUGO | S_IWUGO, &scull_fops, sampleDevice ); とやっているのですが、indmod すると Hint: insmod errors can be caused by incorrect module parameters, including invalid IO or IRQ parameters IOやIRQはどこからとってくればいいのでしょうか?
186 名前:login:Penguin mailto:sage [03/05/02 12:21 ID:5kcklCyp] >>183 モルフィー企画は、5/1 千葉地裁に破産申し立てを行った模様。 やっと終わったようですね、夢が・・・
187 名前:login:Penguin mailto:sage [03/05/02 13:17 ID:8SKdq5Sf] >>185 それはモジュールの初期化に失敗した時のメッセージでつ。 だまされないように。
188 名前:login:Penguin mailto:sage [03/05/02 14:02 ID:fxkN+fN8] >>185 それは、init_moduleがretun 0;以外で終了した場合のメッセージですよ。 普通、デバイスが見付からないときは -ENODEVとかでかえすでしょ? 返り値を確認汁。 ISAのデバイスでは、IOとかIRQの設定が違うと見付からないことが多いので、 insmodが、ヒントのために、IOとかIRQはどうよ? って書くことになってるだけ。
189 名前:185 [03/05/02 14:12 ID:LZsBxbHZ] >>187 >>188 ありがとうございます。 probe の処理のところへ devfs 関係の処理を移したらinsmod できるようになりました。
190 名前:login:Penguin mailto:sage [03/05/02 14:25 ID:fxkN+fN8] あぁ、すまん。よく読まずに答えた。USBなのね。 USBの場合は、usb_driver.probe() が NULL で帰った時がそのエラーですね。 で、probeのところでdevfs関係やるので正解です。
191 名前:login:Penguin [03/05/02 15:56 ID:gUkzFRNW] モニタのドライバディスクっていうのはあるんでしょうか? 当方モニタを認識できないのですが・・・。
192 名前:login:Penguin mailto:sage [03/05/02 17:25 ID:MBGKHtnA] >>191 周波数や解像度を設定すれば済むだろ。
193 名前:185 [03/05/02 18:18 ID:LZsBxbHZ] >>190 insmod はできるようになったのですが、devfs関係の処理がうまくいきません。 devfs_mk_dir と devfs_register がNULL しか返さないのですが・・・
194 名前:login:Penguin mailto:sage [03/05/02 18:33 ID:ntJpWIhT] >>193 カーネルがまずい
195 名前:185 [03/05/02 19:13 ID:LZsBxbHZ] >>194 了解っす。さっそく、カーネルを再コンパイルします。
196 名前:ドライバ初心者 [03/05/07 14:44 ID:8SxzL6UK] ううう、USB器機との通信方法がよくわからん。 0x07 を送ると 0x1f を返すというUSB器機との通信でどうやるの? キャラクタデバイス作って、それをread, write するでいいの?
197 名前:bloom [03/05/07 15:13 ID:dAUH81mE] homepage.mac.com/ayaya16/
198 名前:login:Penguin mailto:sage [03/05/07 18:18 ID:xHs+a1Ja] >>196 ??? どのレベルでわからないんだろう。ユーザアプリから機器を操作するのは、 すべからくデバイスドライバを通してopen/close/read/write/ioctl 等です。 でも、0x07 を送ると 0x1fを返すとうUSB機器なら、デバドラいらないじゃん。っ ていうか、機器もいらないじゃん。「0x07を送ると0x1fを返す」ダミーの関数 かませればいいじゃん。たぶん、その質問はなにか省略しすぎで返事がしにくい。
199 名前:ドライバ初心者 mailto:sage [03/05/07 23:02 ID:Sh0BeBWS] >>198 分かりにくくてすいません。 USB機器に、データ確認コマンド(0x07のバイト列)を送る。 USB機器にデータがあるなら、(0x01)が返ってくる。 (0x01)が返ってきたのを確認したら、データ取得コマンド(0x0a)を送る。 USB機器からデータ(20バイト)が返ってくる。 上記の仕様で、USB機器にバイト列を送ったり、USB機器が返すバイト列を受け取るにはどうすればいいのかが分からないのです。 urb構造体を使うのでしょうか?
200 名前:login:Penguin mailto:sage [03/05/07 23:47 ID:ppjtoJvG] >>199 USBのドライバは書いた事ないのでアドバイス出来んが、 ttp://www.narimatsu.net/nari_page/musbio.html にあるドライバが多分近いので、読んで見ると参考になるかも。
201 名前:login:Penguin mailto:sage [03/05/08 02:33 ID:XzMiCqqd] >>199 なんか、道が遠いな。がんばれー。 > urb構造体を使うのでしょうか? まぁ、正解なんだけど。なにしろ最終的には全部usb_submit_urb()だから... 実際には usb_bulk_msg()とか、その類を使うの。 その前に基本設計。ハンドシェイクのようなものがあるのよね。それをどうする? ドライバを一番簡単にするなら、ドライバは、ただデータの横流しをするだけにして、 ハンドシェイクをアプリにさせたらいい。 アプリが /dev/それ をopenして アプリが 0x07をwriteして アプリが readでまって、0x01がかえったら アプリが 0x0aをwriteして アプリが readする これが一番簡単だろ。ドライバのデバッグより、アプリのデバッグのほうが簡 単だから、ドライバを簡単にするのは意味がある。 もし、これにするなら、カーネルに標準でついてるdrivers/usb/scanner.c を 参考にしたらいい。はっきりいって、本当に横流ししかしないドライバなので、 参考にして書き直す必要スラなくて、idさえ指定すればスキャナじゃなくても ナンデモ操作できます。おすすめ。 あ、でもclose/unloadあたりでのリソースの解放順序にバグがあるので、気を つけてね。
202 名前:ドライバ初心者 [03/05/08 18:46 ID:01Q6DwzH] >>200 >>201 アドバイスありがとうございます。 非常に助かりました。 とりあえず、morphy と scanner の両方をコンパイルして試してみました。 morphy の方は、何とかデバイスをopenできるように改造できました。 scannerの方は。 カーネルがdevfsを使えないのと、今回のUSB器機からendpoint の取得がうまくできないようです。 /dev/usb のスペシャルファイルの取得はmorphy を参考に、read write はscanner を参考に、 ハンドシェイクは >>201 の方法でやってみます。
203 名前:ドライバ初心者 [03/05/09 19:55 ID:ye3nMZo+] open,close,probe,disconnect はうまく動くようになりました。 read の実装に入ったのですが、 usb_bulk_msg で #define RD_NAK_TIMEOUT (10*HZ) usb_bulk_msg(dev, usb_rcvbulkpipe(dev, endpoint), buffer, 20, &partial, RD_NAK_TIMEOUT); usb_rcvbulkpipe へ渡すパラメータの endpoint にはどんな値を渡せばいいのでしょうか? lsusb で以下のように表示されている 2 とかでいいのでしょうか? bEndpointAddress 0x02 EP 2 OUT scanner.c のソースを読むと、1,2,3, のどれかの値が入るようなのですが・・・
204 名前:login:Penguin mailto:sage [03/05/09 23:43 ID:ZjYTJvxM] >>203 相手側の仕様にあわせてください。 仕様書ぐらいあるよね?
205 名前:ドライバ初心者 mailto:age [03/05/10 00:57 ID:5c13M/Uv] >>204 それが、>>201 に書いたようなコマンドのやりとりのはしご図しかありません。
206 名前:login:Penguin mailto:sage [03/05/10 18:30 ID:+67eyGUg] >>205 たぶん、1にかいて、2を読むんだとおもうけど、そんな状態でコーディングを すすめちゃだめです。仕様書をもらって、それをもとに設計してから書くの。
207 名前:うまうま mailto:sage [03/05/11 02:10 ID:sP9foAmw] >>203 ひょっとして未公開プロトコルをハックしてlinux用にドライバ 作ってんの? lsusbの表示について デバイスからデータを読むためのエンドポイントは IN になって いるはずだよ。そのようなエンドポイントがひとつしかないなら その番号でOKだと思う。 逆に、デバイスへデータを書き込むためのエンドポイントは OUT そのターゲットデバイスにはエンドポイントが複数あるっぽいけど、 それだったらコマンドやりとり時、どのエンドポイントが使われて いるのか調べる必要がある。
208 名前:206 mailto:sage [03/05/11 02:28 ID:+b1ggx7/] あう。よく読まず1,2を逆にかいてしまいました。つことで>>206 に惑わされないで2がOUTね。>>205
209 名前:ドライバ初心者 mailto:age [03/05/12 22:03 ID:fBjjjcco] >>206 組み込み用のLinuxにUSB機器をつなげてアレコレしようという計画がありまして。 ところが、社内でC言語の経験があるのは私だけ。とりあえず研究開発名目で、USBドライバを 作ってみろと白羽の矢が立ちました。 うまうまさんのアドバイスでwriteができるようになりました。ありがとうございました。 あとはreadだけです。
210 名前:ドライバ初心者 [03/05/15 18:21 ID:QUGfuS7s] read するとタイムアップになってしまう・・・。何が悪いのでしょうか。 キューのクリアとか必要ですか?
211 名前:login:Penguin mailto:sage [03/05/16 16:21 ID:yZKduc9i] 初歩的な質問ですみませんが、導師のみなさま、お導きを。 write()されたデータを一時的に保持して、次のread()で保持した値を返す ようなキャラクタデバドラがあるとします。 アクセスする側が単独のプロセスの場合、実装は簡単ですが、複数のプロセスが 上記デバドラにアクセスする場合はセマフォを使っての排他制御が必要となります。 これをアクセス側にセマフォを設けないで、上記デバドラ側で同等の機構を 実現するにはどのように実装すればいいのでしょうか?
212 名前:login:Penguin mailto:sage [03/05/16 16:44 ID:0mzALYCZ] >>211 プロセス別にキューを持てばいいんでは? openされたら新しいキューを割り当てて、 closeされたら開放。
213 名前:211 mailto:sage [03/05/16 18:32 ID:g3wElzO+] >>212 では、同一プロセスの複数スレッドまで考慮しなければならない場合、 どうすればいいのでしょうか?
214 名前:212 mailto:sage [03/05/16 19:18 ID:0mzALYCZ] >>213 スレッドじゃなくても、二つ以上開いたら破綻しますな。 →お手軽コース:1回だけオープンできるようにする。 →まじめに作る:複数キューを持てるようにする。file.private_dataにキューのポインタ入れるのが簡単かな? というところで。
215 名前:うまうま mailto:sage [03/05/17 03:23 ID:WAKxeCTB] >>210 readしたとき、とりあえず何バイトか読み出してる? デバイスが返しうるバイト数よりも多く読み出そうとして待ち 続けているという可能性はない?
216 名前:ドライバ初心者 mailto:age [03/05/18 01:04 ID:2usiGwhL] >>215 >readしたとき、とりあえず何バイトか読み出してる? その通りです! すっと、返されるはずのバイト数よりも多いバイト数で読み出していました! 今はハードが手元に無いので月曜日に試してみます。ありがとうございました。
217 名前:動画直リン [03/05/18 01:11 ID:pMLvChGr] homepage.mac.com/hitomi18/
218 名前:login:Penguin mailto:sage [03/05/18 21:07 ID:sDNMC/v5] 猿でもわかるように書かれたデバドラ作成解説ページってある?
219 名前:ドライバ初心者 mailto:sage [03/05/19 19:00 ID:r7lftq4x] >>215 タイムアウトは無くなりましたが、こんどはusb-uhci.c 内でエラーになってしまいました。 /proc/kmsg の出力は usb-uhci.c: ENXIO c0010200, flags 0, urb de96cbe0, burb de96cbe0 usb_bulk_msg の使い方がまずいのでしょうか・・・ usb_bulk_msg(scn->dev, usb_rcvbulkpipe(scn->dev, M_READ), ibuf, count, &partial, RD_NAK_TIMEOUT); USBデバドラ開発に役立ちそうなページ usb.c File Reference www.atomised.org/docs/linux-2.4.19-drivers/usb_8c.html
220 名前:login:Penguin mailto:sage [03/05/19 19:13 ID:Q6lDTR8l] >>218 デバドラの前に、まずはRFC2795から行ってみよう。
221 名前:login:Penguin mailto:sage [03/05/19 22:53 ID:808Vam9H] >>220 英語読むのめんどくせ 猿にハムレット歌わせるんだっけ?
222 名前:ドライバ初心者 mailto:sage [03/05/20 18:31 ID:oatjLeiG] >>219 は私のバグでした。 しかしながら。タイムアウトは解決しないままです。 Windows用のドライバではちゃんと読みこめているようなのですが・・・ lsusb で 下のようにでているのと関係があるのか・・・ unknown descriptor type: 05 24 00 10 01 unknown descriptor type: 04 24 02 06 unknown descriptor type: 05 24 06 00 01 unknown descriptor type: 05 24 01 03 01
223 名前:山崎渉 mailto:(^^) [03/05/22 01:55 ID:p4opmoqv] ━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―
224 名前:ドライバ初心者 mailto:sage [03/05/22 16:32 ID:7jvNN9yz] >>222 仕様書のコマンドが入れ換わっていた!というわけで自己解決しますた。 north.hokkai.net/~nsawa/piece-lab/usb/20011231.html ここのソースも参考にして完成です。アドバイスをくれたみなさん、あ りがとうございました。
225 名前:login:Penguin [03/05/27 12:06 ID:VgmJadOg] あまりにも便利なので上げさせてください
226 名前:login:Penguin mailto:sage [03/05/28 14:11 ID:2En7vxAz] insmod するとこんなエラーが出てきたのですがどうすればいいでしょう? couldn't find the kernel version the module was compiled for
227 名前:山崎渉 mailto:(^^) [03/05/28 16:42 ID:3t6i6zxR] ∧_∧ ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。 =〔~∪ ̄ ̄〕 = ◎――◎ 山崎渉
228 名前:login:Penguin [03/05/28 16:55 ID:3qAfQe3K] >>226 そのドライバを今のカーネルでコンパイルし直してください。 もしくは -f オプションで insmod してください。なんちって
229 名前:login:Penguin mailto:sage [03/05/28 23:40 ID:z1beycbb] >>226 なにをいれた? 「実はモジュールじゃない」ってときもそれ。
230 名前:226 mailto:sage [03/05/29 18:33 ID:FeUqO3hy] >>228 >>229 MIPS で動いているLinux に、Redhat7.2 のUSBデバイスドライバです。 ソースのコンパイルはちゃんと通るのですが。 あと、Hello World を出力するだけのデバドラの動作は確認済。
231 名前:login:Penguin mailto:sage [03/05/29 21:59 ID:5gpS9IGq] >>230 archがあってないとか。 $ file vmlinux $ file そのモジュール の結果を見てみたい所ですね。
232 名前:226 mailto:sage [03/05/30 10:13 ID:Mg17snq6] >>231 $file vmlinux ./vmlinux: ELF 32-bit LSB mips-2 executable, MIPS R3000_LE [bfd bug], version 1, statically linked, not stripped $file test.o ./test.o: ELF 32-bit LSB mips-2 relocatable, MIPS R3000_LE [bfd bug], version 1, not stripped
233 名前:login:Penguin mailto:sage [03/05/31 15:40 ID:pCrUKetP] >>232 あってるねえ。謎だなあ。 init_moduleがエラーを返してるって事はないよね?
234 名前:226 mailto:sage [03/06/02 11:33 ID:O0kbkjww] >>233 cc に渡すパラメータに -DCONFIG_MODVERSIONS を付け加えたら無くなりました。 ところが今度は、insmod するとこんなエラーが・・・ ./test.o: unresolved symbol _gp_disp ./test.o: Note: modules without a GPL compatible license cannot use GPLONLY_ symbols _gp_disp はどこのライブラリにあるのでしょうか?
235 名前:login:Penguin mailto:sage [03/06/03 01:50 ID:iocW6lsY] >>234 そんな関数見たことないなー。 別なモジュールに依存してるとかないの? カーネル絡みはlibgcc以外のライブラリ使わないよ。
236 名前:コピペ mailto:sage [03/06/03 13:33 ID:9FZ3sCry] (゚∀゚) ? Insmod が _gp_disp シンボルが未定義だと文句を言います (゚∀゚) ! _gp_disp は MIPS の PIC コード中で使われているマジックシンボルです。 このエラーは、システムをクラッシュから救ってくれたため、むしろ有り難いものです。 この場合の問題の要点は、カーネル作成時の Makefile のオプションと、 カーネルモジュール作成時のオプションは同じにすべきだということです。 特に、オプション -mno-pic -mno-abicalls -G 0 が重要です。
237 名前:login:Penguin mailto:sage [03/06/03 13:34 ID:9FZ3sCry] まあなんか知らんけどgoogleって便利ってのはわかった 意味まではわかんないけど
238 名前:login:Penguin mailto:sage [03/06/03 14:40 ID:iocW6lsY] >>236 へぇ、MIPSのPICは変わっていると聞いたことがあるが… そんな事もやってるのか。 ひとつ賢くなったような気がする。
239 名前:() mailto:sage [03/06/03 18:52 ID:U5Cecnio] Windowsで動いているUSBデバイスドライバを、Linux へ移植しようとしています。デバイスの認識、open, write, close はうまく出来ているようなのですがreadがうまく行きません。 -75 のエラーが usb_bulk_msg() から返って来ます。-EOVERFLOW のエラーのようです。 ところが、一度、Windowsに認識させてから、そのデバイスをLinux につなぎ直してreadするとうまく行きます。 何らかの初期化をしているようなのですが、Linux ではどのようにすればいいのでしょうか? sniffer Tool の出力には 0000027510:31:13>>>>>>> URB 4 going down... 0000027610:31:13-- URB_FUNCTION_CLASS_INTERFACE: 0000027710:31:13 TransferFlags = 00000000 (USBD_TRANSFER_DIRECTION_OUT, ~USBD_SHORT_TRANSFER_OK) 0000027810:31:13 TransferBufferLength = 00000008 0000027910:31:13 TransferBuffer = 81406fd0 0000028010:31:13 TransferBufferMDL = 00000000 0000028110:31:13 0000028210:31:13 0000: 0000028310:31:13 80 0000028410:31:13 25 0000028510:31:13 00 0000028610:31:13 00 0000028710:31:13 00 0000028810:31:13 02 0000028910:31:13 08 0000029010:31:13 00 0000029110:31:13 0000029210:31:13 UrbLink = 00000000 0000029310:31:13 RequestTypeReservedBits = 00 0000029410:31:13 Request = 20 0000029510:31:13 Value = 0000 0000029610:31:13 Index = 0000 とでていたので、usb_ctrl_msg()を使うのかと思ったのですが。 #define EPIPE32/* Broken pipe */ のエラーを返してしまいます。どうやればいいのでしょうか? ちなみにチップは、日立の38K0です。
240 名前:login:Penguin [03/06/04 10:07 ID:RzUG7kJc] デバドラ開発超初心者です。 誰か教えてちょーだい!! カーネルモジュールでぬるぽ等による例外が起きてoopsが出た後って リブートしなくちゃいけないの? rmmodするとリソースbusyと言われて出来ないし。 簡単にやり直せる方法はないのでしょうか? kdbとかを使うと出来るのでしょうか? 小さなドライバなので出来ればprintkだけでデバッグ 済ませてしまいたいです。
241 名前:login:Penguin mailto:sage [03/06/04 15:22 ID:miGkoc0u] >>240 su して、 reboot これが最速。
242 名前:login:Penguin mailto:sage [03/06/04 15:58 ID:YRPx8Qpb] >>240 MOD_INC_USE_COUNTしなければ、rmmodできるはず。 Oops食らったまま動かし続けるのは気持ち悪すぎるが。
243 名前:240 [03/06/04 18:14 ID:RzUG7kJc] >>241 >>242 さん、ありがとうございます。 MOD_INC_USE_COUNT、MOD_DEC_USE_COUNTを空に 再定義してみました、単純なミスとかで他のメモリ 領域に影響なさそうであれば、これで切り抜けよう と思います。 危なそうな場合は、やっぱりrebootですね。
244 名前:うまうま mailto:sage [03/06/04 23:56 ID:yoK8ZXbv] >>239 ドライバの移植?なかなかおもしろそうだね read, writeのコマンドシーケンスは合ってる? ひょっとして、readする前にデバイスに対し的確なコマンドを writeしてあげないといけないのでは? そのsnifferログは、OSから8バイトのデータをデバイスに送っている 点や、URB番号が若い点からして、USBデバイスからディスクリプタを 読み出そうとしているところと見た。それはWindowsでもLinuxでもデバイスを 繋いだらUSBホスト側が自動的に行う部分。いわゆる初期化処理。 今回のreadできない問題に関係あるとは思えないな。
245 名前:239 mailto:sage [03/06/09 11:05 ID:FPzn7DZy] >>244 write シーケンスの前にあるこの処理が妖しいとは思うのですが、Linux でどうやって実現したらいいのか・・・ 0000037010:31:29>>>>>>> URB 7 going down... 0000037110:31:29-- URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER: 0000037210:31:29 PipeHandle = 814d7b1c 0000037310:31:29 TransferFlags = 00000003 (USBD_TRANSFER_DIRECTION_IN, USBD_SHORT_TRANSFER_OK) 0000037410:31:29 TransferBufferLength = 00001000 0000037510:31:29 TransferBuffer = 8140c000 0000037610:31:29 TransferBufferMDL = 00000000 0000037710:31:29 UrbLink = 00000000 0000037810:31:29B133TN: m_Endpoint1IN.SubmitUrb status ==> 0000037910:31:290x00000103 0000038010:31:29 0000038110:31:29B133TN: B133TNDevice::Create Status 0000038210:31:290x00000000 0000038310:31:29 0000038410:31:29B133TN: Entering B133TNDevice::Device Control, 0000038510:31:29IRP: Major=0xe 0000038610:31:29 Minor=0x0 Flags=0x30 0000038710:31:29B133TN: Code=0x222000 InputSize=0x4 OutputSize=0x0 0000038810:31:29B133TN: 0000038910:31:29B133TN: Entering B133TNDevice::IOCTL_B133TN_COMMAND_OUT_Handler, 0000039010:31:29IRP: Major=0xe 0000039110:31:29 Minor=0x0 Flags=0x30 0000039210:31:29B133TN: Code=0x222000 InputSize=0x4 OutputSize=0x0 0000039310:31:29B133TN: 0000039410:31:29B133TN: FIFO ReservedDataSize=> 0000039510:31:290x00000000 0000039610:31:29 0000039710:31:29UsbSnoop - IRP_MJ_INTERNAL_DEVICE_CONTROL, IOCTL_INTERNAL_USB_SUBMIT_URB 0000039810:31:29
246 名前:239 mailto:sage [03/06/10 11:06 ID:3w0EVlGb] ttp://www.xlsoft.com/jp/products/windriver/windriver.html ここにある、winDrive の体験版でハードを調査したところ、インターフェースが活性化されていないのが原因のようです。 usb_set_interface() を使えばいいのだろうけど、パラメータがよくわからない。
247 名前:login:Penguin mailto:sage [03/06/13 16:03 ID:pewsS0ej] cat /proc/bus/usb/devices で表示されるインターフェースの中から C:* #Ifs= 2 Cfg#= 1 Atr=c0 MxPwr=100mA I: If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=02 Prot=01 Driver=piece E: Ad=83(I) Atr=03(Int.) MxPS= 16 Ivl= 16ms I: If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=piece E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl= 0ms E: Ad=81(I) Atr=02(Bulk) MxPS= 64 Ivl= 0ms I: If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=piece のデバイスを活性化するにはどうすればいいのでしょうか?
248 名前:247 mailto:sage [03/06/13 18:44 ID:pewsS0ej] ここを読んだら自己解決しますた。 USB通信プログラミングテクニック ttp://www.picfun.com/usb00.html
249 名前:うまうま mailto:sage [03/06/13 22:20 ID:EYuB3skO] >>248 こりゃ使えるサイトだ。日本語でUSBの仕様をここまで説明したサイトって、 他にはないよきっと >>247 に質問! 「活性化」というのがよくわからないから教えてほしい。 cat /proc/bus/usb/devices で >>247 のような表示がされたってことは、 すべてのPIPEがオープンされているものと思ったけど。 結局、このデバイスにはInterfaceが二つあって、USBバス上に 接続したときは Interface 0しか初期化されなかった。その状態で Interface 1のEndpoint 0x81からread()しようとしたが、 まだPIPEがオープンされてないためできなかったということ?
250 名前:login:Penguin [03/06/14 17:46 ID:G+Mtao/F] オイラGPLライセンスだよ〜 と表明するときに書くマクロって どういうやつだっけ?
251 名前:login:Penguin mailto:sage [03/06/14 18:11 ID:1HDS5RSe] MODULE_LICENSE("GPL"); のことかにゃ。
252 名前:login:Penguin mailto:sage [03/06/14 18:13 ID:G+Mtao/F] >>251 (゚∀゚)サンクスコ
253 名前:247 [03/06/16 12:53 ID:bzsTHCID] >>249 そのとおりです。 えーと、いま作成中のドライバを試してみたら解決していませんでした。 Interface 1の初期化ってどうやるのでしょう?
254 名前:247 [03/06/16 17:13 ID:bzsTHCID] 追記:cat /proc/bus/usb/devices の表示は >>247 なのですが、なぜかread が出来ないのです。writeは出来るのですが
255 名前: [03/06/19 18:39 ID:L1S32rBn] 質問です。USB のpipe を reset するにはどうすればいいのでしょうか?
256 名前:中年ハード屋 [03/06/20 00:46 ID:GdrpjdbN] DVDのCSS回路を設計するために、そのCSSの方法を理解するために、 LINUXのide-cdを利用したソフトを書いています。(ライセンス済みです) それで、DVDのディスクキーや内部情報、そして、認証などは出来るのですが、 タイトルキーの取得が出来なくて困っています。 atapiを通したイトルキーの取得で何かしらのトリックがあるのでしょうか? このようなソフトを書く場合に、通常のアプリソフトのように(いまの やりかた)書けば動作するのですか、それともドライバーソフトのように 特殊な方法が必要なのでしょうか? よろしくお願いします
257 名前:login:Penguin [03/06/20 12:05 ID:w5824KTx]
258 名前:login:Penguin [03/07/02 02:02 ID:VujfXoME] (・∀・)renice!
259 名前:login:Penguin [03/07/06 23:29 ID:lEtq+gmE] (・∀・)renice!
260 名前:login:Penguin [03/07/08 15:11 ID:nDf4bQ70] (・∀・)renice!
261 名前:linuxer [03/07/09 01:17 ID:W4/RwfEH] 僕はLinux のethernet のドライバを改造したいデス ふつは通信用途に最適化されてると効きました それはぺケットをみる目的につかいます なにかアイディアはありますか??
262 名前:login:Penguin mailto:sage [03/07/09 01:22 ID:9Ead9bym] tcpdump等の既存のものより詳細にみれなければ意味がない気がするけど大丈 夫なのかしら。
263 名前:_ mailto:sage [03/07/09 01:29 ID:RRaEUYou] homepage.mac.com/hiroyuki44/hankaku09.html
264 名前:login:Penguin mailto:sage [03/07/09 01:48 ID:FD/eKW7A] >>262 石にもよるでしょうねえ。 最近の利口な奴はいろいろ手を入れてくれるし。
265 名前:login:Penguin mailto:sage [03/07/09 13:47 ID:GtKhiIZ8] >>261 現行ドライバだと、どの点が不満なのか言ってもらわないと助言しようがないよ パケットモニタリングはNICチップのpromiscuousモードの仕様に依存する話だ
266 名前:login:Penguin mailto:sage [03/07/10 07:33 ID:sMbuqqa1] >>265 現行のドライバならpromiscuousモードで動かしたときに パフォーマンスがわるいな感じです それでぺケットを取りこぼすことになってしまうので キャプチャ用途に最適化できたらいいなと考えましたです
267 名前:login:Penguin mailto:sage [03/07/10 07:41 ID:oOmBMqv3] >>266 promiscuousモードだと全パケットをホストPCに転送するから 通常モードに比べて取りこぼす可能性は増える。対象のNICチップは何? 素直にintelなり3comを買えば済むだけの話かもよ。 ちなみにリアルテック(蟹)の性能がよくないのは特許を避けてるから。 現状でいいパフォーマンスのNICが欲しけりゃIntel(or元DEC)、3comの ちょっと値が張るNICを買うしかないよ。 ドライバでどうこうできる話ではない