5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

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


2 :login:Penguin:02/01/31 01:15 ID:t3s191ys
とりあえず、オライリーのお馬さん本2杯目へのリンク。
http://www.xml.com/ldd/chapter/book/bookindexpdf.html

3 :login:Penguin:02/01/31 01:30 ID:o+EauUH6
イーサネットドライバの仕組みが知りたいですわ。



4 :login:Penguin:02/01/31 01:32 ID:WoiBhbQB
何故?Kernel仕組みスレのリンクを張らないの?

☆Linux カーネルの仕組みを勉強するスレ☆
http://pc.2ch.net/test/read.cgi/linux/1002012247/


5 :1:02/01/31 01:44 ID:R8TIzJku
あー、スマソ。ぼけてたです。

ついでに最新カーネル表示スレ
http://pc.2ch.net/test/read.cgi/linux/999618082/l50
USB総合スレ
http://pc.2ch.net/test/read.cgi/linux/1002630729/l50
最適NICスレ
http://pc.2ch.net/test/read.cgi/linux/986761860/l50

6 :login:Penguin:02/01/31 01:47 ID:WoiBhbQB
是非とも、このスレを優スレにしたいなぁ・・・

公開されているいい関係資料を漁ってみよう。

7 :1:02/01/31 01:47 ID:R8TIzJku
JFドライバ関係
http://www.linux.or.jp/JF/JFdocs/INDEX-hardware.html
おなじくカーネル関係
http://www.linux.or.jp/JF/JFdocs/INDEX-kernel.html

ちょっとネタスレだけどLinuxプログラミングスレ
http://www.linux.or.jp/JF/JFdocs/INDEX-kernel.html

8 :login:Penguin:02/01/31 02:02 ID:igUBIfwm
YAMAHA AC-XGをハクってください。

9 :login:Penguin:02/01/31 02:32 ID:+4ZZMVcM
>>8
YAMAHAって、マイクロコードを
ドライバーがロードさせるタイプじゃないかな?
もしそうだと、YAMAHAが出さないと難しいかも。

10 :login:Penguin:02/01/31 10:02 ID:+yS2cLhP
_IO マクロってみんな使ってる?

11 :login:Penguin:02/01/31 15:08 ID:o+EauUH6
イーサネットドライバって、使われているチップに対してバスのメモリを解して
read/writeすればいいのかな?


12 :login:Penguin:02/01/31 18:55 ID:igUBIfwm
>>9
まったくの阿呆なのでおっしゃってる意味がよくわかりませんが、
無理なのですか…。
残念…。

13 :login:Penguin:02/01/31 23:21 ID:o+EauUH6
やっぱ人気ねぇかなぁ。このスレ。

