1 名前:login:Penguin [02/01/31 01:14 ID:t3s191ys] ディバイスドライバの改造、製作にまつわる情報交換、質問、 噂話、ぐち、政治、経済に関するスレです。できる限り生産的にいきましょーや。
2 名前:login:Penguin [02/01/31 01:15 ID:t3s191ys] とりあえず、オライリーのお馬さん本2杯目へのリンク。 www.xml.com/ldd/chapter/book/bookindexpdf.html
3 名前:login:Penguin [02/01/31 01:30 ID:o+EauUH6] イーサネットドライバの仕組みが知りたいですわ。
4 名前:login:Penguin mailto:sage [02/01/31 01:32 ID:WoiBhbQB] 何故?Kernel仕組みスレのリンクを張らないの? ☆Linux カーネルの仕組みを勉強するスレ☆ pc.2ch.net/test/read.cgi/linux/1002012247/
5 名前:1 mailto:sage [02/01/31 01:44 ID:R8TIzJku] あー、スマソ。ぼけてたです。 ついでに最新カーネル表示スレ pc.2ch.net/test/read.cgi/linux/999618082/l50 USB総合スレ pc.2ch.net/test/read.cgi/linux/1002630729/l50 最適NICスレ pc.2ch.net/test/read.cgi/linux/986761860/l50
6 名前:login:Penguin mailto:sage [02/01/31 01:47 ID:WoiBhbQB] 是非とも、このスレを優スレにしたいなぁ・・・ 公開されているいい関係資料を漁ってみよう。
7 名前:1 mailto:sage [02/01/31 01:47 ID:R8TIzJku] JFドライバ関係 www.linux.or.jp/JF/JFdocs/INDEX-hardware.html おなじくカーネル関係 www.linux.or.jp/JF/JFdocs/INDEX-kernel.html ちょっとネタスレだけどLinuxプログラミングスレ 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 mailto:sage [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 mailto:sage [02/01/31 23:21 ID:ZFCCqGEW] 正直、こういう技術的なネタはここでは盛り上がらない。
15 名前:login:Penguin mailto:sage [02/02/01 00:30 ID:Hb4Obm1B] じふぃーず ってどこまで短くしたことある? みんなの体験談キボーン とりあえずCPUクロックと併記よろしこ
16 名前:login:Penguin mailto:sage [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 mailto:sage [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 mailto:sage [02/02/01 05:17 ID:Dg5fN5Aj] デバイスドライバには2種類ある ブロックドライバとキャラクタドライバ ブロックデバイスは塊単位としてしかアクセスできんデバイス 普通は1kごととかで お前らの使ってるディスク装置とかがこれだ キャラクタデバイスはファイルみたいにアクセスできてそういう世話 をするのが実装されとる。オープン・クローズ・リード・ライトシステム コールが実装されていてコンソールとかパラレルポートとかが これらしい。 ほんとかよ。お前ら間違ってたら教えろよ。
20 名前:login:Penguin mailto:sage [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 名前:スマソ mailto:sage [02/02/01 05:45 ID:Dg5fN5Aj] >>18 s/insmod hello.o 1/insmod hello.o baka=1/
22 名前:login:Penguin mailto:sage [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を読もうかと思います。 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 mailto:sage [02/02/01 08:51 ID:Oxc8LS21] つーか、その辺はお馬さんの本を見れば全部丁寧に解説してるし。
25 名前:login:Penguin mailto:sage [02/02/01 09:12 ID:Dg5fN5Aj] まさか2ちゃんねるでこんなにわかりやすい答えがもらえるとは 思ってなかった。わかったような気がします 考えてみればメモリ上に読みこまれる実行バイナリ が常に同じ場所に置かれるわけじゃないから、そういう仕組みが無いと 毎回呼び出すたびに大変なことになりそうな コンピュータの本ってなんかむやみに高く無いですか? 自分のレベルに合ってない本を買ってしまったときのむなしさ と言ったらエロ本どころの騒ぎじゃないような
26 名前:login:Penguin [02/02/01 09:22 ID:CW11eql0] 稀に見る良スレ age
27 名前:login:Penguin mailto:sage [02/02/01 09:24 ID:Y0QPm9tf] >>25 レベルが違う分には、ざっと目を通しておくとあとで理解できたり、 「あ、あのときあの本に書いてあったな」って読み返したりできる。 方向性が違う時には、虚しいこともある。 レベル低すぎな本は、そもそも買うときに弾くことができる。
28 名前:login:Penguin mailto:sage [02/02/01 09:28 ID:K+86rTMk] >>25 つーか、こんなの基本じゃないっすか・・・ わかり易いとか、わかりにくいとか以前の問題だと思うんですけど・・・
29 名前:23 mailto:sage [02/02/01 09:34 ID:zfB82tu1] / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | 先輩、LinkerLoader読まなくても | お馬さんにかいてあるそうですよ。 | 先輩って確か第1版もってましたよね? \  ̄ ̄ ̄|/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ( ・∀・) ∧ ∧ < いや、読んだ覚えはねぇぞゴルァ ( ) (゚Д゚ ) \____________  ̄ ̄ ̄ ̄ ̄ (つ_つ__  ̄ ̄ ̄日∇ ̄\|Amity VP|\  ̄ ======= \ トウジハ リカイデキナクテ ミナカッタコトニシタラシィ
30 名前:login:Penguin mailto:sage [02/02/01 09:37 ID:Dg5fN5Aj] >>28 スマソ、本当にはじめて知った。 コンピュータは趣味というだけなんで誰から教わったわけでもなく わからない事だらけなんです少しずつわかってけばいいかなと。
31 名前:23 mailto:sage [02/02/01 09:38 ID:zfB82tu1] >>28 ん?基本を説明するのに解りやすかったり解りにくかったりする ことになんの不思議が? おまえは分数の計算を生まれたときからできたのか問い詰めたいよ。 いくら算数が数学の基本だっつったって、解りやすい先生がついた ときと、そうでないときとで、生徒の苦労はケタ違い。
32 名前:login:Penguin [02/02/01 09:53 ID:VTxWGKIN] www.iecc.com/linker/ linker&loadersの草稿が英語で読めるYO! www.linux.or.jp/JF/JFdocs/INDEX-programming.html Library HOWTO はわかりやすいス
33 名前:login:Penguin mailto:sage [02/02/01 10:02 ID:wGSa/qxe] ディバイディングドライバァァァァーッ!!
34 名前:login:Penguin mailto:sage [02/02/01 10:21 ID:RSGobFLl] >>31 あんた自分の理解力にコンプレックスでもあるの? まあ気の弱い犬ほどよく吠えると言うが・・・
35 名前:login:Penguin mailto:sage [02/02/01 10:35 ID:a6zdq5Rc] >>34 オマエガナー 赤の他人に理解力について 罵られるいわれもコンプレックスを持つ必要性も 無いと思われ。 28は上司に尻叩かれて性格が曲がっちゃった 職業プログラマに3ガバス
36 名前:login:Penguin [02/02/01 10:51 ID:Oxc8LS21] 喧嘩は〜やめて〜争わ〜ないで〜 >>33 承認 モジュールをつくる www.mechatronics.mech.tohoku.ac.jp/~kumagai/linux/drivers/module.html デバイスドライバ開発入門 www.net-newbie.com/linux/driver/ Linux 拡張ボードデバイスドライバの作り方 www.mechatronics.mech.tohoku.ac.jp/~kumagai/research/library/drivers/make_dd.html >>10 へ 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 タダで読めますよ www.xml.com/ldd/chapter/book/index.html
38 名前:login:Penguin mailto:sage [02/02/01 11:02 ID:0zxTeFbY] >>37 サンクスコ ちなみに23の説明は楽しかった。
39 名前:login:Penguin mailto:sage [02/02/01 11:35 ID:0DxQaaOu] >3ガバス ガバスって、ファミ通だっけ?デバイスと関係なのでsage
40 名前:login:Penguin mailto:sage [02/02/01 13:40 ID:fvbQ/5zX] >>25 お前はまだ仮想アドレスについても学ばなければならない。 >自分のレベルに合ってない本を買ってしまったときのむなしさ レベル上がってから読みなよ。
41 名前:25 mailto:sage [02/02/01 14:20 ID:LgazE6G1] >>40 うむ、了解。 じゃあまず仮想アドレスについてから勉強するよ。 なんかこのスレでブックマークが一杯になってしまったなあ
42 名前:login:Penguin mailto:sage [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 mailto:sage [02/02/01 17:42 ID:Oxc8LS21] >>43 なんでもいいからキャラクタ型デバイスのソースをみるとよろし。 基本がみっしり詰まってて勉強になるっす。
46 名前:login:Penguin mailto:sage [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ということは、いつものコメンテーターと作者が違うようですね。 // そうそう。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 mailto:sage [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 mailto:sage [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 mailto:sage [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 mailto:sage [02/02/01 22:57 ID:c8Ppl2p2] げ、ぶち切れてる。鬱死....
51 名前:login:Penguin mailto:sage [02/02/01 23:02 ID:Oxc8LS21] 改行が挟まらなければ 相当おもしろい企画になる・・・ マジ良スレの予感
52 名前:CMまで前半 mailto:sage [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まで後半 mailto:sage [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`03GG(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 mailto:sage [02/02/01 23:49 ID:bMJKgu48] 只今、続き作成中です。それまで>>52-53 の美しい映像(?)でお楽しみ下さい。 m(__)m
55 名前:login:Penguin mailto:sage [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 mailto:sage [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ます mailto: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 mailto:sage [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] ちなみに、元祖モモナイさん達は 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 mailto:sage [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 mailto:sage [02/02/05 19:58 ID:EBSnoi/G] >>67 BeOSのような第3の勢力が突発的に出現して Gates帝国もUNIX連合も一夜にして淘汰される。に一票
69 名前:login:Penguin mailto:sage [02/02/05 20:26 ID:YUE4G5dx] サーバはどうか知らんが 結局ごちゃごちゃでも便利なものから離れられない。windowsは無くならんのは当然だが linuxもWindowsがGPLにでもならん限り無くならんと思うなあ。 そのうち良くなるだろ。 もしBeOSみたいなのがでてきても、よっぽど革新的でFreeでないと、また往っちゃうよ
70 名前:login:Penguin mailto:sage [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 mailto:sage [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 mailto:sage [02/04/05 22:15 ID:CU/0IjiI] まぁ、アゲられついでに75さんにLinux界に伝わる格言を一つ。 「動けば正義」
78 名前:login:Penguin mailto:sage [02/05/08 17:01 ID:kXDZWtdP] >77 VBプログラマに通ずるものがある(w
79 名前:login:Penguin mailto:sage [02/05/12 06:02 ID:i/O/fiuU] >>77 イイ言葉だ....
80 名前:login:Penguin mailto:sage [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 mailto:sage [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 mailto:sage [02/08/14 00:52 ID:udiJKVSV] あがりついでに... >>78 >>77 >VBプログラマに通ずるものがある(w 「クソコードを見付けたら、書き直すチャンス!」ってのが VBとの違いだな。
84 名前:login:Penguin mailto:sage [02/08/16 07:53 ID:c0C09J9f] 糞コードをハケーン!! じっとガマンして保守に付き合うのはプロ とっとと書き直すのはアマ
85 名前:login:Penguin [02/08/16 14:43 ID:S24KMUAB] >>84 じゃあオレはアマチュアの方がいいや。 プロっていってもピンキリだし。
86 名前:login:Penguin mailto:sage [02/08/17 02:23 ID:D5BAubdc] たとえ糞コードでも動いているものであれば余計なことをしないのが当然だろ。 元と全く同じ動作をしれば何事も無く済むが僅かでも挙動が変わったりバグが入ったりしたら 周囲に迷惑をかけることになるのだから、 勝手に書き直すようなまねをしでかすのはアマチュアか怖いもの知らずの無分別な若造。
87 名前:login:Penguin mailto:sage [02/08/17 03:47 ID:L76cjPXx] サン電子U-cableP5のドライバはいずこ? IOのケーブルはLinux対応してまっか?DDIに聞いたら Linuxは独自のOSですので当社では判りかねます。 つーかWinはMS独自のOSだしMacもMac独自のOSでは? 製作者及び団体の数ではWinの方が独自性が強いと思うのですが 先生方!教えてくだはい
88 名前:login:Penguin mailto:sage [02/08/17 16:48 ID:OXP9X1ng] おお、こんなスレがあったのか。 ちょっと感動……と思ったら >>87 だから、自分でドライバを書けよ。
89 名前:login:Penguin mailto:sage [02/08/17 16:55 ID:OXP9X1ng] 仕事としてソース非公開なLinux用ドライバ開発なんぞをやってます。 >>75 の言ってる事は同感。 drivers/char/serial.cなんかを見てると情けなくて泣きたくなってくる。 「動けば正義」は否定しないけど、「動いたら放置」ってのはちょっと なぁ。 Linuxだと、なら「ならお前が書き直せ」ってことになるんだけど、正直 どこから手をつければいいのか、途方にくれるようなドライバが多すぎ る。
90 名前:login:Penguin mailto:sage [02/08/17 17:21 ID:MTVVTQyw] 88>書ければWinでネットしません!
91 名前:login:Penguin mailto:sage [02/08/17 20:48 ID:Zdf5lEt8] サン電子は「ドライバ書くので情報くれ」といってもくれない会社だから どうしようもない。
92 名前:login:Penguin mailto:sage [02/08/17 23:46 ID:IR8qSaOk] じゃIO・DATAさんでも良いよ。 H"用のUSBケーブルで32kパケット通信(つなぎ放題)対応って2つしか無いのね! 9月にサンデンシから新しい奴が出るけどWinとMacのみ対応だし・・・・
93 名前:login:Penguin mailto:sage [02/08/18 19:29 ID:XonFUm75] >>90 書けるけどWindowsで繋いでますがなにか。 >>91 いや、情報のない状態からつついて解析していくのも、なかなか 面白いものだよ。 必要性と興味が持続しないとやっとれんけどな。
94 名前:login:Penguin mailto:sage [02/08/20 04:33 ID:EFxDYaWg] U-cableP5ならどっかにドライバ落ちてなかったか?
95 名前:login:Penguin mailto:sage [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 mailto:sage [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 mailto:sage [02/09/19 00:16 ID:YeCer3VV] >>99 あう。。。file 構造体の方でしたか。file_operations 構造体と間違えた。。。 ごめんなさい。でもわかったんならいいよね。。。
101 名前:login:Penguin mailto:sage [02/09/19 01:00 ID:Zca/tfIP] デバイスドライバで、file構造体って見ることあります? 漏れ、見たことないんですが。
102 名前:login:Penguin mailto:age [02/09/24 08:38 ID:jDkNy+Lt] age
103 名前:login:Penguin mailto:sage [02/09/24 10:47 ID:oRAD0jRL] 久々に上がってたりして...で亀レス >>101 一つのドライバで複数のデバイスを制御(特に割り込み)する時に 使わない? (private_data) static な領域にデータ置いといてベタで検索でもいいけど...
104 名前:ねここねこ mailto:age [02/09/24 12:11 ID:jDkNy+Lt] デバイスドライバを書くときに使う各種マクロや関数などが 詳しく&解りやすく載っている資料とか無いでしょうか? 謎の関数が多くて、、、、
105 名前:login:Penguin mailto:sage [02/09/24 16:20 ID:oRAD0jRL] >>104 >37 にある Linux DeviceDriver 2nd Edition これを wget で落して(いいのか?) grep で検索しる。 あとはお決まりのソース drivers/char 以下を検索かな?
106 名前:101 mailto:sage [02/09/24 18:33 ID:YwjfORCG] >>103 おお、なるほど。 そういうドライバは書いた事無いからなー。
107 名前:ねここねこ mailto:age [02/09/26 16:00 ID:3O4ltuCq] >105 やっぱり、それしかないですか、、、 馬の本見てがんばります さらに質問 ハードを直接叩く(?)デバイスドライバを作っているのですが 良いサンプルとか無いでしょうか? とりあえずは、 linux/drivers/char/qpmouse.c あたりを参考にしてるのですが、、、
108 名前:login:Penguin mailto:sage [02/09/26 17:52 ID:l3dRzYLM] >>107 お馬さんで充分かと... > ハードを直接叩く(?)デバイスドライバを作っているのですが これだけでサンプルないかって言われてもなぁ。 誰もレス出来ないんじゃぁ? マウスドライバでも作ってんの? レス出来ないかも知んないけど。
109 名前:login:Penguin mailto:sage [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 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 するとタイムアップになってしまう・・・。何が悪いのでしょうか。 キューのクリアとか必要ですか?
211 名前:login:Penguin mailto:sage [03/05/16 16:21 ID:yZKduc9i] 初歩的な質問ですみませんが、導師のみなさま、お導きを。 write()されたデータを一時的に保持して、次のread()で保持した値を返す ようなキャラクタデバドラがあるとします。 アクセスする側が単独のプロセスの場合、実装は簡単ですが、複数のプロセスが 上記デバドラにアクセスする場合はセマフォを使っての排他制御が必要となります。 これをアクセス側にセマフォを設けないで、上記デバドラ側で同等の機構を 実現するにはどのように実装すればいいのでしょうか?
212 名前:login:Penguin mailto:sage [03/05/16 16:44 ID:0mzALYCZ] >>211 プロセス別にキューを持てばいいんでは? openされたら新しいキューを割り当てて、 closeされたら開放。
213 名前:211 mailto:sage [03/05/16 18:32 ID:g3wElzO+] >>212 では、同一プロセスの複数スレッドまで考慮しなければならない場合、 どうすればいいのでしょうか?
214 名前:212 mailto:sage [03/05/16 19:18 ID:0mzALYCZ] >>213 スレッドじゃなくても、二つ以上開いたら破綻しますな。 →お手軽コース:1回だけオープンできるようにする。 →まじめに作る:複数キューを持てるようにする。file.private_dataにキューのポインタ入れるのが簡単かな? というところで。
215 名前:うまうま mailto:sage [03/05/17 03:23 ID:WAKxeCTB] >>210 readしたとき、とりあえず何バイトか読み出してる? デバイスが返しうるバイト数よりも多く読み出そうとして待ち 続けているという可能性はない?
216 名前:ドライバ初心者 mailto:age [03/05/18 01:04 ID:2usiGwhL] >>215 >readしたとき、とりあえず何バイトか読み出してる? その通りです! すっと、返されるはずのバイト数よりも多いバイト数で読み出していました! 今はハードが手元に無いので月曜日に試してみます。ありがとうございました。
217 名前:動画直リン [03/05/18 01:11 ID:pMLvChGr] homepage.mac.com/hitomi18/
218 名前:login:Penguin mailto:sage [03/05/18 21:07 ID:sDNMC/v5] 猿でもわかるように書かれたデバドラ作成解説ページってある?
219 名前:ドライバ初心者 mailto:sage [03/05/19 19:00 ID:r7lftq4x] >>215 タイムアウトは無くなりましたが、こんどはusb-uhci.c 内でエラーになってしまいました。 /proc/kmsg の出力は usb-uhci.c: ENXIO c0010200, flags 0, urb de96cbe0, burb de96cbe0 usb_bulk_msg の使い方がまずいのでしょうか・・・ usb_bulk_msg(scn->dev, usb_rcvbulkpipe(scn->dev, M_READ), ibuf, count, &partial, RD_NAK_TIMEOUT); USBデバドラ開発に役立ちそうなページ usb.c File Reference www.atomised.org/docs/linux-2.4.19-drivers/usb_8c.html
220 名前:login:Penguin mailto:sage [03/05/19 19:13 ID:Q6lDTR8l] >>218 デバドラの前に、まずはRFC2795から行ってみよう。
221 名前:login:Penguin mailto:sage [03/05/19 22:53 ID:808Vam9H] >>220 英語読むのめんどくせ 猿にハムレット歌わせるんだっけ?
222 名前:ドライバ初心者 mailto:sage [03/05/20 18:31 ID:oatjLeiG] >>219 は私のバグでした。 しかしながら。タイムアウトは解決しないままです。 Windows用のドライバではちゃんと読みこめているようなのですが・・・ lsusb で 下のようにでているのと関係があるのか・・・ unknown descriptor type: 05 24 00 10 01 unknown descriptor type: 04 24 02 06 unknown descriptor type: 05 24 06 00 01 unknown descriptor type: 05 24 01 03 01
223 名前:山崎渉 mailto:(^^) [03/05/22 01:55 ID:p4opmoqv] ━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―
224 名前:ドライバ初心者 mailto:sage [03/05/22 16:32 ID:7jvNN9yz] >>222 仕様書のコマンドが入れ換わっていた!というわけで自己解決しますた。 north.hokkai.net/~nsawa/piece-lab/usb/20011231.html ここのソースも参考にして完成です。アドバイスをくれたみなさん、あ りがとうございました。
225 名前:login:Penguin [03/05/27 12:06 ID:VgmJadOg] あまりにも便利なので上げさせてください
226 名前:login:Penguin mailto:sage [03/05/28 14:11 ID:2En7vxAz] insmod するとこんなエラーが出てきたのですがどうすればいいでしょう? couldn't find the kernel version the module was compiled for
227 名前:山崎渉 mailto:(^^) [03/05/28 16:42 ID:3t6i6zxR] ∧_∧ ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。 =〔~∪ ̄ ̄〕 = ◎――◎ 山崎渉
228 名前:login:Penguin [03/05/28 16:55 ID:3qAfQe3K] >>226 そのドライバを今のカーネルでコンパイルし直してください。 もしくは -f オプションで insmod してください。なんちって
229 名前:login:Penguin mailto:sage [03/05/28 23:40 ID:z1beycbb] >>226 なにをいれた? 「実はモジュールじゃない」ってときもそれ。
230 名前:226 mailto:sage [03/05/29 18:33 ID:FeUqO3hy] >>228 >>229 MIPS で動いているLinux に、Redhat7.2 のUSBデバイスドライバです。 ソースのコンパイルはちゃんと通るのですが。 あと、Hello World を出力するだけのデバドラの動作は確認済。
231 名前:login:Penguin mailto:sage [03/05/29 21:59 ID:5gpS9IGq] >>230 archがあってないとか。 $ file vmlinux $ file そのモジュール の結果を見てみたい所ですね。
232 名前:226 mailto:sage [03/05/30 10:13 ID:Mg17snq6] >>231 $file vmlinux ./vmlinux: ELF 32-bit LSB mips-2 executable, MIPS R3000_LE [bfd bug], version 1, statically linked, not stripped $file test.o ./test.o: ELF 32-bit LSB mips-2 relocatable, MIPS R3000_LE [bfd bug], version 1, not stripped
233 名前:login:Penguin mailto:sage [03/05/31 15:40 ID:pCrUKetP] >>232 あってるねえ。謎だなあ。 init_moduleがエラーを返してるって事はないよね?
234 名前:226 mailto:sage [03/06/02 11:33 ID:O0kbkjww] >>233 cc に渡すパラメータに -DCONFIG_MODVERSIONS を付け加えたら無くなりました。 ところが今度は、insmod するとこんなエラーが・・・ ./test.o: unresolved symbol _gp_disp ./test.o: Note: modules without a GPL compatible license cannot use GPLONLY_ symbols _gp_disp はどこのライブラリにあるのでしょうか?
235 名前:login:Penguin mailto:sage [03/06/03 01:50 ID:iocW6lsY] >>234 そんな関数見たことないなー。 別なモジュールに依存してるとかないの? カーネル絡みはlibgcc以外のライブラリ使わないよ。
236 名前:コピペ mailto:sage [03/06/03 13:33 ID:9FZ3sCry] (゚∀゚) ? Insmod が _gp_disp シンボルが未定義だと文句を言います (゚∀゚) ! _gp_disp は MIPS の PIC コード中で使われているマジックシンボルです。 このエラーは、システムをクラッシュから救ってくれたため、むしろ有り難いものです。 この場合の問題の要点は、カーネル作成時の Makefile のオプションと、 カーネルモジュール作成時のオプションは同じにすべきだということです。 特に、オプション -mno-pic -mno-abicalls -G 0 が重要です。
237 名前:login:Penguin mailto:sage [03/06/03 13:34 ID:9FZ3sCry] まあなんか知らんけどgoogleって便利ってのはわかった 意味まではわかんないけど
238 名前:login:Penguin mailto:sage [03/06/03 14:40 ID:iocW6lsY] >>236 へぇ、MIPSのPICは変わっていると聞いたことがあるが… そんな事もやってるのか。 ひとつ賢くなったような気がする。
239 名前:() mailto:sage [03/06/03 18:52 ID:U5Cecnio] Windowsで動いているUSBデバイスドライバを、Linux へ移植しようとしています。デバイスの認識、open, write, close はうまく出来ているようなのですがreadがうまく行きません。 -75 のエラーが usb_bulk_msg() から返って来ます。-EOVERFLOW のエラーのようです。 ところが、一度、Windowsに認識させてから、そのデバイスをLinux につなぎ直してreadするとうまく行きます。 何らかの初期化をしているようなのですが、Linux ではどのようにすればいいのでしょうか? sniffer Tool の出力には 0000027510:31:13>>>>>>> URB 4 going down... 0000027610:31:13-- URB_FUNCTION_CLASS_INTERFACE: 0000027710:31:13 TransferFlags = 00000000 (USBD_TRANSFER_DIRECTION_OUT, ~USBD_SHORT_TRANSFER_OK) 0000027810:31:13 TransferBufferLength = 00000008 0000027910:31:13 TransferBuffer = 81406fd0 0000028010:31:13 TransferBufferMDL = 00000000 0000028110:31:13 0000028210:31:13 0000: 0000028310:31:13 80 0000028410:31:13 25 0000028510:31:13 00 0000028610:31:13 00 0000028710:31:13 00 0000028810:31:13 02 0000028910:31:13 08 0000029010:31:13 00 0000029110:31:13 0000029210:31:13 UrbLink = 00000000 0000029310:31:13 RequestTypeReservedBits = 00 0000029410:31:13 Request = 20 0000029510:31:13 Value = 0000 0000029610:31:13 Index = 0000 とでていたので、usb_ctrl_msg()を使うのかと思ったのですが。 #define EPIPE32/* Broken pipe */ のエラーを返してしまいます。どうやればいいのでしょうか? ちなみにチップは、日立の38K0です。
240 名前:login:Penguin [03/06/04 10:07 ID:RzUG7kJc] デバドラ開発超初心者です。 誰か教えてちょーだい!! カーネルモジュールでぬるぽ等による例外が起きてoopsが出た後って リブートしなくちゃいけないの? rmmodするとリソースbusyと言われて出来ないし。 簡単にやり直せる方法はないのでしょうか? kdbとかを使うと出来るのでしょうか? 小さなドライバなので出来ればprintkだけでデバッグ 済ませてしまいたいです。
241 名前:login:Penguin mailto:sage [03/06/04 15:22 ID:miGkoc0u] >>240 su して、 reboot これが最速。
242 名前:login:Penguin mailto:sage [03/06/04 15:58 ID:YRPx8Qpb] >>240 MOD_INC_USE_COUNTしなければ、rmmodできるはず。 Oops食らったまま動かし続けるのは気持ち悪すぎるが。
243 名前:240 [03/06/04 18:14 ID:RzUG7kJc] >>241 >>242 さん、ありがとうございます。 MOD_INC_USE_COUNT、MOD_DEC_USE_COUNTを空に 再定義してみました、単純なミスとかで他のメモリ 領域に影響なさそうであれば、これで切り抜けよう と思います。 危なそうな場合は、やっぱりrebootですね。
244 名前:うまうま mailto:sage [03/06/04 23:56 ID:yoK8ZXbv] >>239 ドライバの移植?なかなかおもしろそうだね read, writeのコマンドシーケンスは合ってる? ひょっとして、readする前にデバイスに対し的確なコマンドを writeしてあげないといけないのでは? そのsnifferログは、OSから8バイトのデータをデバイスに送っている 点や、URB番号が若い点からして、USBデバイスからディスクリプタを 読み出そうとしているところと見た。それはWindowsでもLinuxでもデバイスを 繋いだらUSBホスト側が自動的に行う部分。いわゆる初期化処理。 今回のreadできない問題に関係あるとは思えないな。
245 名前:239 mailto:sage [03/06/09 11:05 ID:FPzn7DZy] >>244 write シーケンスの前にあるこの処理が妖しいとは思うのですが、Linux でどうやって実現したらいいのか・・・ 0000037010:31:29>>>>>>> URB 7 going down... 0000037110:31:29-- URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER: 0000037210:31:29 PipeHandle = 814d7b1c 0000037310:31:29 TransferFlags = 00000003 (USBD_TRANSFER_DIRECTION_IN, USBD_SHORT_TRANSFER_OK) 0000037410:31:29 TransferBufferLength = 00001000 0000037510:31:29 TransferBuffer = 8140c000 0000037610:31:29 TransferBufferMDL = 00000000 0000037710:31:29 UrbLink = 00000000 0000037810:31:29B133TN: m_Endpoint1IN.SubmitUrb status ==> 0000037910:31:290x00000103 0000038010:31:29 0000038110:31:29B133TN: B133TNDevice::Create Status 0000038210:31:290x00000000 0000038310:31:29 0000038410:31:29B133TN: Entering B133TNDevice::Device Control, 0000038510:31:29IRP: Major=0xe 0000038610:31:29 Minor=0x0 Flags=0x30 0000038710:31:29B133TN: Code=0x222000 InputSize=0x4 OutputSize=0x0 0000038810:31:29B133TN: 0000038910:31:29B133TN: Entering B133TNDevice::IOCTL_B133TN_COMMAND_OUT_Handler, 0000039010:31:29IRP: Major=0xe 0000039110:31:29 Minor=0x0 Flags=0x30 0000039210:31:29B133TN: Code=0x222000 InputSize=0x4 OutputSize=0x0 0000039310:31:29B133TN: 0000039410:31:29B133TN: FIFO ReservedDataSize=> 0000039510:31:290x00000000 0000039610:31:29 0000039710:31:29UsbSnoop - IRP_MJ_INTERNAL_DEVICE_CONTROL, IOCTL_INTERNAL_USB_SUBMIT_URB 0000039810:31:29
246 名前:239 mailto:sage [03/06/10 11:06 ID:3w0EVlGb] ttp://www.xlsoft.com/jp/products/windriver/windriver.html ここにある、winDrive の体験版でハードを調査したところ、インターフェースが活性化されていないのが原因のようです。 usb_set_interface() を使えばいいのだろうけど、パラメータがよくわからない。
247 名前:login:Penguin mailto:sage [03/06/13 16:03 ID:pewsS0ej] cat /proc/bus/usb/devices で表示されるインターフェースの中から C:* #Ifs= 2 Cfg#= 1 Atr=c0 MxPwr=100mA I: If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=02 Prot=01 Driver=piece E: Ad=83(I) Atr=03(Int.) MxPS= 16 Ivl= 16ms I: If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=piece E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl= 0ms E: Ad=81(I) Atr=02(Bulk) MxPS= 64 Ivl= 0ms I: If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=piece のデバイスを活性化するにはどうすればいいのでしょうか?
248 名前:247 mailto:sage [03/06/13 18:44 ID:pewsS0ej] ここを読んだら自己解決しますた。 USB通信プログラミングテクニック ttp://www.picfun.com/usb00.html
249 名前:うまうま mailto:sage [03/06/13 22:20 ID:EYuB3skO] >>248 こりゃ使えるサイトだ。日本語でUSBの仕様をここまで説明したサイトって、 他にはないよきっと >>247 に質問! 「活性化」というのがよくわからないから教えてほしい。 cat /proc/bus/usb/devices で >>247 のような表示がされたってことは、 すべてのPIPEがオープンされているものと思ったけど。 結局、このデバイスにはInterfaceが二つあって、USBバス上に 接続したときは Interface 0しか初期化されなかった。その状態で Interface 1のEndpoint 0x81からread()しようとしたが、 まだPIPEがオープンされてないためできなかったということ?
250 名前:login:Penguin [03/06/14 17:46 ID:G+Mtao/F] オイラGPLライセンスだよ〜 と表明するときに書くマクロって どういうやつだっけ?
251 名前:login:Penguin mailto:sage [03/06/14 18:11 ID:1HDS5RSe] MODULE_LICENSE("GPL"); のことかにゃ。
252 名前:login:Penguin mailto:sage [03/06/14 18:13 ID:G+Mtao/F] >>251 (゚∀゚)サンクスコ
253 名前:247 [03/06/16 12:53 ID:bzsTHCID] >>249 そのとおりです。 えーと、いま作成中のドライバを試してみたら解決していませんでした。 Interface 1の初期化ってどうやるのでしょう?
254 名前:247 [03/06/16 17:13 ID:bzsTHCID] 追記:cat /proc/bus/usb/devices の表示は >>247 なのですが、なぜかread が出来ないのです。writeは出来るのですが
255 名前: [03/06/19 18:39 ID:L1S32rBn] 質問です。USB のpipe を reset するにはどうすればいいのでしょうか?
256 名前:中年ハード屋 [03/06/20 00:46 ID:GdrpjdbN] DVDのCSS回路を設計するために、そのCSSの方法を理解するために、 LINUXのide-cdを利用したソフトを書いています。(ライセンス済みです) それで、DVDのディスクキーや内部情報、そして、認証などは出来るのですが、 タイトルキーの取得が出来なくて困っています。 atapiを通したイトルキーの取得で何かしらのトリックがあるのでしょうか? このようなソフトを書く場合に、通常のアプリソフトのように(いまの やりかた)書けば動作するのですか、それともドライバーソフトのように 特殊な方法が必要なのでしょうか? よろしくお願いします
257 名前:login:Penguin [03/06/20 12:05 ID:w5824KTx]
258 名前:login:Penguin [03/07/02 02:02 ID:VujfXoME] (・∀・)renice!
259 名前:login:Penguin [03/07/06 23:29 ID:lEtq+gmE] (・∀・)renice!
260 名前:login:Penguin [03/07/08 15:11 ID:nDf4bQ70] (・∀・)renice!
261 名前:linuxer [03/07/09 01:17 ID:W4/RwfEH] 僕はLinux のethernet のドライバを改造したいデス ふつは通信用途に最適化されてると効きました それはぺケットをみる目的につかいます なにかアイディアはありますか??
262 名前:login:Penguin mailto:sage [03/07/09 01:22 ID:9Ead9bym] tcpdump等の既存のものより詳細にみれなければ意味がない気がするけど大丈 夫なのかしら。
263 名前:_ mailto:sage [03/07/09 01:29 ID:RRaEUYou] homepage.mac.com/hiroyuki44/hankaku09.html
264 名前:login:Penguin mailto:sage [03/07/09 01:48 ID:FD/eKW7A] >>262 石にもよるでしょうねえ。 最近の利口な奴はいろいろ手を入れてくれるし。
265 名前:login:Penguin mailto:sage [03/07/09 13:47 ID:GtKhiIZ8] >>261 現行ドライバだと、どの点が不満なのか言ってもらわないと助言しようがないよ パケットモニタリングはNICチップのpromiscuousモードの仕様に依存する話だ
266 名前:login:Penguin mailto:sage [03/07/10 07:33 ID:sMbuqqa1] >>265 現行のドライバならpromiscuousモードで動かしたときに パフォーマンスがわるいな感じです それでぺケットを取りこぼすことになってしまうので キャプチャ用途に最適化できたらいいなと考えましたです
267 名前:login:Penguin mailto:sage [03/07/10 07:41 ID:oOmBMqv3] >>266 promiscuousモードだと全パケットをホストPCに転送するから 通常モードに比べて取りこぼす可能性は増える。対象のNICチップは何? 素直にintelなり3comを買えば済むだけの話かもよ。 ちなみにリアルテック(蟹)の性能がよくないのは特許を避けてるから。 現状でいいパフォーマンスのNICが欲しけりゃIntel(or元DEC)、3comの ちょっと値が張るNICを買うしかないよ。 ドライバでどうこうできる話ではない
268 名前:login:Penguin mailto:sagee [03/07/10 23:13 ID:TravPTn9] >>267 リアルテクです。3COMも使ってますが、スイッチと相性が悪いな感じで 無反応になってしまう(壊れているのかもしれない)こともありますで リアルテクでペルフォマンスがよくならないかなと想いました ちなみに特許って具体的にはどんな特許ですか?
269 名前:login:Penguin mailto:sage [03/07/10 23:46 ID:bBVT4pXs] >>268 261と268で目的が変化してるぞ。
270 名前:login:Penguin mailto:sage [03/07/11 13:32 ID:CtoBVZIQ] >>268 そもそもパケットモニタリングするのにスイッチングハブを使ってる時点でアウト リピータハブ(ダムハプ)を使わないと他ホストの通信は傍受できないよ 結論 ・RealtekのNICは捨てて、Intelか3Comを使え ・スイッチングハブではなく、リピータハブを使え 全然デバドラと関係ないや スレ違いどころか板違い?
271 名前:login:Penguin mailto:sage [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 mailto:sage [03/07/14 15:12 ID:E/Ns9e+C] >>271 すまん 267=270 なのだが 何か矛盾したこと言ったかな? MAC層(データリンク層)の処理はNICチップで行われる。 ホストPCはMAC層の処理にはまったく関与しない。 MAC層の処理後、必要なデータだけPCIバスを介してホストPCにDMA転送する。 つまり、通常モードだと自ホスト宛かブロードキャストのパケットデータだけを ホストPCに転送すればいいのに対し、promiscuousモードだとすべての パケットデータを転送しなくてはならず、転送量が膨大になる。 そのため、バッファがあふれる(=データを取りこぼす)ことになりやすい。
274 名前:268 mailto:sage [03/07/15 03:30 ID:Yac3cQfq] スイッチはL3スイッチでポトミラリング機能がありますよ ただ3COMのNICでも限界があるとですがぎりぎりまでぺケットの モニタ用に最適化したいと思いましたです リアルテクの話は忘れてください ふつはバッファも通信用に チュニングすれて確保してると思ったけどぺケットをモニタするときは 受け取るだけだから ドライバで受信用のバッファを多めに できたらいいなと思ったよ でもどうやったらいいか分らないよ ヘルプしてください
275 名前:山崎 渉 mailto:(^^) [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 mailto:(^^) [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 mailto:sage [03/08/14 22:31 ID:EZZe4dzO] $> cd /pub $> more beer
285 名前:login:Penguin mailto:sage [03/08/14 22:44 ID:EZZe4dzO] $> man woman $> Segmentaion fault (core dumped)
286 名前:山崎 渉 mailto:(^^) [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 mailto:sage [03/09/02 21:20 ID:88sqYoXe] >>1 は、ママンでもファックしてろや!hahahahahahaaaaaaaaaaaaaa!
292 名前:login:Penguin mailto:sage ああウソだぜ [03/09/02 22:18 ID:qo69XMHR] >>290 完全なるカーネルモジュールにヘッダやリンカはいらない。 ソースは常にひとつ。
293 名前:login:Penguin mailto:sage [03/09/03 08:04 ID:CuYcG2U3] >>290 Cファイルをインクルードすればいいだろ。
294 名前:login:Penguin mailto:sage [03/09/03 11:30 ID:4cm8kGPF] >>293 よりによって一番最悪な答えですね先生
295 名前:login:Penguin mailto:sage [03/09/03 16:47 ID:iWz7WMbL] >>290 info ld -rの説明読め。
296 名前:login:Penguin mailto:sage [04/01/07 22:36 ID:ui3n7e6w] だいぶ下がってますが、 2.6 と 2.4 のドライバ記述って何か変りました? 2.6 まだインストしてないので報告キボンヌ・・・ 2.2 -> 2.4 程は変ってないのかなー?
297 名前:login:Penguin [04/01/16 18:02 ID:ZUOtu/O9] PCIのデバイスドライバを作成していますが、 全くできません。 less /proc/iomemで書かれているアドレスで read、write関数を使って書いたり、読んだりしてもだめです。 何がいけないんでしょうか?
298 名前:login:Penguin mailto:sage [04/01/16 19:15 ID:JS8EwlnL] とりあえず、lspci -vvv を晒してみたらどうでしょう。 もちろんデバイス指定でね。 それを見て私が答えられるかどうかはまた別の話ですけど。
299 名前:login:Penguin [04/01/16 19:52 ID:ZUOtu/O9] lspci -vvvで次のような表示になりました。 00:11.0 Class ff00: Altera Corporation: Unknown device 1998 (rev 07) Control: I/O- Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- Status: Cap- 66Mhz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- Interrupt: pin A routed to IRQ 16 Region 0: Memory at dffe0000 (32-bit, non-prefetchable) [size=64K]
300 名前:298 mailto:sage [04/01/16 20:57 ID:JS8EwlnL] FPGAですね。 私もそんなに知っているわけではないので、 あまりあてにはしないで欲しいのですけれど… lspciの結果は特に変なところは無いと思います。 Class ff00はどのクラスにも属さないと言うことだと思うのでちょっと気にはなりますが、 読み書きぐらいはできるでしょうね、きっと。 だとすると、あとはドライバのソースでチョンボがあるか FPGAの中で書きこみ禁止になっているとかですかね。 FPGAにどんなipが載っているのか分からないので、あくまで推測ですけど。 あんまり力になれなくてごめんね。
301 名前:login:Penguin mailto:sage [04/01/18 02:27 ID:+zT3hNOG] >>298 read/writeのかわりに ioremap_nocache()で対象アドレスのページを取得して、 ポインタで直接参照してみたら? よみたい物理アドレスが (unsigned int) p_adr だとしたら unsigned char p_read(unsigned int p_adr){ unsigned int v_page,v_offset; unsigned char ret; v_offset=p_adr&0x0fff; v_page=ioremap_nocache(p_adr&0xfffff000, 0x1000); ret=*((unsigned char *)(v_page + v_offset)); iounmap(v_page); return (ret); } 適当だけどこんな感じで。ページサイズが4K決め打ちだけど。
302 名前:login:Penguin [04/01/18 02:28 ID:+zT3hNOG] あ>>299 のマチガイだ。
303 名前:login:Penguin mailto:sage [04/01/19 07:32 ID:kPFQP2Tn] PCIバスアナライザで観測しながらアクセスしてみそ
304 名前:login:Penguin mailto:sage [04/01/22 14:27 ID:O8v9hJ5s] >>303 持っているならいい方法だけどね。 買おうとすると激しく高い。 レンタルでも中古でも激しく高い。 でも、欲しいね。
305 名前:login:Penguin [04/01/28 10:42 ID:N5b+GE5n] マジレスすれば ロジアナでPCIバスを観測するか、PCIバスアナライザを使うか どっちかしないと、PCIデバイス/ドライバの開発は無理だろう
306 名前:login:Penguin mailto:sage [04/01/28 12:46 ID:OnT2yC/X] んなこたーない! 297 が FPGA開発を同時にやってるならまだしも・・・ あったほうが楽なのは確かだが、無理ではない。 ハード屋さんはバスレベルで確認して提出するはず。 read/write 出来ないのはドライバの不具合。 >>297 は pci_find_device 関数など、基本から勉強したほうがよさそう。
307 名前:305 mailto:sage [04/01/28 15:27 ID:N5b+GE5n] 無理ではないって言っても、そんなマゾプレイみたいなコトしたくないよ 目隠しして半田付けしろっていうのに近いな PCIのロジックって複雑だから、実機でバグが露呈するのはよくあること 430FXで動いたからって 875Pでは動かないとか余裕であるよ 市場に流通してるチップセットすべてで確認しないと市販は無理 名の通った枯れてるチップならまだしも、実機の動作チェックもしてない FPGAの回路をつかったPCIカードなら、最初から疑ってかからなきゃダメだと思います > ハード屋さんはバスレベルで確認して提出するはず。 PCIバスの全パターンをシミュレーションできる検証ツールってすごく高いよ 特にFPGAの開発のために検証環境買うのはコストにあわない PCIバスアナライザがある環境で実機試験して、少しずつ直すほうが早くて安い
308 名前:login:Penguin mailto:sage [04/01/28 18:36 ID:XM3JMqvR] >>307 そーゆーのはハード屋さんの仕事じゃないかと。 PCIブリッジの違いで動かないなんてのは設定云々じゃない限りドライバじゃ直せん。
309 名前:login:Penguin mailto:sage [04/01/28 19:09 ID:ceOaOw14] > そーゆーのはハード屋さんの仕事じゃないかと。 おれもそう思う。 でも、実際はソフト組み込んだらなんかおかしくて、 実は結局、微妙にハードが悪かったなんて事は良くある話だね。 きっと >>305 は苦い思いをしたんだろうよ。
310 名前:login:Penguin mailto:sage [04/01/29 18:47 ID:ci1wDtTm] >実は結局、微妙にハードが悪かったなんて事は良くある話だね。 ハード絡みやってりゃ必ずあるね。 慣れてくればハード、ソフトどっちが悪いか何となくわかるようになるけど。 制御チップ動かす時なんかはオシロ、ロジアナの出番が増える。 さすがに PCI制御用FPGAまで計測器突っ込んだ亊はないけどね・・・ そこまで行くと スレ違いですね >> 307
311 名前:307 mailto:sage [04/01/30 07:19 ID:tIkj6Ynv] 私はPWBAからASIC/FPGA デバイスドライバ アプリ まで全部自分で開発する ある意味何でも屋です FPGAの検証を実機でやるときにデバイスドライバを作ってるはずだから バスレベルで動作検証済なら、そのとき使ったドライバをハード屋さんから もらってくればいいんだと思います もちろんLinuxじゃない別のOSで検証してる場合もあるだろうけど 今の時代はLinuxでやってるケースがほとんどではないかなぁ Linuxは 1. ソースが公開されてて、ドキュメントも多くドライバ書くのが楽 2. CDからブートしてRAMDISKだけで動くシステムを簡単に作れる 等の利点があって、特に2が重要 PCIバスのハードのデバッグだとしばしばフリーズするので 正しくshutdownしないままリセットすることが頻発する。 winだろうがlinuxだろうがHDDにOSが入ってるシステムだと、 リセット連発していると、次の起動時に時間がかかるし そのうちHDDの内容が不整合を起こしてくる。 1CD ramdiskオンリー システムだと、気軽にリセットできて楽なんだ。 まぁlinuxじゃなくてFreeBSDでもいいんだけど。 私は5〜6年くらい前はFreeBSD(2.x/3.xの時代)でPCIカードのハードのデバグ やってたけど、今世紀に入ってからLinux(2.2の頃から)でやるようになった。 時代の流れで、商品としてlinuxへの対応が必要ってことになったので 最初からlinux用のドライバ書いておけば後が楽になるからね。 スレ違いだったかな 駄文失礼
312 名前:login:Penguin mailto:sage [04/02/03 23:12 ID:j9rA+N1w] >駄文失礼 気にしなくていいぜ。(w
313 名前:login:Penguin [04/02/09 07:11 ID:7h6uvjnn] すいません、どうしようもない質問なんですが、 実験的にカーネルパニックを発生させるドライバを作るのには どうすればよいでしょうか? カーネル関数panic()を使っても ハングするだけでパニックしないんです。。。 どうか教えてください。
314 名前:login:Penguin mailto:sage [04/02/09 20:13 ID:oe9mNV77] このスレは俺に勇気をくれた。
315 名前:login:Penguin mailto:sage [04/02/10 00:02 ID:0xm4A1oM] >>313 コンソールに"Kernel panic: …"って出てないの?
316 名前:login:Penguin mailto:sage [04/02/10 00:52 ID:4iNUE3rF] >>313->panic();
317 名前:login:Penguin [04/02/10 21:13 ID:WwFCucZO] >>315 −316 返信ありがとうございます! 単純にパニックするよりoops画面が表示するようにしたいのです。 mmapあたりをいじくるドライバを作れば、 oops画面を表示させることは可能ですか?
318 名前:殴られそうだが mailto:sage [04/02/10 23:35 ID:0xm4A1oM] >>317 試してないけど、 *(unsigned long)0 = 0; とか。
319 名前:login:Penguin [04/02/11 00:21 ID:QfDGoor4] >>318 似たようなので、 x=0; x=x/x; ってのをやってみたのですがダメですた。 やっぱLinuxって頑強だと思いますた。 mmapも見てみたらカーネル空間でなく補助記憶空間に マップするだけのようですし・・・ アドレス例外でoopsできるような方法とかあるのですかね??
320 名前:login:Penguin mailto:sage [04/02/11 17:17 ID:ViS2X9Xm] Oopsとpanicを混同しているような気がしないでもない。
321 名前:login:Penguin [04/02/12 00:21 ID:9Bh5Rhh+] >>320 すみません。。。 パニックとシステムフォルト(oops)と勘違いしていたようです。。。 ドライバからシステムフォルト(oops) させるような方法ってあるのでしょうか?
322 名前:login:Penguin mailto:sage [04/02/14 07:34 ID:kX0ZpYOB] linuxはsolarisみたいにクラッシュダンプ取れますか??
323 名前:login:Penguin mailto:sage [04/02/16 00:01 ID:dUYGf/LZ] >>322 ttp://lkcd.sourceforge.net/
324 名前:login:Penguin mailto:sage [04/02/19 02:35 ID:tYIYueC9] Linuxでのデバイス・ノード管理は現在 従来の/dev以下のデバイス・ノードファイル、devfs、udevが 存在しているようですが、デバイスドライバを書くような デバドラ開発者にはこの状態は影響するのでしょうか?
325 名前:login:Penguin [04/02/19 10:34 ID:iwEBqmwA] 私は従来の/dev以下のデバイス・ノードファイルを使ってます devfsに対応するのも簡単だけど優先度低いから先送り
326 名前:login:Penguin mailto:sage [04/02/24 22:37 ID:BGHqYIMS] modpostについて詳しく解説している文書をご存知でしたら教えて下さい。
327 名前:login:Penguin mailto:sage [04/03/17 23:57 ID:P4QfZyWd] データシートをどうやって手に入れるか それが問題だ
328 名前:login:Penguin mailto:sage [04/03/18 10:56 ID:WBeyRceU] 何のデータシート?
329 名前:login:Penguin [04/04/08 16:25 ID:E32BiKCa] mmapについて質問させてください。 メモリデバイスをmmapするとき、ページサイズを4096Byteとした場合、 mmapされたデバイスの先頭からの"物理アドレス"と mmapしたプロセスのデバイスに割り当てられた"仮想アドレス"の 下位12bit(2^12 = 4096)は一致するのでしょうか? mmapではプロセスの仮想空間にページサイズ単位で ファイルやデバイスを割り当てることが出来るわけですよね。 ページサイズが関係してくると言うことはMMUのようなものが 作用して、この割り当てを管理しているのですよね。 (あるいはMMUそのものなんですか?そこが分かってないのですが) もしも、MMUの管理下にあるならば、実空間と仮想空間のアドレスの 下位12bitは一致するはずです。 MMUはページサイズ以下のアドレスを知らないはずですから。 ここまでは私の理解に間違えはないですよね。 でも、mmapが実際にどんな風に動いているか良く分からないので、 上のような疑問が沸いてしまったのです。 どなたかお分かりいになる方がいましたら教えてください。
330 名前:login:Penguin mailto:sage [04/04/08 17:57 ID:/VjqMrH1] >>329 つ[ mmap.c ]
331 名前:login:Penguin [04/04/09 00:53 ID:E9wQ2At3] いいなこのスレ
332 名前:login:Penguin mailto:sage [04/04/09 00:58 ID:ImS0ZAox] >>330 ha?
333 名前:login:Penguin mailto:sage [04/04/09 00:59 ID:ImS0ZAox] あぁソース嫁ってことかw
334 名前:login:Penguin mailto:sage [04/04/09 14:52 ID:8RpqlllW] >>329 CPU/MMUアーキテクチャに依存する話だね。 IA32に限っていえばその理解でいいと思うよ。 他archでもまずそうなってるだろう。 そうなってないMMUなんて見たことない。
335 名前:login:Penguin mailto:sage [04/04/09 15:39 ID:dsP5+/oo] 2次キャッシュを UBS mem に格納して使いたし。可能?
336 名前:login:Penguin mailto:sage [04/04/09 21:34 ID:/keZpBhh] >>335 CPUの2次キャッシュをUSBメモリにやらせるってこと?
337 名前:login:Penguin [04/04/10 01:41 ID:04yJkWho] AGE
338 名前:login:Penguin [04/04/13 23:49 ID:bzoEXS/o] USBのデバイスドライバ作る時のTIPSを教えてください
339 名前:login:Penguin mailto:sage [04/04/14 15:26 ID:XimV19c+] デバイスを破壊出来るデバイスドライバーの作り方教えてください
340 名前:login:Penguin mailto:sage [04/04/14 23:18 ID:QKI6oVKA] >>339 1.どこからかゴルフのドライバーを手に入れる。 2.ドライバーのフェイスにデバイスを貼り付ける(ガムテープでも可) しかる後にドライバーを振りかぶり、路面、ブロック塀etc.にぶつけること。
341 名前:login:Penguin mailto:sage [04/04/15 10:49 ID:D/fT1Zhi] >>340 ( ´д)ヒソ(´д`)ヒソ(д` )
342 名前:login:Penguin mailto:sage [04/04/19 20:10 ID:TjHP8JDs] >>340 ( ´д)チョメ(´д`)チョメ(д` )
343 名前:login:Penguin mailto:age [04/04/27 21:12 ID:ftQXOuAJ] v2.6.x 用の module (.ko) の作り方ってどっかに落ちてませんか? v2.4.x だと gcc -c するだけで insmod できるイメージができましたが、 v2.6.x だとなんか後工程があるんですよね?
344 名前:login:Penguin [04/04/27 21:18 ID:VEIU93yI] >>339 FDDにアクセスして、その音で音楽を鳴らす。 CDDのトレイを頻繁に出し入れする。 ってトレイは入れられたっけ?
345 名前:login:Penguin mailto:sage [04/04/28 09:36 ID:r7A4ZD5z] >>344 出し入れ可能だけど、作り方は教えられないのでは? もう既に完成してしまっているし ソース嫁としか言えないと思う
346 名前:login:Penguin mailto:sage [04/04/29 22:03 ID:ugZV/Avt] >>344 CDDのトレイを開け閉めする位ならioctlで……
347 名前:login:Penguin [04/05/05 09:59 ID:IcDQ6/Fz] v2.4でUSBキーボードドライバにRAWレベルアクセスする方法知りませんか? usb/usbkbd.cを単品でモジュール化してみたけど、プログラムからのアクセス 方法がわからない・・・ usb_register時にマイナーバージョンの情報を登録してないみたいだけど デバイスファイルでアクセスしようと思うと無理なのかな〜・・・
348 名前:login:Penguin [04/07/17 17:55 ID:z93SFsgN] 落ちそう・・・見込みなさそうだけど上げ
349 名前:login:Penguin [04/07/18 17:33 ID:qhsm/Ia2] >>343 linuxdevices.com/articles/AT4389927951.html とか lwn.net/Articles/driver-porting/ とかではどう?
350 名前:login:Penguin [04/07/27 03:02 ID:AwmCdxXP] Moz2chで見てると レスがだんだん右にずれていくます。
351 名前:login:Penguin [04/07/27 03:08 ID:AwmCdxXP] USBに2台のWebカメラをつなげてまちゅが May 30 08:31:05 localhost kernel: usb-uhci.c: interrupt,status 3, frame# 1728 しばらく動いた後に/var/log/messageに出力されてカメラがハングしてちまいます。 USBのデバイスドライバは何を言ったのでしょうか?おちえてください。
352 名前:login:Penguin mailto:sage [04/07/27 03:23 ID:7ve9Hskt] >>351 要はエラーが起きたのですね。それ以上あまり解析のタシにはなりません。 status 3 ってのは、割り込みが起きて、IOC と Error が立っていたんです。 # IOCの方は、割り込みを発生する機能なので、エラーじゃないですが。
353 名前:login:Penguin [04/08/02 14:39 ID:QD1yhPkc] チップセットのドライバって具体的にはどんなことやってるの?
354 名前:login:Penguin [04/08/02 16:42 ID:4u8OC/CN] すごく恥かしいあんなことやこんなこと
355 名前:login:Penguin [04/08/02 17:48 ID:Wbtl3uph] >>354 激しく気になります。
356 名前:login:Penguin mailto:sage [04/08/03 23:29 ID:HnnAhZGX] 突然ですが、デバドラのioctlからpollやselectって呼べるかどなたか知ってますか? pollやselectの引数の構造体に何を入れていいのかわかりません。
357 名前:login:Penguin mailto:sage [04/08/03 23:47 ID:0P3Qaw2+] >>356 ioctlのハンドラからsys_selectとか呼びたいって事ですか? 呼べないことはないと思うけど… なんでそんな変な事をする必要があるのか興味がありますな。 引数は普通にselectに食わせているものを同じように渡せば良いはず。
358 名前:login:Penguin mailto:sage [04/08/04 09:37 ID:NoJQortH] >>357 3つのCPUおよびOSがある組込み系のデバドラを考えてます。 普通はioctlやselectをモジュール側に個別に書くのでしょうが、 それだとダメみたいです。デバドラ側で一括して処理を行うようにしないといけません。 ioctlをモジュール側から呼びだして、デバイス側ではそのioctl処理からpoll(割り込み処理)を 考えてます。なぜioctlかと言うと、ユーザデータをデバドラに渡したい(アドレスのチェック)からです。
359 名前:login:Penguin mailto:sage [04/08/04 10:00 ID:H7hK0Jjq] >>358 >ioctlをモジュール側から呼びだして、デバイス側ではそのioctl処理からpoll(割り込み処理)を考えてます。 ちょっと待てよ、そこで言ってるモジュール側とデバイス側の区別がわからないのだが?
360 名前:login:Penguin mailto:sage [04/08/04 10:24 ID:AG/Dol7k] 一般に、デバドラ内部からシステムコールやライブラリ関数は呼べないよ。 書いてあることだけじゃいまいち要領を得ないが、taskletなりtask_queueなりを 自分で管理して、カーネルのスケジューラに登録するのが常套手段だ。 カーネルスケジューラはは2.2系 2.4系 2.6系で大きく異なるから 各バージョンすべてで動作する共通コードを書くのは結構大変 泣ける マジで
361 名前:login:Penguin mailto:sage [04/08/04 14:21 ID:NoJQortH] >>359 モジュール側とはライブラリのソースで、デバイス側とはデバイスドライバのソースです。 表現が下手ですね。文章もあまりうまくないのでごめんなさい。 ライブラリ側では、whileループでバッファの中身をチェックしています。 バッファが空になるまで、プロセスを眠らすことがそもそもの目的です。
362 名前:login:Penguin mailto:sage [04/08/04 14:35 ID:NoJQortH] >>360 ありがとうございます。げえ、かなり大変そうですね。。。かなり萎えてきました。 今いろいろいじくり回してて、デバドラのioctlのfile構造体のメンバf_opを、 poll(select)の関数を指すようにしてやっています。 そのために、ioctlとは別のfile_operation構造体をつくってそこでpollを宣言しました。
363 名前:login:Penguin mailto:sage [04/08/04 14:40 ID:+wO9AS9w] >>356 の言う「モジュール」=「ライブラリのソース」は「ユーザランドの アプリケーションが使うライブラリ」かな?
364 名前:login:Penguin mailto:sage [04/08/04 15:22 ID:NoJQortH] はい。そうです。 わかりにくくてすいません。
365 名前:login:Penguin mailto:sage [04/08/05 00:11 ID:UYjeE7ll] >>362 なんか、あさっての方向に走ってないか? - poll() したいなら poll() を実装する - イベント待ちをしたいread()だろうがioctl()だろうがかまわず待て やりたいことを確認したほうがいいぞ。 - なにをどう待ちたい? - 付加的にやりたいことは何? 後者は、 > なぜioctlかと言うと、ユーザデータをデバドラに渡したい(アドレスのチェック)からです。 がわからんかったって話。
366 名前:login:Penguin mailto:sage [04/08/05 00:11 ID:UYjeE7ll] あうあ - - イベント待ちをしたいread()だろうがioctl()だろうがかまわず待て + - イベント待ちをしたいなら、read()だろうがioctl()だろうがかまわず待て
367 名前:login:Penguin mailto:sage [04/08/05 00:45 ID:CMe3HEND] 大丈夫か!? >>364 よ!! がんばれよ! 見守ってるからさ!
368 名前:login:Penguin [04/08/05 12:51 ID:dMydmJ+4] 書いてあることだけじゃいまいち要領を得ないが アクセス待ち、アクセス完了まで時間がかかる、排他処理が必要である ようなデバイスで ・ノンブロックでアクセス処理したい ・複数のプロセスから同時にアクセスされる状況に対応したい ・複数のデバイスを一元的に管理したい (リソース管理など) こんな条件だと勝手に仮定すると たしかに大きいデバイスドライバを書いて、そこですべて管理するのも ひとつの解決法ではある。 でもユーザランドでスレッド/子プロセスを使って、ノンブロック処理を 実装することも出来るし、唯一の解でもない。 まぁ、情報が出せないというよりは、状況を理解してないので うまく説明できないって感じなので、もうちょっと頭を使って 問題を整理してから、もう一回質問するがよかろう
369 名前:login:Penguin [04/10/29 11:01:48 ID:rDkd0V/P] lsusbだとデバイス名が把握できてるということは、 個々のドライバ部分に問題があって動かないという風に考えてもいいでしょうか? linux-2.6において usbcore uhci_hcd cdc_acm という三つのドライバにより動かしたいハードウェアがあるんですが、 cdc_acmをロードしてもうんともすんとも言いません
370 名前:login:Penguin mailto:sage [04/10/31 20:53:26 ID:fFX2rhTr] .netとかjavaみたいなバイトコードなドライバーでハードウェア を制御する環境を作るって可能ですか?
371 名前:login:Penguin mailto:sage [04/10/31 21:36:34 ID:uzVMAm7i] >>369 まあそうでしょうな。 lsusbはハード的につながっていれば見えるし。 >>370 そりゃ作れん事は無いが… 速度が厳しくないかい?
372 名前:login:Penguin mailto:思っただけで、実現する技術が無いので sage [04/11/01 02:36:54 ID:dfNRJQ4+] >>371 JITなりリコンパイラーなり方法はあるだろうし、全てのドライバーが 速度を必要とするわけじゃないと考えたわけで。部分的にでも・・・と 何にしてもバイナリの非互換性がどうにかならんかなぁと。 カーネル毎にコンパイルはダリ
373 名前:login:Penguin mailto:sage [04/11/01 06:48:36 ID:IqBdvM7D] >>370 Kernelから呼び出すような仕組みにしても、 Javaで言うnativeなのが無いと駄目じゃない? レジスタとかメモリ領域さわれないし。 結局そこ(nativeなモジュール)で非互換性が出る気がする。
374 名前:login:Penguin mailto:sage [04/11/01 15:55:17 ID:lkrLxjNC] >>373 そのへんはバイトコードインタプリタで抽象化すればいいのではないかと。 PCIあたりならかなりの所まで出来そうな気がするなあ。 そういやOpenFirmwareなんてのがあったのう…あれはForthだっけ?
375 名前:login:Penguin mailto:sage [04/11/01 22:34:23 ID:dfNRJQ4+] 成るほど・・・ >>373 やっぱりそういうところで不備が出てきますか。。。言語拡張で・・・となると Javaじゃなくなるし、コンパイラーも自前に用意しなきゃならなくなるし。。。 >>374 漏れもそんな感じの考えでいたんだけど、やっぱそれが難しいんでしょうね。 とはいえ、可能性があることはわかりました。ありがとうございます。 >>OpenFirmware 調べてみましたが上の考えのBIOS版みたいなもんでしょうか? とりあえず、神が現れることを祈りつつ作れる作れない、作る作らないは別として 自分でも調べてみようと思います。厨の妄想に付き合っていただきありがとうございました。
376 名前:login:Penguin mailto:sage [04/11/02 12:28:29 ID:lgEgFui9] カーネルのバージョンによってカーネルが持つ構造体が微妙に違うことがよくある。 (メンパが増えてるとか) 現状のinsmodによるデバイスドライバのダイナミックリンクは その手の構造体の違いを解決してくれないので、原則的に カーネルバージョンに依存したドライバしかリンクできない。 強制的に違うバージョンのドライバをinsmodすることも可能だが 正常に動く保証はない。たまたま動くことはあるけれども。
377 名前:login:Penguin mailto:sage [04/11/02 18:53:41 ID:chaRCRYs] まあソース見て「あーこれなら動くな」と思ったら 迷わず-f
378 名前:login:Penguin mailto:sage [04/11/03 13:41:27 ID:1PHyje+L] ドライバのソースがあるならリビルドする方がいいような気がするのう。 いっぱいコンパイラに怒られたりすると直す気が失せるが…
379 名前:login:Penguin mailto:sage いやしかし勉強になる。。。 [04/11/06 23:30:41 ID:9J0OxvoL] >>376 なるほど。JAVA云々無しにしてもやっぱカーネルとは別離すべきなのかも。 いや、マイクロ・モノリシックの話じゃなくて仕様的なものを。moduleの管理も こんなんでいいの?って気もするし。Xもドライバー持ってるってのがよくわから んし(嫌味とかじゃなくて本当にわからんのです。) って偉そうな事言っててもしょうがないな・・・たまにはソースぐらい読もう・・・
380 名前:login:Penguin mailto:sage [04/11/07 08:11:19 ID:/P0s9FI4] >>636 > 昨日Linuxにふれたものですから であり、(非常に一般的なやりかたにもかかわらず)やりかたがわからないとい う人が tamagoをいれたい理由はなにかしら? 特に強い理由がないなら、「いれるな」が正しいガイドだと思うのですよ。 >>635 つかいかたは man xmodmap でみるといい。 キーコードは xev で調べられます。使いかたは man xev でみるといい。
381 名前:login:Penguin mailto:sage [04/11/08 12:46:18 ID:ir5Tmuq8] Xサーバはroot権限のユーザランドプロセスで /dev/ioとか /dev/memに 直接アクセスしてビデオチップを制御する。 Xのドライバといわゆるデバイスドライバとは動作メカニズムがまったく違う。
382 名前:login:Penguin mailto:sage [04/11/09 23:51:44 ID:+nDFjkMc] ユーザ空間からmmapでマッピングしてデバイスいじくるときって、 アプリがマッピング先のメモリに書き込む動作と同時に デバイスにデータって書きこまれるんでしょうか? バッファリングみたいのって気にしなくてもいいの?
383 名前:login:Penguin mailto:sage [04/11/10 01:00:51 ID:8UeNJl+2] >>382 デバイスをmmapしてアクセスするときは、単にMMUがそこを指しているだけで、 ディスク上のファイルをmmapしたときのようなバッファリングはありませんよ。 類似のがある場合はあって、それはキャッシュなのです。 /dev/fb* は通常キャッシュが抑止されています。 /dev/mem は O_SYNCでopenしてやるとキャッシュを抑止します。
384 名前:login:Penguin mailto:sage [04/11/10 07:34:29 ID:WP1ExQ+t] PCIデバイスの場合 各共有メモリ空間ごとにprefetchableビットが定義されている ほとんどのPCIカードはprefetchableがdisableになっておりキャッシュ無効になってる
385 名前:login:Penguin mailto:sage [04/11/10 14:40:19 ID:OHaab6bm] >>383 >>384 CPUキャッシュですか。 環境にもよるのでしょうけど、基本的にはあまり気にしなくてもいいのですね。 実は、drivers/char/mem.c みたんですけど、mmap システムコールを呼んだときと、 そこにアクセスした時のコードの流れがよくわからないのでちょっと???でした。 あとは、コンパイラのオプティマイズも気にしておいたほうがいいのでしょうね。
386 名前:login:Penguin mailto:sage [04/11/10 18:01:50 ID:MrVsce1+] >>385 CPUキャッシュはユーザー空間から叩く手段がないので、 カーネルとハードウエア側の制御にお任せするしかないです。 最適化の方はvolatile付けておけば大丈夫でしょう。 なにもしないと最近のコンパイラは賢すぎてとんでもないことをやってくれますからな。
387 名前:login:Penguin mailto:sage [04/11/10 23:54:53 ID:8UeNJl+2] >>385 キャッシュは気にしてください。キャッシュがあると . 書き込みがキャッシュが溢れるまでなされない。 . 読みだしも同様。 . 同一ラインにのる近隣のレジスタがいっしょにアクセスされちゃう という、デバイスの制御にとっては致命的なことがいろいろ。
388 名前:382 385 mailto:sage [04/11/11 00:27:04 ID:95L6p31P] すみません。 キャッシュを気にししなくてもよいと書いたのは、 キャッシュが働かないので、気にしなくても良いという意味で 書いていました。 387さんのおっしゃるとおり、デバイスアクセスでキャッシュが 働いてしまうと、ひどい目にあいますね。 ところで、mmapのキャッシュ無効化ってmem.cの noncached_address を修正すれば有効無効をユーザで 任意に操作可能になるんですかね? ハードやBIOSでキャッシュ関係の細工が何かあったりしたらだめなのかもしれませんが。
389 名前:login:Penguin mailto:sage [04/11/12 00:12:24 ID:nxDtrzpb] >>388 抑止の方は O_SYNC でできますよ。その行の後半の条件がそうでしょ?
390 名前:login:Penguin [04/11/14 11:26:16 ID:ZhMJfRu+] USBサブシステムを読んでいるんですが、 デバイス、バス、ドライバの三つの関係のイメージを 教えてください。なんだかソース読んでいてもよく分かりません。 またxxx_probeという関数に渡ってくるstruct usb_interfaceとは どこで確保されいてる構造体なんでしょうか?
391 名前:login:Penguin [04/11/21 11:06:40 ID:RzBM8DsM] technokitのUSB-IOをFedora Core 3に接続したら、/dev/hiddev0が勝手にできたので、 これに対しCでプログラムを作って、 fd = open("/dev/hiddev0", O_WRONLY); して、 write(fd, command, 8); した。commandは0x01FF00000000。けど全然反応が無い。 USB-IOのエンドポイント0には、0x01FFを送ったら、ポート0が反転するはずなんだけどなあ。 hid使わずに、ちゃんと専用ドライバ使わないとだめなの?
392 名前:login:Penguin mailto:sage [04/11/21 17:22:45 ID:fkgrUhvM] デバイスドライバはカーネルメモリを消費するらしいのですが、 現在のカーネルメモリーの残量を知るにはどうしたらよいですか?
393 名前:391 [04/11/21 17:37:11 ID:RzBM8DsM] >390 /usr/include/usb.h
394 名前:login:Penguin mailto:age [04/12/12 18:20:03 ID:fch5Qtg6] Linuxデバイスドライバの勉強を始めました。 がまずは、オライリーの本で解説してる、 サンプルコードから入ろうと思ったんですが、 asm/system.hをincludeしているコードは、 /usr/src/linux/include/asm/system.h: 関数 `__set_64bit_var' 内: /usr/src/linux/include/asm/system.h:190: 警告: dereferencing type-punned pointer will break strict-aliasing rules と警告を出されてしまいます。 同じ現象に遭遇した香具師いませんか? コンパイラはgcc3.3、kernel2.4.26。 ちなみに、警告された部分は、 #define ll_low(x) *(((unsigned int*)&(x))+0) #define ll_high(x) *(((unsigned int*)&(x))+1) static inline void __set_64bit_var (unsigned long long *ptr, unsigned long long value) { __set_64bit(ptr,ll_low(value), ll_high(value)); //190行目 }
395 名前:394 mailto:sage [04/12/12 18:22:17 ID:fch5Qtg6] あ、マシンは i686です。
396 名前:login:Penguin mailto:sage [04/12/14 01:02:15 ID:bnBNd/cw] たしか-fno-strict-aliasingだったかな。それつけれ。 より詳細が知りたいときはググれ。
397 名前:394 mailto:sage [04/12/14 02:47:39 ID:iNH7gUWs] 産休です>>396 小細工ですが、 (unsigned int*)&(x)を、(unsigned int*)(void*)&(x)に書き換えると、 警告を封じることができますた。 勉強がんばります。
398 名前:login:Penguin [04/12/14 11:29:27 ID:HO3MDnt+] モジュールでmallocを使うと implicit declaration of function `malloc' なる警告が出ました。 正直、うまくいくとも思っていなかったのですが、ためしにやってみた感じです。 何かヘッダをincludeすればいいのでしょうか。
399 名前:login:Penguin mailto:sage [04/12/14 11:44:22 ID:vlh4D4yl] >>398 kmalloc() or vmalloc()
400 名前:login:Penguin mailto:sage [04/12/14 11:54:53 ID:HO3MDnt+] >>399 感謝.あとは調べます.
401 名前:login:Penguin [04/12/14 15:55:34 ID:ScDxM3L+] 【序 論】 オウム事件とは、「オウム、創価、統一が共同でやっていた覚醒剤密造などの不法行為がばれそうになり、全ての罪をオウムに押付けた。」事件であると理解しています。 統一教会は、その起源から考えて、KCIA及びCIAの影響下にあると考えるべきです。 日本側のCIA専属のお爺さんたち、つまり、笹川さん、児玉さん、中曽根さんたちが、統一とつるんでいたのも、CIAの犬同士という絆があったわけです。 一方で、創価は創価で、笹川一派を通じて、統一と繋がりがありますし、それ以前に創価内部に深く入り込んでいる暴力団、 後藤組のもつ北朝鮮コネクションから、オウムの麻薬ビジネスに関わっていたわけです。 もちろん、日本社会に創価マフィアのネットワークをはりめぐらした学会を、CIAが放っておくわけがなく、マネーロンダリングなどに、しっかり利用されています。 宗教法人の財務の閉鎖性をCIAが利用しないと考える方が異常です。 そして、CIAお得意の麻薬ビジネスの日本支部が、オウムだったわけで、その収益が北朝鮮に還元されていたのも当然のことであり、 北の現体制を維持するための、CIAの有難い配慮だったわけです。 なにしろ北の体制が崩壊すると、一番困るのは、CIAのスポンサーである軍産複合体と国際金融資本であり、極東の緊張は、彼らの飯の種なわけですから。 麻薬王にして、CIAの帝王である大ブッシュさんが、統一の文と仲良しなのも、アッタリマエなわけですね。 今度の米大統領選でも、随分と統一のカネが小ブッシュ陣営に流れたようですね。 尚、本件の主たる議論は、2チャンネル、警察板の「告発します 第3部」スレッドにて、進めています。 mentai.2ch.net/test/read.cgi?bbs=police&key=985780338&ls=100
402 名前:login:Penguin mailto:sage [04/12/14 17:02:39 ID:WBCZfumK] 国際金融資本と無関係な人はいません。ここが大事なところです。 国際金融資本とダーティーな勢力になんらかの関係があるというのなら、 全ての人間がダーティーな勢力と関係があるということです。
403 名前:login:Penguin [04/12/16 00:42:54 ID:HSUTNn3s] <linux/errno.h>をincludeしているのに、errnoが宣言されていないとエラーが出ます。 なぜですか?
404 名前:login:Penguin [04/12/16 00:52:12 ID:fnG8qWZe] #include <asm/errno.h>
405 名前:login:Penguin mailto:sage [04/12/16 03:08:53 ID:L4JhEJTY] デバイスドライバーをイジルとハードが壊れます
406 名前:login:Penguin mailto:sage [05/01/13 20:25:56 ID:5Qhjx5GH] jiffies の質問です。jiffies がオーバーフローする時の挙動を確かめ たく、下記のようなモジュールを作成してロードしたのですが、モジュー ルのロードに非常に時間がかかります。 #define __KERNEL__ #define MODULE #include <linux/module.h> #include <linux/sched.h> #include <linux/delay.h> MODULE_LICENSE("GPL"); int init_module(void) { jiffies = 4294961296UL; return 0; } void cleanup_module(void) { return; } 即座に jiffies 値を変更するためには、何か工夫が必要なのでしょう か?
407 名前:login:Penguin mailto:sage [05/01/13 21:59:07 ID:b26g+4JK] >>406 jiffesの値が飛ぶせいじゃないの? 初期値をいじる方がいいと思うが。
408 名前:login:Penguin mailto:sage [05/01/13 22:21:10 ID:5Qhjx5GH] やっぱりそれしか方法ないでしょうかね。カーネルコンパイルが億劫で まだ試していませんでした。 例えば、jiffies += 8640000; だとそれほど時間はかからないのですが、 jiffies += 8640000; にすると、より多くの時間がかかるようです。仮 想マシン環境で実験しているのですが、その間、仮想マシンのプロセス の CPU 使用率は高いままでした。
409 名前:login:Penguin mailto:sage [05/01/14 02:03:54 ID:PSu0RjKD] ん? 何書いてたんだ、俺 >408 は、正しくは以下です。 例えば、jiffies += 8640000; だとそれほど時間はかからないのですが、 jiffies += 864000000; にすると、より多くの時間がかかるようです。
410 名前:login:Penguin [05/02/06 11:19:02 ID:+OMlHKxZ] mmapによるデバイスアクセスについてご教授ください。 16bitアクセス限定のデバイスに対して、 mmapによるアクセスを試行しているのですが、 どうも挙動が怪しくて困っています。 アプリ側からmmap(/dev/memをO_SYNCでopen)してshortアクセスをしても、 そのままshort幅でデバイスにアクセスが行くとは限らないのでしょうか? なにか考慮が不足してるのでしょうか。
411 名前:login:Penguin mailto:sage [05/02/06 14:33:57 ID:JfjjYGk4] >>410 アーキテクチャわかんないので、過去の経験より。 ・D cache ・コンパイラが勝手に最適化 そういう制限がある場合は、おとなしく専用ドライバ書くのが 近道のような気がしますな。
412 名前:login:Penguin [05/02/10 21:10:10 ID:oT40ukFS] gcc 3.3.5(gentoo) で作成したモジュールを gcc 3.4.2(FC3) のPCへ 組み込もうとするとエラーで組み込めません。 どちらも kernel-2.6.10 です。 insmod: error inserting 'hoge.ko' : -1 Invalid module format kernel config (General setup, Loadable module) は同じにしてあります。 同じバージョンの gcc で作成したシステムでないと無理なのでしょうか。
413 名前:login:Penguin mailto:sage [05/02/12 01:22:07 ID:QcR6E3eX] >>410 >>411 の言うとおりアーキテクチャが分からないのでなんともいえないけど・・・ /dev/memをmmapでshortアクセスしたら、普通はshortで触ってくれるでしょう。 でも、触ってるデバイスが * 例えば32bit PCI * にぶら下がってたりしたら 32bit で触りに行っちゃうこともありますよ。 っていうか、PCIの向こうにいるデバイスに届くまでに余計な16bitが増えてたりする。 それでも、読みにいくときには多分shortで行っても多分大丈夫。 書き込みをshortでやったりすると、残りの16bitにゴミが乗っかっちゃうとか、 そんなんじゃないでしょうか? そうならば、shortで書きに行くときには、最初にデバイスから32bit分持ってきて、 それに16bit分上書きして、32bit書き戻すとかするしかないのでは。 (16bitアクセス限定でも、読みに行くときは16bit×2で32bit分をうまく返してくれることを かってに期待して書いてますけど) それから、32bitでアクセスするときにも触りに行くアドレスに注意が必要ですよ、多分。 32bitアラインメントじゃないとダメな予感がします。 もしそうならば、アラインメントの境界をまたいじゃうような16bitの書き込みをする場合、 両側の32×2 = 64bit分を持ってきて16bit書いて戻す、とかしないとダメですよね。 もちろんこれは、PCI上でうまく振舞うように作られていないデバイスの話で、 たとえ16bitアクセス限定デバイスでもそうならないようにつくることは可能だと思います。 ところどころ言ってるかもしれませんけどね・・・
414 名前:413 mailto:sage [05/02/12 01:24:29 ID:QcR6E3eX] 早速、間違えてました(w >ところどころ言ってるかもしれませんけどね・・・ ところどころ * うそ * 言ってるかもしれませんけどね・・・
415 名前:410 mailto:sage [05/02/16 00:46:02 ID:E/KjMwKc] いろいろ情報ありがとうございます。 もともとドライバ経由でアクセスしていたのですが、 パフォーマンス的な問題でmmapでを使用したかったという経緯があります。 ですが、mmapだとどうもうまくいかなくて試行錯誤していた次第です。 ですので、単純にmmapでの処理の問題かと思っていました。 時間はあるので、勉強も兼ねてもうちょっと情報収集をしたいと思います。
416 名前:login:Penguin [05/02/16 22:28:50 ID:mypLuczy] www.netfort.gr.jp/~matsu/lcd_pc/lcd_pc.html これカコイイ
417 名前:login:Penguin mailto:sage [05/02/20 21:06:04 ID:0sjUjbHi] 現在、デバイスドライバ作成(とりあえずキャラクタ型)の勉強しているのですが、 2.4.30-pre1上で作成したテストドライバでモジュールのロードは成功したと思われる のですが(lsmodで存在を確認)、実際にドライバを使用する為に作成したテストツールから 呼び出す(ioctlを使用する箇所で)と失敗しました。 $ ls -l /dev/testdev crw-rw-rw- 1 root root 60, 0 2月 20日 20:11 /dev/testdev $ ./testtool ioctl: Inappropriate ioctl for device <-- perrorで表示させてみたところ
418 名前:417 mailto:sage [05/02/20 21:09:12 ID:0sjUjbHi] つづき そこで、さらに詳細に状況を確認するためにstraceを使用してみました。 $ strace ./testtool execve("./testtool", ["./testtool"], [/* 52 vars */]) = 0 brk(0) = 0x8049a6c open("/etc/ld.so.preload", O_RDONLY) = -1 ENOENT (No such file or directory) open("/etc/ld.so.cache", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=62075, ...}) = 0 old_mmap(NULL, 62075, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40013000 close(3) = 0 open("/lib/libc.so.6", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0DU\1\000"..., 1024) = 1024 fstat64(3, {st_mode=S_IFREG|0755, st_size=1333605, ...}) = 0 old_mmap(NULL, 1145796, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x40023000 mprotect(0x40134000, 27588, PROT_NONE) = 0 old_mmap(0x40134000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x110000) = 0x40134000 old_mmap(0x40139000, 7108, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x40139000 close(3) = 0 old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x4013b000 munmap(0x40013000, 62075) = 0 open("/dev/testdev", O_RDWR) = 3 ioctl(3, FIBMAP, 0xbffff1d8) = -1 ENOTTY (Inappropriate ioctl for device) fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 2), ...}) = 0 old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40013000 write(1, "errno = 25\n", 11errno = 25 ) = 11
419 名前:417 mailto:sage [05/02/20 21:10:12 ID:0sjUjbHi] つづき dup(2) = 4 fcntl64(4, F_GETFL) = 0x2 (flags O_RDWR) brk(0) = 0x8049a6c brk(0x804aa6c) = 0x804aa6c brk(0) = 0x804aa6c brk(0x804b000) = 0x804b000 fstat64(4, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 2), ...}) = 0 old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40014000 _llseek(4, 0, 0xbfffef50, SEEK_CUR) = -1 ESPIPE (Illegal seek) write(4, "ioctl: Inappropriate io"..., 47ioctl: Inappropriate ioctl for device ) = 38 close(4) = 0 munmap(0x40014000, 4096) = 0 close(3) = 0 munmap(0x40013000, 4096) = 0 exit_group(1) = ? $ 結果を見ていると実行したおぼえのない以下の行がありました。 ioctl(3, FIBMAP, 0xbffff1d8) = -1 ENOTTY (Inappropriate ioctl for device) この現象はどこにエラーがある場合におこり得ますか? 知ってる方お願いします。m(_ _)m
420 名前:login:Penguin mailto:sage [05/02/20 21:38:19 ID:uvzGFsyf] 結果じゃなくてソースだそうよ
421 名前:417 mailto:sage [05/02/20 21:48:59 ID:0sjUjbHi] >>420 Please wait for a moment...
422 名前:417 mailto:sage [05/02/20 22:06:08 ID:0sjUjbHi] #define MODULE #define __KERNEL__ #include <linux/module.h> #include <linux/kernel.h> #include <linux/sched.h> #include <linux/fs.h> #include <linux/string.h> static int devmajor=60; static char *devname="testdev"; MODULE_PARM(devmajor, "i"); MODULE_PARM(devname, "s"); #include <asm/uaccess.h> static int devtest_open(struct inode * inode, struct file * file){ MOD_INC_USE_COUNT; return 0; } static int devtest_close(struct inode * inode, struct file * file){ MOD_DEC_USE_COUNT; return 0; } static int devtest_ioctl(struct inode *inode, struct file *file,unsigned int cmd, unsigned long arg){ int i; printk("testdev: ioctl: cmd=%04X\n",cmd); switch(cmd) { case 1: printk("Driver testing\n"); return 0; } return -EINVAL; }
423 名前:417 mailto:sage [05/02/20 22:07:26 ID:0sjUjbHi] つづき static struct file_operations devtest_fops = { ioctl: devtest_ioctl, open: devtest_open, release: devtest_close, }; int init_module(void){ printk("install '%s' into major %d\n",devname,devmajor); if(register_chrdev(devmajor,devname,&devtest_fops)){ printk("device registration error\n"); return -EBUSY; } return 0; } void cleanup_module(void){ printk("remove '%s' from major %d\n",devname,devmajor); if (unregister_chrdev(devmajor,devname)) { printk ("unregister_chrdev failed\n"); } };
424 名前:417 mailto:sage [05/02/20 22:10:07 ID:0sjUjbHi] デバドラ呼び出し部 #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <sys/ioctl.h> #include <string.h> #include <unistd.h> #include <errno.h> extern int errno; int main(void){ int fd, ret; fd=open("/dev/testdev",O_RDWR); if(fd<0){ fprintf(stderr,"cannot open device\n"); return 1; } errno = 0; ret = ioctl(fd,1); if(ret == -1){ printf("errno = %d\n", errno); perror("ioctl"); } close(fd); return 0; }
425 名前:417 mailto:sage [05/02/20 22:11:43 ID:0sjUjbHi] 以上で全部です。
426 名前:login:Penguin mailto:sage [05/02/20 23:44:25 ID:Ia/OzVXx] >>417 コピペしたら動いたぞ。 2.6.10 でだけど・・・ カキコしたソースで動かしてみそ。
427 名前:417 mailto:sage [05/02/21 00:06:03 ID:bwxnTums] >>426 マジ?しかも、2.6? このソースでコンパイル通った? そして実行結果キボンヌ
428 名前:login:Penguin mailto:sage [05/02/21 00:25:27 ID:PN7I+gvx] >>427 # uname -r 2.6.10-gentoo-r6 /var/log/messages より Feb 20 23:41:06 XXXXX testdev: ioctl: cmd=0001 Feb 20 23:41:06 XXXXX Driver testing 変更点は /dev/wrkdev にしただけ。
429 名前:417 mailto:sage [05/02/21 00:37:25 ID:bwxnTums] >>428 Thanks! こちらもたった今2.6で動作確認したところです。 う〜む、何故2.4ではエラーなんだろ。 もうちょっと自分で調べてみます。 テストしてくれてありがとう >>426 & >>428
430 名前:login:Penguin mailto:sage [05/03/06 13:19:22 ID:PjCVkwmZ] 何気に良スレ みんな頑張れ お気に入りに追加しますた。
431 名前:login:Penguin mailto:sage [2005/03/29(火) 16:05:44 ID:lbUCJwgD] ドライバのread、write関数でminor番号取得する方法ってないんですか? 2.6用に、LIRCの仮想ドライバで、デバイスファイル2つ作って、 片方にキーコード書き込んだらLIRCに送られるやつ書いてるんだけど。 まあ、LIRC側はIOCTLとreadだけだし、キーコード送るほうはwriteだけだから今のとこ何とかなってるんだけど、気持ち悪いし。
432 名前:login:Penguin mailto:sage [2005/03/29(火) 23:34:47 ID:ChOvrjsk] private_data を使う、かな?
433 名前:login:Penguin mailto:sage [2005/03/30(水) 11:17:39 ID:tWHa73x6] >>432 サンクス! open時に file->private_data にポインタ突っ込んでおくってことですね。 取得することばかり調べてて、あらかじめ持たせておくことを考えてませんでした。 修行が足りぬ…orz
434 名前:login:Penguin mailto:sage [2005/04/16(土) 06:28:18 ID:R/hasO1P] usb-hid についての質問です. usb 接続の joypad を,hid-input 経由ではなく, (drivers/usb/usb-skeleton.c のような) usb のデバイスドライバで処理したいと考えています. 問題は,joypad の挿入時に hid-core の probe 関数が呼ばれてしまい, 自作 usb デバイスドライバの probe 関数が呼ばれないことです. 上記の解決策はあるのでしょうか. 自作 usb デバイスドライバ内では, joybad のベンダーID,プロダクトIDを usb_device_id 構造体に設定しています. kernel は 2.6.10 です. よろしくお願いします.
435 名前:434 mailto:sage [2005/04/16(土) 08:17:16 ID:R/hasO1P] 自己レスです. 解決法を見付けたので,書き込みます. drivers/usb/input/hid-core.c 内の,hid_blacklist 構造体に, joypad のベンダIDとプロダクトIDを加えることで,解決しそうです. スレ汚し失礼しました.
436 名前:login:Penguin mailto:sage [2005/05/17(火) 18:53:06 ID:CbytfkQn] 2.6 kernel(2.6.11.x)上でデバドラ書く場合、 MOD_INC_USE_COUNT MOD_DEC_USE_COUNT を使用する事ってobsolete?
437 名前:login:Penguin [2005/05/18(水) 01:07:17 ID:2baf1QgQ] >>436 れがし
438 名前:login:Penguin mailto:sage [2005/05/19(木) 23:52:14 ID:m1yq1rQI] カーネル2.6.8(turbolinux10Server)でデバイスドライバを開発しています。 ドライバAでエクスポートしたシンボルをドライバBでコールしたいのですが、 ドライバBのinsmod時に"Unknown symbol"エラーが出てしまいます。 そこで、単純なソースで確認してみたのですが、同様の状態でした。 同様のソースをカーネル2.4.18(turbolinux8Server)でコンパイルしてinsmod したところ上手く動作したのですが、カーネル2.6では何か手続きが必要 なのでしょうか? 確認したソースは以下の通りです ==ドライバA== #include <linux/module.h> #include <linux/kernel.h> #include <linux/version.h> int __init test_init_module (void) { printk("test : init_module\n"); s_print(); return 0; } void __exit test_cleanup_module (void) { printk("test : cleanup_module\n"); return 0; } void s_print(void) { printk("Hello, World!\n"); } module_init(test_init_module) module_exit(test_cleanup_module)
439 名前:login:Penguin [2005/05/19(木) 23:52:48 ID:m1yq1rQI] ==ドライバB== #include <linux/module.h> #include <linux/kernel.h> extern void s_print(); int __init test2_init_module (void) { printk("test2 : init_module\n"); s_print(); return 0; } void __exit test2_cleanup_module (void) { printk("test2 : cleanup_module\n"); return 0; } module_init(test2_init_module) module_exit(test2_cleanup_module)
440 名前:login:Penguin [2005/05/19(木) 23:57:30 ID:m1yq1rQI] ==コンパイル手順== cc -c -w -O -I/usr/src/linux/include -I/usr/include -D__KERNEL__ -DMODULE -DKBUILD_MODNAME=test initial.c /usr/src/linux/scripts/mod/modpost initial.o cc -c -w -O -I/usr/src/linux/include -I/usr/include -D__KERNEL__-DMODULE -DKBUILD_MODNAME=test -c -o initial.mod.o initial.mod.c ld -r -o test.ko initial.o initial.mod.o ==動作確認== # insmod test.ko // シンボルのエクスポートを確認 # cat /proc/kallsyms | grep s_print f8xxxxxx T s_print [test] # insmod test2.ko test2 : Unknown symbol in module 's_print' となります。実機が側にないので出力メッセージは大体こんな感じということで。 よろしくお願いします。
441 名前:login:Penguin mailto:sage [2005/05/20(金) 03:04:35 ID:Ds9MyJAI] >>440 カーネルソースんとこでs_printグレップしようぜ 具烈婦 レップってすごいなコレ。どういう意味だ
442 名前:login:Penguin [2005/05/20(金) 08:58:08 ID:zG+tsX8i] >>441 烈婦ワロタ レスありがとうございます。 s_printでgrepしてみたのですが、同名のシンボルは無いようでした。 念のため、ドライバAに EXPORT_SYMBOL(s_print); を追加しても'Unknown symbol'になってしまいます。 ドライバ間の依存関係をどこかで明示する必要があるのでしょうか?
443 名前:login:Penguin mailto:sage [2005/06/07(火) 10:17:39 ID:6uaL4exB] 普通はそんなことはできないんじゃない? 誰かができると言ったのかな? デバイスファイル開いてioctlをコールが普通じゃねぇの?
444 名前:login:Penguin mailto:sage [2005/06/17(金) 18:54:11 ID:9kSGojSd] www.oreilly.com/catalog/linuxdrive3/book/index.csp Linux Device Drivers, Third Edition
445 名前:login:Penguin mailto:sage [2005/06/18(土) 19:13:08 ID:Uc6V46BE] >>444 chapter1まで読んだ。 Policy-free driversの意味がまったく分からない。 うえーん
446 名前:login:Penguin mailto:sage [2005/06/19(日) 15:13:18 ID:f3bsYXGy] the role of a device driver is providing mechanism, not policy. これが、policy-free
447 名前:login:Penguin mailto:sage [2005/06/19(日) 15:19:24 ID:f3bsYXGy] ここでのfreeはduty freeのfreeと同じ使われ方。 policyがないdriver
448 名前:login:Penguin [2005/06/29(水) 18:33:32 ID:hcN+gVRw] カーネル2.4.28を使用して、EZ USB FX2のドライバを作成しています。 USBを4つさし、ここに、デバイスドライバを作成します。デバイスドライバは、 カーネルにあるusb-skelton.cを使って作成しました。3つまでさして、制御した場合、 動作したのですが、4つさし、アプリを動かずとドライバが死にます。 4つとも、ここにドライバを作成し、メジャー番号180 で、それぞれ、 マイナー番号を100 120 140 160としました。 open / closeのみを行うプログラムを作成し、何回か行いました。 何回かおこなうと、ドライバが死にます。 ドライバソースを追っていったのですが、open時に dev = minor_table[minor] という行でdevが0になっていました。 minor_tableは、probe関数で取得しているのですが、なぜNULLになったのか なぞです。どなたかわかる方いらっしゃいますか?
449 名前:login:Penguin [2005/06/29(水) 18:42:20 ID:Cc/icRgl] Linux のドライバのプログラミングの 良い入門書があったらおしえてください
450 名前:login:Penguin mailto:sage [2005/06/29(水) 22:17:33 ID:OM3Tds/i] >>448 Kernel2.4.27のソースしか見てないので違ったら失礼。 >マイナー番号を100 120 140 160としました。 これがよくわからん。デフォでは192から16個を順番に割り当てるようになってるが、それをわざわざいじったってことか? そうなると、スケルトンをあちこち変更してあるのだろうから、さすがにソース無いとなんも判らん。
451 名前:login:Penguin [2005/06/29(水) 22:32:06 ID:rSbPN/4/] >>449 アレ買え。馬の絵の描いてあるヤツ。 高くても我慢しろ。読めば安いと思うようになる。 絶対買え。とにかく買え。12冊買え。たくさん買え。
452 名前:login:Penguin mailto:sage [2005/06/30(木) 09:52:01 ID:6k+4MtMc] 12冊=たくさん 納得した
453 名前:login:Penguin mailto:sage [2005/06/30(木) 11:24:58 ID:9CZUZn2O] なぜ12冊なのかちっとも納得いかないんだが
454 名前:login:Penguin mailto:sage [2005/06/30(木) 11:25:42 ID:J4A9ru3W] たくさんだからだろう
455 名前:Artane. ◆o6gE1yuDGM [2005/07/04(月) 07:22:47 ID:Y9u/GUb1] 2.6.13で又モジュール周りのAPIが変わりそうな悪寒… drivers/base/class_simple.cがまるごとなくなってる…そこのAPIを使ってる ttp://www.linuxant.com/ のx86_64用のHSFモデムドライバがそのままでは動かない状況に(;´Д`) その前はACPI絡みでデッドロックがかーねるにあって動かなかったし、どうなってるんだろうヽ(`ー´)ノ しかもライセンスがプロプラなのでどーすりゃいいのか頭が痛いです。
456 名前:login:Penguin mailto:sage [2005/07/07(木) 22:10:08 ID:DftqFJii] 2.4はcc -o hoge.o -c hoge.cするだけでokだったけど 2.6はmakeファイルを書かないとダメになった。 はぁ、マンドクセ
457 名前:login:Penguin mailto:sage [2005/07/07(木) 22:51:04 ID:Hy9t4ICF] ttp://japan.linux.com/kernel/03/10/26/1026229.shtml ここの一番下に書いてあるのなら楽だろ。簡単に再利用できるし。
458 名前:login:Penguin mailto:sage [2005/07/08(金) 11:00:44 ID:9KK2lDyF] obj-m := unko.o の1行でよくね?
459 名前:login:Penguin [2005/07/24(日) 15:33:14 ID:02p0TYUx] USBのドライバ書いたことアルヤツいる?
460 名前:login:Penguin mailto:sage [2005/07/28(木) 21:47:52 ID:3ylo+PR7] >>459 2.4.0testカーネルの時やってたなぁ ストレージ関係がクラスドライバでないときは動かすのに苦労したよ USB Snoopyで解析したりして
461 名前:login:Penguin mailto:sega [2005/07/31(日) 16:37:19 ID:0Amwd3lA] カーネル2.6.xのSMPの wait_event_interruptible でしつもんです。 起こされる要因をビットであらわすようにして 起こされたあとに flag &= ~FLAG; として 起床要因をクリアしたいです。そこで、 wait_event_interruptible(wq, !(flag & FLAG) ); tmpflag = flag; // ◆1 // ★ flag &= ~FLAG; // ◆2 if( tmpflag & ・・・ としていたのですが、割込が運悪く★のところに来たときに 次回起床要因flagを割込ルーチンで設定された直後にクリアしてしまいます。 ◆1と◆2をアトミックに処理するのに割禁使うのも大げさな気がします。 どうしたらよいでしょうか? (><)教えて!
462 名前:login:Penguin [2005/08/18(木) 13:31:44 ID:wsNIgIg1] ご存知の方がいたら教えて頂けないでしょうか? printk の動作に関してなのですが、たとえば、ドライバの登録の際に int init_module (void) /* Loads a module in the kernel */ { printk("Hello kernel \n"); return 0; } などと printk を使い、(X-Window は起動しないで)コンソールで # insmod filename.o を実行すると Hello kernel とコンソールに表示されるはずなのですが、 表示される場合と表示されない場合があります。実際には、 ほとんどの場合は表示されず、表示されるのは数十回に1回程度です。 そもそも 「printk はコンソールに *必ず* 出力するわけではない」 のでしょうか?どうなのでしょう?
463 名前:login:Penguin mailto:sage [2005/08/18(木) 14:45:51 ID:AA5MGziJ] >>462 ほんとうに\nを入れたのか
464 名前:login:Penguin [2005/08/18(木) 14:47:24 ID:zqtjM++q] >>462 ほんとうにコンソールなのか Xterm とかじゃないだろうな。
465 名前:login:Penguin [2005/08/18(木) 14:54:07 ID:zqtjM++q] X-Window は起動せずにって書いてあったな。 すまそ。 printk() は中で register_console() されたドライバの ->write() を 直接呼んでるから必ず出力されるよ。 出ないとするとログレベルの設定かな。 頭に "<1>" とかつけるといいのでは?
466 名前:462 [2005/08/18(木) 18:10:38 ID:wsNIgIg1] レスありがとうございます。 >>463 \n は入れてあります。 \n を入れるのと入れないのでは違いがあるんですか? >>465 出力されるときと出力されないときがあるんですよ。 でも、起動のたびにログレベルが変更されるというのは考えにくいし…
467 名前:login:Penguin mailto:sage [2005/08/18(木) 18:35:47 ID:spRqn48O] flushされていない or 同じメッセージなので纏められているのでは?(この場合、last message repeated xxx times とでる。)
468 名前:login:Penguin mailto:sage [2005/08/18(木) 20:41:10 ID:cWStGfHc] >>466 ログファイルに吐かれていればメッセージレベル。 出てなかったら改行だろう。 >>467 コンソールに出る方はまとめてくれない。
469 名前:462 mailto:sage [2005/08/19(金) 09:09:08 ID:qyuoI/lN] >>467 , 468 /var/log/message には出てます。 改行もしてるんだけどなぁ。 どうもよくわからないので、あきらめることにしました。(^^; お忙しいところ、レスありがとうございました!
470 名前:login:Penguin [2005/08/19(金) 22:08:36 ID:ZOCJz/g6] /etc/syslog.conf に kern.* /dev/console とか書いてあるか?
471 名前:462 mailto:sage [2005/08/22(月) 13:16:52 ID:nvUzxFpI] >>470 を! /etc/syslog.conf の kern.* /dev/console が コメントアウトされています! なるほど、これを有効にすると確実に表示されそう ですねぇ。 今、ハードが客先に行ってしまったので 確認できないんですけど、ハードが戻ってきたら 試してみます。 ありがとうございます!
472 名前:login:Penguin [2005/10/22(土) 01:07:43 ID:EmofMJka] やべえ、カッコイイ......デバイスドライバ自分で書いてる人たち......。 Cは一通り入門程度のことは覚えたけど、遊びでstdio.h使うことばっかりで入門の領域出てないんですよね、僕。 Linuxにも入って間もないからシェルスクリプトの使い方もまともに知らないからLinuxプログラミングなんてまだまだ....。 お馬さんの本、大学の図書館にありましたねー、ぱらっと見たけどさっぱり......。
473 名前:login:Penguin mailto:sage [2005/10/22(土) 17:23:49 ID:0rh+z8HN] デバドラ本第3版の和訳もう出てるのね。 洋書を見つけてレジに持っていこうとするも、ふと横を見ると書棚にありました
474 名前:login:Penguin mailto:sage [2005/10/23(日) 03:10:35 ID:JQc1kDtY] >>472 努力でどうとでもなる まぁ頑張れ
475 名前:login:Penguin mailto:sega [2005/10/23(日) 06:34:02 ID:TRsS2wCF] SMPな環境で、あるAという区間とBという区間があるとき そこを走行するCPUをひとつだけにして、 かつAとBを同時に走らないようにしたい。 最速で処理できる区間ではspin_lock_irqsaveを使ってもいいけど ちょっと時間を食いたい処理のときには割り禁にしたくない/出来ない。 こういうときってセマフォを使うんだっけ? あと、誰かがそこを走行してたら、待たずにあきらめる処理も どうやるのかいまいちわからんです。
476 名前:login:Penguin mailto:sage [2005/10/23(日) 07:17:36 ID:TyUzTsLn] っ[MUTEX]
477 名前:login:Penguin mailto:sage [2005/10/24(月) 11:41:52 ID:y/bnKz7N] futex
478 名前:login:Penguin [2005/10/24(月) 21:00:03 ID:qab5z916] insmod hello.o が出来ません.... bash: insmod: command not found と出てしょっぱなから弾かれました....。 FC4を入れているのですが、ぐぐったところKernelのバージョンが 上ってからサポートされなくなった(?)のようなことがかいてありましたが... ちょっとわからないです..。
479 名前:login:Penguin mailto:sage [2005/10/24(月) 21:41:23 ID:nHBdU4lq] >>478 module-init-toolsが入っていない。 なんて事はまずありえないので、パス通っていないだけだろう。
480 名前:login:Penguin mailto:sage [2005/10/25(火) 01:26:16 ID:boXSHzJM] っ[/sbin/insmod]
481 名前:login:Penguin mailto:sage [2005/10/25(火) 01:50:35 ID:mHOxbI49] $ su - passwd: #
482 名前:login:Penguin mailto:sage [2005/10/25(火) 07:29:46 ID:gtGeQ0F/] モジュールに挑戦する前にやるべきことがあるだろう。
483 名前:login:Penguin mailto:sage [2005/10/27(木) 22:32:36 ID:5z/EqZNh] みなさん、返事が遅れてすみません....。 何日ものぞいていませんでした。 どうやら、おっしゃる通りパスが通っていないようでして、 あれから、/sbin/insmod [filename] を試してみましたがなんだか、だめだ!のようなメッセージが表示されて しまい、無理でした。Linuxのデバイスドライバのプログラミングは BIOSレベルでのデバイスドライバを書くときの参考にもなるかと 思ったのですが、やっぱりLinuxを初めてあまりたっていないのに 背伸びをしすぎたようです。出直してきます。 御回答いただいた方々、ほんとうにありがとうございました。:-)
484 名前:login:Penguin mailto:sage [2005/10/28(金) 05:51:31 ID:gqZeSigl] │ │ J ∩_∩ ∩_∩ ( ・(ェ)・) (・(ェ)・ ) エサクマか? 違うクマよ、 あわてて食いつくと面倒なことになるクマ。
485 名前:login:Penguin mailto:sage [2005/10/28(金) 08:53:26 ID:iWNW3bFs] >>483 いえいえ是非また来て下さいね>< 御町して檻ます><
486 名前:483 mailto:sage [2005/10/30(日) 22:20:06 ID:kv9dDPbi] やっとできました! >>167 さんのレスのようにお馬さん初版第二章の一番最初のなーんにもしない モジュールのソースに追加することでロードすることができました。 試しにカーネルソースのmodule.hを見てみるとメッセージでライセンスが無いといわれた経緯から MODULE_LICENSE (license)の定義をみつけ、それをキーワードにぐぐったらこれを追加するような 記述をみつけることができました。 カーネルバージョンが2.4.1以降からこうなったようなことがinsmodのmanページにあったので一気に解決しました。 たぶん、insmodが認識されなかったのはKterm上からやろうとしたからですね.... 嬉しい!
487 名前:login:Penguin mailto:sage [2005/10/30(日) 22:27:05 ID:dxIdqW+o] >>486 よくやった! とりあえず、今の状態を登山に例えるなら 登山用品店の自動ドアが開いたあたりだな。
488 名前:login:Penguin mailto:sage [2005/11/19(土) 17:12:54 ID:mr3HUTh9] 2.4から2.6へポーティングしててkoができるまで行きました。 chrdevなんですけどudevの仲間に入る方法がわかりません。 2.4のころのように直接的にmknodしてinsmodするものなのでしょうか。
489 名前:login:Penguin [2005/11/24(木) 19:13:51 ID:tUhrvxEF] ageようよ。
490 名前:login:Penguin mailto:sage [2005/11/25(金) 02:45:31 ID:Y8mPXznM] 質問なのですが、回路の方は勉強しておられますでしょうか?
491 名前:login:Penguin mailto:sage [2005/12/08(木) 03:07:19 ID:B0ejvBgu] ちょっと質問させて下さい。 ノートパソコンを使っているんですが、マイクとスピーカーの位置が近いのでサウンドドライバの 読み込み時からサウンドミキサーが起動して音量設定するまでの間にハウリングしたりするんです。 そこで、サウンドドライバ読み込み時にマイクをミュートにしたいと考えたのですが、 例えばドライバの中にマイクの初期音量を0にするコードを追加したりするようなことは可能なんでしょうか? # スレ違いでしたら誘導お願いします。
492 名前:login:Penguin [2005/12/08(木) 10:11:04 ID:j53o+rA9] ageようよ。
493 名前:login:Penguin [2005/12/11(日) 18:47:51 ID:rh+AeURO] はじめまして。 Windows対応のRS232C->USB変換ケーブルを使って、スイッチャを LINUXのPCで制御しようとしているんですが、そもそもドライバを 自分で作る必要があるのでしょうか? LINUXの環境はOSがRED HAT 9でカーネルは2.4です。 もしくは必要かどうかを確認する方法ってあるのでしょうか? ご存知の方がいらっしゃいましたら、答えていただけないでしょうか? よろしくお願いします。
494 名前:login:Penguin [2005/12/11(日) 21:37:52 ID:ZmBeQHZx] >>493 自動認識されないか?? suse10だと自動で使えた けどBreak信号遅れなくてヒデブだった
495 名前:493 [2005/12/13(火) 02:44:01 ID:bCmTAm2t] >>494 お返事ありがとうございます。 /var/log/messagesでログを見たら、新しいUSBデバイスが認識できている っぽいことが書かれてました。 たぶんRS232C->USB変換ケーブルは認識できてると思います。 で、早速プログラム組んでスイッチャに信号を送ってみたんですが、 これがうんともスンとも言わなくて。 もしかして変換ケーブルだけ認識しててスイッチャは認識していないかも って考えたのですが、シリアル通信だから信号を送るだけなら送れますよね?
496 名前:login:Penguin mailto:sage [2005/12/13(火) 21:07:28 ID:sg6goQTn] /dev/ttyUSBの読み書き許可がなかったよ
497 名前:色情前世鑑定士 mailto:sage [2005/12/13(火) 23:49:52 ID:xAfc4hOf] >>495 ボーレートとかあってますよね? sttyとか使って動作中のUSBシリアルの各設定を 観察・設定してみるといいかもしれません
498 名前:login:Penguin [2005/12/17(土) 23:06:34 ID:oosooT9i] >>496 ,497 助言ありがとうございます。 パーミッションに関してはchmod 666を実行したので、大丈夫だと思います。 ボーレート他の初期設定は、少し自信がないのですが、他のシリアル通信 のプログラムを参考にして一通りプログラム内で設定しています。 sttyで確認するというのは知らなかったので、早速やってみたいと思います。 ありがとうございます。
499 名前:login:Penguin mailto:sage [2006/01/28(土) 02:19:52 ID:eIqcEw8I] 馬本買った記念age
500 名前:login:Penguin [2006/01/28(土) 02:22:46 ID:eIqcEw8I] ageて無かった…orz
501 名前::login:Penguin [2006/01/28(土) 13:24:51 ID:z02En7Mn] tky007lip10.iij.net [210.130.172.193]
502 名前:login:Penguin [2006/02/06(月) 00:56:30 ID:gxgsnq8Z] age
503 名前:login:Penguin mailto:sage [2006/03/19(日) 20:02:53 ID:wmRM5297] www.doodoo.ru/image-2006/03-16-yeticrab.jpg
504 名前:login:Penguin mailto:sage [2006/03/21(火) 02:41:04 ID:wxAXo3DG] SMPプログラミングの入門ページとかありませんかね? どちらかというとAの処理をCPU0に割り当ててBの処理を1に って感じで分けながら処理するタイプのプログラミングなので ASMPのほうがよいのですがこのような話題はどこで聞けばよいのでしょうか
505 名前:login:Penguin [2006/03/30(木) 20:19:25 ID:P2MixPUa] なんか誰も見てないような気もするけどちょっと質問 Redhat ES4(kernel 2.6..9-11 x86-64) CPU Xeon 2.8G(HT-on EM64T) メモリ4GB な環境で、SCSI Low level driverを書いてるんですが、 物理メモリ4GBしかないのに、SCSI Mid levle driverから 渡されてくる転送アドレス(物理アドレス)が4GBを超えた アドレスが渡されて来ます。 当然メモリ未実装エリアのアドレスなので転送しようにも 出来ない訳でSCSIカードが転送しようとしてエラーとなり ます。 pci_set_dma_msakに指定している値は、SCSIカードがサ ポートしてるアドレス範囲の40bitを指定しています。 これを32bitマスクにすると4GBを超えるアドレスは来な くなるんですけど、もしかしてpci_set_dma_msakて実装メ モリ量も気にしなければいけないんでしょうか? 馬本見てもそんな事書いてないし。たんにハードウェアの アドレス範囲を宣言するだけと認識してるんですけど。 何方かご存知の方居られたらご教授願います。
506 名前:login:Penguin mailto:sage [2006/03/31(金) 11:41:12 ID:zMWwd0XE] 適当に書いてみる。 他のドライバ見たらわかるけど、実装メモリは気にしない。 pci_dma_syncなんたらが失敗するの?
507 名前:login:Penguin [2006/03/31(金) 21:18:57 ID:OpI/WZIP] おお見てる人がw 実装メモリはカーネルが握ってるから本来気にする必要が無いのは 分かってるんですが、そのカーネルから来るアドレスが実装容量を超 えたアドレスを通知してくるので悩んで降ります。 pci_dma_syncでなくpci_map_sgで作られたスキャッタ/ギャザーリスト の中の物理アドレスが未実装領域のアドレスを指してる感じですね。 pci_set_dma_maskで32bitマスク(0xffffffff)してやればpci_map_sgで 作られたスキャッタ/ギャザーリスト内のアドレスは4GB未満のアドレ ス範囲で収まる感じです。(当然といえば当然) それを40bitマスク(0xffffffffff)にすると、実メモリ4GBしか無いにも 関わらず32bit以上、40bit未満のアドレスがスキャッタ/ギャザーリス トに含まれてしまいます。 カーネルのバグを疑い出して、カーネルソース追い始めた所でなの で実際にアドレス作り出す所まではまだ追いきれて無い状態です。 ご指摘の通り他のSCSI系ドライバのソースも参考にしてますが、実 装メモリなんて気にして無いしなんとも不可解…。 元々Solarisのドライバ作ってたんだけど、Linuxは今回初でかなり困っ てる状態ですorz
508 名前:login:Penguin mailto:sage [2006/03/32(土) 02:19:11 ID:9G03KeUN] また別の人が適当に書いてみる。 hugemem使ってみては?
509 名前:login:Penguin mailto:sage [2006/03/32(土) 10:42:43 ID:afhcBPMx] hugememってi386じゃなかったっけ? x86_64で4G載ってるって事は、IOMMUとか関係あるのかな。 結局virt_to_bus(pci-nommu.c)かvirt_to_phys(pci-gart.c)呼んでるから、 scatterlistのpageが期待しない値なんでしょうけど、そこら辺調べたらいいのかな。 ドライバいじったことはあるけど、書いたこと無いので適当です。
510 名前:login:Penguin mailto:sage [2006/03/32(土) 10:47:55 ID:shKEnT0S] 似たようなドライバの中身を調べてみればすぐわかりそうなものだが
511 名前:login:Penguin mailto:sage [2006/03/32(土) 15:12:47 ID:afhcBPMx] >>510 俺もそう思って、見たけどわからなかったw SCSI側からと、PCI側から見たら、よくわからなくなった。。 bioがよくわからん。 pci_set_dma_maskって要するにbounceするかどうかなのか? あとは、ページ確保するときのDMA/DMA32の切り分け。
512 名前:login:Penguin [2006/03/32(土) 16:46:33 ID:p6EHT8/a] うぉレスが増えてる。 >>508 hugemem は、>>509 が指摘の通り、x86_64では無いですね。 ただこのドライバは、一つのソースでRedhat ES4の 32bit Uni-processer/ SMP/hugemem kernelとx86-64 kernelの4種類サポートでして、実装メモリ 12GBのマシンでhugememカーネル使ってる分にはアドレスは正常な値が 返って来てます。 hugemem kernelとx86-64 kernelではDMAアドレスは64bit幅で来るのでこ の二つのカーネルの時は処理(アドレス計算とか)は共通にしてます。 >>509 正にそうです。scatterlistに入ってるpageが明後日の所を指し示してるので、 そのままSCSIカードに送るとカード上のIOPのファームがアクセスに行くとメ モリが無いのでメモリアクセスエラーを検出します。 >>510 SCSIカードと言うか実はRAIDコントローラでして、カード上にPCI-PCIブリッ ジが乗っかっててIOPとSCSIコントローラが載ってるカードです。 カード−ドライバ間はI2Oで通信してて、近い奴としてはmagariadとかqla1280 当たりなんですよね。他にも色々見てるんですが違いはそうは無い感じ。 >>511 bioはいまいち良く分からないですね。 ページ確保の時のDMA/DMA32て、GFP_DMA/GFP_DMA32フラグの事でし ょうか? 今使ってるカーネルをみるとGFP_DMA32が未定義でして、kernl-2.6.14とか 2.6.15とか見ると定義されてるんですよね。 なんかその辺も絡んでるのかなと気にはなってはいました。 皆さんアドバイスありがとうです。 もう少しカーネルソース見て来ます。
513 名前:login:Penguin mailto:sage [2006/04/04(火) 08:20:23 ID:0xn4pI8o] 気になるから、どうなったか知りたいです。
514 名前:login:Penguin mailto:sage [2006/04/04(火) 13:11:55 ID:p7vmOtaT] >>504 sched_setaffinity(2)
515 名前:login:Penguin mailto:sage [2006/04/06(木) 22:28:49 ID:Mnqgo3eJ] >>513 まだ色々と追っかけてる途中です。 とりあえずPCIドライバ周りから追っかけ中です。 PCIドライバを見た限りでは、pci_map_sgすると中でdma_map_sg 呼び出しててその中見てもあんまり大したことしてなさそうですね。 やはりbio周りも見ないと駄目なのかも。 もうちとかかりそうですが、わかり次第、結果をお知らせします。
516 名前:505 mailto:sage [2006/04/08(土) 14:24:03 ID:+mDmSXuo] 原因わかりました。 結論から言うと、pci_map_sg()で作られるSGリストのアドレスは正常でした。 問題なのはpci_map_single()で出てくるアドレスが、低位メモリだとカーネル 論理アドレスを返し、高位メモリだとカーネル仮想アドレスを返してるのが、 原因でした。 高位メモリだとページをダイナミックに確保されるため、物理アドレスとペー ジが1:1でマッピングされないので、pci_map_single()だとvirt_to_physしてる だけなので使えませんね。 なのでpci_map_pageで確保してやれば問題は消えました。 SGリストに変なアドレスが入ると言ってましたが、カードのファーム側で受 け取ったリストを見てたのですが、カード内でドライバから受けた転送アドレ スをカード内部のバッファに結びつける為にファームが独自にSGリストを 再構成しており、そのリストがpci_map_sg()で作られた物と勘違いしてまし た。OTL 色々アドバイスありがとうございました。
517 名前:login:Penguin mailto:sage [2006/04/08(土) 16:09:33 ID:MBAxFSYD] >>516 解決おめでとうございます。 一般的に使えそうなものならまたどこかで公開してくださいな。
518 名前:login:Penguin mailto:sage [2006/04/10(月) 22:36:55 ID:C69QC/MM] >>516 よかったよかった。 私もソース読んで少し勉強になったよ。 ネットワーク系しかいじったこと無かったから。
519 名前:505 mailto:sage [2006/04/10(月) 23:00:56 ID:9eFrvNz6] >>517 >>518 ありがとうございます。 馬鹿高な価格の独自のカード用のドライバで有用性はかな り低いです。。。一応GPLなんですが、カード買わないと非 公開という阿保な方針らしいので、一般公開は難しそうです。 Linuxでの初開発で手探り状態でしたが、お蔭様で何とか目 処が立ってきた感じです。まだ細かな問題がありますが…。 Linuxでの開発はカーネルや他のドライバソース読まなけば 資料が少ない所がキツイですね。 まぁコード上のテクニックとか色々勉強になる部分は多いけ ど、納期のある仕事でやるのは大変ですね。 流石UNIX板だけあって、建設的なスレで助かりました。
520 名前:login:Penguin mailto:sage [2006/04/10(月) 23:42:28 ID:Cs5Rh9+Y] >>519 > Linuxでの開発はカーネルや他のドライバソース読まなけば > 資料が少ない所がキツイですね。 ちょっと教えてください。 Linuxより資料が多いOSってなんのことを指してますか? 自分は主にLinuxの開発に携わってますが、いつもオープンソースのありがたみを 感じながらやっているので、Linuxが資料が少ない、というのは意外です。
521 名前:login:Penguin mailto:sage [2006/04/11(火) 00:42:17 ID:KjDgNH9L] OSによっては中身がさっぱりわからないままドライバ開発しなきゃいけない事もあるしな。 つーか、そっちのほうが多そう。
522 名前:login:Penguin mailto:sage [2006/04/11(火) 00:47:03 ID:rZUiZ4e7] >>520 NetBSDはそういう部分のmanpageが充実してるとか聞きますな。 linuxはmanpage書き上げたら実装が別物になってたなんて笑えん状況がありそうだなあ…
523 名前:login:Penguin mailto:sage [2006/04/11(火) 00:57:41 ID:9nKANwAS] そこでmain treeにマージですよ。 main tree内の変更はたいていは面倒をみてくれる。
524 名前:login:Penguin [2006/05/11(木) 18:07:51 ID:PmwpTb/Y] ある内蔵デバイスのドライバでPCの機種毎に処理を変えなければいけない部分が あり、ユーザ負担を減らすためにドライバ側で自動判別したいと思っています。 機種は違うのにSubvendorIDやSubdeviceIDまで何故か一致しているので、SMBIOS のDMI情報を参照して機種を判別したいのですが、これって可能なんでしょうか? そんなやり方は行儀が悪いとか、他にもっとまともなやり方があるとか何でも 構いませんので、どうかご教示をよろしくお願いします。m(__)m
525 名前:好色少年のススメ mailto:sage [2006/05/11(木) 23:43:06 ID:Uu/mTCgT] 確かに行儀はよくないかも 新しいハードが出るたびにパッチ提供とか考えたら面倒だし たとえそれが自社ハードだとしてもバージョンアップあるだろうし 判別はユーザランドで行う方が気分も楽だし処理も楽だしバグも少ない
526 名前:login:Penguin mailto:sage [2006/05/26(金) 20:11:11 ID:YiUMorw/] ttp://lkml.org/lkml/2006/5/24/238
527 名前:login:Penguin [2006/08/20(日) 01:06:14 ID:BobpEKad] カーネル層のモジュールのテストプログラム を作ってるんですが、カーネル層でinit_moduleや ioctlからスレッドを起こして daemonのように 動作させることってできるんでしょうか? Linuxデバイスドライバを読んでもスレッドを 起こすような処理は載っていないようなので 参考書籍だけでも教えていただけるとありがたいです。
528 名前:login:Penguin mailto:sage [2006/08/20(日) 11:29:13 ID:EWXtKjUy] >>527 kernel_thread daemonize
529 名前:login:Penguin mailto:sage [2006/08/20(日) 20:55:18 ID:bg2sTV9e] というか、普通に載ってるよね
530 名前:login:Penguin [2006/08/24(木) 12:55:11 ID:6WITQjoc] そいや、最近のノートPCには指紋センサーがあるけど あれはハックできるものなの?
531 名前:login:Penguin mailto:sage [2006/08/24(木) 13:34:05 ID:wKY4BjAS] >>530 OSM 8月号に記事載ってたよ。 shop.sbcr.jp/bm_detail.asp?sku=1016200604
532 名前:login:Penguin mailto:sage [2006/08/25(金) 00:34:04 ID:CPHGcnDi] >>531 せんきゅー!
533 名前:login:Penguin mailto:sage [2006/08/26(土) 07:37:08 ID:F4NpQAPn] >>529 すみません。ページご存知でしたら教えてください。 第3版持ってます。
534 名前:login:Penguin mailto:sage [2006/10/04(水) 21:49:48 ID:EGTQjLn1] すみません、どなたかわかる方教えてください。 現在、XFree86でグラフィックドライバを作ってます。チップは独自のものです。 バス等に接続されておらず、メモリマップドI/Oでアクセスします。 一応画面は出たのですが、1024*768だと縦が半分しか表示されず、 (縦に圧縮される感じ。マウスカーソルが縦につぶれている) 1280*1024だと画面が横に5個くらい表示されてしまいます。 使用しているチップは1ライン4096byte固定なので、解像度に応じて次のラインを 描画するアドレスを更新しなくてはなりません。 カーネルのFBドライバだとline_lengthとかの変数に設定してあげればうまいこと 描画してくれるのですが、XFree86の構造体にはそういった変数が見当たりません。 カーネルFBドライバのline_lengthとかに相当するものはどれでしょうか? 縦に圧縮されるのと画面が5個くらい表示されるのは、別問題な気がしてます。 今、手元にソースがないんですが、InitをするときにvirtualYを*2してやると縦が一見 正常っぽく表示されました。カーソルとかが縦につぶれたままなので、根本対策には なっていません。
535 名前:Mr.名無しさん [2006/10/09(月) 16:36:24 ID:OGKR436u] ■■■■■■■■■■■■■■■■ ■ ■ 違う板にコピペすると、四角の枠の中に ■ ■ メッセージとURLが現れる不思議な絵。 ■ ■ ■ ■ (その仕組みがリンク先に書いてある) ■ ■ ■ ■ この原理を応用すると、まったく新しい ■ ■ コピペが作れる予感。 ■■■■■■■■■■■■■■■■
536 名前:login:Penguin mailto:sage [2006/11/05(日) 18:18:15 ID:j6ZWju7f] >>534 グラフィックチップのモード設定を間違えている予感
537 名前:login:Penguin mailto:sage [2006/12/14(木) 22:35:16 ID:JyAlagq8] すみません どなたか助けて下さる方はいらっしゃらないでしょうか? 当方PCIデバイスのドライバをLinuxデバイスドライバ読みながら 作成しております。 今DMAを用いてread,writeさせようと思っているのですが、 うまく転送ができておりません。 DMA転送の関数としては dma_buff = kmalloc( count, GFP_KERNEL | __GFP_DMA) bus_addr = pci_map_single( pci_dev, dma_buff, count, direction ); flags = claim_dma_lock(); disable_dma(channel); clear_dma_ff(channel); set_dma_mode(channel, mode); set_dma_addr(channel, bus_addr); set_dma_count(channel, count); enable_dma(channel); release_dma_lock(flags); てな感じです。 get_dma_residueで転送できてるかどうかみてるのですが まったく転送されてないみたいです。 DMAコントローラのレジスタの設定とかは ほかに何かいるのでしょうか。 ちなみにターゲットのPCはPen3 800MHZ チップセットは815です。 どなたかお知りの方いらっしゃったら お願いします。
538 名前:login:Penguin mailto:sage [2006/12/15(金) 11:02:30 ID:Qc0JIFW5] >>537 見ているものがまったく違っているような気がしますが。 PCIでbus master転送したいんじゃないの?
539 名前:537 mailto:sage [2006/12/15(金) 15:20:46 ID:NJleqqJR] おお、早速のレスありがとうございます。 DMA転送するにはチップセットの中の8237DMAコントローラをいじればいいって思ってました。バスマスタについて少し調べましたが、IDEのDMAもバスマスタになるんですね、知りませんでした。 となるとこのバスマスタはどうやればいいのでしょうか?参考になるものでもいいので、教えてください、お願いします。
540 名前:login:Penguin mailto:sage [2006/12/15(金) 23:40:00 ID:72pQobUh] ターゲットとなるPCIデバイスの仕様がわからなきゃデバイスドライバは書けないよ せめて型番だけでも出してくれ
541 名前:login:Penguin mailto:sage [2006/12/16(土) 18:42:01 ID:wkeveW0d] ドライバというか、モジュールの話なんですけど スレッドを使ったせい?なのか、psすると 3635 pts/0 R 0:00 modprobe hoge と残るんですが、これは出ないようには出来ないものなんでしょうか? 勿論 rmmod hoge すると消えるんですけど。
542 名前:537 mailto:sage [2006/12/17(日) 19:34:20 ID:BtOAund7] ターゲットのデバイスは内製のボードなのですよ orz となると やっぱボード自体を作った人に聞いたほうがいいのかな?
543 名前:login:Penguin mailto:sage [2006/12/17(日) 19:50:10 ID:pl1Ns6BC] チップのレジスタ仕様と、制御のシーケンスがわからないとドライバは書けないよ。
544 名前:login:Penguin mailto:sage [2006/12/17(日) 20:36:37 ID:6E+xGodr] >>542 当然聞くべきなのですよ
545 名前:login:Penguin mailto:sage [2006/12/17(日) 22:08:40 ID:SVqrrgVr] チップも内製なのか? だったらデバイスドライバもチップ開発チームが書くものだよな 少なくともサンプルコードの類は書くはずだ そうでなくて市販のチップを使ってPWBAだけ内製したのなら 使用したチップのデータシートなりプログラマーズガイドなりを読めばいいだけの話
546 名前:537 mailto:sage [2006/12/18(月) 01:17:23 ID:5wopQO2S] ほぼ内製だったと思います。 ちょっと月曜日会社いったら、聞いてみようと思います。 大変参考になりました、ありがとうございました。 ところで、これは単なる質問ですが、 マザボのチップセットにある8237とかの DMAコントローラは古いし遅いみたいだから PCIとかIDEとかに使われてないみたいだけど、 Pen3 800MHzとかでも PIOのが早いの?
547 名前:login:Penguin mailto:sage [2006/12/18(月) 07:35:08 ID:a8xYea1H] 最近のデバイスで言うDMAはバスマスタDMAのことだよ。 バスマスタってのはデバイス側が主導権とってバスを制御して CPUの頭越しにメインメモリにデータ出し入れすることだ。 そのためにはデバイスにバスをのっとってデータ転送しろって命令を CPUからデバイスに発行する必要がある。 その手続きを知るためにレジスタなりデータシートなりを調べろって みなさん言ってるんだよ。
548 名前:537 mailto:sage [2006/12/19(火) 00:01:59 ID:2Sv0wv+g] なるほろ、大変勉強になりました。 ハード屋さんからマニュアルゲットして がんばってみます。
549 名前:login:Penguin [2006/12/19(火) 23:53:27 ID:g20RCuxU] >>537 つ ttp://www.oreilly.co.jp/books/4873112532/
550 名前:login:Penguin mailto:sage [2006/12/27(水) 05:38:58 ID:krfJbXj5] すみません ドライバでDMA転送するための連続したメモリ領域(64MB)を確保したいのです。 kmallocで確保可能な連続したDMA領域は最大128kB ということはネットで検索すると出て来たのですが、 どうすればドライバのDMA転送で利用可能な128kBを超えるの連続領域を確保出来るでしょうか? OSはlinuxカーネル2.6です。 ご存じの方おられましたら御教示戴きたくよろしくお願い致します。
551 名前:login:Penguin mailto:sage [2006/12/27(水) 10:51:31 ID:mQ5aQPBa] >>550 とりあえずそのふざけた石を投げ捨てれ。 やるならalloc_pagesだろうなあ。そのサイズで連続領域を簡単に確保できるとは思えんが。 ついでに書いておくと128KByte制限は8237の呪いなのでPCIならそんなものはない。
552 名前:login:Penguin mailto:sage [2006/12/27(水) 12:43:43 ID:krfJbXj5] 投げ捨てぇー…れないorz >>551 早速ありがとうございます。 検索してても思ったのですが、 なんか連続領域"64MB"っていうのは常識外れっぽいのですね… とはいえ組込み系で使った独自ロケットI/OのPC向け転用の必要があり、 石を投げ捨てる訳にもいかず今回の質問とあいなりました。 alloc_pages、試してみます!! 回答感謝いたします。 センキュー!!!!
553 名前:login:Penguin mailto:sage [2006/12/28(木) 02:29:39 ID:4Oi09t3r] かなり強引だけど、カーネルオプションで使用メモリ量に制限かけといて、 未使用領域を作った上でそこ使っちゃえば?
554 名前:login:Penguin mailto:sage [2006/12/28(木) 12:33:40 ID:vc2Jrznf] >>553 MMUの面倒は誰が見るですか? 面倒な世の中になったのう… 物理アドレスで完結してりゃなにも考えなくていいのに。
555 名前:login:Penguin mailto:sage [2006/12/29(金) 09:28:41 ID:JbqPlaTm] >>553 アドバイスありがとうございます。 ちょっと恐いですが、検討してみます。 >>554 MMU…よく判ってません…勉強してきます。 ご指摘ありがとうございます。 いろいろレスありがとうございました。 スレの皆様が良い年越しを迎えられますように!! それでは、また来年!!
556 名前:login:Penguin mailto:sage [2006/12/29(金) 10:44:35 ID:PkRb73AX] RocketIOってことはXilinxのFPGAだよな だったら128KBのブロックのアドレスポインタリストを渡すと 自動的にリスト通りブロックをたどって転送するように FPGA回路を再設計するのがまっとうな手段だろうな デバイスドライバやOS設定の変更ではどうにもならんと思う
557 名前:login:Penguin mailto:sage [2006/12/30(土) 00:07:40 ID:SZb58Bld] カーネル組込みで、ドライバ初期化のときなら確保できそうな気もするな。 開放したら二度と確保できなくなりそうだが。
558 名前:login:Penguin mailto:sage [2007/01/01(月) 22:05:23 ID:uXbHjsPd] 明けましておめでとうございます。 さらにレス&アドバイスありがとうございます。 うー勉強不足。知らないこと多過ぎますね!ハードル高いです orz 安定化まで考えると更にハードル上がりそうですが、ハード側とも相談してみます。 それでは本年もよろしくお願いいたします!!
559 名前:login:Penguin mailto:sage [2007/01/19(金) 00:41:46 ID:xhnZtOc/] 皆様に聞きたいのですが 当方Linux 2.6カーネルの元でドライバの開発を行っています。 起動してからinsmodでインサートするタイプのモジュールを作っています。 カーネルをフリーズさせたりして固まらせてしまって、やむなくリセットボタンを 押す事が多々あるのですが、その際にファイルシステムのチェックが 強制的に行われてしまい、これでかなりの時間をロスしてしまいます。 何とかこのファイルチェックを飛ばして時間の短縮を行う方法はないでしょうか? VMwareとかの仮想マシンを使えばいいのかもしれませんが、 特殊命令を使っておりますので、仮想マシンがその命令をサポートしていないために 導入できません。
560 名前:login:Penguin mailto:sage [2007/01/19(金) 02:15:30 ID:VcfRHkiI] >>559 mount -o remount,ro / とかやって、書き込み不可にしてから遊べばよくね?
561 名前:login:Penguin mailto:sage [2007/01/19(金) 08:04:16 ID:/YcMJPuk] /etc/fstabの6番目のフィールドの値を0にする。man fstabしてみそ。 tune2fsで-c 0とかもしておいたほうがいいかも。
562 名前:login:Penguin mailto:sage [2007/01/19(金) 20:24:37 ID:xhnZtOc/] >>560 でもそれをやると、kmallocをGFP_KERNELで使ったときに メモリがスワップアウトしたらまずいことになりませんか? >>561 やってみました なんかファイルチェックをしなくなったことで壊れそうでもありますが やっぱり我慢してチェックしたほうがいいでしょうか...
563 名前:login:Penguin mailto:sage [2007/01/20(土) 19:48:34 ID:3aq4dRUa] >>562 /だけ守ればいいので、なりません。
564 名前:login:Penguin mailto:sage [2007/01/21(日) 01:23:20 ID:QaYT7DDq] >>563 ああそうか、swapファイルはswapパーティションですもんね ありがとうございます
565 名前:login:Penguin mailto:sage [2007/01/27(土) 11:05:03 ID:4J9B+fMX] 評価機はネットブートさせてNFSroot稼動させればいつ飛んでも 大丈夫な環境にできるんじゃない?
566 名前:login:Penguin [2007/02/05(月) 06:03:38 ID:9i1Bwf6u] 通常、Linuxのドライバをインストールする時はカーネルにパッチを当ててカーネルごと コンパイルしなければいけないけど、Windowsのようにカーネルソース無しでドライバを コンパイルしてインストールできるようにする方法ってあるの?
567 名前:login:Penguin [2007/02/05(月) 06:26:04 ID:9i1Bwf6u] ja.wikipedia.org/wiki/%E3%83%A2%E3%83%8E%E3%83%AA%E3%82%B7%E3%83%83%E3%82%AF%E3%82%AB%E3%83%BC%E3%83%8D%E3%83%AB には 現在のカーネルではモジュールをカーネルの構築状態に依存する事なく追加できると 書いてあるけど、カーネル側でインターフェースが変更になった場合は旧ドライバは 使用できなくなるんじゃないの?それとも、カーネル側で旧インターフェースが温存されるの? あと、「カーネル側に受け皿となるインターフェースがモジュール毎に用意されている必要がある」 Linuxはどのバージョンまでなの?
568 名前:login:Penguin mailto:sage [2007/02/05(月) 06:56:37 ID:Zi/ATtvA] >>566 いまはそんなことしなくていいよ insmod rmmodで動的にドライバを挿入したり削除したりできる
569 名前:login:Penguin mailto:sage [2007/02/06(火) 01:26:43 ID:j3mwrUGC] いやぁソースはいるだろ。
570 名前:login:Penguin mailto:sage [2007/02/06(火) 08:59:25 ID:jQKQh5/W] ソースはいるけどカーネルのリビルドはいらない
571 名前:login:Penguin mailto:sage [2007/02/06(火) 10:27:34 ID:Rm04tDsq] いやぁリビルドは途中までいるだろ。
572 名前:login:Penguin [2007/02/10(土) 16:03:43 ID:XWBlzb1u] 初歩的な質問ですがよろしいでしょうか 私はlinuxカーネル2.6.13のモジュールでhello worldのプログラムを組込みたいのですが上手くいきません gcc -c module.c -Wall -Wstrict-prototypes -O -pipe -m486 この様にコンパイルしたのですがカーネルのソースコードに構文エラーがあるようでコンパイルが通りません カーネルのソースコードを見てみても構文エラーらしき物はみられませんでした どうすればコンパイルが通るでしょうか エラーメッセージとソースコードを書いておきます ソースコード sakuratan.ddo.jp/uploader/source/date32474.c エラーメッセージ sakuratan.ddo.jp/uploader/source/date32475.txt
573 名前:login:Penguin mailto:sage [2007/02/10(土) 17:14:52 ID:d+hexa9D] >>572 普通はMakefile書くわな
574 名前:login:Penguin mailto:sage [2007/02/10(土) 17:47:20 ID:a+8l3AD+] Makefileに obj-m += module.o って書いて make -C /usr/src/linux M=$PWD modules
575 名前:login:Penguin [2007/02/10(土) 19:18:09 ID:XWBlzb1u] >>543 そうみたいですね 私のみた資料では、そうコンパイルする様に書いてあったのですが結構古い奴だった のでしょうか >>574 本当にありがとうございました。 その方法で無事にモジュールを作れました 感謝感謝
576 名前:542 [2007/02/10(土) 19:55:09 ID:XWBlzb1u] .koってファイルが出てきたらからinsmodにかけてみたら insmod: error inserting 'module.ko': -1 Invalid module format って言われワラタ turbo linuxなんて微妙なの使ってるせいなんですかねこれは.....
577 名前:542 mailto:sage [2007/02/10(土) 20:03:22 ID:XWBlzb1u] 今までsage忘れてたごめん
578 名前:login:Penguin mailto:sage [2007/02/10(土) 20:06:01 ID:791EznrY] 話題提供時はage、その後はsage ってのが一番角が立たない。 正直、どうでもいいけど。
579 名前:login:Penguin mailto:sage [2007/02/10(土) 20:14:38 ID:a+8l3AD+] /usr/src/linux が今動いてるカーネルソースじゃないとか
580 名前:542 mailto:sage [2007/02/10(土) 21:33:23 ID:XWBlzb1u] >>579 そうですね 元からあったソースでコンパイルしようとすると必要なMakefileがないとかで無理 でしたから、kernel.orgから同じバージョンのコード落してきてまた設定しなし いた訳ですがそれが原因ですかね。 ディストリとかは独自の変更を加えているらしいし、また変更が加えられていない 純粋なカーネルインストールしてから出直してきます
581 名前:login:Penguin [2007/02/18(日) 23:17:11 ID:PxJoV1oA] すみません。kmallocで確保したメモリ領域をDMA転送するために、__paで変換して 渡してやるのと、dma_map_singleで変換して渡すのと、違いはあるのでしょうか? たとえば性能(処理効率)が違うとか? どう使い分けているのでしょうか?
582 名前:login:Penguin mailto:sage [2007/02/19(月) 10:56:01 ID:QHwPPpDN] UNIXTIMEを日付文字列に変換するのに なんかAPI用意されてないの? "2007/02/19 12:34:56" とかその程度のでいいんだけど。
583 名前:login:Penguin mailto:sage [2007/02/19(月) 11:19:53 ID:I/jMKPR3] strftime
584 名前:login:Penguin mailto:sage [2007/02/19(月) 13:52:20 ID:QHwPPpDN] >>583 いや、デバイスドライバ内でなんだけど、あったっけ? いや、ない。
585 名前:login:Penguin [2007/02/21(水) 07:53:48 ID:Wuryqsb6] Linux 2.6.16用のパッチとe2comprを同時に使いたいのだが、e2comprは2.6.10用まで しかない。カーネルとドライバが完全に分離され、カーネルバージョンが上がっても カーネル側の旧インターフェースが温存されるようになれば、ドライバの開発が停滞しても 最新のカーネルでそのドライバを使い続ける事ができる。
586 名前:login:Penguin mailto:sage [2007/02/22(木) 01:34:45 ID:I6i5DnCh] そのカーネル側のABI決めようぜ話はLinusに一蹴されてるんじゃなかったけ?
587 名前:login:Penguin [2007/02/22(木) 09:14:42 ID:y9d4aAAQ] >>586 カーネル側のドライバとして旧バージョンのカーネルのモジュールをロードできる ラッパーを作成して、カーネル側インターフェースが変更されるたびにラッパーを 更新していく手もあるべ。
588 名前:login:Penguin [2007/02/22(木) 09:16:48 ID:y9d4aAAQ] ラッパーにx86エミュレーションを追加するとザウルスでWindowsのドライバを読み込めたりもする。
589 名前:login:Penguin mailto:sage [2007/02/22(木) 22:34:24 ID:I6i5DnCh] つ NDISwrapper
590 名前:login:Penguin mailto:sage [2007/02/23(金) 00:44:11 ID:cxn/yRhr] つcapative ntfs
591 名前:login:Penguin [2007/04/03(火) 00:09:41 ID:3ycIJVku] <linux/module.h>が無いんだけど、 デバドラ開発するには、なにかパッケージ追加しなきゃいけないの? 使ってるのはfedora6
592 名前:login:Penguin [2007/04/03(火) 00:24:35 ID:3ycIJVku] yum install kernel-devel してもダメだな。何が足りない?
593 名前:login:Penguin mailto:sage [2007/04/03(火) 00:41:11 ID:xSB1c0Df] >>591 カーネルソースそのものじゃね?
594 名前:login:Penguin [2007/04/03(火) 01:00:14 ID:3ycIJVku] >>593 あ、カーネルソースに有った。ありがとう。 普通、/usr/includeには入らないの?
595 名前:login:Penguin [2007/04/03(火) 01:08:21 ID:3ycIJVku] あと、 man printk って出ないの?
596 名前:login:Penguin mailto:sage [2007/04/03(火) 02:25:43 ID:xSB1c0Df] >>595 出ないんじゃよ
597 名前:login:Penguin mailto:sage [2007/04/03(火) 02:43:03 ID:GYgStP3Z] >>594 カーネル用ヘッダと、ユーザプログラム用ヘッダは まざるとまずいから分離されてる。だから/usr/includeにカーネル用ヘッダはふつうは無い。
598 名前:login:Penguin mailto:sage [2007/04/04(水) 00:07:01 ID:NkZt7NAi] /usr/include/linux に入ってないか?鳥にもよるけど。
599 名前:login:Penguin [2007/04/04(水) 00:15:23 ID:wyW6RdvI] カーネル用ヘッダと、ユーザプログラム用ヘッダがまざると、何でとまずいだろ。
600 名前:login:Penguin [2007/04/04(水) 00:23:08 ID:ICf0Aql0] 爆発しても知りません。
601 名前:login:Penguin mailto:sage [2007/04/04(水) 00:42:58 ID:IK0cizpI] >>598 ,>>599 /usr/include/linuxにあるのは確かにカーネルのヘッダだが、glibcをビルドするときに使った アーキテクチャ依存部分とかのカーネルヘッダ、 /usr/src/linux/includeにあるのは「現在使用中のカーネル」のヘッダファイル だよね。(間違ってたらスマソ) これらが同じだとちょっとカーネルに変更があったときとかまずくない? 最悪glibc動かなくなるときもあるかと。
602 名前:login:Penguin [2007/04/08(日) 00:07:55 ID:gmHS+Fdj] >>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,
603 名前:login:Penguin mailto:sage [2007/04/08(日) 00:09:38 ID:2aPQfsMY] 脳?
604 名前:login:Penguin [2007/04/08(日) 00:10:46 ID:gmHS+Fdj] >>603 いや、たぶん違うと思う。 こんなのも出てる。 ↓ /usr/src/kernels/2.6.20-1.2933.fc6-i586/include/asm/system.h:346: error: expected declarat ion specifiers or ‘...’ before ‘u8’ /usr/src/kernels/2.6.20-1.2933.fc6-i586/include/asm/system.h:346: error: expected declarat ion specifiers or ‘...’ before ‘u8’
605 名前:login:Penguin mailto:sage [2007/04/08(日) 00:11:42 ID:2aPQfsMY] じゃ、頭?
606 名前:login:Penguin [2007/04/08(日) 00:12:08 ID:gmHS+Fdj] NGID ID:2aPQfsMY
607 名前:login:Penguin mailto:sage [2007/04/08(日) 00:15:19 ID:2aPQfsMY] マジレスすると、読み込むヘッダーファイルが足りないんだよ。
608 名前:602 [2007/04/08(日) 00:19:06 ID:gmHS+Fdj] 環境はVMWare上でfedora 6を動かしてる。 こんなのも。 ↓ /usr/src/kernels/2.6.20-1.2933.fc6-i586/include/linux/bitmap.h:149: error: ‘BITS_PER_LONG’ undeclared (first use in this function)
609 名前:login:Penguin mailto:sage [2007/04/08(日) 00:20:46 ID:2aPQfsMY] BITS_PER_LONGを定義しているファイルをさがすことだね。
610 名前:login:Penguin mailto:sage [2007/04/08(日) 00:29:38 ID:nSKp4d9I] なんだこのキチガイ
611 名前:login:Penguin mailto:sage [2007/04/08(日) 00:31:56 ID:2aPQfsMY] また、きちがいあつかいですか?
612 名前:login:Penguin mailto:sage [2007/04/08(日) 00:36:41 ID:nSKp4d9I] ほう「また」なんだ
613 名前:login:Penguin mailto:sage [2007/04/08(日) 00:37:31 ID:2aPQfsMY] で?
614 名前:login:Penguin mailto:sage [2007/04/08(日) 00:46:02 ID:nSKp4d9I] あらら
615 名前:login:Penguin mailto:sage [2007/04/08(日) 00:48:10 ID:2aPQfsMY] なにがあららなの?
616 名前:login:Penguin mailto:sage [2007/04/08(日) 00:49:12 ID:nSKp4d9I] 脳?
617 名前:login:Penguin mailto:sage [2007/04/08(日) 00:49:55 ID:2aPQfsMY] それはお互い様だろ?
618 名前:login:Penguin mailto:sage [2007/04/08(日) 00:51:34 ID:nSKp4d9I] 俺はその質問者じゃないんだけどねえ
619 名前:login:Penguin mailto:sage [2007/04/08(日) 00:56:35 ID:2aPQfsMY] お友達?
620 名前:602 [2007/04/08(日) 00:58:54 ID:gmHS+Fdj] もういちど、しきりなおし。 >>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,
621 名前:login:Penguin mailto:sage [2007/04/08(日) 01:03:19 ID:z/motjJL] >>620 ヒント:>>17 のかかれた日付に注目。
622 名前:login:Penguin mailto:sage [2007/04/08(日) 01:11:57 ID:nSKp4d9I] 2.6以降はモジュールのフォーマットが変わって、 .oじゃなくて.koになってるからね。 ビルドの仕方も面倒になって...俺もよくしらない。
623 名前:login:Penguin mailto:sage [2007/04/08(日) 01:12:30 ID:2aPQfsMY] linux/compiler.hかな?
624 名前:login:Penguin [2007/04/08(日) 02:07:26 ID:gmHS+Fdj] >>621-622 情報が古いのか。。 でも、ウェブにあるサンプルは大体同じような感じなんだけど。 2.6用モジュールhello worldってないのかな。
625 名前:login:Penguin mailto:sage [2007/04/08(日) 02:24:54 ID:z/motjJL] >>624 2.6 kernel hello world でぐぐればすぐ出てくるぞ。
626 名前:login:Penguin [2007/04/08(日) 02:28:17 ID:gmHS+Fdj] >>625 なかなか無いよ。たとえばどこ? すぐ出てきたなら、ここに貼って。
627 名前:login:Penguin mailto:sage [2007/04/08(日) 02:34:41 ID:n+CzrFXh] #include <linux/init.h> がいるみたいね
628 名前:login:Penguin [2007/04/08(日) 02:41:10 ID:gmHS+Fdj] Makefileの書き方も変わってるみたいだね。 uguisu.skr.jp/algo/device.html のやり方でうまくいった。
629 名前:login:Penguin mailto:sage [2007/04/08(日) 03:09:43 ID:z/motjJL] こことかな。 www.si-linux.co.jp/wiki/silinux/index.php?Linux-2.6%A5%C7%A5%D0%A5%A4%A5%B9%A5%C9%A5%E9%A5%A4%A5%D0
630 名前:login:Penguin [2007/04/12(木) 01:42:14 ID:MCdnGupN] aio_write()でユーザ空間の登録だけして、後からハードウェア割り込みでその登録したユーザ空間にアクセスすることってできる? やり方教えて。
631 名前:login:Penguin mailto:sage [2007/04/12(木) 02:34:41 ID:HoyZz9hB] >>626 自分はこれが良かった。 www.freesoftwaremagazine.com/articles/drivers_linux
632 名前:login:Penguin [2007/04/15(日) 01:56:51 ID:YIKahQqf] タスクレットの中でcopy_to_user()、copy_from_user()を使えますか?
633 名前:login:Penguin mailto:sage [2007/04/17(火) 02:52:55 ID:IoB9zeVk] 試してみろ!! callした瞬間ぼくの丸太のような足蹴りが君の股間をつぶす それでもいいのなら!
634 名前:login:Penguin [2007/04/27(金) 00:53:37 ID:6m6QKylD] プログラムで確保したメモリの物理アドレスを知る方法と、その物理アドレスを使ってメモリにアクセスする方法を教えて。
635 名前:login:Penguin mailto:sage [2007/04/27(金) 06:02:05 ID:DTYmU0pC] www.linux.or.jp/JF/JFdocs/kernel-docs-2.2/IO-mapping.txt.html
636 名前:login:Penguin mailto:sage [2007/04/27(金) 06:03:05 ID:DTYmU0pC] www.linux.or.jp/JF/JFdocs/The-Linux-Kernel-4.html
637 名前:login:Penguin [2007/04/27(金) 08:23:06 ID:6m6QKylD] ユーザプログラムで確保したメモリの物理アドレスを知る方法と、その物理アドレスを使ってメモリにアクセスする方法を教えて。
638 名前:login:Penguin [2007/04/27(金) 08:26:29 ID:6m6QKylD] (1)ユーザプログラムで確保したメモリの物理アドレスを知る方法と、 (2)その物理アドレスにアクセスする方法を教えて。 >>634-635 そこの記述では不十分だよ。
639 名前:login:Penguin mailto:sage [2007/04/27(金) 10:46:58 ID:cjUqO3s+] >>638 つ 馬本 なんで物理アドレスが必要なのかよくわからんが、virt_to_pyhsかのう。
640 名前:login:Penguin [2007/04/27(金) 21:21:47 ID:6NURgk06] >>639 virt_to_phys()で本当にユーザプログラムで確保したメモリの物理アドレスが求められる? 質問はカーネルの仮想アドレスを物理アドレスに変換したいのではないよ。 ユーザプログラムで確保したメモリのアドレスの物理アドレスだよ。 あと>>638 の(2)については、知ってる人いないの?
641 名前:login:Penguin mailto:sage [2007/04/27(金) 21:40:17 ID:67IsA5dw] 痛い人現る
642 名前:login:Penguin mailto:sage [2007/04/27(金) 23:10:53 ID:EZ45sIxG] cr3レジスタからたどれば
643 名前:login:Penguin [2007/04/27(金) 23:27:03 ID:6NURgk06] >>642 で、そのcr3レジスタの値はどこから持ってくるの? cr3レジスタの値はあくまでも現在のプロセスの仮想アドレスのページテーブルだよね。 カーネルプロセスからユーザプログラムのページテーブルを取得するにはどうするの? mm_structを保存しておけば、任意のユーザプロセスのメモリ空間にアクセスできる?
644 名前:login:Penguin mailto:sage [2007/04/28(土) 04:22:35 ID:+D3gS6jR] カーネル書き直せば?w
645 名前:login:Penguin [2007/04/28(土) 07:44:33 ID:oKLKreO7] カーネルを書きなおしてもいいよ。どこをどうすればいいの?その方法を教えて。 (1)カーネルから任意のユーザプログラムで確保したメモリの物理アドレスを知る方法と、 (2)その物理アドレスにアクセスする方法を教えて。
646 名前:login:Penguin mailto:sage [2007/04/28(土) 07:47:13 ID:dRSGn50m] カーネルからだとページテーブルがページアウトしている可能性もあるから めんどくさい
647 名前:login:Penguin [2007/04/28(土) 08:04:23 ID:oKLKreO7] ページアウトはしていないと仮定していいよ。それなら簡単?
648 名前:login:Penguin mailto:sage [2007/04/28(土) 11:40:13 ID:Fr2ol1ef] ザワザワ… ザワザワ…
649 名前:login:Penguin mailto:sage [2007/04/28(土) 23:24:32 ID:ZU2q9XRX] >>639 ttp://d.hatena.ne.jp/Newmarket/20060828/1156705255
650 名前:login:Penguin mailto:sage [2007/04/28(土) 23:42:14 ID:o6o1fGCI] 馬の多さにワロタ
651 名前:login:Penguin [2007/05/03(木) 23:34:15 ID:ErpReMz0] カーネルのソースツリーの一部分だけ、お試しでコンパイル したいときってどのようにすればいいですか? たとえば、lib/ の下だけすこしいじって、syntaxのチェック だけしたいときとか。2.6.21です。
652 名前:login:Penguin mailto:sage [2007/05/04(金) 00:08:49 ID:9yQs8D1Y] >>651 なんだかんだいっても、一度全体コンパイルしておくのが一番早い。
653 名前:login:Penguin [2007/05/04(金) 00:18:46 ID:yYLKnQ2E] >>652 thx.でも、 一度全体をコンパイルしておいて、lib/以下をちょっと(.cのみ)いじって、 全体をmake bzImageすると、それだけで5分以上かかるんすよ... わたしのへぼマシンだと。
654 名前:login:Penguin mailto:sage [2007/05/04(金) 00:23:00 ID:gFGVYRPM] やっぱりCPU速くするのが一番
655 名前:login:Penguin mailto:sage [2007/05/04(金) 00:24:14 ID:yYLKnQ2E] そこをなんとか。
656 名前:login:Penguin mailto:sage [2007/05/04(金) 00:35:21 ID:n4WASQRt] >>653 2.6だったらトップディレクトリから $ make lib/cmdline.o CC lib/cmdline.o とか出来る。
657 名前:login:Penguin mailto:sage [2007/05/04(金) 00:38:41 ID:yYLKnQ2E] できました。ありがとうございました。
658 名前:login:Penguin mailto:sage [2007/05/04(金) 01:24:26 ID:ulT/mofy] >>576 カーネルをコンパイルしたgccでモジュールをコンパイルしないとinsmod時にそのエラーが出るよ。
659 名前:login:Penguin mailto:sage [2007/05/13(日) 23:53:14 ID:EYFP+J0v] 質問です。 >>620 さんと同じ状況です。 ただ>>628 >>629 の方法を試したのですが 解決しませんでした。 いまだに>>620 さんが書かれてるエラーがでてしまいます。 考えられる原因はありますでしょうか? ubuntu 7.04、gcc version 4.1.2 (Ubuntu 4.1.2-0ubuntu4) を使っています。
660 名前:login:Penguin mailto:sage [2007/05/26(土) 11:11:39 ID:XoKsvVbX] >>15 IPLで使いたい分のメモリを確保すればいいって聞いたことがある。 カーネルのブートパラメータでから使いたい分を引く感じ。
661 名前:login:Penguin mailto:sage [2007/05/26(土) 16:19:33 ID:olOYm4ED] >>660 それで短くなるの? ならないと思うけど。
662 名前:login:Penguin mailto:sage [2007/05/26(土) 23:30:58 ID:XoKsvVbX] >>661 あれ?なんかぜんぜん違う話へのレスになってる…。 スマソ、なんか誤爆っぽい…orz
663 名前:login:Penguin [2007/06/03(日) 15:06:38 ID:W8zh9WHI] ドライバ内での double 型の使用について質問があります. Kernel 2.6 のドライバ内で double の演算と,sprintf("%.2f", ...) の様な 関数を使うのはどうすればいいのでしょうか? 現在,下記のようなエラーが出ていてドライバをロードできないです. % make ...(snip) WARNING: "__adddf3" [hoge.ko] undefined! WARNING: "__muldf3" [hoge.ko] undefined! WARNING: "__floatsidf" [hoge.ko] undefined! % insmod hoge,ko insmod: error inserting 'hoge.ko': -1 Unknown symbol in module
664 名前:login:Penguin mailto:sage [2007/06/03(日) 15:14:36 ID:1QJRDZ5d] >>663 ドライバで浮動小数点の計算はしない方がいいと思う。
665 名前:login:Penguin mailto:sage [2007/06/03(日) 15:35:59 ID:W8zh9WHI] proc_fs で表示するために使いたいのですが,駄目なんでしょうか...?
666 名前:login:Penguin mailto:sage [2007/06/03(日) 16:53:58 ID:KH63vIBs] 浮動小数点演算はFPUを使う可能性があるから カーネルモードでは可能な限り避けるべき きちんと対応すれば使えないことはないけど、 速度的な利点はほとんどなくなる
667 名前:login:Penguin mailto:sage [2007/06/03(日) 23:23:42 ID:/hAY1VOO] 「速度的な利点」って何に対する何の利点?
668 名前:login:Penguin mailto:sage [2007/06/03(日) 23:31:28 ID:5NVvB11p] きっと >>666 の CPU は浮動小数点演算を使うと割り込み禁止になるんだろう
669 名前:login:Penguin mailto:sage [2007/06/04(月) 00:46:42 ID:CXn8XPVL] nVidiaのドライバの解析って3年ぐらいまでやってる人間 いたけど今どうなってるの?
670 名前:webmaster@気まぐれアナスイ mailto:192.168.0.1 [2007/06/04(月) 12:11:48 ID:RaTjYNE+] !(-_Φ+){ ... }
671 名前:663 mailto:sage [2007/06/05(火) 02:17:22 ID:aHzmfEHS] とりあえず固定小数点もどきをつかって回避して,こんなのできました. お時間があれば添削などしていただけると嬉しいです. acapulco.dyndns.org/usbrh/
672 名前:login:Penguin mailto:sage [2007/06/05(火) 10:49:22 ID:qhZ8Q9LN] >>665 固定小数点じゃだめか? 値が必ず正値と仮定、valに本当の値の100倍を入れるとすると unsigned int val; sprintf(str, "%d.%02d", val/100, val%100) みたいな感じ 負値だと剰余の扱いがちょっと面倒になる
673 名前:login:Penguin [2007/07/16(月) 18:26:19 ID:h1/eDBu5] はck
674 名前:login:Penguin [2007/08/06(月) 00:29:52 ID:E6mK6Nbx] ドライバ書くときってCPUの事は知っておいた方がいいのでしょうか?
675 名前:login:Penguin mailto:sage [2007/08/06(月) 01:55:04 ID:Taq1zrH7] どうでもいいよ タマゴがどっち向きかだけ知っとけば
676 名前:login:Penguin [2007/08/28(火) 23:24:19 ID:aUO2fWSH] あげ
677 名前:login:Penguin mailto:sage [2007/08/29(水) 01:23:49 ID:bmM5qB+B] >>675 俺はとんがったほうから食べるのが好きだ。
678 名前:login:Penguin mailto:sage [2007/08/29(水) 23:50:22 ID:E1JDVS03] どちらから割るのが正しいかが問題だ。大きいほうか、尖った方か。 16bit時代以降、中には大きい方から割って、尖った方から食べるという 両刀使いが出てきてさらにややこしくなった。
679 名前:login:Penguin mailto:sage [2007/08/30(木) 12:40:15 ID:pmmgZB5J] そんな両刀使いがいたのか 具体的にはドレ?
680 名前:login:Penguin mailto:sage [2007/08/31(金) 00:43:34 ID:pR6eg2ir] NUXIとかmixed endianでggr。1234じゃなくて2143並びになったりするらしい。 実は漏れも知らなかったが、最近でも某腕プロセッサはデータ型によってはまさにミックスになるそうな。
681 名前:login:Penguin mailto:sage [2007/08/31(金) 01:04:08 ID://apeG96] まあそうはいっても日常的にミックスは体験してるよな 通信プロトコルは大体ビッグだからな
682 名前:login:Penguin [2007/08/31(金) 07:07:24 ID:IHXG9RG5] uartのドライバ書きたいのだけど、uart_opsのメンバのそれぞれの責務がよく分からない。 文字列送って受けるだけなのに、なぜこんなにいっぱいあるんでしょう? 軽くおしえてもらえないでしょうか? include/linux/serial_core.h /* * This structure describes all the operations that can be * done on the physical hardware. */ struct uart_ops { unsigned int (*tx_empty)(struct uart_port *); void (*set_mctrl)(struct uart_port *, unsigned int mctrl); unsigned int (*get_mctrl)(struct uart_port *); void (*stop_tx)(struct uart_port *); void (*start_tx)(struct uart_port *); void (*send_xchar)(struct uart_port *, char ch); void (*stop_rx)(struct uart_port *); void (*enable_ms)(struct uart_port *); void (*break_ctl)(struct uart_port *, int ctl); int (*startup)(struct uart_port *); void (*shutdown)(struct uart_port *); void (*set_termios)(struct uart_port *, struct ktermios *new, struct ktermios *old); void (*pm)(struct uart_port *, unsigned int state, unsigned int oldstate); int (*set_wake)(struct uart_port *, unsigned int state);
683 名前:login:Penguin mailto:sage [2007/08/31(金) 07:12:11 ID:Bq5CxAt1] >>682 シリアル通信の基本を誰かに教えてもらったら...
684 名前:login:Penguin mailto:sage [2007/08/31(金) 14:54:06 ID:bz+r4Vre] >>682 ドライバを組むのなら、ターゲットの仕様をきちんとおさえるのが基本。 uart程度の解説なら本屋にいくらでもあるし、ググればいくらでも情報 が手に入る。 その程度の情報収集ができないなら、ドライバ開発は諦めたほうが良い。
685 名前:login:Penguin [2007/09/12(水) 11:40:08 ID:W+jFMZNC] 初歩的な質問で、すみません linuxカーネルは2.6.18-1.2798.fc6-i586で、fedora core6のカーネルを使っています USBマウスが差し込まれたときに、呼ばれるprobeのコールバックと、外されたときに呼ぶdisconnect のコールバックを書いたのですが、なぜかvenderIDと、productIDに間違いはないはずなのに これらが呼ばれません USBドライバの登録には成功しているようなのですが、登録に使う構造体の初期化に間違いがあったのでしょうか それとも、このドライバ以外のUSBマウスドライバがあると、駄目なのでしょうか 文字数制限の問題で、ソースは>>686 に貼らせていただきます
686 名前:685 [2007/09/12(水) 11:47:03 ID:W+jFMZNC] コピペでは無理だったので、ロダに上げしました sakuratan.ddo.jp/uploader/source/date51655.c
687 名前:login:Penguin mailto:sage [2007/09/12(水) 12:38:12 ID:b4ZSgzLd] >>685 ハードウエアを接続したとき、dmesgにはなんて出てくる?
688 名前:685 [2007/09/12(水) 13:23:18 ID:W+jFMZNC] >>687 dmesgは、このように出力しています usbcore: registered new driver usb_mouse succes_usbregist<6>usb 4-2: new low speed USB device using ohci_hcd and address 6 usb 4-2: configuration #1 chosen from 1 choice input: Cypress Sem PS2/USB Browser Combo Mouse as /class/input/input6 input: USB HID v1.00 Mouse [Cypress Sem PS2/USB Browser Combo Mouse] on usb-0000:00:0b.1-2
689 名前:login:Penguin mailto:sage [2007/09/12(水) 13:41:02 ID:Eo9vQi0w] >>688 フックできないような感じだけど?
690 名前:login:Penguin mailto:sage [2007/09/12(水) 14:04:06 ID:gJXCaswd] usb_device_id の .driver_info だけ定義するとすべてのデバイスにマッチするらしい(馬本参照)ので デバッグ用にやってみるのがいいかも > このドライバ以外のUSBマウスドライバがあると、駄目なのでしょうか たぶんそう
691 名前:login:Penguin [2007/09/13(木) 12:25:45 ID:oMFp/NB1] ドライバの開発って難しいでしょうか?
692 名前:login:Penguin mailto:sage [2007/09/13(木) 21:34:22 ID:dbMVSAQN] そのような質問をする方には難しいです。
693 名前:login:Penguin mailto:sage [2007/09/14(金) 03:35:04 ID:bpVkKQxn] >>685 むかしは定義に合致するドライバが呼ばれたが最近は1つ合致するやつが あると、それ以上呼ばないようになってたと思う HIDドライバが先にとっちゃうんでしょう。.configで無効にしてやってみそ
694 名前:login:Penguin [2007/10/03(水) 08:13:37 ID:WhUHfKUP] あげ
695 名前:login:Penguin mailto:sage [2007/10/07(日) 18:44:44 ID:wad8eg6i] UIO:ユーザー空間でデバイスドライバ作成が可能に www.atmarkit.co.jp/flinux/rensai/watch2007/watch09a.html
696 名前:login:Penguin [2007/10/08(月) 12:39:42 ID:v1nGyoTL] 馬本でデバドラを勉強しています。 カーネルのソースでドライバやったことがない人にも分かりやすいソースってどれですかね?
697 名前:login:Penguin mailto:sage [2007/10/08(月) 12:48:08 ID:Y0LW8BuC] そんな事言ってる位なら、馬本のドライバソース見ればいいじゃん。ダウンロードできるよ
698 名前:login:Penguin mailto:sage [2007/10/09(火) 08:54:41 ID:qhmHV8vi] >>696 何系のドライバかによるのでは>どれを見たらいいか。 ドライバの種類によってどういうインタフェースセット(いわゆる*_opsとか)を register_*とかで登録するのか、またインタフェース間やカーネル側処理がキュー等を 介してどのように連携するのか全く異なる。 漏れも読みたて入門者なんであれだけど、 キャラクタデバイスなら/dev/null(mem.c)とパラレルポート(ppdev.c + parport/*) ブロックデバイスならフロッピー(floppy.c)かramdisk(rd.c) ファイルシステムならromfs(romfs/*, readonly-fs)とbfs(bfs/*, readwrite-fs) が短かったり馴染みがあったりしてすんなり読めた。
699 名前:696 [2007/10/09(火) 12:16:03 ID:BjHL69v3] >>697-697 レスありがとうございます。
700 名前:login:Penguin mailto:sage [2007/10/18(木) 23:39:59 ID:YYamJxiT] 複数のデバイス間でデータをバイパス したいのですがサンプルないですか?
701 名前:login:Penguin mailto:sage [2007/10/19(金) 14:04:12 ID:CYTWECsc] いくらなんでも漠然としすぎだろw
702 名前:login:Penguin mailto:sage [2007/10/20(土) 01:03:15 ID:jtNU9aYY] 2ポートとか4ポート付きのNICって モジュールはどのようにロードされるの? またデータの共有とかRx,Txバッファの 管理とかどうなってるの?
703 名前:login:Penguin mailto:sage [2007/10/20(土) 04:41:50 ID:izm7N8bV] 1ポートのNICが複数枚ある場合と大差はない。
704 名前:login:Penguin [2007/10/21(日) 17:41:17 ID:yGaxVLsH] >>701 各ポートにデバイス eth0, eth1 ... と付いて、このデバイスファイルごとに 設定が管理されるだけじゃね?
705 名前:login:Penguin mailto:sage [2007/10/21(日) 18:39:44 ID:SCXCQ8PP] >>704 pciのデバイスとしては1つにしか見えないんだけどさ どうやって、その後4ポート認識してるかわからないんだよね
706 名前:login:Penguin mailto:sage [2007/10/21(日) 19:36:55 ID:f7YPzoUy] >>705 それはPCIブリッジが載ってるからじゃね? LANチップはその向こうのローカルバスに4ケ載ってるかと。
707 名前:login:Penguin [2007/10/23(火) 20:59:15 ID:pGCXISsZ] どなたかおしえてください。カーネルモジュールにバイナリコードを渡したい のでrequest_firmware()を呼び出しているのですが、このrequest_firmware() という関数から呼び出されるhotplugはどのディレクトリでバイナリコードを 検索してくれるのかわかりません。言ってみればバイナリコードをどのディレクトリ におけばいいかがわかりません。ディストリビューションはfc6でカーネルは2.6.22です。 カーネルモジュールに対応するデバイスは無いので、sysfs上に仮想的なバスと デバイス、ドライバを作ってあります。このデバイスのdevice構造体を使って request_firmwareを呼んでいます。申し訳ありませんが、かなりまいってるので お願いします。ご助力ください。
708 名前:login:Penguin mailto:sage [2007/10/23(火) 21:05:08 ID:tiPDo332] >>707 Documentation/firmware_class/* ?
709 名前:login:Penguin mailto:sage [2007/10/23(火) 22:03:44 ID:+D+WWc4l] BUFFALOのCD-RWドライブがまだ使えるのでハックしたいんですが、 必要な情報ってメーカーから提供されているんでしょうか?
710 名前:login:Penguin mailto:sage [2007/10/24(水) 15:38:46 ID:8BiGN5WQ] ハゲシク板違い
711 名前:login:Penguin mailto:sage [2007/10/26(金) 18:00:12 ID:OMFZLcsd] お馬さんの本読んで勉強してるのだが、さっぱり分からん。 ちなみに今3章のscullデバイス。 みんな最初はこんなもんなの? それとも、俺がバカなだけなのか?諦めたほうがいいのか? 意見求む!!
712 名前:login:Penguin mailto:sage [2007/10/26(金) 18:53:10 ID:OVakku/9] やる気の問題じゃね?
713 名前:login:Penguin mailto:sage [2007/10/26(金) 20:06:04 ID:nlKsXgN2] >>711 「作ってみなきゃわかんない」 の典型かもしれん。 実際作業するとキャラクタデバイスは楽しい。 そして、ブロックデバイスに挑戦するときに 分けわかんなさをもう一度楽しめる
714 名前:login:Penguin mailto:sage [2007/10/27(土) 11:47:28 ID:US/tv6oE] よくわかんないのが、他のドライバの叩き方なんだよな。 ネットワーク通信してファイルとかブロックデバイスにも書くような ドライバが最終ゴールなんだけど、他のドライバのAPIってどうやって 叩くのか(どこがインタフェース界面なのか)と。
715 名前:login:Penguin mailto:sage [2007/10/27(土) 12:04:42 ID:Y1miLqrF] OSの勉強やり直しっぽい
716 名前:login:Penguin [2007/10/27(土) 19:45:56 ID:5LV4rb/o] >>714 それってkernelspaceじゃなくてuserspaceでやればいいのでは。
717 名前:login:Penguin mailto:sage [2007/10/27(土) 20:15:47 ID:US/tv6oE] >>716 使う側からはファイルシステムに見せたいので、実際プロトタイプは FUSE方式でやろうとしてます。でもそれだと簡単ではあるものの 二級市民みたいなので、kernelspaceでの正しいやり方を知りたいなと。 nfsとかcryptfsのコードを読むは読むにしても、どっかにそういう 各種ドライバを内部から使うための情報をとりまとめたものとかは ないのかなと。
718 名前:login:Penguin mailto:sage [2007/10/27(土) 21:00:45 ID:RlzxlVfH] >>717 とにかくなんでもいいから氏ねw
719 名前:711 mailto:sage [2007/10/28(日) 02:49:08 ID:W9zUZBn1] >>712 鋭いな。そうかもしんない。 >>713 なるほど、これは貴重な意見が聞けた。サンスコ!!
720 名前:login:Penguin mailto:sage [2007/10/28(日) 02:54:06 ID:7ULWmmgi] >>717 ntfs-3g なんかはfuseだけど、実用的に動いているし、全然2級って感じしないけど。
721 名前:login:Penguin [2007/10/28(日) 23:36:04 ID:jy3FHf6c] 馬本にOSの仕組みを知ってる必要があると書いてありましたが、 どんなことを知っていたほうがいいのでしょうか?
722 名前:login:Penguin mailto:sage [2007/10/28(日) 23:41:48 ID:1vAj4w/k] メモリ管理・特権・スケジューリング・ファイルシステム(ry…全部じゃん
723 名前:login:Penguin [2007/10/28(日) 23:45:24 ID:jy3FHf6c] >>722 ありがとうございます。 詳解Linuxカーネルも読みます。
724 名前:login:Penguin mailto:sage [2007/10/29(月) 00:42:23 ID:uCaYz1aO] >>723 知りたくなったときに読めばいいよ でも必ず買っとけ
725 名前:login:Penguin mailto:sage [2007/10/29(月) 09:44:50 ID:wx/mrO8x] 買うなら原書(英語版)のほうがいいぜ 版が新しいし安いからな
726 名前:login:Penguin mailto:sage [2007/10/29(月) 10:27:48 ID:nDk3r2gZ] > 版が新しいし 4th edition でたの?
727 名前:login:Penguin mailto:sage [2007/10/29(月) 20:53:20 ID:Bg0Jp9i7] konozama.comとか少しは自分で調べようよ
728 名前:login:Penguin mailto:sage [2007/10/29(月) 23:42:16 ID:oMEBh2dX] Oh〜、チョッとお聞きしただけで損何怒らなくても いいじゃないですかぁ〜。Hey,take it easy ! でも調べるところは教えてくれるアナタに感謝で〜す!
729 名前:login:Penguin [2007/11/08(木) 00:29:00 ID:Cm3oK6QC] メーカーとかが作ったデバドラのソースって公開してるものはあるのでしょうか?
730 名前:login:Penguin mailto:sage [2007/11/08(木) 01:07:57 ID:vscqki7B] ネットワークデバイス系はそういうのが結構多いような。 超いい加減だけど: つ $ grep -r 'Inc[.o]' drivers | egrep -v '(Red|Vista|Foundation)'
731 名前:login:Penguin [2007/11/12(月) 11:19:56 ID:vNQ95D4g] kernel2.6.18.6でターゲット側のUSBドライバ書こうとしてるんですが 参考になるサンプルってありますでしょうか? drivers/usb/gadget/net2280.cとかが近いのかも知れないですけど どうもpciで登録してるように見えて「別物かなぁ?」と思いまして。 あとホスト側のUSBドライバで挿されたら何でも拾う設定って usb_device_idの.device_infoに適当な値を突っ込めばいいと思って たんですがどうにもattachの際に自作のprobeが呼ばれません。 成功した方っていらっしゃいます? ご存知の方いらっしゃればお願いします。
732 名前:login:Penguin mailto:sage [2007/11/12(月) 23:57:28 ID:xIHzaILy] >>731 おめー御馬様のサンプル 見てていってるんだよね? もしそうなら、適正無いから諦めろ 見てないなら、お前は調査能力ない からニートかなんかになれ
733 名前:login:Penguin mailto:sage [2007/11/13(火) 00:56:13 ID:0Tz4Ruwv] >>732 よく判ってらっしゃる。 馬本はさらっと読みましたが元がLinuxでも組み込みでもない世界で やってて、急遽ヘルプで入ったんでさっぱり。 前任が逃げてヘルプなんで誰も知ってる人がいない\(^o^)/ で、聞いてみたんですが俺も逃げっかな・・・
734 名前:login:Penguin mailto:sage [2007/11/13(火) 01:11:37 ID:nAlW3/rO] >>733 一週間悩んだら解かんないか? すげー複雑な科学計算とか遺伝子関係の プログラミング以外ほとんどの対象のプログラミング なんて簡単だぞ 時間がかかるものが多いのは事実だが ドライバは簡単な部類だ
735 名前:login:Penguin mailto:sage [2007/11/13(火) 01:21:16 ID:0Tz4Ruwv] >>734 まだ2日程度なんですよね。 「デバドラ」だと思ったんで聞いてみたんですがレベル設定あるみたいなんで 「くだらねぇ」でも行ってきます(´・ω・`)
736 名前:login:Penguin mailto:sage [2007/11/13(火) 01:24:22 ID:O430Avmc] 御馬様っていうのか・・・ 昨日、買いました。勉強します〜
737 名前:login:Penguin mailto:sage [2007/11/13(火) 09:24:54 ID:SFIG7nsG] >>734 ちなみに、回答しない人の言うことは無視したほうがいいよ。 >>732 はニートとか言ってるし典型的な煽り。
738 名前:735 mailto:sage [2007/11/14(水) 00:27:19 ID:2+ZY8Hov] 馬本見たら「本書の範囲を超えるので載せません」て書かれてた(´・ω・`) USB gadgetは難しいだろうかnet2280.cよりもZero.c見たほうがいいのかなぁ・・・。
739 名前:login:Penguin mailto:sage [2007/11/14(水) 02:20:20 ID:aLuJUt0c] 文句とか愚痴だけいって何も貢献しない人間ほどむかつく奴はいない。
740 名前:login:Penguin [2007/11/17(土) 09:40:38 ID:MN9c6cz5] >>739 どうどうどぅ…
741 名前:login:Penguin mailto:sage [2007/11/17(土) 11:39:12 ID:AZzmHExp] >>739 Do! Do! Do!
742 名前:login:Penguin [2007/11/17(土) 11:43:31 ID:4avAGLIe] do_fork
743 名前:login:Penguin [2007/11/29(木) 13:55:56 ID:yo1OGExb] mmapで特定のデバイスのIOメモリを仮想空間に割り付けて, その領域に対してユーザーからデータを書き込むことを考えています. ユーザープログラムからその領域上に,あるデータ型の双方向リスト を作りたいのですが,ユーザー空間の特定のアドレス範囲から空き メモリ領域を動的に確保する方法ってないでしょうか void *dev_malloc(start_address, end_adress, nbyte); とすると仮想アドレスstart_address〜end_adressの範囲から nbyteバイトの領域を確保するみたいなイメージです
744 名前:login:Penguin mailto:sage [2007/11/29(木) 20:09:08 ID:iCD9/EY6] >>743 かーなーり スレ違い デバイスドライバ関係ない 汎用heap管理ライブラリがほしいってことだろ heap-management とか ヒープ管理 でぐぐってみそ ちなみに void *dev_malloc(start_address, end_adress, nbyte); ってI/Fはありえないと思うぞ 毎回 start_addressとend_adressを与えるわけ??
745 名前:login:Penguin [2007/12/02(日) 23:50:11 ID:lbIQi7BJ] あげ
746 名前:login:Penguin [2007/12/13(木) 19:50:31 ID:pBhS9AMD] あげ
747 名前:俺 [2007/12/18(火) 23:09:45 ID:K//ZswLt] ドライバでCPUキャッシュのフラッシュやりたい! どうやるの?だれかおせぇ〜てぇ〜
748 名前:login:Penguin mailto:sage [2007/12/18(火) 23:41:07 ID:uNdsweTC] >>747 CPUキャッシュのフラッシュをする命令を実行すればいいんじゃない? CPUはなに?
749 名前:俺 [2007/12/18(火) 23:59:27 ID:K//ZswLt] >>748 Xeonの5100です。 データシートとか見つからなくて。。。 ご存知でしたら教えていただけませんか? <経緯> Linuxマシンで、DMAでPCIeのデバイスからホストメモリにデータ転送 したときにキャッシュのせいか、2周目のリングバッファ領域が うまく参照できていなく、フラッシュすればと思いました。。
750 名前:login:Penguin mailto:sage [2007/12/23(日) 13:45:51 ID:VU+KNtKv] >>ORE ttp://www.intel.com/products/processor/manuals/index.htm
751 名前:login:Penguin [2007/12/24(月) 18:03:58 ID:ugbio3bt] Linux 2.6.22 ARM9マシンでシリアルコンソールでデバッグするためにカーネルコマンドラインで console=uart,mmio,0x80004600,57600n8 とすると、カーネルの初期化中に early_uart_console_init()→register_console()→early_uart_setup()→parse_options()→ioremap()→__arm_ioremap()→__arm_ioremap_pfn()→get_vm_area()→__get_vm_area_node()→kmalloc_node()→kmalloc()→kmem_cache_alloc() が呼ばれてkmem_cache_alloc()でこけます。 slabアロケータがまだ初期化されていないのにkmem_cache_alloc()が呼ばれているのがこける原因と思うのですが、armマシンでもearly_uart_consoleは使えるのでしょうか?
752 名前: 【大吉】 【801円】 [2008/01/01(火) 19:54:53 ID:EHGXP/cp] 新年あげ
753 名前: 【中吉】 【156円】 [2008/01/01(火) 20:58:21 ID:LfamTH+n] >750 749じゃないけど,これいいな.サンクス. みんなチップのデータとかはどこから調べてくるの? ちょっと想像してみたけど,「とりあえずメーカサイトを調べる」 以外の方法がわからん. windowsのドライバから情報調べたりする人もいるの? いたらその解析方法とかおしえてください.
754 名前:login:Penguin mailto:sage [2008/01/01(火) 20:59:27 ID:VCekl7x7] >>753 メーカに電話して聞く
755 名前:login:Penguin mailto:sage [2008/01/01(火) 23:23:30 ID:hQDOyXLN] >>749 Intel の CPU だとその手のキャッシュのことは気にしなくていいんじゃなかったっけ? いわゆるバススヌープ。ま、明示的にフラッシュしたきゃできるだろうけど。 (実は俺自身は x86 以外用のドライバしか書いたことがないので聞きかじりだが...) あと、キャッシュが効いているなら1周目でも駄目な場合がありそうだがどうなん? 単にリングバッファのアリゴリズムでしくじってたりして。 って、よく見るとえらい昔の書き込みだった。もう解決したのかな。
756 名前:login:Penguin mailto:sage [2008/01/02(水) 12:58:56 ID:jVjgkvN4] チップの購入先の営業から入手とか チップベンダのwebサイトからダウンロードだろ 常考
757 名前:login:Penguin [2008/01/14(月) 11:44:33 ID:MLu8ArWP] 今馬本の第 3 版読んでんだけど scull のソースコードって Web でダウンロードできるの?
758 名前:login:Penguin mailto:sage [2008/01/14(月) 11:59:56 ID:hAs2atpA] あるよ
759 名前:login:Penguin mailto:sage [2008/01/14(月) 13:03:13 ID:MLu8ArWP] >>758 早速ありがとう. 本を斜め読みしてるんだけど URL が見当たらないです. 検索しても見付からないし,もしよろしければ教えていただけますと うれしいです
760 名前:login:Penguin mailto:sage [2008/01/14(月) 13:36:46 ID:Q2m15cvj] >>759 >>80
761 名前:login:Penguin mailto:sage [2008/01/14(月) 14:10:16 ID:MLu8ArWP] >>759 ありがとう! 3版のは FTP で以下からダウンロードできました. ar.linux.it/pub/ldd3/ldd3-samples-1.0.0.tar.gz かなり感謝です ありがとう
762 名前:login:Penguin mailto:sage [2008/01/14(月) 14:13:07 ID:MLu8ArWP] 自分にお礼ちまった >>761 の「>>759 」は >>760 の間違いです >>760 さんありがとう
763 名前:login:Penguin mailto:sage [2008/01/17(木) 11:56:40 ID:1+AIbUNm] >>761 あれ?お馬さんの第3版それなの? 日付が気になるので、第3版翻訳本に載ってたのをこぴぺ ftp://example.oreilly.com/pub/examples/linuxdrive3 examples.tar.gz 70 KB 2005/05/12 0:00:00 ちょいとだけ新しいかも。同じくLinuxデバドラはじめる所なので よろしく〜。Win系でWDM書いてました〜。
764 名前:!omikuji !dama [2008/01/25(金) 07:11:44 ID:dVpHcdky] kaso
765 名前:login:Penguin mailto:sage [2008/01/25(金) 21:56:39 ID:OZPnpJ0W] ドライバでのロックの掛け方とか その変のデザインパターンみたいなもの ないのですか? 馬本読んでも、DualSocket 4コアとか その辺の場合どうすればいいとかまったく 書いてなくて困ってる。 CPU毎にあるモノを意識しなければならないのか 全リソースを意識した作りなのかの判断も ケースバイケースとかだし。WDMの方がいいよね
766 名前:login:Penguin mailto:sage [2008/01/26(土) 23:10:19 ID:jNmSnKBM] >>765 スピンロック様
767 名前:login:Penguin mailto:sage [2008/01/27(日) 14:19:40 ID:/9d4A9Tg] WDMってよく知らないが、割り禁、スピン、寝る&起こす以外に 排他の方法があるの?
768 名前:login:Penguin mailto:sage [2008/01/27(日) 17:28:29 ID:Q2ylOq7r] そもそも排他なんじゃねーの? 昔はLinuxも明示的にスケジュールよぶまで カーネル空間は排他だったじゃん SMPが出てきて全部直す羽目になったけど
769 名前:login:Penguin mailto:sage [2008/01/27(日) 19:45:28 ID:/9d4A9Tg] 割込みハンドラ
770 名前:login:Penguin [2008/02/03(日) 19:45:35 ID:coODkdMv] 過疎
771 名前:login:Penguin mailto:sage [2008/02/07(木) 03:30:55 ID:9BnmgFGp] 「新着1件ってことは、いつもの良スレ上げ厨かなぁ」と思ったらそう来たか。
772 名前:login:Penguin [2008/02/19(火) 16:29:32 ID:vNMS2dUr] 基本的にPCIデバイスにデータ渡すだけのドライバを作ってるのですが、 I2Cデータ転送もしたいといわれ、苦戦中につき質問させて下さい。 カーネルリリースは2.6.11-1.1369_FC4 今のところインクルードしてるのは下記ヘッダーです。 linux/module.h linux/kernel.h linux/pci.h linux/pci-dev.h asm/uaccess.h unistd/.h sys/ioctl.h sys/perm.h I2Cのオープンのために、これにfcntl.hを加えたところ、dev_tの型などが再定義されたとエラーが出ます。 また、KERNELDIRを取得して、その場でMAKEしているため Makefileにて、環境変数C_INCLUDE_PATHに/usr/includeを設定しているのですが fcntl.hを除いてコンパイルしてもclose, ioctl等が未定義と警告されます。 これらエラーや警告の対応に行き詰まってしまいました。 インクルードに過不足あるのか、Makefileが悪いのか、そもそもPCIドライバからI2Cを叩く方法が悪いのか… アドバイス等お願い出来ますでしょうか。
773 名前:login:Penguin mailto:sage [2008/02/19(火) 19:10:24 ID:5BDGV8A6] デバイスドライバでunistd.hなんかincludeしちゃダメだろ fcntl.hも同様
774 名前:login:Penguin mailto:sage [2008/02/19(火) 21:35:29 ID:ec7S8nn5] 何言ってるのかわからないなw PCIデバイスとして、I2Cバスへのブリッジが載っているのか? それとも、PCIバス/デバイスとは関係なく、全く別のI2Cバス上のデバイスをアクセスしたいだけなのか?
775 名前:772 mailto:sage [2008/02/19(火) 22:00:59 ID:vQR2/dLm] >>773 やっぱりダメですか。 というか、無理やり環境変数使ってコンパイラのエラーを抜けてる(unistd.h以降3ヘッダ、加えてfcntl.h)のは全部includeしちゃダメですかね。 >>774 >PCIデバイスとして、I2Cバスへのブリッジが載っているのか? >それとも、PCIバス/デバイスとは関係なく、全く別のI2Cバス上のデバイスをアクセスしたいだけなのか? PCIデバイスにI2Cバスへのブリッジが載っている、のはずです。
776 名前:login:Penguin mailto:sage [2008/02/19(火) 22:53:37 ID:5BDGV8A6] つーかさ カーネルモードで動いてるデバイスドライバの中から open()とかclose()とかioctl()みたいなシステムコールを 発行できるわけないだろ? >>772 が作りたいと思ってるのは root権限で直接I/O叩くだけの ユーザランドで動くアプリなんじゃないのか?
777 名前:login:Penguin mailto:sage [2008/02/19(火) 23:10:27 ID:ec7S8nn5] >>775 じゃあ、そのPCI-I2Cブリッジのデバイスドライバを書いているんだとして、 >I2Cのオープンのために なんで、こうなるのよw とりあえずDocumentation/i2c/summaryでも読んでくれ。
778 名前:login:Penguin mailto:sage [2008/02/20(水) 08:43:00 ID:zgvkT7V3] >>776 呼んじゃダメなんですね。了解しました。 先週までアプリしかやったことがなく、ついそっち寄りな考えに、と、蛇足でした。失礼しました。 >>777 あー、確かに。 教えていただいたものを読んでみます。 ありがとうございました。
779 名前:login:Penguin mailto:sage [2008/02/20(水) 09:40:57 ID:zxxPBExl] >>773 そういえば、しちゃダメだ ってどこにも書いてないな わからない奴はわからないんじゃないか?
780 名前:login:Penguin mailto:sage [2008/02/21(木) 00:46:11 ID:VUV3LHo/] ちょっと相談なんだが、いいかな writeの中で長時間割り込み待ちをするような処理と、その場で終わる処理を持ったデバドラがあって、 (処理の切り替えはioctl) まずアプリAが長時間かかる処理のためにwriteわ呼び出す。 当然割り込み待ちになるが、そのままアプリBがioctlやwriteを呼び出すとどうなる? 普通に処理出来る?
781 名前:login:Penguin mailto:sage [2008/02/21(木) 00:55:15 ID:A2lpGb2W] 一つのデバイスを二つのアプリで同時に使うっつー事ですか?
782 名前:login:Penguin mailto:sage [2008/02/21(木) 01:18:43 ID:VUV3LHo/] >>781 その通りで。 ただ、1つのアプリがマルチスレッドになってるという場合もありでお願いしたい
783 名前:login:Penguin mailto:sage [2008/02/21(木) 01:55:12 ID:6LvlPNy5] できるかどうかは作り方次第だろうな 資源の排他処理が必要なら、ロック使わなきゃならん その場合は、すぐ終わるはずの処理ももちろん待たされる 待たせたくなけりゃ、長時間かかるというwriteにバッファを設けて write処理と割り込み処理とを分離するみたいな工夫したらどうだ 的外れならスマソ
784 名前:login:Penguin mailto:sage [2008/02/21(木) 02:11:45 ID:VUV3LHo/] >>783 資源は共有しないからロックはいらなさそうだ writeにバッファを設けて処理を分離ってのがイマイチわからんのだけど、説明頼んでもいいかい? デバドラの中でもスレッドとかで並列にするの?
785 名前:login:Penguin mailto:sage [2008/02/21(木) 06:04:45 ID:Xs+RkuJQ] シリアルポートを想像してみたらどうだろう Write、Read、割り込みがそれぞれ並列に動くはずだ Writeで割り込み使ってるかどうかは知らないけど
786 名前:login:Penguin mailto:sage [2008/02/21(木) 07:26:26 ID:Kf6eqU14] ブロック と ノンブロック という用語を使ってほしいところだな んで複数プロセスから同時に使えるかどうかはデバイスドライバの作り方次第 手抜きにつくると open()されるときに競合問題を判断して 同時にひとつとかopenできないようにするよな 複数同時にopenして、ひとつがブロックしてる時に また別のがノンブロックの処理要求してきたなんて場合は そういう風にうまく動くようにドライバの中で考慮する必要がある
787 名前:login:Penguin mailto:sage [2008/02/21(木) 07:32:20 ID:Kf6eqU14] 追記 呼び出し側がマルチスレッド使ってるかどうかはあまり関係ない ふたつのプロセスがメモリを共有してようがしてまいが ドライバにとっては関係ない話だ それよりCPUが複数ある(いわゆるSMP)かどうかの方が重要 smp対応させるなら必要なところできっちりspinlockしないとダメ
788 名前:login:Penguin mailto:sage [2008/02/21(木) 08:59:36 ID:VUV3LHo/] >>787-788 ブロック=長時間処理 ノンブロック=即時処理 でおk? 複数からopenされるのはアリにしないといけないっぽいんで、考えてみる。 ブロック中にアプリBからもwrite自体は呼び出せる? その時点で破綻してるなら、今のwriteをそのままスレッド化して、write自体はスレッド起動だけにするなりで対応とか…ダメかな あとCPUは1つ前提でおkっす。 余裕があったら後学のためにもsmp対応も抑えておきたいがw
789 名前:login:Penguin mailto:sage [2008/02/21(木) 09:10:48 ID:Kf6eqU14] > ブロック中にアプリBからもwrite自体は呼び出せる? もちろん呼べる ブロック処理とは、簡単にいうと処理開始をデバイス(ハードウェア)に 通知したあとスリープ状態に入り、処理完了割込が入ったら 割込ハンドラがスリープ(ブロッキング)しているプロセスを たたき起こすって流れ。 アプリAがスリープ(ブロッキング)している間に アプリBからreadなりwriteなりが発行されるのは当然ありうる話。 ちゃんとドライバを書いておけば問題なく動く。 linuxカーネルのソースコードそのものがいいサンプルコードだから いろいろ読んでみるとよい。 それから、procfs(/procの下に仮想ファイルをつくる)に 状態監視・デバッグ操作用のI/Fを用意しておくと後々楽になるよ。
790 名前:login:Penguin mailto:sage [2008/02/21(木) 09:27:27 ID:VUV3LHo/] >>789 凄く参考になった! ありがとう >答えてくれた人達 いろいろありがとう
791 名前:login:Penguin [2008/03/03(月) 00:13:39 ID:JgGlbVL6] ttp://www.atmarkit.co.jp/fsecurity/rensai/rootkit03/rootkit02.html 上記を参考にシステムコールをフックするプログラムを書きました(そのままでは駄目なので必要に応じて修正しています)。 コンパイルすると、 original_sys_uname = sys_call_table[sys_uname]; sys_call_table[sys_uname] = hook_uname; のsys_unameで `sys_uname' undeclared (first use in this function) とエラーがでます。 これは arch/i386/kernel/syscall_table.S をインクルードしておく必要があるのでしょうか? 使用しているカーネル:2.6.23
792 名前:login:Penguin mailto:sage [2008/03/03(月) 01:17:37 ID:dOT+ttrq] >>791 よく知らんけど、これよめ。 System calls replacement ttp://kerneltrap.org/node/5793 nm -uでundefinedなシンボルが置き換えらればいいだけなら、 LD_PRELOADなりLD_AUDITをつかってどうにかしたほうがいいんじゃね? そうなら、以後下へどうぞ。 Linuxプログラミング pc11.2ch.net/test/read.cgi/linux/1118024349/
793 名前:login:Penguin mailto:sage [2008/03/03(月) 04:02:04 ID:JCTvrwL7] >>791 sys_call_table[NR_uname] = hook_uname; の様な気がするわけですが。 >>792 それはユーザー空間で乗っ取る方法ですがな。
794 名前:791 [2008/03/03(月) 07:25:41 ID:zrYDUX8A] >>792-793 試してみます。 情報ありがとうございます。
795 名前:login:Penguin mailto:sage [2008/03/04(火) 09:36:17 ID:NdRlprld] >>791 乗り遅れたか!? Linux 2.6からシステムコールのフックはできません。 パッチ当てなきゃできないようなことが ttp://tldp.org/LDP/lkmpg/2.6/lkmpg.pdf 8章にそのようなことが書いてあったはず。 記憶が確かなら、792の示したサイトの unsigned long **sys_call_table = find_sys_call_table();を 加えればできたと思う。
796 名前:795 mailto:sage [2008/03/04(火) 09:39:35 ID:NdRlprld] >>791 パッチを当てるのが嫌ならLSMを使ったらいい。 決まった関数で始めるとか、とかsecurity_operations構造体に登録するあたりとか デバドラに似ているからsecurity以下を読めば使えると思う。
797 名前:791 [2008/03/04(火) 19:10:21 ID:iX0t2env] >>795 どうもです。 あれから色々調べたら>>795 の言うとおりに2.6.xからはできないみたいですね。 下記のURLに書いてある。i386_ksyms.cに extern void* sys_call_table[]; EXPORT_SYMBOL(sys_call_table); を、追加・再構築してやってみようと思います。 ttp://mail.nl.linux.org/kernelnewbies/2006-05/msg00334.html
798 名前:login:Penguin mailto:sage [2008/03/04(火) 20:25:09 ID:neWtFAJV] >>791 調べもせずに書いてるけどLinux版のウィルス対策ソフトのお試し版に 運がよければカーネルモジュールのソースが含まれていて、なおかつ、 それがシステムコールのフックしていたりしないか?
799 名前:791 [2008/03/05(水) 00:39:02 ID:QPFLTsD+] >>798 そのようなことはございません
800 名前:login:Penguin [2008/03/17(月) 18:46:02 ID:c0UdNwV3] あげ
801 名前:login:Penguin mailto:sage [2008/03/18(火) 18:12:00 ID:z8581E+A] init中にalloc_chrdev_regionでデバイス番号を動的確保した後で、 そのまま(関数内で)スペシャルファイルを作成する事は可能? mknodコマンドでなく、あくまでインスコだけで済ませるように出来ないかと…
802 名前:login:Penguin mailto:sage [2008/03/18(火) 18:22:19 ID:qC/Waqz9] udevじゃダメなの?
803 名前:login:Penguin mailto:sage [2008/03/18(火) 20:50:35 ID:Hq9+Lc7G] >>801 オレならprocなりsysなりのみで済ます
804 名前:801 mailto:sage [2008/03/18(火) 21:37:57 ID:z8581E+A] >>802 >>803 それだとinsmod以外にも必要になるんじゃないんですか? 関数で無いですかね (init_moduleから呼び出す) insmod hoge だけ実行すればアプリから叩けるような形にしたいんですが…
805 名前:login:Penguin mailto:sage [2008/03/18(火) 21:49:17 ID:irgQA2zj] shell スクリプト作ってその中で insmod、mknod すれば? rmmod も出来るようにすれば、なお良いでしょ?
806 名前:login:Penguin mailto:sage [2008/03/18(火) 23:47:40 ID:z8581E+A] >>805 それが良さげですね。 ありがとうございました。
807 名前:login:Penguin mailto:sage [2008/03/18(火) 23:49:33 ID:owXiyD5i] >>801 mknodしたくないってだけなら、device_create(9)か、手を抜きたいなら misc_register(9)に全部にまかせれば、>>802 が言ってるように、udevが勝手に スペシャルファイルを作ってくれるんじゃないか?
808 名前:login:Penguin mailto:sage [2008/03/19(水) 10:35:22 ID:J+fEVrF8] ブロックデバイスのブロックサイズってどこで決まってるの? ユーザアプリから見る方法ある?
809 名前:login:Penguin mailto:sage [2008/03/19(水) 14:37:31 ID:ZMxkS/nc] >>808 mkfsする時に決まると思うが。 ext2/ext3 なら tune2fs -l で見るか、ファイルがあれば stat構造体の st_blksize を見る。
810 名前:login:Penguin mailto:sage [2008/03/20(木) 00:19:26 ID:tEIlyDHp] >>808 そのブロックデバイスドライバが制御しているハードの規格によりだね。 SCSI系ならMode Senseコマンドで取れたんじゃないっけ?
811 名前:login:Penguin mailto:sage [2008/03/20(木) 00:24:56 ID:tEIlyDHp] >>808 試してないけど、blktool(8)のblock-szコマンドでいけそうかもね?
812 名前:login:Penguin mailto:sage [2008/03/20(木) 02:10:32 ID:wMmGSYfl] >>809 フォーマットする前に最適値を知っときたい乙女心です >>810-811 ありがとう。でもハードの規格というよりブロックデバイスとして なんかその辺を返してくれるioctlなりなんなりがあったらいいな とか夢想してた
813 名前:login:Penguin mailto:sage [2008/03/28(金) 15:40:00 ID:BcQjSrEl] >>807 見て、misc_register調べてちょっと使ってみたんだけど、 これで作ったもんどうやって消すんだ? 関数自体は使い方分かったが、対になるもの無い? misc_register込みのinsmod→rmmod→再度insmodでハングするんだが
814 名前:login:Penguin mailto:sage [2008/03/28(金) 15:47:49 ID:BcQjSrEl] 書いた直後に自己解決しちまったorz misc_deregisterがあるのね… スレ汚しすまんかった
815 名前:791 [2008/04/06(日) 15:36:55 ID:n9AD6VHb] ほ?
816 名前:login:Penguin [2008/04/10(木) 21:40:14 ID:zop984mC] mmapを利用して物理アドレス0x10000000に存在するデバイス(SRAM)のR/Wを 行うドライバを作成しようと思っています。 馬本の第3版のサンプルソース(simple)を参考にしながらremap_pfn_rangeで マッピングし、ダンプをとってみたところ、0x10000000エリアのデータでは なく、全て0のデータが読み取れました。 0x1000等の小さい物理アドレスであれば正常にリード出来ているようです。 0x10000000のように上の方のアドレスは、remap_pfn_rangeではマッピング されないのでしょうか? カーネルのバージョンは2.6.11です。
817 名前:816 [2008/04/10(木) 22:19:28 ID:zop984mC] /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) でも同じ結果でした・・・
818 名前:816 [2008/04/10(木) 22:20:55 ID:zop984mC] 訂正 >>817 >memmap((void*)0, 0x1000,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0x10000000) >memmap((void*)0, 0x1000,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0x1000) mmap((void*)0, 0x1000,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0x10000000) mmap((void*)0, 0x1000,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0x1000)
819 名前:816 [2008/04/10(木) 22:21:43 ID:zop984mC] 訂正 >>817 >memmap((void*)0, 0x1000,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0x10000000) >memmap((void*)0, 0x1000,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0x1000) mmap((void*)0, 0x1000,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0x10000000) mmap((void*)0, 0x1000,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0x1000)
820 名前:login:Penguin mailto:sage [2008/04/10(木) 23:10:16 ID:hws3UYgb] Linux 2.6.11 使ってないしためしてないけど、 /sys/devices/pci*/*/resource? を mmap(2) って出来ないんだっけ?
821 名前:login:Penguin mailto:sage [2008/04/11(金) 00:58:30 ID:pzz5pihD] とりあえず、落ち着けw man mmap2
822 名前:816 [2008/04/11(金) 23:01:18 ID:1s5/4DVK] >>821 >man mmap2 ↓ですよね? www.pinkdragon.net/doc_lib/contents/ja/linux_man/mmap2.2.html Linux 2.3.31 以降で使用可能とありますが、この環境では定義されていないと言われます。 組込み系だからなんでしょうか・・・ それと馬本第3版のP437 15.2.6 RAMのマッピングを変更する に 「ramap_pfn_rangeがRAMを扱えないことは・・・」ってくだりがあります。 実際いま起きている問題はこれなんでしょうか? ioremap_nocacheでReadする方法とダンプ比較したところ,mmapだと 0x00000000〜0x00800000 あたりまではちゃんとよめますが、 0x01000000になったとたん、0x00000000の値になってしまいます・・・ ioremap_nocacheでは0x01000000も見れるのに・・・
823 名前:login:Penguin mailto:sage [2008/04/12(土) 04:09:25 ID:CJCvWk/v] MTD使えばいいんじゃない? phram.koとか slram.koとか
824 名前:login:Penguin mailto:sage [2008/05/26(月) 23:35:38 ID:ZMUO6bXW] タスクレットの中でsleep_on_timeoutって呼べないんですか? なぜかカーネルパニックになってしまいます…
825 名前:login:Penguin mailto:sage [2008/05/28(水) 19:14:20 ID:eAKKlqpI] タスクレットからkill_fasync()呼びたいんですけど、 第一引数ってどこから持ってくればいいんでしょうか?
826 名前:login:Penguin [2008/06/13(金) 19:47:44 ID:ngpRzev4] フリーオのデバイスドライバー書ける人が居たら神!
827 名前:login:Penguin mailto:sage [2008/06/13(金) 22:56:58 ID:yAy4CW2H] 玄箱用のは、あるだろ
828 名前:login:Penguin [2008/07/05(土) 05:09:39 ID:+CtKxXwh] あげあげ
829 名前:login:Penguin mailto:sage [2008/07/05(土) 08:11:05 ID:d6Puhgue] ttp://pc11.2ch.net/test/read.cgi/linux/1213378360/
830 名前:login:Penguin mailto:sage [2008/07/05(土) 11:49:23 ID:D1363wxr] やっぱり情報公開されてない物のドライバ造るのって無理がある? Willcomスマートフォン端末でLinuxを動かすプロジェクト?があるのですが、 WS003SH、WSはPrismチップの無線LANを使用。 WS011SHではSharp独自のチップを使用した物のようです。 WS020SHは不明。 当方WS011SHの物の開発に興味があるのですが、難しいどころか情報の公開がされていない限りは 手すら付けられない状態でしょうか? アドバイスよろしくお願いします。
831 名前:login:Penguin [2008/07/27(日) 04:17:46 ID:JGvJfhtT] copy_{to,from}_user()でユーザプロセスのアドレスを与えるところにカーネル空間のアドレスを与えるとどうなります? やっぱりaccess_ok()で弾かれる?
832 名前:login:Penguin [2008/07/27(日) 08:01:26 ID:Nq54nVAZ] >>831 その程度、自分で確認しろ。
833 名前:login:Penguin [2008/08/21(木) 06:11:30 ID:5vh0FBcx] あげ
834 名前:login:Penguin [2008/09/17(水) 22:50:23 ID:v0hV3n2N] Linuxデバドラ移植の質問です。 雑誌の記事でx86Linuxデバドラを他CPUのLinuxに移植する際に、デバドラのソースが x86に依存してて移植できないことを知りました。 どうやらx86プログラマが他のCPUへの移植性を考えずに開発したことが原因みたいです。 雑誌によるとデバドラの依存箇所は以下が多いようです。 ・バイトオーダ ・アライメント ・I/Oアクセス ・タイミング 皆様に質問ですが、このようなx86に依存したLinuxデバドラが落ちている場所を ご存じないでしょうか? また、根本的なことですがx86Linuxデバドラを移植したり、移植しようとしたが x86に依存してて大変だったという案件は多いのでしょうか? どうぞよろしくお願いいたします。
835 名前:login:Penguin mailto:sage [2008/09/17(水) 23:58:51 ID:3YmhTjsY] >>834 drivers/ 直すのはそんなにめんどくないが、どこに地雷があるかわかりにくいのがのう。
836 名前:login:Penguin mailto:sage [2008/09/18(木) 00:34:30 ID:YTkXriLK] >>834 というか、デバイスドライバは基本的にハードに依存して当然 という側面も否定できないと言わざるを得ないこともあるので。
837 名前:834 mailto:sage [2008/09/18(木) 00:34:38 ID:csSd+QEz] カーネルソース内にあるんですね! 知りませんでした; 私は初心者でよく知らないんですが、てっきりカーネルソール内のコードって 移植性をちゃんと考えてあって(arch/以外)、管理されていると思ってました。 むしろ、カーネルソース外の開発(企業or個人)で公開されているドライバに あるのかと思ってました。
838 名前:login:Penguin mailto:sage [2008/09/18(木) 10:25:28 ID:tEXQNL4k] >>834 ふつー開発者の持ってるCPUでしかテストしないよ。 tg3とかe1000とかはNEC(ia64)とかIBM(powerpc)とかが 頑張って自分とこのハードで動くようにしてるけど、 個人でハックしてるものはたいていx86だけ。
839 名前:login:Penguin mailto:sage [2008/09/19(金) 05:32:38 ID:PmgUOzFO] まあ、過去の経験からすると ・USBターゲット - ほとんど手を入れる必要無し ・PCI - そんなに苦労することはない ・CPU直結 - 健闘を祈る てところですかねえ。
840 名前:login:Penguin [2008/11/09(日) 10:59:58 ID:QBZrgAJi] age
841 名前:login:Penguin mailto:sage [2008/11/13(木) 05:29:37 ID:dS9nrsy0] USBデバイスでも無線LANとかは
842 名前:login:Penguin [2008/12/07(日) 17:23:17 ID:Ht7uJKzk] age
843 名前:login:Penguin mailto:sage [2008/12/19(金) 14:08:43 ID:MwDJWbRs] HWからの割込み処理中の、ローカルAPICへのEOI発行タイミングについて質問があります。 レベル・トリガの割込みだった場合は、end関数からEOIを発行しています。 これは、割込み処理の先頭で発行してしまうと、I/O APICへEOIが通知され、デバイスのアサートが 失われてしまうのが不都合だからでしょうか? カーネルのverは2.6.18 です。
844 名前:login:Penguin mailto:sage [2008/12/20(土) 08:40:05 ID:9ZJbjYSC] >>843 一般的な話だけど 割り込みに関わるのは3つ。 @割り込み発生の条件と、割り込み要求するデバイス A割り込みを調停する割り込みコントローラと、割り込み受付のカーネル B実際の割り込み処理プログラム @→A→Bの流れは分かるよね それなら質問の答えも分かるよねw わんこ蕎麦に例えると @>>843 のお椀の蓋が開いてる A>>843 のお椀に蕎麦を放り込むおばちゃん B蕎麦を食べる>>843 満腹になった>>843 Bが最初にすべきは、@の処理かAの処理か
845 名前:login:Penguin mailto:sage [2008/12/21(日) 18:36:36 ID:6RSqLOEI] >>844 「ご馳走様でした」と言いながら金を払わないで蓋も開けっ放しで逃げる。
846 名前:login:Penguin mailto:sage [2008/12/21(日) 19:17:37 ID:otIiAnj0] ダブルフォルト乙
847 名前:login:Penguin mailto:sage [2008/12/22(月) 03:52:28 ID:guo09gfy] (1)はおばさんのスピードに勝てないと判断して、(2)のおばさんに話し掛けるよな もうお腹いっぱいって
848 名前:login:Penguin [2009/01/24(土) 00:42:09 ID:UJ+xFTUa] a
849 名前:login:Penguin mailto:sage [2009/02/17(火) 22:55:17 ID:m2mCukTw] ポートIOするサンプルを作ってみようと思ったのですが、 下のコードの時点で、すでにコンパイルが通りません。 sys_ioplを呼ぶのに、何が足りないのか分からないです。 どうしたら良いか、アドバイス頂けたら助かります。 よろしくお願いします。 debian 2.6.24 gcc 4.1.2 make -C /lib/modules/2.6.24/build M=/test module error: implicit declartion of function 'sys_iopl' --- #include <linux/init.h> #include <linux/module.h> #include <linux/io.h> #include <linux/ioport.h> static int __init hello_init(void){ sys_iopl(3); return; } static void __exit hello_exit(void){ return; } module_init(hello_init); module_exit(hello_exit);
850 名前:login:Penguin [2009/02/17(火) 22:55:48 ID:m2mCukTw] すみません、sageてしまいました。
851 名前:login:Penguin mailto:sage [2009/02/18(水) 00:04:19 ID:lQ8CDN9P] 根本的に間違っているような気がするので、 もう少し具体的にやりたいことを書いた方がいいと思う。 取り合えずドライバでioplはいらねえ。
852 名前:login:Penguin mailto:sage [2009/02/18(水) 01:04:31 ID:WJ6360yx] >>851 もしかして、ドライバ内では、ポートにアクセスするのに、iopl自体が使えないということでしょうか? そうすると、request_regionしていくしかないということですかね。 それとも、アクセス許可自体が必要ないのでしょうか。 元々、独自PCI-I/Fボードにアクセスするアプリがありまして、 それの、ドライバ版を作ろうと思いました。 そのアプリでは、iopl(3)→outb(),inb()にて値を取得していたので、同じ様に作っていたところでした。 PCIからのポートアドレス取得が上手くでき、そのアドレスにアクセスする段階だったのですが、 ioplでどうしてもコンパイルが通らず、includeの問題なのか、Makefileなのか、 途方に暮れてました。>>849 はそのテストプログラムを抜き出しです。
853 名前:login:Penguin mailto:sage [2009/02/18(水) 01:38:21 ID:lQ8CDN9P] なんでドライバにする必要があるのかよくわからんが。 そういうレベルでわからんのであれば、まずは馬本で基礎知識を 身につけた方がいいと思う。 ついでに、sys_ioplの呼び方はそうじゃない。 つうかカーネルの中でsys_〜は直接呼ぶもんじゃない。
854 名前:login:Penguin mailto:sage [2009/02/18(水) 12:48:39 ID:WJ6360yx] >>853 ありがとうございます。 ドライバ版の意図は、いずれ割り込みを使うつもりだったからです。 馬本は十分理解できなかったので、とりあえず作ってみるという感じでやってました。 sys_ioplは呼んではいけないんですね。 馬本、もう一度読んでみます。
855 名前:login:Penguin mailto:sage [2009/02/18(水) 16:25:38 ID:zpaCJvuo] 馬本はカーネルの知識がある程度ある前提で書かれてるので まずはLinuxカーネルに関する文献を読んでみることをおすすめするよ デバイスドライバはカーネルの一部でもあることを忘れるな
856 名前:login:Penguin mailto:sage [2009/05/29(金) 14:40:20 ID:D/EXOrYt] Kernel 内で IN/OUT アセンブラ命令に相当するのは 何かマクロがあるんじゃなかったっけ? READ_PORT とかそんなの。
857 名前:login:Penguin mailto:sage [2009/05/29(金) 23:00:18 ID:A6oE+oT8] in[bwl] out[bwl] とか。 include/asm/io.hに入ってたはず。
858 名前:login:Penguin mailto:sage [2009/07/04(土) 14:39:23 ID:D5yvn6Kc] シリアルドライバ内の情報で、何バイト受信済みとか、何バイト未送信という情報って 取得することは可能ですか?
859 名前:858 mailto:sage [2009/07/04(土) 16:35:43 ID:D5yvn6Kc] 補足です。 上記の情報をアプリケーションから取得できますか?
860 名前:login:Penguin mailto:sage [2009/07/05(日) 02:17:52 ID:vnzKXmwE] >>859 ioctlでTIOCINQとかTIOCOUTQみれば出来そう。 つーかマニュアル嫁よ。せっかくあるんだからよ。
861 名前:login:Penguin mailto:sage [2009/07/05(日) 14:39:25 ID:jkHVDhT6] ヌルイぞ。そこは つーかソース嫁よ。せっかるあるんだからよ。 だろ。ソース以上の資料なんかないんだからOSSってのは質問禁止なんだよ。 ・・・ってえらいひとがいってました!
862 名前:login:Penguin mailto:sage [2009/07/05(日) 23:11:19 ID:vnzKXmwE] >>861 その偉い人は馬鹿だよ
863 名前:login:Penguin mailto:sage [2009/07/05(日) 23:20:49 ID:xNWd+cLB] どこでも、えらい人は馬鹿なもんさ。
864 名前:login:Penguin [2009/09/19(土) 20:24:56 ID:I29pddJ7] 保守上げ
865 名前:login:Penguin mailto:sage [2009/10/12(月) 16:24:20 ID:cJbteqq9] >>861 × だろ。ソース以上の資料なんかないんだからOSSってのは質問禁止なんだよ。 ○ だろ。ソース以外の資料なんかないんだからOSSってのは質問禁止なんだよ。
866 名前:login:Penguin mailto:sage [2009/12/03(木) 22:11:10 ID:s69LcKJk] i386BSDカーネルの386BSDカーネルソースコードの秘密 ソース以上の資料なんかないんだから、に対して何か書いてあったな。
867 名前:login:Penguin mailto:sage [2009/12/03(木) 23:11:02 ID:LYVup2we] >>866 ソースそのものと、ソースにこめられた趣旨は別じゃないかな?
868 名前:login:Penguin mailto:sage [2009/12/10(木) 00:21:58 ID:XvjOUXRH] UTSL だな。
869 名前:login:Penguin [2010/02/18(木) 10:40:00 ID:hWc/MwlX] linuxmintとウィンドウズ7RCを使っています。WIN7は試用なので来月から起動後一時間で自動で電源が落ちるようです。 リナックスに乗り換えるのは簡単なのですが、今使ってるテレビチューナーのドライバがリナックスには無いのです。 だれかmvp-rx3のドライバを書いてください。 このままではリナックスでテレビが見られず、リナックスをあきらめてウィンドウズのところにお嫁にイかされてしまいます。 テレビを見るためにはリナックスをお慕いもうしあげていますのにウィンドウズを買わなければならない境遇に どうかどうか同情をしていただけるスーパーハッカーの方はドライバ書いてくださいませんか。 生きていくためには愛をもあきらめゲイツに身をゆだねなければならないのかと震えております。 ちなみにあたし女子中学生です。生娘です。似ている芸能人は17歳のころの広末涼子です。
870 名前:login:Penguin mailto:sage [2010/02/18(木) 19:21:20 ID:tk+7V5La] >>869 GV-MVP/RX3 www.iodata.jp/product/tv/analog/gv-mvprx3/ mvp-rx3はアナログTVキャプチャーボードですね。 2011年7月にアナログテレビ放送が終了するので どのみち地上デジタルテレビチューナーが必要になります。 Windows7を買う金でPT2を買ってLinuxで使う方がよいと思います。 PT2なら地デジでもコピーワンスによる不便から逃れられます。 日経Linux 2010年2月号 itpro.nikkeibp.co.jp/article/MAG/20100105/342880/ > 特集2 > PT2で地デジ録画システムを作る > パソコンで地上デジタル放送や衛星放送を受信できる > デジタル・チューナ「PT2」を使ってシステムを作ります。 > 最新のLinuxディストリビューションのFedora 12とUbuntu 9.10で > PT2のドライバをインストールし,高画質のテレビ番組を見てみましょう。 > 番組表から録画予約する方法も紹介します。 【視聴】Linuxでデジタル放送【録画】 pc11.2ch.net/test/read.cgi/linux/1230616112/