元スレ
1 :login:Penguin:02/01/31 01:14 ID:t3s191ys.net
ディバイスドライバの改造、製作にまつわる情報交換、質問、
噂話、ぐち、政治、経済に関するスレです。できる限り生産的にいきましょーや。
313 :login:Penguin:04/02/09 07:11 ID:7h6uvjnn.net
すいません、どうしようもない質問なんですが、
実験的にカーネルパニックを発生させるドライバを作るのには
どうすればよいでしょうか?
カーネル関数panic()を使っても
ハングするだけでパニックしないんです。。。
どうか教えてください。
296 :login:Penguin:04/01/07 22:36 ID:ui3n7e6w.net
だいぶ下がってますが、
2.6 と 2.4 のドライバ記述って何か変りました?
2.6 まだインストしてないので報告キボンヌ・・・
2.2 -> 2.4 程は変ってないのかなー?
300 :298:04/01/16 20:57 ID:JS8EwlnL.net
FPGAですね。
私もそんなに知っているわけではないので、
あまりあてにはしないで欲しいのですけれど…
lspciの結果は特に変なところは無いと思います。
Class ff00はどのクラスにも属さないと言うことだと思うのでちょっと気にはなりますが、
読み書きぐらいはできるでしょうね、きっと。
だとすると、あとはドライバのソースでチョンボがあるか
FPGAの中で書きこみ禁止になっているとかですかね。
FPGAにどんなipが載っているのか分からないので、あくまで推測ですけど。
あんまり力になれなくてごめんね。
602 :login:Penguin:2007/04/08(日) 00:07:55 ID:gmHS+Fdj.net
>>17 をコンパイルするとエラーがたくさん出るんだけど何が悪いの??
エラーの一部
↓
/usr/src/kernels/2.6.20-1.2933.fc6-i586/include/asm/bitops.h:244: error: expected ‘=’, ‘,’’, ‘asm’ or ‘__attribute__’ before ‘int’
from /usr/src/kernels/2.6.20-1.2933.fc6-i586/include/linux/thread_info.h:
20,
from /usr/src/kernels/2.6.20-1.2933.fc6-i586/include/linux/preempt.h:9,
from /usr/src/kernels/2.6.20-1.2933.fc6-i586/include/linux/spinlock.h:49,
from /usr/src/kernels/2.6.20-1.2933.fc6-i586/include/linux/module.h:9,
54 :login:Penguin:02/02/01 23:49 ID:bMJKgu48.net
只今、続き作成中です。それまで>>52-53の美しい映像(?)でお楽しみ下さい。
m(__)m
235 :login:Penguin:03/06/03 01:50 ID:iocW6lsY.net
>>234
そんな関数見たことないなー。
別なモジュールに依存してるとかないの?
カーネル絡みはlibgcc以外のライブラリ使わないよ。
5 :1:02/01/31 01:44 ID:R8TIzJku.net
920 :login:Penguin:2014/10/30(木) 21:21:48.26 ID:xfEc1Jae.net
ユーザーランドで動作するデバイスドライバ
って作れる?
649 :login:Penguin:2007/04/28(土) 23:24:32 ID:ZU2q9XRX.net
>>639
ttp://d.hatena.ne.jp/Newmarket/20060828/1156705255
86 :login:Penguin:02/08/17 02:23 ID:D5BAubdc.net
たとえ糞コードでも動いているものであれば余計なことをしないのが当然だろ。
元と全く同じ動作をしれば何事も無く済むが僅かでも挙動が変わったりバグが入ったりしたら
周囲に迷惑をかけることになるのだから、
勝手に書き直すようなまねをしでかすのはアマチュアか怖いもの知らずの無分別な若造。
327 :login:Penguin:04/03/17 23:57 ID:P4QfZyWd.net
データシートをどうやって手に入れるか
それが問題だ
724 :login:Penguin:2007/10/29(月) 00:42:23 ID:uCaYz1aO.net
>>723
知りたくなったときに読めばいいよ
でも必ず買っとけ
166 :login:Penguin:03/04/13 22:33 ID:Z3+MYXr2.net
>>165
>module対応じゃないドライバを対応に書き直す方法
こちらの方です。ありがとうございます。意外と簡単なんですね。
早速、明日試してみます。
デスクトップで動いているドライバを組み込みLinuxに移植しようとしてるんですが、
ドライバを作るのははじめてなので、馬本で勉強してます。まだ2章目ですが
167 :開発メモ:03/04/14 14:29 ID:Y6l/xCVk.net
Warning: loading module.o will taint the kernel: no license
がでたときは、
#include <linux/module.h>
MODULE_LICENSE(“GPL”);
printk の出力はdmesgで見ることができる。
230 :226:03/05/29 18:33 ID:FeUqO3hy.net
>>228
>>229
MIPS で動いているLinux に、Redhat7.2 のUSBデバイスドライバです。
ソースのコンパイルはちゃんと通るのですが。
あと、Hello World を出力するだけのデバドラの動作は確認済。
414 :413:05/02/12 01:24:29 ID:QcR6E3eX.net
早速、間違えてました(w
>ところどころ言ってるかもしれませんけどね・・・
ところどころ * うそ * 言ってるかもしれませんけどね・・・
295 :login:Penguin:03/09/03 16:47 ID:iWz7WMbL.net
385 :login:Penguin:04/11/10 14:40:19 ID:OHaab6bm.net
>>383
>>384
CPUキャッシュですか。
環境にもよるのでしょうけど、基本的にはあまり気にしなくてもいいのですね。
実は、drivers/char/mem.c みたんですけど、mmap システムコールを呼んだときと、
そこにアクセスした時のコードの流れがよくわからないのでちょっと???でした。
あとは、コンパイラのオプティマイズも気にしておいたほうがいいのでしょうね。
926 :login:Penguin:2016/03/14(月) 02:03:02.13 ID:wYUVNjV4.net
>>46
懐かしい。もう14年経ったか。この人いまどうしてるだろう?
私はこの話の元ネタであるコメンテーターというお笑いネタをマ板に書いた者。
当時は想像もしなかったが、今じゃ私もLinux使いになってしまった。
私が書いたのはお笑いネタだけど、>>46みたいに、実際のコードを
面白おかしく解説してくれる記事があったらもっと読みたかったな。
記念に書きのこしておく。スレ汚しごめんよ。
813 :login:Penguin:2008/03/28(金) 15:40:00 ID:BcQjSrEl.net
>>807見て、misc_register調べてちょっと使ってみたんだけど、
これで作ったもんどうやって消すんだ?
関数自体は使い方分かったが、対になるもの無い?
misc_register込みのinsmod→rmmod→再度insmodでハングするんだが
90 :login:Penguin:02/08/17 17:21 ID:MTVVTQyw.net
842 :login:Penguin:2008/12/07(日) 17:23:17 ID:Ht7uJKzk.net
773 :login:Penguin:2008/02/19(火) 19:10:24 ID:5BDGV8A6.net
デバイスドライバでunistd.hなんかincludeしちゃダメだろ
fcntl.hも同様
449 :login:Penguin:2005/06/29(水) 18:42:20 ID:Cc/icRgl.net
Linux のドライバのプログラミングの
良い入門書があったらおしえてください
436 :login:Penguin:2005/05/17(火) 18:53:06 ID:CbytfkQn.net
2.6 kernel(2.6.11.x)上でデバドラ書く場合、
MOD_INC_USE_COUNT
MOD_DEC_USE_COUNT
を使用する事ってobsolete?
606 :login:Penguin:2007/04/08(日) 00:12:08 ID:gmHS+Fdj.net
330 :login:Penguin:04/04/08 17:57 ID:/VjqMrH1.net
673 :login:Penguin:2007/07/16(月) 18:26:19 ID:h1/eDBu5.net
817 :816:2008/04/10(木) 22:19:28 ID:zop984mC.net
/dev/mem openして
memmap((void*)0, 0x1000,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0x10000000)
memmap((void*)0, 0x1000,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0x1000)
でも同じ結果でした・・・
260 :login:Penguin:03/07/08 15:11 ID:nDf4bQ70.net
851 :login:Penguin:2009/02/18(水) 00:04:19 ID:lQ8CDN9P.net
根本的に間違っているような気がするので、
もう少し具体的にやりたいことを書いた方がいいと思う。
取り合えずドライバでioplはいらねえ。
743 :login:Penguin:2007/11/29(木) 13:55:56 ID:yo1OGExb.net
mmapで特定のデバイスのIOメモリを仮想空間に割り付けて,
その領域に対してユーザーからデータを書き込むことを考えています.
ユーザープログラムからその領域上に,あるデータ型の双方向リスト
を作りたいのですが,ユーザー空間の特定のアドレス範囲から空き
メモリ領域を動的に確保する方法ってないでしょうか
void *dev_malloc(start_address, end_adress, nbyte);
とすると仮想アドレスstart_address〜end_adressの範囲から
nbyteバイトの領域を確保するみたいなイメージです
94 :login:Penguin:02/08/20 04:33 ID:EFxDYaWg.net
U-cableP5ならどっかにドライバ落ちてなかったか?
344 :login:Penguin:04/04/27 21:18 ID:VEIU93yI.net
>>339
FDDにアクセスして、その音で音楽を鳴らす。
CDDのトレイを頻繁に出し入れする。
ってトレイは入れられたっけ?
172 :山崎渉:03/04/20 06:14 ID:xFRXxEWb.net
711 :login:Penguin:2007/10/26(金) 18:00:12 ID:OMFZLcsd.net
お馬さんの本読んで勉強してるのだが、さっぱり分からん。
ちなみに今3章のscullデバイス。
みんな最初はこんなもんなの?
それとも、俺がバカなだけなのか?諦めたほうがいいのか?
意見求む!!
554 :login:Penguin:2006/12/28(木) 12:33:40 ID:vc2Jrznf.net
>>553
MMUの面倒は誰が見るですか?
面倒な世の中になったのう…
物理アドレスで完結してりゃなにも考えなくていいのに。
679 :login:Penguin:2007/08/30(木) 12:40:15 ID:pmmgZB5J.net
601 :login:Penguin:2007/04/04(水) 00:42:58 ID:IK0cizpI.net
>>598,>>599
/usr/include/linuxにあるのは確かにカーネルのヘッダだが、glibcをビルドするときに使った
アーキテクチャ依存部分とかのカーネルヘッダ、
/usr/src/linux/includeにあるのは「現在使用中のカーネル」のヘッダファイル
だよね。(間違ってたらスマソ)
これらが同じだとちょっとカーネルに変更があったときとかまずくない?
最悪glibc動かなくなるときもあるかと。
744 :login:Penguin:2007/11/29(木) 20:09:08 ID:iCD9/EY6.net
>>743
かーなーり スレ違い
デバイスドライバ関係ない
汎用heap管理ライブラリがほしいってことだろ
heap-management とか ヒープ管理 でぐぐってみそ
ちなみに
void *dev_malloc(start_address, end_adress, nbyte);
ってI/Fはありえないと思うぞ
毎回 start_addressとend_adressを与えるわけ??
369 :login:Penguin:04/10/29 11:01:48 ID:rDkd0V/P.net
lsusbだとデバイス名が把握できてるということは、
個々のドライバ部分に問題があって動かないという風に考えてもいいでしょうか?
linux-2.6において
usbcore
uhci_hcd
cdc_acm
という三つのドライバにより動かしたいハードウェアがあるんですが、
cdc_acmをロードしてもうんともすんとも言いません
859 :858:2009/07/04(土) 16:35:43 ID:D5yvn6Kc.net
補足です。
上記の情報をアプリケーションから取得できますか?
798 :login:Penguin:2008/03/04(火) 20:25:09 ID:neWtFAJV.net
>>791
調べもせずに書いてるけどLinux版のウィルス対策ソフトのお試し版に
運がよければカーネルモジュールのソースが含まれていて、なおかつ、
それがシステムコールのフックしていたりしないか?
380 :login:Penguin:04/11/07 08:11:19 ID:/P0s9FI4.net
>>636 > 昨日Linuxにふれたものですから
であり、(非常に一般的なやりかたにもかかわらず)やりかたがわからないとい
う人が tamagoをいれたい理由はなにかしら?
特に強い理由がないなら、「いれるな」が正しいガイドだと思うのですよ。
>>635
つかいかたは man xmodmap でみるといい。
キーコードは xev で調べられます。使いかたは man xev でみるといい。
141 :137:03/02/21 03:18 ID:qmT4Thn5.net
>> 140
どうもです。
自作基板に載っているPCIバスブリッジのDMAを叩くのに、複数プロセスからDMA転送を
同時に行うことはできないのでspinlockにぎらせてwait_event_interruptibleか何かを
コールしようとたくらんでました。
DMA転送が終われば必ず割り込みで叩き起こされるのでそこでspin_unlockすれば
問題ないかなと思ったのですが、間違いですか?
その間ビジーウェイトし続けるのがもったいないということであればsemaphoreで
ブロックするべきでしょうか。
146 :login:Penguin:03/02/28 07:13 ID:0bshxi8O.net
>>145
んー、何をもってデバドラというのかよーわからんが、狭義な,
ハードウェアを制御するドライバのことなら
「オマエラ、おつむ悪すぎなので出直して下さい。」
239 :():03/06/03 18:52 ID:U5Cecnio.net
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です。
795 :login:Penguin:2008/03/04(火) 09:36:17 ID:NdRlprld.net
>>791
乗り遅れたか!?
Linux 2.6からシステムコールのフックはできません。
パッチ当てなきゃできないようなことが
ttp://tldp.org/LDP/lkmpg/2.6/lkmpg.pdf
8章にそのようなことが書いてあったはず。
記憶が確かなら、792の示したサイトの
unsigned long **sys_call_table = find_sys_call_table();を
加えればできたと思う。
454 :login:Penguin:2005/06/30(木) 11:25:42 ID:J4A9ru3W.net
557 :login:Penguin:2006/12/30(土) 00:07:40 ID:SZb58Bld.net
カーネル組込みで、ドライバ初期化のときなら確保できそうな気もするな。
開放したら二度と確保できなくなりそうだが。
831 :login:Penguin:2008/07/27(日) 04:17:46 ID:JGvJfhtT.net
copy_{to,from}_user()でユーザプロセスのアドレスを与えるところにカーネル空間のアドレスを与えるとどうなります?
やっぱりaccess_ok()で弾かれる?
288 :login:Penguin:03/08/16 15:04 ID:rNtMNMvg.net
392 :login:Penguin:04/11/21 17:22:45 ID:fkgrUhvM.net
デバイスドライバはカーネルメモリを消費するらしいのですが、
現在のカーネルメモリーの残量を知るにはどうしたらよいですか?
915 :login:Penguin:2014/02/13(木) 19:42:26.30 ID:StvXlIag.net
/dev/input で
type=EV_MSC code=MSC_SCAN って
なにを意味してんの?
874 :login:Penguin:2010/11/04(木) 22:34:19 ID:S1XESMQS.net
>>873
ビルド環境?
すみません、Linuxはドライバの開発とOSの移植しかやったことがないので、
ビルド環境がよくわかりません。
ドライバを開発するうえで、アプリ屋さんにどのようにドライバのヘッダファイルを
渡すのが正しいやり方なのかを知りたいです。
35 :login:Penguin:02/02/01 10:35 ID:a6zdq5Rc.net
>>34
オマエガナー
赤の他人に理解力について
罵られるいわれもコンプレックスを持つ必要性も
無いと思われ。
28は上司に尻叩かれて性格が曲がっちゃった
職業プログラマに3ガバス
150 :login:Penguin:03/03/06 23:24 ID:gj2ir03d.net
>>148
モジュールまわりの仕様が変わるというのはあるが、
モジュール自体に影響ないはずだし…
構造体とかカーネル側の関数が変更されるのはよくあることだし…
その話の出所はどこよ?
173 :login:Penguin:03/04/21 11:26 ID:dxqbEfvS.net
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
224 :ドライバ初心者:03/05/22 16:32 ID:7jvNN9yz.net
21 :スマソ:02/02/01 05:45 ID:Dg5fN5Aj.net
>>18
s/insmod hello.o 1/insmod hello.o baka=1/
271 :login:Penguin:03/07/13 22:55 ID:UrPfG9sV.net
>>267
>promiscuousモードだと全パケットをホストPCに転送するから
違うよ。promiscuousモードって言うのは、リンク層で受信したデータが
自ホストの物理アドレスでなくても受信すること。
>>270が正しい事を言っている。
272 :login:Penguin:03/07/14 02:37 ID:imGWjqw6.net
112 :ねここねこ:02/09/30 09:38 ID:ILjZfqgw.net
>111
>まだ漠然としているが、画像処理か計測系だね?
だいたいそんな感じです
お馬さん本見てがんばります
91 :login:Penguin:02/08/17 20:48 ID:Zdf5lEt8.net
サン電子は「ドライバ書くので情報くれ」といってもくれない会社だから
どうしようもない。
704 :login:Penguin:2007/10/21(日) 17:41:17 ID:yGaxVLsH.net
>>701
各ポートにデバイス eth0, eth1 … と付いて、このデバイスファイルごとに
設定が管理されるだけじゃね?
816 :login:Penguin:2008/04/10(木) 21:40:14 ID:zop984mC.net
mmapを利用して物理アドレス0x10000000に存在するデバイス(SRAM)のR/Wを
行うドライバを作成しようと思っています。
馬本の第3版のサンプルソース(simple)を参考にしながらremap_pfn_rangeで
マッピングし、ダンプをとってみたところ、0x10000000エリアのデータでは
なく、全て0のデータが読み取れました。
0x1000等の小さい物理アドレスであれば正常にリード出来ているようです。
0x10000000のように上の方のアドレスは、remap_pfn_rangeではマッピング
されないのでしょうか?
カーネルのバージョンは2.6.11です。
17 :login:Penguin:02/02/01 04:33 ID:Dg5fN5Aj.net
どうやってドライバを書くのかという英文をひらったぞ(゚Д゚)ゴルァ
一番単純なモジュール抜粋じゃー
#define MODULE
#include <linux/module.h>
int init_module (void) /* Loads a module in the kernel */
{
printk(“Hello kernel ¥n”);
return 0;
}
void cleanup_module(void) /* Removes module from kernel */
{
printk(“GoodBye Kernel¥n”);
}
モジュールコンパイルしろや
# gcc -c hello.c
モジュールロードだ
# insmod hello.o
出力は
Hello kernel
モジュールアンロード
# rmmod hello.o
226 :login:Penguin:03/05/28 14:11 ID:2En7vxAz.net
insmod するとこんなエラーが出てきたのですがどうすればいいでしょう?
couldn’t find the kernel version the module was compiled for
546 :537:2006/12/18(月) 01:17:23 ID:5wopQO2S.net
ほぼ内製だったと思います。
ちょっと月曜日会社いったら、聞いてみようと思います。
大変参考になりました、ありがとうございました。
ところで、これは単なる質問ですが、
マザボのチップセットにある8237とかの
DMAコントローラは古いし遅いみたいだから
PCIとかIDEとかに使われてないみたいだけど、
Pen3 800MHzとかでも PIOのが早いの?
231 :login:Penguin:03/05/29 21:59 ID:5gpS9IGq.net
>>230
archがあってないとか。
$ file vmlinux
$ file そのモジュール
の結果を見てみたい所ですね。
レスを投稿する(名前省略可)