1 名前:login:Penguin [02/01/31 01:14 ID:t3s191ys] ディバイスドライバの改造、製作にまつわる情報交換、質問、 噂話、ぐち、政治、経済に関するスレです。できる限り生産的にいきましょーや。
110 名前:ねここねこ [02/09/27 09:39 ID:2CKrLbeR] >108&109 確かに、物が不明だとわからないですね 物はFPGAというチップ経由で データがやってくるハードのようです 外部のチップからFPGAにある程度データが貯まると IRQをキックして(?)まとめてデータをCPUに対して送ってくるとか 言ってたな、、、 実はハードがまだ出来ていなかったり〜
111 名前:login:Penguin mailto:sage [02/09/27 12:01 ID:Bk3J3OAM] >>110 > 実はハードがまだ出来ていなかったり〜 よくある話。 まだ漠然としているが、画像処理か計測系だね? 割り込み関係と poll、 DMA or mmap? 、PCI?。 まず、このあたりをお馬さんで理解すればよろしいかと。
112 名前:ねここねこ [02/09/30 09:38 ID:ILjZfqgw] >111 >まだ漠然としているが、画像処理か計測系だね? だいたいそんな感じです お馬さん本見てがんばります
113 名前:login:Penguin mailto:sage [02/10/03 20:49 ID:XOS3kDwu] FPGAというチップってあーた
114 名前:ねここねこ [02/10/04 10:18 ID:reYTaTWA] >113 なんか呼び方が変なのでしょうか? FPGAというICが有ると効いたのですが、、、
115 名前:ねここねこ [02/10/04 10:18 ID:reYTaTWA] あと、デバイスドライバ製作の資料になるようなページ Linux PCI デバイスドライバ www.hemamu.com/dev/linux/pci/index.html Programmed I/O (PIO)を用いた簡単なPCIデバイスドライバ www-online.kek.jp/~yasu/Kenshu/pci-device-driver.html Linux Module-HOWTO www.linux.or.jp/JF/JFdocs/Module-HOWTO.html Linuxデバイスドライバ開発ノート www2s.biglobe.ne.jp/~nunokawa/Linux/DD/ Linuxによるロボット制御・デバイスドライバ開発 www.mechatronics.mech.tohoku.ac.jp/~kumagai/linux/ Linux用デバイスドライバの作成 ap.fukushima-iri.go.jp/LinuxDeviceDriver/LinuxDeviceDriveMAIN.htm LinuxデバイスドライバFAQ www-online.kek.jp/~yasu/Kenshu/faq.html エンジニアリングLinux応用技法 カーネル/デバイスドライバ/ポーティング/リアルタイム www.cqpub.co.jp/hanbai/books/522070.htm 色々調べると ロボット系の人が多いような気がします SFに出てくるガレージでオリジナル2足歩行ロボットを作る 時代が来たのかな?
116 名前:login:Penguin [02/10/06 18:35 ID:URuHDkGy] hack! age
117 名前:login:Penguin [02/10/17 21:17 ID:RGYfSOtJ] age
118 名前:login:Penguin [02/12/13 10:20 ID:NJ02XiJx] うおータコがドライバ書くのってやっぱ無理があるなー でも仕事だしがんばるぞーちくしょー
119 名前:IP記録実験 mailto:IP記録実験 [03/01/08 22:12 ID:KwFqEkll] IP記録実験 qb.2ch.net/test/read.cgi/accuse/1042013605/ 1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:??? そんなわけで、qbサーバでIPの記録実験をはじめましたー。 27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc SETTING.TXT管轄でないということは全鯖導入を視野に、か? 38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l >>27 鋭いです。 73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l >ところで、IPが抜かれて何か今までと変わることってあるのでしょうか? ・今までより、サーバが重くなる。 ・裁判所や警察からの照会があった場合にはIPを提出することがある。
120 名前:login:Penguin mailto:sage [03/01/09 01:09 ID:kgNvzzS1] なんとか頑張って下さい>ひろゆき お金は持ってないけど応援します。
121 名前:login:Penguin mailto:sage [03/01/09 01:23 ID:kgNvzzS1] ひろゆきは早起きのし過ぎでちょっと壊れてるな。
122 名前:login:Penguin mailto:sage [03/01/09 01:33 ID:kgNvzzS1] >>532 プ
123 名前:IP記録実験 mailto:IP記録実験 [03/01/09 01:55 ID:AmicprCv] IP記録実験 qb.2ch.net/test/read.cgi/accuse/1042013605/ 1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:??? そんなわけで、qbサーバでIPの記録実験をはじめましたー。 27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc SETTING.TXT管轄でないということは全鯖導入を視野に、か? 38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l >>27 鋭いです。 73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l >ところで、IPが抜かれて何か今までと変わることってあるのでしょうか? ・今までより、サーバが重くなる。 ・裁判所や警察からの照会があった場合にはIPを提出することがある。
124 名前:login:Penguin mailto:sage [03/01/09 02:06 ID:0uJfVOg+] 名スレの予感
125 名前:login:Penguin mailto:sage [03/01/09 02:50 ID:yayiRGlu] 福島もキタ━━━━━━(゚∀゚)━━━━━━ !!!!
126 名前:login:Penguin mailto:sage [03/01/09 03:34 ID:TPkK0Va9] >>81 まぁそういうところでよしゆきはすごいわな。
127 名前:山崎渉 mailto:(^^)sage [03/01/15 11:31 ID:m6zO97qQ] (^^)
128 名前:ドライバー [03/01/15 13:09 ID:I5ofFU+k] いまLynxEMのドライバいじってるんだけど、 マルチディスプレイに成功した人います? もう何年も放置されてる問題だから無理なのかな…?
129 名前:login:Penguin mailto:sage [03/01/15 18:11 ID:nk4F1IDO] >>128 Windows2000でも放置されてた問題だし あきらめよう
130 名前:login:Penguin [03/02/05 19:41 ID:YQeAwX++] 保守age
131 名前:login:Penguin [03/02/07 19:54 ID:jVRQXDIx] 1ms以下のタイミングでポーリングを監視する方法って何かないですか? やっぱ割り込み使わんと無理?
132 名前:login:Penguin mailto:sage [03/02/07 20:36 ID:0UoE11AV] >>131 HZいじってタイマの周期を1ms以下にすればなんとかなると思うけど。 割り込み使うのが正攻法じゃないかなー。
133 名前: [03/02/07 21:50 ID:VKdRg4g7] ftpfs きぼんぬ modprobe ftpfs login=ftp password=hoge@2ch.net host=ftp.ring.gr.jp とかすんの
134 名前:login:Penguin mailto:sage [03/02/07 22:07 ID:nu9G29ZI] >>133 www.google.co.jp/ # gnutellafsなんてのもあるのか...
135 名前:133 mailto:sage [03/02/11 02:29 ID:/akGZqt4] ftpfs.sourceforge.net/ がーん・・・ 寝る!
136 名前:login:Penguin [03/02/11 03:04 ID:bsSBCYyf] >>17 > モジュールアンロード > # rmmod hello.o 正しくは、rmmod hello 気になったんで...
137 名前:login:Penguin [03/02/14 03:21 ID:vgGnuLAo] お馬さんの本にspinlockにぎったままsleepしちゃいかん、 って書いてあるんですがどんな困ったことが起こるのか教えて欲しい 今日この頃…
138 名前:login:Penguin mailto:sage [03/02/16 03:44 ID:tbT/WrCe] >>137 スピンしっぱなしになる ちなみに超電磁スピンはこれの応用
139 名前:login:Penguin mailto:sage [03/02/16 23:53 ID:7J4Y8mCH] >>138 ああ、そっか。てことは攻撃中にspin_unlock()されるとマズー?
140 名前:login:Penguin [03/02/20 22:11 ID:+wCEK+nh] >>137 デッドロックが起きる。 spinlock を獲得したままスリープすると、そのプロセスが目覚めるまで 同じ spinlock を獲得しようとするプロセスがビジーウェイトし続ける。
141 名前:137 [03/02/21 03:18 ID:qmT4Thn5] >> 140 どうもです。 自作基板に載っているPCIバスブリッジのDMAを叩くのに、複数プロセスからDMA転送を 同時に行うことはできないのでspinlockにぎらせてwait_event_interruptibleか何かを コールしようとたくらんでました。 DMA転送が終われば必ず割り込みで叩き起こされるのでそこでspin_unlockすれば 問題ないかなと思ったのですが、間違いですか? その間ビジーウェイトし続けるのがもったいないということであればsemaphoreで ブロックするべきでしょうか。
142 名前:login:Penguin mailto:sage [03/02/21 05:38 ID:wCxVa5I1] >>141 だめ。 プロセスAのカーネル内: 獲得 -> sleep プロセスBのカーネル内: 獲得に失敗してビジーウェイト なのだけど、カーネル内では、ページフォルトとか明示的にschedule()呼ぶと かしないとスイッチはおこらないので、単一プロセッサシステムだと絶対死亡。 SMPだとか、2.5のプリエンプションカーネルだと、大丈夫かもね。 終了割込みで起こされる処理なら、sleep と wakeupを使うのが普通じゃない?
143 名前:bluehat [03/02/27 02:47 ID:2xZ0HU3V] デバドラをアクセス(介する?)することで、ファイルを暗号化して保存& ファイルを複号化して取得、ってな事ってできんのか? おめーだったらどうやって実現するよ?教えろ!ゴルァ!
144 名前:login:Penguin mailto:sage [03/02/27 03:04 ID:1e6KPqQp] 普通loopだろう。
145 名前:bluehat [03/02/28 03:17 ID:5YDI7es3] >>144 却下。普通じゃだめぽ。デバドラで実現しる!
146 名前:login:Penguin mailto:sage [03/02/28 07:13 ID:0bshxi8O] >>145 んー、何をもってデバドラというのかよーわからんが、狭義な, ハードウェアを制御するドライバのことなら 「オマエラ、おつむ悪すぎなので出直して下さい。」
147 名前:login:Penguin mailto:sage [03/02/28 12:21 ID:oFO1qwF8] >>145 んと、loopは広義のデバドラですよ。メジャー番号7のブロックデバイスです。
148 名前:login:Penguin mailto:age [03/03/06 14:51 ID:NOJmB8ay] kernel-2.5 でデバドラのインターフェースが大幅に変わるという話を きいたがおまえら知っているか?
149 名前:login:Penguin mailto:sage [03/03/06 22:23 ID:33Ph63nv] >>148 プリエンプティブカーネルになるってのはどっかで見たが・・・ I/F というと、エントリーポイントの仕様でも変わるのか? それとも、カーネルがエクスポートするルーチンの仕様変更?
150 名前:login:Penguin mailto:sage [03/03/06 23:24 ID:gj2ir03d] >>148 モジュールまわりの仕様が変わるというのはあるが、 モジュール自体に影響ないはずだし… 構造体とかカーネル側の関数が変更されるのはよくあることだし… その話の出所はどこよ?
151 名前:148 mailto:age [03/03/07 00:48 ID:2S2Wvrkx] struct file_operations つくって register_chrdrv()するだろ。 そのやりかたが変わるとか聞いたんだが。
152 名前:login:Penguin mailto:sage [03/03/07 04:37 ID:2ohbwA9F] >>151 (゚∀゚)んなこたーない
153 名前:148 [03/03/07 13:38 ID:2S2Wvrkx] >>152 安心したよ >>149 カーネルプリエンプションに関しては大問題だ。 ドライバかなり書き直さなくてはいかんのぉ。
154 名前:login:Penguin mailto:sage [03/03/08 00:05 ID:l6jbsomd] 2.5のソース読んでからまた来い
155 名前:login:Penguin mailto:sage [03/03/08 00:53 ID:dd9ui0La] >>153 その様子では 2.5のカーネルプリエンプションを理解するのが先です。 名前から想像するものとはちょっと違うものです。
156 名前:login:Penguin [03/03/17 00:55 ID:POpqK4+0] デバイスドライバを書いてる人って 日本に何人いるんだろう hello.o くらいだったら1万人くらいいるのかな?
157 名前:login:Penguin [03/03/21 01:19 ID:4f4NMJji] 3000人くらい
158 名前:LINUX初心者 [03/03/22 00:33 ID:c2EgVY2O] ご質問があります。 IDEのDVD-ROMから、暗号無しのDVDデータを取り出すソフトが必要になり まして、MT.FUJIの仕様書とcdrom.cを読んでいます。どうやら、DVDの 情報はIOCTLを通して取り出せるみたいなのですが、データ(2Kバイト)の データの取り出しは、IOCTL経由では出来ないように見えます。その割には CD-ROMのモード1と2、CDオーディオのデータはIOCTLで読み出せます。 フリーのソフトを見るとpf_readで実行しているようですが、どうやれば 良いのでしょうか? 出来たらIOCTLを使いたいのですが・・・・ よろしくお願いします。
159 名前:名無しさん@Emacs mailto:sage [03/03/22 11:15 ID:j2wJcuTQ] >158 www.linuxvideo.org/docs/Linux-DVD-HOWTO/ja/DVD-Playing-HOWTO-Nihongo.html ここを読んだだけだけど、、、 DVDでioctlを使うには、カーネルで、それようの設定をして コンパイルが必要みたい?
160 名前:login:Penguin [03/04/13 20:50 ID:Z3+MYXr2] USBドライバの開発の参考って何かないですか?
161 名前:あぼーん mailto:あぼーん [03/04/13 20:51 ID:fhD9Fsc5] ______________ /:\.____\ |: ̄\(∩´∀`) \ <先生!こんなのがありました! |:在 |: ̄ ̄ U ̄:| ttp://saitama.gasuki.com/wara/
162 名前:login:Penguin [03/04/13 22:03 ID:Z3+MYXr2] kill -9 161
163 名前:login:Penguin mailto:sage [03/04/13 22:08 ID:ecu8jjet] >>160 定番は、似たようなのを見る だろ。なお、クラス(ってかベンダ)ドライバな ら、一番簡単なのは、scanner.c 。バグありだけどね。
164 名前:login:Penguin [03/04/13 22:16 ID:Z3+MYXr2] >>163 ありがとうございます。 ところで、カーネルに組み込まれているデバイスドライバのソースをモジュール化するのに定番の手法とかって ないでしょうか? カーネルがROM化されているので、モジュールにする必要があるもので。
165 名前:login:Penguin mailto:sage [03/04/13 22:25 ID:ecu8jjet] >>164 手法って、なにも特別なことはないとおもうんだけど... make modules 以外でコンパイルするっていみ? それなら -DMODULE がみそ。 カーネル関連のソース内部でも、ドライバでも、これを ifdef とかで見る。 それともmodule対応じゃないドライバを対応に書き直す方法? こっちなら、 適当な初期化/後かたづけ処理を module_init()とmodule_exit()で登録すればいい。
166 名前:login:Penguin [03/04/13 22:33 ID:Z3+MYXr2] >>165 >module対応じゃないドライバを対応に書き直す方法 こちらの方です。ありがとうございます。意外と簡単なんですね。 早速、明日試してみます。 デスクトップで動いているドライバを組み込みLinuxに移植しようとしてるんですが、 ドライバを作るのははじめてなので、馬本で勉強してます。まだ2章目ですが
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 するとタイムアップになってしまう・・・。何が悪いのでしょうか。 キューのクリアとか必要ですか?