それともレヴェルが低いかなぁ。(アオリ

14 :login:Penguin:02/01/31 23:21 ID:ZFCCqGEW
正直、こういう技術的なネタはここでは盛り上がらない。

15 :login:Penguin:02/02/01 00:30 ID:Hb4Obm1B
じふぃーず ってどこまで短くしたことある?
みんなの体験談キボーン

とりあえずCPUクロックと併記よろしこ

16 :login:Penguin:02/02/01 00:45 ID:0DxQaaOu
んじゃ、適当なソースでも引っ張って解説つけていくとか・・・

おもしろくないねぇ・・2chデストリ用に何かつくるとか・・・

17 :login:Penguin:02/02/01 04:33 ID:Dg5fN5Aj
どうやってドライバを書くのかという英文をひらったぞ(゚Д゚)ゴルァ

一番単純なモジュール抜粋じゃー
#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


18 :login:Penguin:02/02/01 04:56 ID:Dg5fN5Aj
モジュールに引数わたしたけりゃ
static int baka;
MODULE_PARM(baka,'i');
int init_module (void) /* Loads a module in the kernel */
{
printk("Hello kernel \nMODULE_PARM=%d\n",baka);
return 0;
}
insmod hello.o 1
とかしろ、
この{マ,チ}ンカスどもめ

19 :login:Penguin:02/02/01 05:17 ID:Dg5fN5Aj
デバイスドライバには2種類ある
ブロックドライバとキャラクタドライバ

ブロックデバイスは塊単位としてしかアクセスできんデバイス
普通は1kごととかで
お前らの使ってるディスク装置とかがこれだ

キャラクタデバイスはファイルみたいにアクセスできてそういう世話
をするのが実装されとる。オープン・クローズ・リード・ライトシステム
コールが実装されていてコンソールとかパラレルポートとかが
これらしい。

ほんとかよ。お前ら間違ってたら教えろよ。

20 :login:Penguin:02/02/01 05:38 ID:Dg5fN5Aj
順番むちゃくちゃに訳してたら、何で最初にシンプルなモジュール
の書き方が書いてあるのか説明してなかった。
linuxではデバイスドライバはinsmodをつかって
動的にカーネルに読みこんだりできるモジュールなんだそうな

>>17のinit_moduleは何をするんかつーとリロケートされたモジュールイメージ
がカーネルスペースにロードしてモジュールの初期化ファンクション
を走らすらしい

ところで、なあ、リロケート再配置ってなんじゃこりゃ
init_module loads the relocated module image into kernel space and runs
the module's init function.

英語だけでなく日本語も不自由なんじゃ(゚Д゚)ゴルァ

21 :スマソ:02/02/01 05:45 ID:Dg5fN5Aj
>>18
s/insmod hello.o 1/insmod hello.o baka=1/



22 :login:Penguin:02/02/01 06:29 ID:Dg5fN5Aj
20 のモジュールイメージっつうのは具体的に何かっつーと
モジュール構造体で始まって、適切にコードとデータが連なった
もんらしい。
モジュール構造体は
struct module
{
unsigned long size_of_struct;
struct module *next;
const char *name;
unsigned long size;
long usecount;
unsigned long flags;
unsigned int nsyms;
unsigned int ndeps;
struct module_symbol *syms;
struct module_ref *deps;
struct module_ref *refs;
int (*init)(void);
void (*cleanup)(void);
const struct exception_table_entry *ex_table_start;
const struct exception_table_entry *ex_table_end;
#ifdef __alpha__
unsigned long gp;
#endif
};

nextとrefsを除く全部のポインタはモジュールのボディを指すように
期待されていてカーネルスペースのために適切に初期化される
例えば残りのモジュールなんかを再配置したりとかなあ。

日本語だけでなくコンピュータも不自由なんじゃ(゚Д゚)ゴルァ
意味わかんねえし

init_moduleと
cleanup_moduleの戻値は0が成功-1は失敗
-1のときはerrnoがセットされる。
...ズラズラとエラーコードの説明

一般的なドライバのコンパイルオプションは
-D__KERNEL__ _DMODULE -O -Wall -I$(INCLUDEDIR)
らしい

読み終わりました。
この文書だけでドライバが書ける奴は
居ないと思いました。終始モジュールの説明でした。

真面目にKHGを読もうかと思います。
http://www.linuxdoc.org/LDP/khg/HyperNews/get/khg.html

23 :login:Penguin:02/02/01 08:36 ID:hfC7cfcj
>>20
リロケートってのは、一般的にいって、コンパイル/アセンブル
したときとりあえず付けておいたてきとーなアドレスを、
実行時の環境にあわせて番号付け直すこと。

たとえば、オレサマ言語で
function hoge
print "逝ってヨシ"
end

function fuge
print "オマエモナー"
end

function 2ch
call hoge
call fuge

ってプログラムがあるとする。コンパイルすると、たとえば
0x000 jump 0x300
jump 0x400
return
0x100 "逝ってヨシ"
0x200 "オマエモナー"
0x300 print 0x100
return
0x400 print 0x200
retun

みたいな感じになる。0x000から始まるのは、とりあえず
そうしているだけであって、これをリンク(か、動的ロードか)
しようとすると他の部分と競合してしまって、まずい。
で、ロードすると、linkerがいまのメモリ状態に合わせて、
たとえば空きメモリが0x400000から始まってたとすると

0x400000 jump 0x400300
jump 0x400400
return
0x400100 "逝ってヨシ"
0x400200 "オマエモナー"
0x400300 print 0x400100
return
0x400400 print 0x400200
retun
って内容に書き換えてから、メモリ上に置く。
で、0x400000にジャンプすることで、始めて
関数2chが使えるようになる、ってこった。
基本的には、動的にロードする場合でも、静的に
リンクする場合でも、どこかしらで似たようなことを
やってくれてる。
(で、そういうリロケートとかの方式の一つがELFバイナリで
あったり、a.out形式バイナリであったりするわけだ。)

ここいらの話は、Loader Linker とかいう本にかいてあるよ。
(ちょっと書名自信なし)

24 :login:Penguin:02/02/01 08:51 ID:Oxc8LS21
つーか、その辺はお馬さんの本を見れば全部丁寧に解説してるし。

25 :login:Penguin:02/02/01 09:12 ID:Dg5fN5Aj
まさか2ちゃんねるでこんなにわかりやすい答えがもらえるとは
思ってなかった。わかったような気がします
考えてみればメモリ上に読みこまれる実行バイナリ
が常に同じ場所に置かれるわけじゃないから、そういう仕組みが無いと
毎回呼び出すたびに大変なことになりそうな

コンピュータの本ってなんかむやみに高く無いですか?
自分のレベルに合ってない本を買ってしまったときのむなしさ
と言ったらエロ本どころの騒ぎじゃないような


26 :login:Penguin:02/02/01 09:22 ID:CW11eql0
稀に見る良スレ age

27 :login:Penguin:02/02/01 09:24 ID:Y0QPm9tf
>>25
レベルが違う分には、ざっと目を通しておくとあとで理解できたり、
「あ、あのときあの本に書いてあったな」って読み返したりできる。
方向性が違う時には、虚しいこともある。
レベル低すぎな本は、そもそも買うときに弾くことができる。

28 :login:Penguin:02/02/01 09:28 ID:K+86rTMk
>>25
つーか、こんなの基本じゃないっすか・・・
わかり易いとか、わかりにくいとか以前の問題だと思うんですけど・・・

29 :23:02/02/01 09:34 ID:zfB82tu1
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| 先輩、LinkerLoader読まなくても
| お馬さんにかいてあるそうですよ。
| 先輩って確か第1版もってましたよね?

   ̄ ̄ ̄|/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ∧_∧        / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ( ・∀・)  ∧ ∧ < いや、読んだ覚えはねぇぞゴルァ
 (    )  (゚Д゚ ) \____________
   ̄ ̄ ̄ ̄ ̄ (つ_つ__
   ̄ ̄ ̄日∇ ̄\|Amity VP|\
       ̄   =======  \

トウジハ リカイデキナクテ ミナカッタコトニシタラシィ

30 :login:Penguin:02/02/01 09:37 ID:Dg5fN5Aj
>>28
スマソ、本当にはじめて知った。
コンピュータは趣味というだけなんで誰から教わったわけでもなく
わからない事だらけなんです少しずつわかってけばいいかなと。


31 :23:02/02/01 09:38 ID:zfB82tu1
>>28
ん?基本を説明するのに解りやすかったり解りにくかったりする
ことになんの不思議が?
おまえは分数の計算を生まれたときからできたのか問い詰めたいよ。
いくら算数が数学の基本だっつったって、解りやすい先生がついた
ときと、そうでないときとで、生徒の苦労はケタ違い。



32 :login:Penguin:02/02/01 09:53 ID:VTxWGKIN
http://www.iecc.com/linker/
linker&loadersの草稿が英語で読めるYO!
http://www.linux.or.jp/JF/JFdocs/INDEX-programming.html
Library HOWTO はわかりやすいス

33 :login:Penguin:02/02/01 10:02 ID:wGSa/qxe
ディバイディングドライバァァァァーッ!!

34 :login:Penguin:02/02/01 10:21 ID:RSGobFLl
>>31
あんた自分の理解力にコンプレックスでもあるの?

まあ気の弱い犬ほどよく吠えると言うが・・・

35 :login:Penguin:02/02/01 10:35 ID:a6zdq5Rc
>>34
オマエガナー
赤の他人に理解力について
罵られるいわれもコンプレックスを持つ必要性も
無いと思われ。
28は上司に尻叩かれて性格が曲がっちゃった
職業プログラマに3ガバス

36 :login:Penguin:02/02/01 10:51 ID:Oxc8LS21
喧嘩は〜やめて〜争わ〜ないで〜

>>33
承認

モジュールをつくる
http://www.mechatronics.mech.tohoku.ac.jp/~kumagai/linux/drivers/module.html
デバイスドライバ開発入門
http://www.net-newbie.com/linux/driver/
Linux 拡張ボードデバイスドライバの作り方
http://www.mechatronics.mech.tohoku.ac.jp/~kumagai/research/library/drivers/make_dd.html

>>10
http://www.linux.or.jp/JF/JFdocs/kernel-docs-2.2/ioctl-number.txt.html


37 :login:Penguin:02/02/01 10:53 ID:Oxc8LS21
お馬さん 2ndEdition タダで読めますよ
http://www.xml.com/ldd/chapter/book/index.html

38 :login:Penguin:02/02/01 11:02 ID:0zxTeFbY
>>37 サンクスコ
ちなみに23の説明は楽しかった。

39 :login:Penguin:02/02/01 11:35 ID:0DxQaaOu
>3ガバス
ガバスって、ファミ通だっけ?デバイスと関係なのでsage

40 :login:Penguin:02/02/01 13:40 ID:fvbQ/5zX
>>25
お前はまだ仮想アドレスについても学ばなければならない。

>自分のレベルに合ってない本を買ってしまったときのむなしさ

レベル上がってから読みなよ。


41 :25:02/02/01 14:20 ID:LgazE6G1
>>40
うむ、了解。
じゃあまず仮想アドレスについてから勉強するよ。
なんかこのスレでブックマークが一杯になってしまったなあ

42 :login:Penguin:02/02/01 14:38 ID:HC9Yhxcp
デバイスドライバーだけじゃないけどさ
ソフトバンクからでてるLinuxのプログラム本と
詳細なKernel(2.2系)の本はあった方がいいかなぁ・・・

43 :login:Penguin:02/02/01 15:00 ID:OYnwkLox
とりあえず、ここまでのレスは全部読んで
なんとなく概要は理解できた気がするのですが、、。

お仕事でドライバの事少し勉強しなければいけませんので、
ソースから学ぼうと思ってるんですが。
Linux2.4系のKernelソースの中で
全く、ドライバをやった事の無い初心者にも
わかりやすいソースってどれでしょうか?
どなたか有識者で知ってらっしゃる方はいらっしゃいませんか?
「お馬さん」は2.2系の日本語を読んでますけど、
非常に難解です、、。
Kernelが2.4系なので、
文献も英語しかなく、
読解力のないわたしは苦しんでいます。(^^;)

ここを良スレと見込んでよろしくお願いしますm(_ _)m


44 :login:Penguin:02/02/01 15:14 ID:4diOANaQ
>>43

Interface2、3月号あたりにLinuxのデバドラに関する記事がありました。
なかなか良かったですよ。



45 :login:Penguin:02/02/01 17:42 ID:Oxc8LS21
>>43
なんでもいいからキャラクタ型デバイスのソースをみるとよろし。
基本がみっしり詰まってて勉強になるっす。

46 :login:Penguin:02/02/01 22:46 ID:Pc1hsWFQ
/*
 * $Id: joydev.c,v 1.19 2001/01/10 19:49:40 voj
tech Exp $
 *
 *  Copyright (c) 1999-2000 Vojtech Pavlik 
;
 *  Copyright (c) 1999 Colin Van Dyke 
;
 *
 *  Joystick device driver for the input&n
bsp;driver suite.
 *
 *  Sponsored by SuSE and Intel
 */
// さぁ、いよいよはじまりました、Linuxドライバーコメント2002、
// 実況はわたくしモモナイ、解説はおなじみサキサカさんです。
// サキサカさん、今日はよろくお願いします。
//  はいはい、よろしく。
// サキサカさん、本日のカードはkernel 2.4.16のdriver/input/joydev.cです
が、
// しょっぱなから、このファイルというのはどうなんでしょうか?
//  単に作者の23が、>>45の言葉どおりキャラクタデバイスから読もうとして、
//  一番手頃なのがこれだったようですよ。
// 23ということは、いつものコメンテーターと作者が違うようですね。
//  そうそう。http://pc.2ch.net/test/read.cgi/prog/1011188426/215-281とは
//  作者がちがうんで、私も心配しちょる。
// また煽られて逆上しませんか?
//  本人も、O<^Z=6:\Y2と思ったようだから大丈夫でしょう。
//  むしろ、途中で飽きるんじゃないかな?
// そのあたり、読者の応援の声が欲しいところ。
// ところで作者は、joydev.cのGPLの表記を消してしまったようですが、
// 大丈夫でしょうか?
//  まぁCopyright (c)は残したから、いいんじゃないかね。
// ともあれ、Linuxドライバーコメント2002 Round1 joydev.c
// いよいよスタートです。
// この放送は等幅フォント対応で、2chよりお伝えします!



47 :login:Penguin:02/02/01 22:52 ID:c8Ppl2p2

#include <asm/io.h>          
; // さぁ、ソースのほうは順調に
#include <asm/system.h>       // イン
クルードが進んでおります。
#include <asm/segment.h>      // 本日は、/u
sr/src/linux/includeには、
#include <linux/delay.h>      // grepと共
にレポーターのヤブナカさんが
#include <linux/errno.h>      // 逝っており
ます。ヤブナカさ〜ん?
#include <linux/joystick.h>   //*はい!ヤブナカです!今日はヘッ
ダが
#include <linux/input.h>      //*いっぱいなので
、findも一緒に待機して
#include <linux/kernel.h>     //*万全の体制です!
#include <linux/major.h>      // 後程、なに
か不明なマクロなどありましたら
#include <linux/slab.h>       // お願
いしま〜す
#include <linux/mm.h>         //*
はい!了解です!
#include <linux/miscdevice.h> // さてサキサカさん、インクルードも後
半に
#include <linux/module.h>     // 来ましたが、std
io.hが無いようですね?
#include <linux/poll.h>       //  そ
ういうボケはどうでもいいけど、
#include <linux/init.h>       //  「
カーネル」って雰囲気は満点だね。
#include <linux/smp_lock.h>   // どうやらインクルードも無
事終了しました。
 


48 :login:Penguin:02/02/01 22:53 ID:c8Ppl2p2
// さて、始めは定義の類が続きます
#define JOYDEV_MINOR_BASE        0&nbs
p; // サキサカさん、この_BASEって何でしょうか?
#define JOYDEV_MINORS         &nb
sp;      32 //  他のinputデバイスとメジャ
ー番号を共有
#define JOYDEV_BUFFER_SIZE        64&n
bsp;//  するための工夫だね
              
;             &nbs
p;       //  でも、input.hで宣言しなくてい
いのかなぁ
struct joydev {     // さぁ、ここで構造体の
定義です。
  int exist;  // サキサカさん、ここで定義というのはど
うでしょう?
  int open;   //  あたりまえだけど、joydev.c内
部向けってことだね。
  int minor;  //  あまり他のドライバに応用が効く部分
じゃないでしょ。
  struct input_handle handle; // でも、
  wait_queue_head_t wait;     //
  devfs_handle_t devfs;
  struct joydev *next;       
;   // あ、リンクの様相です。
  struct joydev_list *list;     //&nbs
p; 複数デバイスが考えられる時の定番ですね
  struct js_corr corr[ABS_MAX]; // このあたりの構造体
は、使い方がはっきり
  struct JS_DATA_SAVE_TYPE glue;// した時点で、ヘッダを参
照したいと思います
  int nabs;
  int nkey;
  __u16 keymap[KEY_MAX - BTN_MISC]; // さて、こ
のあたりの定数ですが...
  __u16 keypam[KEY_MAX - BTN_MISC]; //  キーと
ボタンがごっちゃだね。
  __u8 absmap[ABS_MAX]; // ここらのABSってなんでしょ?
  __u8 abspam[ABS_MAX]; //  うーん、よくわからないなぁ
  __s16 abs[ABS_MAX]; // それでは聞いてみましょう。ヤブナ
カさーん?
};


49 :login:Penguin:02/02/01 22:56 ID:c8Ppl2p2
/************************input.h*************************************/
#define KEY_PROG4    203
#define KEY_SUSPEND  205 //*はい!ヤブナカです!
#define KEY_CLOSE    206 //*ただいまinput.hの300行付
近にいます!

#define KEY_UNKNOWN  220 //*ここまでがキーボードの番号で

#define BTN_MISC     0x100 //*ここからマウスや他
のコードが
#define BTN_0        0x100 //*ふ
られているいる様子です!
#define BTN_1        0x101 //*こ
こからですね...
#define BTN_2        0x102 //*さ
、カメラさんこっち来て!

// (略)

#define BTN_JOYSTICK 0x120 //*この付近、330行あたりで
#define BTN_TRIGGER  0x120 //*ジョイスティック向けの番号があっ
て、
#define BTN_THUMB    0x121 //*さ、こっちこっち

// (略)

#define BTN_TOUCH    0x14a //*はい、このあたり!
#define BTN_STYLUS   0x14b //*タッチパネルらしき
#define BTN_STYLUS2  0x14c //*定義を最後に

#define KEY_MAX      0x1ff //*全てのキーが
出そろうようです!

//*また、このすぐ後に Relative acesとAbsolute axesというコメントが
//*続くようです!
// input.hからは以上です!
// joydev.cにお返しします!
/********************************************************************/
// はい、ありがとうございました。
//  キーボードとその他のボタンで統一的に管理してるけど
//  ここではジョイスティックで使うかもしれない分だけにしてるんだね
//  ABSはRELと対になって絶対値と相対値。アナログコントローラの話かな。
// とりあえず、CMです。

50 :login:Penguin:02/02/01 22:57 ID:c8Ppl2p2
げ、ぶち切れてる。鬱死....

51 :login:Penguin:02/02/01 23:02 ID:Oxc8LS21
改行が挟まらなければ 相当おもしろい企画になる・・・
マジ良スレの予感

52 :CMまで前半:02/02/01 23:46 ID:bMJKgu48
begin 644 2ch_joydev1.txt.bz2
M0EIH.3%!629360A%+XT``+9_G[JP``#,=_]U/[?;,+__WV`_?O_____OS___
MF?=@!.[NS<^WM;=[S4>SGN[5R&IH1H"GHIY-JC:30VB>FI^I/U3-0/4&FGIJ
M!Z@VC:4]3:@``!H'J``!M0,FTC0`-$28@P*>"9"GAHH&AZ(>IHT`]0,C0T:'
MJ``````#0```-#0:()II3QJ4_4VIZH\H9#TT31H-I`&U!H8AB#0#(:,0!IH:
M``#0#0T`TT#$A0:4]I--3T31H/4]0TR:-/U1ZFFF30T-``8@````:&F@9```
M`:`08!#1B:`R:83)ID`&$:-,`F`)A!H9`Q,@#``"8F3`3`30))$1IE,4\2/4
M_4T@T-&GJ>HR&@S2&@:``:#0```````````8'",1C"&^9*JG'[T9$HI(&-7K
M<R2UW8LHB7RW@PNGZ,5R,@F?`X:]]6?*@\AA1!+]AMG$$R$%Z#6BI@;I8)E$
M#0V\R67$M!!1MI'``(8.#?;]9*3"CC/04GY[9,")-38J#5@$!*1`,$)",DF"
M,!#ER=#/F.P!LPJ^\UD.DIML@*/A="L4E\"0*:`6CDL4ZLB'(N0K)R`2<S""
M26E3JSLO9#`O-\18TZ]PLT!16$^#A*9UI<SJM15`%.>PJ4F#PGPK,H%5JO)J
MGV@WNIA6V-^.(2KFCM43JQCZ4/(%H`86<FJ4'``3``&WJ0K&6-L(C'Q:Q4Z9
MDH1%=5`FDN8.BJZ,<9(R#9"JHQ#Q9-@FDA]<QPHS;$?AF/=[C;PK,Q&D+UTS
MHC$U/L;$)=$`1@MA("$:&1U24`PU>ZD,5?PWSR6A'J+P`<HKN*J_%O#>*5+`
ME%%>\*`3EL814Y2G.F*-2D%,``VX*\2%)C"PT3HA``;O`'/-HX%017@EU]Z*
M@4D\+3S@$%\4>-,B)N-T_&1W!-9(=EI$!-ISE-E9.I41`UHX*9;.<R+2/'O`
M`?,.,+.6+U<&5+>N6D`7YW:]"`6S<(/$\1@YX43%3*P)X3Y$5SXH$=900NO@
M*P53)YAM,.::9X6ECZ!6M;)1(`AI5)U)$@!B40HIBG1GB5AC802!GY%0>8A.
M88%M9MGB96$2;)_KVD6EEK!VONC\W"$J0AQG0MI<Y7-MD?H$I&@CJ+'RWB>?
MT<E-8XTLT4I8C'B&+2]CZZ)!?'W5T0$$`1.7=3!$`D!!,JJA+AC858TE3(R0
MW<XHBH"D.=,[GGGIM-U0R"#AA)D$`#[2`R2B80==-3WHHVE,EFS"LU*_"4LZ
M,ZL>3+V%DI'57CLV@]G8OK\_EF0MQY$P/R]6($`$#9S,X9A"]P6,R7>>XO3;
MOK\!N2S:AE#E<PN#!@!Q%%`G2`?C!>)-)=?"^4-19*JGMNJ4<`E#7OW"$'<+
M_0/AJ_(^I+V?B;R90$LIN#HX6GE:A5F%$_=X:K6!."L^0*`Q-5:N=8'-)@?+
M->J+1X5"YC%MKS2^ARBZ'&/[18EM_'1PY/750@QJ3K:;K>B"-O+N>S>E\WY/
M[<V088<WQW#YI((A`6>%Z$-&I*/IJ?(/^S@$L)#14I1&%H0>R=JTJU(SHD!,
MV[94*SBH*IX$B&@W;5ER`]M$:B"V$X:%-R&16KN)6E_4V<`9F\@A96NE1RIN
MC%-\@UC&,?/3;`7Q*CZ0[BY_*=L\E`6,P.>+DA)9%L0Y>=+,RO57L'-DS;7&
M9Q8]%(-E9G34[^*]A'`U3MV``_*!2N"=CP,\XO`2"5^S`/!")2),:$C@6`1$
M^PPLI,^5M+P;G*R76:WE`F8#!LWEP84Q?JNX"(1+!9H76'0B!9!D*NP1FCM;
M^M"D0F#,&8,*J15U;H75]L_`<K[QZ2DT@3C_I6ING0@9RX=;%-G]7K1-$XC+
M^&"1$C-:Q"F!_4UC%$03&(Y5UHHT(Q1(UAJ,05-<WLY`*D7]L02X[?7=S<P3
M%&PI\#K<LC@1",MHX<AF2C0]84!)%^8!P;+"Q!EK$0JFN`:ZZ"%8Q$Y'COU+
M6A7(,,:;)38Y@KYDBW+#D4F$LBRX3(D"%Q=5D/S6!,*]5RRXA.>P?%9-:E.)
M*$UHT7`(&DP8!4,QM;<7EZX0(P%7B[8@3T`)H21SX0.IL&>`DE08L*`8A
AW#!TY]Z\9@*S`]*GHI*TF5"K@6UJ/_XNY(IPH2`0BE\:
`
end



53 :CMまで後半:02/02/01 23:47 ID:bMJKgu48
begin 644 2ch_joydev2.txt.bz2
M0EIH.3%!6293649+3QL``@#_G_40!`!H<_](?O_?ZK___^H_?O____OWQ;_^
MG!-@!$.*+,U@:WVR[<-"F*:8*GFA&D::,:GJ/*'I&U`]/5-&U`T/4`]0T])Z
MFF(#$`T#!```]0`!HD-)II/TAI,RFU,"9I1M$VIZ$T-``&@``9`````#1HT-
M`/U31Y(@9,$9,"-,0TPC$-,`$8$8"#)ID-&0T!B8"8A@)B--,3`F`2)$F33*
MI^TE/R:C4>IZ3`@]0/4;4?J0-/4-H0&]4]0```````R`,$T&@@9,$9,"-,0T
MPC$-,`$8$8"#)ID-&0T!B8"8A@)B--,3`F`:FDD])H,U``--&@```&0R,U&C
M(`````````R8$#1D8@3N:?BL#MGS.7=3&L7Y(,I:K2FCSU8[D>8$R++4E275
MXCRD!AW.?$9;QOZJV(B`HWT^E`+-+=ZZA18(GD$2*OZD)`"6,2P^&PX1&\^1
MNW_`IK&'6X6"X0K$-P#(2#(4E$'J@4,1BSN9Y)30R&4C"2&\DP1N,J2F;DD*
M??N%,@`9JA1ONIE?*U&;M+X"L&`-&O@4-QFD0]1DQI#:;[WH]0;W!UC(57`5
M)F&<"FJ^ZO)$>/Y!%&K>O6CKIHBM!V;O6$L&3PZ$`QM.6+.2N"G"\K@2-Y3M
MN(1<?/2L"F@J.-WVGI3,THXW9O3WZ6?/*OML15<L&&AF0:Z"6T:]Y+0:GM3G
M=8"LVHKVL&.ROZJ<F&TO:"QRKFL&R+;2MD"@@=.S%Q.]0TK5&%+RO,W>^E+9
MV[&]%8K(A0$*+((:KC&@Y//61-0M<Y`.'1;`7CB2*I2AC,;K%":&ZK9@JH58
M(BID&`X"`ERY`:!JED15I6ZUC+!$VWF%E9#Q$3@2[,080$D13N4QGF"=#DX7
MJY6S$DPJ42LC+YT<49[31KES2(HRR`03&#;GG(I*+]=X+.FDV7"EGRNN(5JM
M6RRXMPW[80PC355&1RD\4A4!<+1K\_4"4D7V6FPD5R6-#)W9.$TA@#1]V;96
MS]=UJ-G*5\,F=5ZE@SZJ1_,KL0$3$M/MP&,HP+CURG%\7[$S^;2EIML32;?O
M-"8[BJ:UIZ5OB?FQ?IF\\7'#MX^>;Z-#LOQ.@F8Z`5Z!?AQ<4Z`2^NB6]15\
M':-'1VR%2'HJM&[6^J?CG29$ZZG2H5`A(V@OYX18]2SJ2JK,&$KB^A6&:D'_
ML\_W5OTJGU'X"9.TI98C,C,L(PC.;;_*[0E3""*\9N=HMT@/P+5\'CD?3,M1
ML:O<6#4O$,+6;,+TQD\#N5&5HJZ+FE#8?=JH^QJRE'3ML,ZEW'Z](5)C%:5*
MPM0P)HV7`;PAH2,>F9C5JO0*"HBIQ8J,AR!JFWAQJ&**2V,DU[[+4BX8PW4J
MMK-/PQ3VB!OS&LF,&S_=1,.*)M`-I*A%!)NKA1)$N]J7P.7,P+4`H;X/R61S
ME7>$+U<6.>U2Y%!8QJ\"3"-V(XFBY2KC)DB`I*,D3=N:L&G="[0ACT+&#H:_
M5'97^OP=K%F[RFM59TF,%Q&MZA?ZXDFDV8QJL:4@"(Q`B(D4SF#'^B45`3(P
M,#@A+HG,9`*P#V((`!80::S4MI(A)-DR,S#,IGB"J$Z0@9<@GXL$T$&BA%Y.
M*[+H4,6@GEW4+3:GOX-9-RZN6+%V)/J,&E27I3W,T%\-<T:MM7!F[>=214/8
M8D1GA+>C<MB00UAK(4D=Y+/OJZ:1@F2A1,L6EB(M5@&S`'E3;.(T"K`R%T&"
M`:-DZ3"@8<2:^&1Q/NV`PQ""P",ZX0()QA`=74[4.A1!8PLB`;38L34?\B)1
=!)C:,L0V)L&C5"05)*J-`)!.&+N2*<*$@C):>-@`
`
end


54 :login:Penguin:02/02/01 23:49 ID:bMJKgu48
只今、続き作成中です。それまで>>52-53の美しい映像(?)でお楽しみ下さい。
m(__)m

55 :login:Penguin:02/02/02 00:16 ID:81i4zM55
struct joydev_list { // 先程、一部の地域で画像が乱れ、
 struct js_event buffer[JOYDEV_BUFFER_SIZE]; // お見苦しい
 int head; // 点があったようです。お詫びいたします。
 int tail; //  まぁ、字下げを1にしたし、文字も減らして
 int startup;//  どうにかなるかな?
 struct fasync_struct *fasync; //  お、なにやらsyncできるみたいだ。
 struct joydev *joydev; // こちらは、先程の構造体ですね。
 struct joydev_list *next; //  やはり、ここもリストだね。
};

static struct joydev *joydev_table[JOYDEV_MINORS];
// さぁ、ここで変数定義!
//  一応、外部からはアクセスできないね。
//  マイナー分だけ確保してるけど、
//  joydev_list.joydevとの関係が気がかりだねぇ
// 配列の値はポインタのようですが?
//  領域を動的に確保することで
//  不必要に肥大化するのを防いでるんだね

MODULE_AUTHOR("Vojtech Pavlik <vojtech@suse.cz>"); // おっと!?
MODULE_DESCRIPTION("Joystick device driver"); 
MODULE_LICENSE("GPL"); // ここでマクロの登場だ。意味は大体わかりますね。
MODULE_SUPPORTED_DEVICE("input/js"); //  suseもちゃんと貢献してるねぇ
// この後いよいよ関数の登場です。
//  たのしみだね、モモナイさん
// 私は、23がどこまで理解できるか心配ですが...お願いしますよ
// サキサカさん!
//  そう言われても、結局書くのは23ですからねぇ...



56 :login:Penguin:02/02/02 01:11 ID:O2jPWcD7
// ついに関数が来ました!
//  名前からすると、データ補正かな?
static int joydev_correct(int value, struct js_corr *corr)
{
 // あれ、見慣れない構造体が...
 //*モモナイさん!モモナイさん!
 //  なにやら「値」が来てるなぁ
 //*モモナイさん!
 // はいはい、ヤブナカさん?
 //*今joystick.hに来ているんですが、sturct js_corrについての
 //*情報が得られました!
 // はい、カメラお渡しします。
/************************joystick.h**********************************/
//*只今、include/linux/jyostick.hの75行目付近に来ています!
/*
 * Types and constants for get/set correction
 */
//*どうやら、この付近で補正の為の定数等を定義してるようです!
#define JS_CORR_NONE   0x00 /* returns raw values */
#define JS_CORR_BROKEN 0x01 /* broken line */
 //*データがナマの場合と壊れた場合を分けているようです
struct js_corr {
 __s32 coef[8]; //*このあたり、coefや
 __s16 prec; //*precが何の略なのか
 __u16 type; //*全くナゾです。
}; //*こちらからは以上です!
/********************************************************************/
 // はい、ありがとうございました。
 // なんだかわかったようなわからないような...
 //  作者がそもそもjoydev.cがどういう物か理解してないからねぇ


57 :本日のシメにageます:02/02/02 01:14 ID:O2jPWcD7
 switch (corr->type) {//さぁ、分岐した!
 case JS_CORR_NONE:   //  rawなときだね。
  break;              // そのまま逝くようです。
 case JS_CORR_BROKEN: // こちらは壊れた時のようですが?
  value = value > corr->coef[0] ? (value < corr->coef[1] ? 0 :
   ((corr->coef[3] * (value - corr->coef[1])) >> 14)) :
   ((corr->coef[2] * (value - corr->coef[0])) >> 14);
  //  ははぁ、coef[0]-coef[1]の範囲から値がでてるとき、coef[2,3]で
  //  適当にあわせつつ値を直しているんだな。
  break;    // 直してから先に進むようです。
 default:   // さて、その他。
  return 0; //  やることが解らんときは、何もしないで帰る、と。
 }

 if (value < -32767) return -32767; // おーっと、±32767の挟み打ち!
 if (value >  32767) return  32767; //  signed 16 bitかな。
 // この関数も終りにきたぞ!
 return value; //  BROLENの補正のみやってるね
} 
 // 関数第一ラウンド、なんとか終了となりました。
 // Linuxドライバーコメント2002、/usr/src/linux/driver/input/joydev.cより
 // 2chでお送りいたしております。

 //  まだ続ける気かねぇ

58 :login:Penguin:02/02/02 09:46 ID:whMMNTAJ
おもしろい!(w

59 :login:Penguin:02/02/02 23:09 ID:OVfU0W3z
うえ

60 :login:Penguin:02/02/03 00:07 ID:zajX165D
ちなみに、元祖モモナイさん達は
http://pc.2ch.net/test/read.cgi/prog/1011188426/201-300
このあたりにいらっしゃいます。
キャラ貸してくれたコメンテータさん、ありがとう!
# つーか事後承諾だったけど...

61 :login:Penguin:02/02/03 00:09 ID:BzrcOmdf
もういいよ。
sunは倒産。
SGIも倒産。
HPもWSから撤退。
IBMもWSから撤退。
NECもWSから撤退。
世界にはPCしかなくなりました。
OSもLinuxしかなくなりました。
犬厨の望む世界になりました。
終了。


62 :23:02/02/03 02:51 ID:KGnsKyPB
そうか、もういいのか....(鬱

63 :login:Penguin:02/02/03 14:14 ID:P0SAPnI+
>>61
その時、マイクロソフトのドライバ開発者は…

(続く)

64 :login:Penguin:02/02/04 18:52 ID:NNgCZ8vd
>>63 >>61

その頃、マイクロソフトのドライバ開発者@新橋ガード下は、
「ってやんでぇバーカヤローゥ! Linuxがなんだってんだっ、ヒック、ゥィー!」

65 :login:Penguin:02/02/04 23:07 ID:2sAhIg4J
>57

いいぞ!続きを!

66 :login:Penguin:02/02/05 15:21 ID:iaI23jTt
>65 同感。
でも、もう少し読みやすい(見やすい)とうれしんだけどな。

67 :login:Penguin:02/02/05 18:54 ID:F3yqU4bD
「予想される近未来」
・Linuxに市場を荒らされ全ての商用UNIXが撤退。
・Windowsは順調に売れて市場を拡大。
・エンタープライズ用途でのLinuxの駄目さ加減が発覚してみんな困る。
・みんなしょうがなくWindowsに移行する。
・Linuxはカーネルの分裂により大混乱。商用用途で使い物にならなくなる。
・Windowsしかなくなる。

68 :login:Penguin:02/02/05 19:58 ID:EBSnoi/G
>>67
BeOSのような第3の勢力が突発的に出現して
Gates帝国もUNIX連合も一夜にして淘汰される。に一票

69 :login:Penguin:02/02/05 20:26 ID:YUE4G5dx
サーバはどうか知らんが
結局ごちゃごちゃでも便利なものから離れられない。windowsは無くならんのは当然だが
linuxもWindowsがGPLにでもならん限り無くならんと思うなあ。
そのうち良くなるだろ。
もしBeOSみたいなのがでてきても、よっぽど革新的でFreeでないと、また往っちゃうよ

70 :login:Penguin:02/02/05 20:59 ID:UUxecaUS
コピペにマジレスカコワルイ


71 :login:Penguin:02/02/05 21:21 ID:JQSzVmkT
5年程度のスパンで見ると、Linuxは産業用の組み込み系のOSと
して活躍するでしょう。
また、IBM系のリナックスも順調にシェアを伸ばしていくでしょう。

PCではWindowsが制覇するでしょう。

72 :login:Penguin:02/02/13 10:11 ID:Ocy9V5oG
モジュールを組み込むとき、変数が渡せるものもいくつかあるけど
そのときに どの変数が渡されているかあとで知る手段ってない?

例えば sb.o とかなら irqとかいろいろ渡せるよね。
insmodしたその後で irqいくつだったか忘れたときとか
知る手段無いよね。

あと、ついでに どの変数が渡せるかを事前に知りたい。
ソースみりゃわかるけど面倒くさいじゃん。


73 :login:Penguin:02/02/13 11:37 ID:QvFCkM3Q
/proc以下のファイルで確認すればいんじゃないの?

74 :名無しさん@Emacs:02/02/14 02:48 ID:z04c7JYX
ディバイスドライバをファックしよう!

75 :BERO:02/04/02 18:12 ID:zlzOuE7v
デバイスドライバの解説って
「デバイスにはchar型とblock型があって・・charデバイスの実装サンプル」
で終わってるのが多いんだけど、
実際はソレを生で使ってることは少なくて、サウンドデバイス、CD-ROMデバイス、FlashROMデバイス、ビデオデバイスとか
デバイスごとのフレームワークがあって、実際のハードウェアドライバはその下にくるようになってる。

実験機器や自作ハードで生のI/Oポートをたたけるだけでいい、ていうのならともかく、
(フレームワークが存在するような)一般的なハードウェアでは、このテのデバドラ解説ってのは参考にならない。
ファイルシステムドライバとかもこの範疇に入らないし。

みたところ各フレームワークの解説ってのはみあたんなくて、結局ソースにあたるしかない。
ところが既存のソースも、古いコードが残ってたり、そこからのコピペと思しき不要なコードが紛れ込んでたりして、
どれをリファレンス実装として参考にしたらいいのやら、って感じでアタマいたくなる。


76 :login:Penguin:02/04/05 22:06 ID:swoFdSIN
>>75
本物?

77 :login:Penguin:02/04/05 22:15 ID:CU/0IjiI
まぁ、アゲられついでに75さんにLinux界に伝わる格言を一つ。


「動けば正義」

78 :login:Penguin:02/05/08 17:01 ID:kXDZWtdP
>77
VBプログラマに通ずるものがある(w

79 :login:Penguin:02/05/12 06:02 ID:i/O/fiuU
>>77
イイ言葉だ....

80 :login:Penguin:02/06/25 11:32 ID:h8q+RUm7
お馬さん本買ってきて、サンプルコードをftp.ora.comからダウンロード
しようと思ったのに、ftp.ora.comがつながんねーYO!
どなたかftp.ora.com/pub/examples/linux/drivers/の中身を
ミラーしていただけないでしょうか?

81 :login:Penguin:02/06/26 10:26 ID:MG8jc7TY
すみません。ftp.ora.comにつながりましたので、>>80はなしにしてください。

これだけではなんなので、同じ壁に突き当たるかもしれない人へ:
お馬さん本のサンプルソースは、筆者のサイト
ftp://ar.linux.it/pub/ldd2/ からもダウンロードできます。

82 :login:Penguin:02/08/14 00:47 ID:2q+/MEDi
age

83 :login:Penguin:02/08/14 00:52 ID:udiJKVSV
あがりついでに...

>>78
>>77
>VBプログラマに通ずるものがある(w
「クソコードを見付けたら、書き直すチャンス!」ってのが
VBとの違いだな。


84 :login:Penguin:02/08/16 07:53 ID:c0C09J9f
糞コードをハケーン!!

じっとガマンして保守に付き合うのはプロ
とっとと書き直すのはアマ

85 :login:Penguin:02/08/16 14:43 ID:S24KMUAB
>>84
じゃあオレはアマチュアの方がいいや。
プロっていってもピンキリだし。

86 :login:Penguin:02/08/17 02:23 ID:D5BAubdc
たとえ糞コードでも動いているものであれば余計なことをしないのが当然だろ。
元と全く同じ動作をしれば何事も無く済むが僅かでも挙動が変わったりバグが入ったりしたら
周囲に迷惑をかけることになるのだから、
勝手に書き直すようなまねをしでかすのはアマチュアか怖いもの知らずの無分別な若造。

87 :login:Penguin:02/08/17 03:47 ID:L76cjPXx
サン電子U-cableP5のドライバはいずこ?
IOのケーブルはLinux対応してまっか?DDIに聞いたら
Linuxは独自のOSですので当社では判りかねます。
つーかWinはMS独自のOSだしMacもMac独自のOSでは?
製作者及び団体の数ではWinの方が独自性が強いと思うのですが
先生方!教えてくだはい

88 :login:Penguin:02/08/17 16:48 ID:OXP9X1ng
おお、こんなスレがあったのか。
ちょっと感動……と思ったら

>>87
だから、自分でドライバを書けよ。

89 :login:Penguin:02/08/17 16:55 ID:OXP9X1ng
仕事としてソース非公開なLinux用ドライバ開発なんぞをやってます。

>>75の言ってる事は同感。
drivers/char/serial.cなんかを見てると情けなくて泣きたくなってくる。
「動けば正義」は否定しないけど、「動いたら放置」ってのはちょっと
なぁ。

Linuxだと、なら「ならお前が書き直せ」ってことになるんだけど、正直
どこから手をつければいいのか、途方にくれるようなドライバが多すぎ
る。

90 :login:Penguin:02/08/17 17:21 ID:MTVVTQyw
88>書ければWinでネットしません!

91 :login:Penguin:02/08/17 20:48 ID:Zdf5lEt8
サン電子は「ドライバ書くので情報くれ」といってもくれない会社だから
どうしようもない。


92 :login:Penguin:02/08/17 23:46 ID:IR8qSaOk
じゃIO・DATAさんでも良いよ。
H"用のUSBケーブルで32kパケット通信(つなぎ放題)対応って2つしか無いのね!
9月にサンデンシから新しい奴が出るけどWinとMacのみ対応だし・・・・

93 :login:Penguin:02/08/18 19:29 ID:XonFUm75
>>90
書けるけどWindowsで繋いでますがなにか。

>>91
いや、情報のない状態からつついて解析していくのも、なかなか
面白いものだよ。
必要性と興味が持続しないとやっとれんけどな。

94 :login:Penguin:02/08/20 04:33 ID:EFxDYaWg
U-cableP5ならどっかにドライバ落ちてなかったか?

95 :login:Penguin:02/08/21 02:27 ID:++pf5YT/
94>落ちてたけどウチのPCはFDも無いしCD−Rも無いから意味無し
それ以前にturboLinux7でドライバの入れ方知らんから無意味
Turboじゃなくても知らないが・・・
完全マスターTurboLinux読んで頑張ってみます。
お騒がせしました。

96 :login:Penguin:02/08/22 00:52 ID:hok07Wzb
昔DOS3.1の時代に、プリンターのデバイスドライバーをひとつ一機種に
ついて書くたびに50万円もらっていた友達をしっている。
非常においしい商売だったようだ。

97 :login:Penguin:02/09/17 02:52 ID:uJTVD8V1
今さらあげてしまいますが、オライリーのドライバの本に書いてある。
file構造体がなにをやっているのかよくわかりません。というかその存在自体が疑問です。file_operation構造体はinit_moduleによって登録されるってのはわかるんですが、file構造体はどんなときに使われるとかよくわかりません。
デバイスドライバで2番目に重要な構造体と書いてあったのでかなり意味があると思うのですが、
くだ質できく内容でないと判断したので、ここで聞かせて下さい。

98 :login:Penguin:02/09/17 22:14 ID:2Yzp0rLg
>>97
Linux のドライバは(一部除いて)ファイルで表されてるわけです。
/dev/配下にいっぱいありますよね?
そのファイルをopen すればfile_operations 構造体のopen メソッドが呼ばれる。
そのファイルをread すればfile_operations 構造体のread メソッドが以下略。

多分システムコールかデバイスファイルについて知識不足なんだと思われ。
なぜ存在自体が疑問なのか書いてる途中でわけわかんなくなってきたよヽ(`Д´)ノウワァァン

ちなみにここでつまずいてたらその本絶対読めないから教えてくれる人探した方がいい。。。


99 :login:Penguin:02/09/18 03:24 ID:AWtWYegc
ありがとうございました。
どうやらfile_operations構造体の次にでてきたので、
デバイスドライバ特有の構造体かと勘違いしてしまったようですが、
低水準システムコールのときのfile構造体と同じだったんですね。
わかったみたいです。

一応半分位まで読みました。なんとなくですがわかったきがするので、
音なるやつでも書いてみることにします。

100 :login:Penguin:02/09/19 00:16 ID:YeCer3VV
>>99
あう。。。file 構造体の方でしたか。file_operations 構造体と間違えた。。。
ごめんなさい。でもわかったんならいいよね。。。


101 :login:Penguin:02/09/19 01:00 ID:Zca/tfIP
デバイスドライバで、file構造体って見ることあります?
漏れ、見たことないんですが。


102 :login:Penguin:02/09/24 08:38 ID:jDkNy+Lt
age

103 :login:Penguin:02/09/24 10:47 ID:oRAD0jRL
久々に上がってたりして...で亀レス

>>101
一つのドライバで複数のデバイスを制御(特に割り込み)する時に
使わない? (private_data)
static な領域にデータ置いといてベタで検索でもいいけど...


104 :ねここねこ:02/09/24 12:11 ID:jDkNy+Lt
デバイスドライバを書くときに使う各種マクロや関数などが
詳しく&解りやすく載っている資料とか無いでしょうか?

謎の関数が多くて、、、、



105 :login:Penguin:02/09/24 16:20 ID:oRAD0jRL
>>104

>37 にある Linux DeviceDriver 2nd Edition
これを wget で落して(いいのか?) grep で検索しる。

あとはお決まりのソース drivers/char 以下を検索かな?



106 :101:02/09/24 18:33 ID:YwjfORCG
>>103
おお、なるほど。
そういうドライバは書いた事無いからなー。


107 :ねここねこ:02/09/26 16:00 ID:3O4ltuCq
>105
やっぱり、それしかないですか、、、
馬の本見てがんばります

さらに質問
ハードを直接叩く(?)デバイスドライバを作っているのですが
良いサンプルとか無いでしょうか?
とりあえずは、
linux/drivers/char/qpmouse.c
あたりを参考にしてるのですが、、、


108 :login:Penguin:02/09/26 17:52 ID:l3dRzYLM
>>107
お馬さんで充分かと...

> ハードを直接叩く(?)デバイスドライバを作っているのですが
これだけでサンプルないかって言われてもなぁ。
誰もレス出来ないんじゃぁ?
マウスドライバでも作ってんの?
レス出来ないかも知んないけど。


109 :login:Penguin:02/09/26 18:12 ID:7zzSbQve
>>107
ターゲットと同じ種類のドライバ
or
似たような構造のハードを制御するドライバ
が一番いいサンプルなんだが。

目的のハードがどんな物かわからんので誰も答えられんと思う。
物によって微妙に作りが違うし。


110 :ねここねこ:02/09/27 09:39 ID:2CKrLbeR
>108&109
確かに、物が不明だとわからないですね

物はFPGAというチップ経由で
データがやってくるハードのようです
外部のチップからFPGAにある程度データが貯まると
IRQをキックして(?)まとめてデータをCPUに対して送ってくるとか
言ってたな、、、

実はハードがまだ出来ていなかったり〜



111 :login:Penguin: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: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 デバイスドライバ
http://www.hemamu.com/dev/linux/pci/index.html

Programmed I/O (PIO)を用いた簡単なPCIデバイスドライバ
http://www-online.kek.jp/~yasu/Kenshu/pci-device-driver.html

Linux Module-HOWTO
http://www.linux.or.jp/JF/JFdocs/Module-HOWTO.html

Linuxデバイスドライバ開発ノート
http://www2s.biglobe.ne.jp/~nunokawa/Linux/DD/

Linuxによるロボット制御・デバイスドライバ開発
http://www.mechatronics.mech.tohoku.ac.jp/~kumagai/linux/

Linux用デバイスドライバの作成
http://ap.fukushima-iri.go.jp/LinuxDeviceDriver/LinuxDeviceDriveMAIN.htm

LinuxデバイスドライバFAQ
http://www-online.kek.jp/~yasu/Kenshu/faq.html

エンジニアリングLinux応用技法
カーネル/デバイスドライバ/ポーティング/リアルタイム
http://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記録実験:03/01/08 22:12 ID:KwFqEkll
IP記録実験
http://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:03/01/09 01:09 ID:kgNvzzS1
なんとか頑張って下さい>ひろゆき

お金は持ってないけど応援します。

121 :login:Penguin:03/01/09 01:23 ID:kgNvzzS1
ひろゆきは早起きのし過ぎでちょっと壊れてるな。

122 :login:Penguin:03/01/09 01:33 ID:kgNvzzS1
>>532
プ

123 :IP記録実験:03/01/09 01:55 ID:AmicprCv
IP記録実験
http://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:03/01/09 02:06 ID:0uJfVOg+
名スレの予感

125 :login:Penguin:03/01/09 02:50 ID:yayiRGlu
福島もキタ━━━━━━(゚∀゚)━━━━━━ !!!!

126 :login:Penguin:03/01/09 03:34 ID:TPkK0Va9
>>81
まぁそういうところでよしゆきはすごいわな。

127 :山崎渉:03/01/15 11:31 ID:m6zO97qQ
(^^)

128 :ドライバー:03/01/15 13:09 ID:I5ofFU+k
いまLynxEMのドライバいじってるんだけど、
マルチディスプレイに成功した人います?

もう何年も放置されてる問題だから無理なのかな…?

129 :login:Penguin: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: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:03/02/07 22:07 ID:nu9G29ZI
>>133
http://www.google.co.jp/

# gnutellafsなんてのもあるのか...

135 :133:03/02/11 02:29 ID:/akGZqt4
http://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:03/02/16 03:44 ID:tbT/WrCe
>>137
スピンしっぱなしになる

ちなみに超電磁スピンはこれの応用

139 :login:Penguin: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: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:03/02/27 03:04 ID:1e6KPqQp
普通loopだろう。

145 :bluehat:03/02/28 03:17 ID:5YDI7es3
>>144
却下。普通じゃだめぽ。デバドラで実現しる!

146 :login:Penguin:03/02/28 07:13 ID:0bshxi8O
>>145
んー、何をもってデバドラというのかよーわからんが、狭義な,
ハードウェアを制御するドライバのことなら

「オマエラ、おつむ悪すぎなので出直して下さい。」

147 :login:Penguin:03/02/28 12:21 ID:oFO1qwF8
>>145
んと、loopは広義のデバドラですよ。メジャー番号7のブロックデバイスです。

148 :login:Penguin:03/03/06 14:51 ID:NOJmB8ay
kernel-2.5 でデバドラのインターフェースが大幅に変わるという話を
きいたがおまえら知っているか?


149 :login:Penguin:03/03/06 22:23 ID:33Ph63nv
>>148
プリエンプティブカーネルになるってのはどっかで見たが・・・
I/F というと、エントリーポイントの仕様でも変わるのか?
それとも、カーネルがエクスポートするルーチンの仕様変更?

150 :login:Penguin:03/03/06 23:24 ID:gj2ir03d
>>148
モジュールまわりの仕様が変わるというのはあるが、
モジュール自体に影響ないはずだし…
構造体とかカーネル側の関数が変更されるのはよくあることだし…

その話の出所はどこよ?


151 :148:03/03/07 00:48 ID:2S2Wvrkx
struct file_operations つくって register_chrdrv()するだろ。
そのやりかたが変わるとか聞いたんだが。


152 :login:Penguin:03/03/07 04:37 ID:2ohbwA9F
>>151
(゚∀゚)んなこたーない

153 :148:03/03/07 13:38 ID:2S2Wvrkx
>>152
安心したよ
>>149
カーネルプリエンプションに関しては大問題だ。
ドライバかなり書き直さなくてはいかんのぉ。


154 :login:Penguin:03/03/08 00:05 ID:l6jbsomd
2.5のソース読んでからまた来い

155 :login:Penguin: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:03/03/22 11:15 ID:j2wJcuTQ
>158

http://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 :あぼーん: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: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: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 :開発メモ: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:03/04/14 22:12 ID:ktmIntrh
>>160
こんなんが参考になるかも・・・
http://www-online.kek.jp/~yasu/Kenshu/usb-driver.html


>>167
> printk の出力はdmesgで見ることができる。

cat /proc/kmsg
としても見れます。

カーネルバッファにメッセージが追加される度にコンソールに表示されます。
でも表示内容の文頭に <4> というようなログレベルが付いてまうけど・・・

169 :login:Penguin: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 :山崎渉:03/04/17 11:54 ID:KRn99/cy
(^^)

171 :login:Penguin:03/04/18 01:19 ID:HcWYqirI
>>169
>>167 ?

172 :山崎渉: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:03/04/21 11:35 ID:TzNUZhnB
>>173
カーネルのバージョンとtest.cがわからないとちゃんと答えられない


175 :login:Penguin:03/04/21 11:37 ID:65INoG+s
>>173
find ライブラリのありそうなパス -exec grep -l "remap_page_range" {} \;
とかやってみるとか?


176 :login:Penguin: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カメラのドライバです。
http://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:03/04/21 19:06 ID:UyUiMYQq
>>177
そのカーネルの.configは?
CONFIG_MODVERSIONS=nのときに-DMODVERSIONS付けても同じ事になったような気がするが。


179 :うまうま: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キットはいかが?
http://www.morphyplanning.co.jp/

確かLinuxドライバを開発しているサイトがあった気がする。

184 :bloom:03/04/25 12:26 ID:1KQi+Ees
http://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:03/05/02 12:21 ID:5kcklCyp
>>183
モルフィー企画は、5/1 千葉地裁に破産申し立てを行った模様。
やっと終わったようですね、夢が・・・


187 :login:Penguin:03/05/02 13:17 ID:8SKdq5Sf
>>185
それはモジュールの初期化に失敗した時のメッセージでつ。
だまされないように。


188 :login:Penguin: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: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: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: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
http://homepage.mac.com/ayaya16/

198 :login:Penguin:03/05/07 18:18 ID:xHs+a1Ja
>>196
??? どのレベルでわからないんだろう。ユーザアプリから機器を操作するのは、
すべからくデバイスドライバを通してopen/close/read/write/ioctl 等です。

でも、0x07 を送ると 0x1fを返すとうUSB機器なら、デバドラいらないじゃん。っ
ていうか、機器もいらないじゃん。「0x07を送ると0x1fを返す」ダミーの関数
かませればいいじゃん。たぶん、その質問はなにか省略しすぎで返事がしにくい。


199 :ドライバ初心者:03/05/07 23:02 ID:Sh0BeBWS
>>198
分かりにくくてすいません。

USB機器に、データ確認コマンド(0x07のバイト列)を送る。
USB機器にデータがあるなら、(0x01)が返ってくる。
(0x01)が返ってきたのを確認したら、データ取得コマンド(0x0a)を送る。
USB機器からデータ(20バイト)が返ってくる。

上記の仕様で、USB機器にバイト列を送ったり、USB機器が返すバイト列を受け取るにはどうすればいいのかが分からないのです。
urb構造体を使うのでしょうか?

200 :login:Penguin:03/05/07 23:47 ID:ppjtoJvG
>>199
USBのドライバは書いた事ないのでアドバイス出来んが、
ttp://www.narimatsu.net/nari_page/musbio.html
にあるドライバが多分近いので、読んで見ると参考になるかも。


201 :login:Penguin: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:03/05/09 23:43 ID:ZjYTJvxM
>>203
相手側の仕様にあわせてください。
仕様書ぐらいあるよね?


205 :ドライバ初心者:03/05/10 00:57 ID:5c13M/Uv
>>204
それが、>>201 に書いたようなコマンドのやりとりのはしご図しかありません。

206 :login:Penguin:03/05/10 18:30 ID:+67eyGUg
>>205
たぶん、1にかいて、2を読むんだとおもうけど、そんな状態でコーディングを
すすめちゃだめです。仕様書をもらって、それをもとに設計してから書くの。


207 :うまうま:03/05/11 02:10 ID:sP9foAmw
>>203
ひょっとして未公開プロトコルをハックしてlinux用にドライバ
作ってんの?

lsusbの表示について
デバイスからデータを読むためのエンドポイントは IN になって
いるはずだよ。そのようなエンドポイントがひとつしかないなら
その番号でOKだと思う。
逆に、デバイスへデータを書き込むためのエンドポイントは OUT

そのターゲットデバイスにはエンドポイントが複数あるっぽいけど、
それだったらコマンドやりとり時、どのエンドポイントが使われて
いるのか調べる必要がある。

208 :206:03/05/11 02:28 ID:+b1ggx7/
あう。よく読まず1,2を逆にかいてしまいました。つことで>>206に惑わされないで2がOUTね。>>205




209 :ドライバ初心者: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:03/05/16 16:21 ID:yZKduc9i
初歩的な質問ですみませんが、導師のみなさま、お導きを。

write()されたデータを一時的に保持して、次のread()で保持した値を返す
ようなキャラクタデバドラがあるとします。

アクセスする側が単独のプロセスの場合、実装は簡単ですが、複数のプロセスが
上記デバドラにアクセスする場合はセマフォを使っての排他制御が必要となります。

これをアクセス側にセマフォを設けないで、上記デバドラ側で同等の機構を
実現するにはどのように実装すればいいのでしょうか?




212 :login:Penguin:03/05/16 16:44 ID:0mzALYCZ
>>211
プロセス別にキューを持てばいいんでは?
openされたら新しいキューを割り当てて、
closeされたら開放。


213 :211:03/05/16 18:32 ID:g3wElzO+
>>212
では、同一プロセスの複数スレッドまで考慮しなければならない場合、
どうすればいいのでしょうか?

214 :212:03/05/16 19:18 ID:0mzALYCZ
>>213
スレッドじゃなくても、二つ以上開いたら破綻しますな。
→お手軽コース:1回だけオープンできるようにする。
→まじめに作る:複数キューを持てるようにする。file.private_dataにキューのポインタ入れるのが簡単かな?
というところで。


215 :うまうま:03/05/17 03:23 ID:WAKxeCTB
>>210
readしたとき、とりあえず何バイトか読み出してる?
デバイスが返しうるバイト数よりも多く読み出そうとして待ち
続けているという可能性はない?

216 :ドライバ初心者:03/05/18 01:04 ID:2usiGwhL
>>215
>readしたとき、とりあえず何バイトか読み出してる?
その通りです! すっと、返されるはずのバイト数よりも多いバイト数で読み出していました!
今はハードが手元に無いので月曜日に試してみます。ありがとうございました。

217 :動画直リン:03/05/18 01:11 ID:pMLvChGr
http://homepage.mac.com/hitomi18/

218 :login:Penguin:03/05/18 21:07 ID:sDNMC/v5
猿でもわかるように書かれたデバドラ作成解説ページってある?

219 :ドライバ初心者: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
http://www.atomised.org/docs/linux-2.4.19-drivers/usb_8c.html


220 :login:Penguin:03/05/19 19:13 ID:Q6lDTR8l
>>218
デバドラの前に、まずはRFC2795から行ってみよう。

221 :login:Penguin:03/05/19 22:53 ID:808Vam9H
>>220
英語読むのめんどくせ
猿にハムレット歌わせるんだっけ?

222 :ドライバ初心者: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 :山崎渉:03/05/22 01:55 ID:p4opmoqv
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―

224 :ドライバ初心者:03/05/22 16:32 ID:7jvNN9yz
>>222
仕様書のコマンドが入れ換わっていた!というわけで自己解決しますた。

http://north.hokkai.net/~nsawa/piece-lab/usb/20011231.html
ここのソースも参考にして完成です。アドバイスをくれたみなさん、あ
りがとうございました。

225 :login:Penguin:03/05/27 12:06 ID:VgmJadOg
あまりにも便利なので上げさせてください

226 :login:Penguin:03/05/28 14:11 ID:2En7vxAz
insmod するとこんなエラーが出てきたのですがどうすればいいでしょう?

couldn't find the kernel version the module was compiled for



227 :山崎渉:03/05/28 16:42 ID:3t6i6zxR
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉

228 :login:Penguin:03/05/28 16:55 ID:3qAfQe3K
>>226
そのドライバを今のカーネルでコンパイルし直してください。
もしくは -f オプションで insmod してください。なんちって

229 :login:Penguin:03/05/28 23:40 ID:z1beycbb
>>226
なにをいれた? 「実はモジュールじゃない」ってときもそれ。

230 :226:03/05/29 18:33 ID:FeUqO3hy
>>228
>>229
MIPS で動いているLinux に、Redhat7.2 のUSBデバイスドライバです。

ソースのコンパイルはちゃんと通るのですが。
あと、Hello World を出力するだけのデバドラの動作は確認済。

231 :login:Penguin:03/05/29 21:59 ID:5gpS9IGq
>>230
archがあってないとか。

$ file vmlinux
$ file そのモジュール
の結果を見てみたい所ですね。


232 :226: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:03/05/31 15:40 ID:pCrUKetP
>>232
あってるねえ。謎だなあ。
init_moduleがエラーを返してるって事はないよね?


234 :226: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:03/06/03 01:50 ID:iocW6lsY
>>234
そんな関数見たことないなー。
別なモジュールに依存してるとかないの?
カーネル絡みはlibgcc以外のライブラリ使わないよ。


236 :コピペ:03/06/03 13:33 ID:9FZ3sCry
(゚∀゚) ?
Insmod が _gp_disp シンボルが未定義だと文句を言います

(゚∀゚) !
_gp_disp は MIPS の PIC コード中で使われているマジックシンボルです。
このエラーは、システムをクラッシュから救ってくれたため、むしろ有り難いものです。
この場合の問題の要点は、カーネル作成時の Makefile のオプションと、
カーネルモジュール作成時のオプションは同じにすべきだということです。
特に、オプション -mno-pic -mno-abicalls -G 0 が重要です。

237 :login:Penguin:03/06/03 13:34 ID:9FZ3sCry
まあなんか知らんけどgoogleって便利ってのはわかった
意味まではわかんないけど

238 :login:Penguin:03/06/03 14:40 ID:iocW6lsY
>>236
へぇ、MIPSのPICは変わっていると聞いたことがあるが…
そんな事もやってるのか。
ひとつ賢くなったような気がする。


239 :():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:03/06/04 15:22 ID:miGkoc0u
>>240
su して、
reboot

これが最速。

242 :login:Penguin: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 :うまうま:03/06/04 23:56 ID:yoK8ZXbv
>>239
ドライバの移植?なかなかおもしろそうだね

read, writeのコマンドシーケンスは合ってる?
ひょっとして、readする前にデバイスに対し的確なコマンドを
writeしてあげないといけないのでは?

そのsnifferログは、OSから8バイトのデータをデバイスに送っている
点や、URB番号が若い点からして、USBデバイスからディスクリプタを
読み出そうとしているところと見た。それはWindowsでもLinuxでもデバイスを
繋いだらUSBホスト側が自動的に行う部分。いわゆる初期化処理。
今回のreadできない問題に関係あるとは思えないな。


245 :239: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:03/06/10 11:06 ID:3w0EVlGb
ttp://www.xlsoft.com/jp/products/windriver/windriver.html
ここにある、winDrive の体験版でハードを調査したところ、インターフェースが活性化されていないのが原因のようです。

usb_set_interface() を使えばいいのだろうけど、パラメータがよくわからない。

247 :login:Penguin: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:03/06/13 18:44 ID:pewsS0ej
ここを読んだら自己解決しますた。

USB通信プログラミングテクニック
ttp://www.picfun.com/usb00.html

249 :うまうま: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:03/06/14 18:11 ID:1HDS5RSe
MODULE_LICENSE("GPL"); のことかにゃ。

252 :login:Penguin: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:03/07/09 01:22 ID:9Ead9bym
tcpdump等の既存のものより詳細にみれなければ意味がない気がするけど大丈
夫なのかしら。


263 :_:03/07/09 01:29 ID:RRaEUYou
http://homepage.mac.com/hiroyuki44/hankaku09.html

264 :login:Penguin:03/07/09 01:48 ID:FD/eKW7A
>>262
石にもよるでしょうねえ。
最近の利口な奴はいろいろ手を入れてくれるし。


265 :login:Penguin:03/07/09 13:47 ID:GtKhiIZ8
>>261
現行ドライバだと、どの点が不満なのか言ってもらわないと助言しようがないよ
パケットモニタリングはNICチップのpromiscuousモードの仕様に依存する話だ

266 :login:Penguin:03/07/10 07:33 ID:sMbuqqa1
>>265
現行のドライバならpromiscuousモードで動かしたときに
パフォーマンスがわるいな感じです
それでぺケットを取りこぼすことになってしまうので
キャプチャ用途に最適化できたらいいなと考えましたです

267 :login:Penguin:03/07/10 07:41 ID:oOmBMqv3
>>266
promiscuousモードだと全パケットをホストPCに転送するから
通常モードに比べて取りこぼす可能性は増える。対象のNICチップは何?
素直にintelなり3comを買えば済むだけの話かもよ。

ちなみにリアルテック(蟹)の性能がよくないのは特許を避けてるから。
現状でいいパフォーマンスのNICが欲しけりゃIntel(or元DEC)、3comの
ちょっと値が張るNICを買うしかないよ。

ドライバでどうこうできる話ではない

268 :login:Penguin:03/07/10 23:13 ID:TravPTn9
>>267
リアルテクです。3COMも使ってますが、スイッチと相性が悪いな感じで
無反応になってしまう(壊れているのかもしれない)こともありますで
リアルテクでペルフォマンスがよくならないかなと想いました
ちなみに特許って具体的にはどんな特許ですか?

269 :login:Penguin:03/07/10 23:46 ID:bBVT4pXs
>>268
261と268で目的が変化してるぞ。

270 :login:Penguin:03/07/11 13:32 ID:CtoBVZIQ
>>268
そもそもパケットモニタリングするのにスイッチングハブを使ってる時点でアウト
リピータハブ(ダムハプ)を使わないと他ホストの通信は傍受できないよ

結論
・RealtekのNICは捨てて、Intelか3Comを使え
・スイッチングハブではなく、リピータハブを使え

全然デバドラと関係ないや スレ違いどころか板違い?

271 :login:Penguin:03/07/13 22:55 ID:UrPfG9sV
>>267
>promiscuousモードだと全パケットをホストPCに転送するから
違うよ。promiscuousモードって言うのは、リンク層で受信したデータが
自ホストの物理アドレスでなくても受信すること。
>>270が正しい事を言っている。

272 :login:Penguin:03/07/14 02:37 ID:imGWjqw6
age

273 :267=270:03/07/14 15:12 ID:E/Ns9e+C
>>271
すまん 267=270 なのだが 何か矛盾したこと言ったかな?

MAC層(データリンク層)の処理はNICチップで行われる。
ホストPCはMAC層の処理にはまったく関与しない。
MAC層の処理後、必要なデータだけPCIバスを介してホストPCにDMA転送する。

つまり、通常モードだと自ホスト宛かブロードキャストのパケットデータだけを
ホストPCに転送すればいいのに対し、promiscuousモードだとすべての
パケットデータを転送しなくてはならず、転送量が膨大になる。
そのため、バッファがあふれる(=データを取りこぼす)ことになりやすい。

274 :268:03/07/15 03:30 ID:Yac3cQfq
スイッチはL3スイッチでポトミラリング機能がありますよ

ただ3COMのNICでも限界があるとですがぎりぎりまでぺケットの
モニタ用に最適化したいと思いましたです
リアルテクの話は忘れてください ふつはバッファも通信用に
チュニングすれて確保してると思ったけどぺケットをモニタするときは
受け取るだけだから ドライバで受信用のバッファを多めに
できたらいいなと思ったよ でもどうやったらいいか分らないよ
ヘルプしてください





275 :山崎 渉:03/07/15 11:17 ID:2JhhXBQM

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄

276 :login:Penguin:03/07/15 12:07 ID:Fo16Kpwc
(・∀・)renice!

277 :login:Penguin:03/07/22 11:30 ID:6WQ9WMDa
(・∀・)renice!

278 :login:Penguin:03/07/25 12:52 ID:NH3LXVfX
(・∀・)renice!

279 :login:Penguin:03/07/30 12:07 ID:cPdgkLk2
(・∀・)renice!

280 :ぼるじょあ ◆yBEncckFOU :03/08/02 05:04 ID:GfRe8vK7
     ∧_∧  ∧_∧
ピュ.ー (  ・3・) (  ^^ ) <これからも僕たちを応援して下さいね(^^)。
  =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
  = ◎――――――◎                      山崎渉&ぼるじょあ

281 :login:Penguin:03/08/02 10:27 ID:2rmp9gin
(・∀・)renice!

282 :login:Penguin:03/08/08 11:54 ID:mg5o8ebS
(・∀・)renice!

283 :login:Penguin:03/08/13 12:30 ID:pfCYHBFY
(・∀・)renice!

284 :login:Penguin:03/08/14 22:31 ID:EZZe4dzO
$> cd /pub
$> more beer


285 :login:Penguin:03/08/14 22:44 ID:EZZe4dzO
$> man woman
$> Segmentaion fault (core dumped)


286 :山崎 渉:03/08/15 22:51 ID:dil3w4kp
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン

287 :login:Penguin:03/08/15 23:47 ID:GfNK1qbf
(・∀・)renice!

288 :login:Penguin:03/08/16 15:04 ID:rNtMNMvg
(・∀・)renice!

289 :login:Penguin:03/08/25 09:46 ID:+hXUD3jL
(・∀・)renice!

290 :login:Penguin:03/09/02 21:16 ID:1mo12GKS
insmod xxx.oってことはドライバのソースはどんなに大きくてもxxx.cの1っこだけじゃないとだめなの?

291 :login:Penguin:03/09/02 21:20 ID:88sqYoXe
>>1は、ママンでもファックしてろや!hahahahahahaaaaaaaaaaaaaa!

292 :login:Penguin:03/09/02 22:18 ID:qo69XMHR
>>290
完全なるカーネルモジュールにヘッダやリンカはいらない。
ソースは常にひとつ。

293 :login:Penguin:03/09/03 08:04 ID:CuYcG2U3
>>290
Cファイルをインクルードすればいいだろ。

294 :login:Penguin:03/09/03 11:30 ID:4cm8kGPF
>>293
よりによって一番最悪な答えですね先生

295 :login:Penguin:03/09/03 16:47 ID:iWz7WMbL
>>290
info ld
-rの説明読め。


296 :login:Penguin: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: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:04/01/16 20:57 ID:JS8EwlnL
FPGAですね。

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

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

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


301 :login:Penguin: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:04/01/19 07:32 ID:kPFQP2Tn
PCIバスアナライザで観測しながらアクセスしてみそ

304 :login:Penguin: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:04/01/28 12:46 ID:OnT2yC/X
んなこたーない!
297 が FPGA開発を同時にやってるならまだしも・・・
あったほうが楽なのは確かだが、無理ではない。

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

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

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

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

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

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

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

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


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

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

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

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

311 :307: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:04/02/03 23:12 ID:j9rA+N1w
>駄文失礼

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

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

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

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


316 :login:Penguin: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 :殴られそうだが: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: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:04/02/14 07:34 ID:kX0ZpYOB
linuxはsolarisみたいにクラッシュダンプ取れますか??

323 :login:Penguin:04/02/16 00:01 ID:dUYGf/LZ
>>322
ttp://lkcd.sourceforge.net/


324 :login:Penguin: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:04/02/24 22:37 ID:BGHqYIMS
modpostについて詳しく解説している文書をご存知でしたら教えて下さい。

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

328 :login:Penguin: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:04/04/08 17:57 ID:/VjqMrH1
>>329
つ[ mmap.c ]

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

332 :login:Penguin:04/04/09 00:58 ID:ImS0ZAox
>>330
ha?

333 :login:Penguin:04/04/09 00:59 ID:ImS0ZAox
あぁソース嫁ってことかw


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


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

336 :login:Penguin: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:04/04/14 15:26 ID:XimV19c+
デバイスを破壊出来るデバイスドライバーの作り方教えてください

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

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

341 :login:Penguin:04/04/15 10:49 ID:D/fT1Zhi
>>340
( ´д)ヒソ(´д`)ヒソ(д` )

342 :login:Penguin:04/04/19 20:10 ID:TjHP8JDs
>>340
( ´д)チョメ(´д`)チョメ(д` )


343 :login:Penguin: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:04/04/28 09:36 ID:r7A4ZD5z
>>344
出し入れ可能だけど、作り方は教えられないのでは?
もう既に完成してしまっているし ソース嫁としか言えないと思う

346 :login:Penguin: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時にマイナーバージョンの情報を登録してないみたいだけど
デバイスファイルでアクセスしようと思うと無理なのかな〜・・・

114 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)