&size(24){&color(darkgreen){''PCMCIA''};};
#navi(Linux)
''CONTENTS''
#contents
----
''REFERENCES''
-[[Linux PCMCIA Information>http://pcmcia-cs.sourceforge.net/]]
--[[Card Service>https://sourceforge.net/projects/pcmcia-cs/]]
--[[HOWTO>http://pcmcia-cs.sourceforge.net/ftp/doc/PCMCIA-HOWTO.html]]
--[[Programmer's Guide>http://pcmcia-cs.sourceforge.net/ftp/doc/PCMCIA-PROG.html]]
--[[HOWTO 日本語訳(古い)>http://www.linux.or.jp/JF/JFdocs/PCMCIA-HOWTO.html]]
--[[Pgrammer's Guide 日本語訳(古い)>http://www.linux.or.jp/JF/JFdocs/PCMCIA-PROG.html]]
----

** はじめに [#y4ef4bb9]
~PCMCIAは、Personal Computer Memory Card International Association の略。現在は規格として、「PC Card Standard」となったので、"16-bit PC Card" というほうが正しい表現。
-PC Card 分類
|PC Card|16Bit PC Card|メモリカード|SRAMカード||
|~|~|~|リニアフラッシュメモリカード|~|
|~|~|~|マスクROMカード|~|
|~|~|I/Oカード|ATAフラッシュ|このカテゴリが多い|
|~|~|~|ATAHDDカード|~|
|~|~|~|モデムカード|~|
|~|~|~|SCSIカード|~|
|~|~|~|LANカード|~|
|~|~|~|その他|~|
|~|CardBusカード||高速SCSIカード||
|~|~|~|高速ATAカード|~|
|~|~|~|高速LANカード|~|
|~|~|~|高速シリアル(USB/1394)カード|~|
|~|その他||ZVポート用ビデオカード||

-[[pcmcia-cs>http://pcmcia-cs.sourceforge.net/]]
~LinuxでPCカードを使う為の、カーネルサービス、ドライバ及び、ユーザーレベルユーティリティのパッケージ。最新の安定版は、3.2.8(2004-07-16 release) もうstable?。ドライバは、kernel2.4からカーネルソースに取り込まれている。

**Beta 05 Release ?? [#ve25fc95]
-また来てしまった…。とりあえずreleaseは保留しとこ。またきても困るし…
-要望の追加&不具合修正
--iwconfig ethXX essid any 設定時の表示修正
--private commandに"GetDetach"追加。(0:disabled   1:enabled)
--infra 接続時に、channelの変数(driver内部変数)をAPのもの合わせていたのを設定値から変更しないようにした。
--MIBのLOCAL_LINK_AP_STATUSの取得
--scanの表示でchannelが1つずれて表示されるのを修正
--rate=auto設定時のiwconfigのrate表示について
--- rateの構造体(iw_param)のfixedメンバでautoかどうか判定
--- iwconfig では、fixed が trueの場合"Bit Rate=xxMb/s" falseの場合 "Bit Rate:xxMb/s"と表示
--- rateの表示をautoの場合は、追従して表示するように変更。
--rateの表示5.5M設定時、5Mと表示されていたのを修正。
--rateの設定所定の値以外の値を設定すると、errorを返すように修正。(いままではAUTO設定としていた)
-とりあえずPreRelease(2005-06-09)ちゃんとPowerSave動作してるかどうか確認を頼んだ。ひとまずPowerSave動作するけど、俺だけじゃ判断が難しい (^^;
--(金子)おぉ。早いじゃないですか。。正式Releaseは返事待ちかな?反応あったら教えてね。 
--PowerSave状態になる条件として、”一定時間通信がない”という条件がもらった資料に書いてあったから実装したのに… 待ち時間なしでPowerSave状態にするように変更してくれとの要望がきた。&sad; :( Windowsのソースはそーなってたらしいけど、あれとっても読みにくい…
--ks29xx_set_encode (ks29xx_net.c)に不具合ありの報告が来た。(ま、今回にリリースには、含まないということで…)
-KS2970不具合??
--PowerSaveモードに設定し、しばらく(数分)ほーっておくと、deviceが反応しなくなる?(詳細はよくわからない…)。
---SDKボードだと大丈夫
---cheeky,dasher,bluffで確認。angerだと大丈夫。
---(金子)ハード的な原因のようですね。多少でも詳細が分かれば教えてください。回覧メール出します。

--CF-cardの部品のバラつきが原因で、firmのタイミングがシビアで、許容範囲を超える部分があるのが原因らしい。ま、ドライバには、関係ない :)
---(金子)お疲れさまでした。KSCには「はやく言え〜」と言いたいね。リリースする?

**Beta 04 Release !! (2005-05-26) [#dcd364e0]
-[[ks2101-linux.beta04>http://wiki.wivicom.co.jp/cgi-bin/viewcvs.cgi/ks2101-linux/?only_with_tag=beta04]] 
-要望の追加
--BeaconLostCountの設定&取得の追加
--要望はもう聞きたくないな〜。一度に出してくれればいいのに…。次に要望がきたら、POWER_SAVE releaseと一緒ってことにしようかな? :) 結構、release 作業めんどい… (^^;
**ks2101-linux power-save 開発メモ [#s67800d3]
-in_interrupt()はCPUが割り込みモードで実行されている場合、0以外を返す。
-hard_start_xmit methodは割り込みモード(in_interrupt()=1)
-taskletの実行は、割り込みモード(in_interrupt()=1)
-割り込みモードでは、スリープしちゃダメ

-POWER SAVE statemachine
|~state |~host state               |~device state|~mode state|~description|
|STATE0 |HIF_POWER_NO_SET          |POWER_ACTIVE |MODE未設定 ||
|STATE1 |HIF_POWER_NO_SET          |POWER_ACTIVE |INFRA未接続||
|STATE2 |HIF_POWER_NO_SET          |POWER_ACTIVE |ADHOC接続  ||
|STATE3 |HIF_POWER_ACTIVE_SET      |POWER_ACTIVE |INFRA未接続||
|STATE4 |HIF_POWER_ACTIVE_SET      |POWER_ACTIVE |ADHOC接続  ||
|STATE5 |HIF_POWER_NO_SET          |POWER_ACTIVE |INFRA接続  ||
|STATE6 |HIF_POWER_ACTIVE_SET      |POWER_ACTIVE |INFRA接続  ||
|STATE7 |HIF_POWER_SAVE_SET_REQ    |POWER_ACTIVE |INFRA接続  ||
|STATE8 |HIF_POWER_SAVE_SET_DONE   |POWER_SAVE   |INFRA接続  ||
|STATE9 |HIF_POWER_SAVE_WAKEUP_REQ |POWER_SAVE   |INFRA接続  ||
|STATE10|HIF_POWER_SAVE_WAKEUP_DONE|POWER_ACTIVE |INFRA接続  ||
|STATE11|HIF_POWER_SAVE_WAIT       |POWER_ACTIVE |INFRA接続  ||
|STATE12|HIF_POWER_SAVE_???        |POWER_ACTIVE |ADHOC接続  ||


|~method             |~description |
|HIF_POWER_ACTIVE_SET|host<->device|
|HIF_POWER_SAVE_SET  |host<->device|
|HIF_MODE_SET        |host<->device|
|HIF_DATA_REQ        |host->device |
|HIF_XXX_REQ(CONF)   |host<->device|
|HIF_DARA_IND(CONF)  |host<-device |
|SNOOSE_SET          |host->device |
|MAC_WAKEUP_REQUEST  |host->device |
|MAC_WAKEUP_ACK      |host<-device |

#graphviz(define, @page@, rankdir=TB; )
#graphviz(dot,small){{
digraph G { 
 node [shape = "circle",style=filled];
 subgraph cluster_0 { 
//  ordering=out;
  "STATE0" [shape = "doublecircle"];
  "STATE0" -> "STATE2" [label="HIF_MODE_SET"];
  "STATE0" -> "STATE1" [label="HIF_MODE_SET"];
  
  "STATE0" -> "STATE5" [label="HIF_MODE_SET"];
  label = "power none";
 }
 subgraph cluster_1 {
//  ordering=in;
  "STATE4" [shape = "doublecircle"];
  "STATE6" [shape = "doublecircle"];
  "STATE3" -> "STATE6" [label="CONNECT"];
  "STATE6" -> "STATE3" [label="DISCONNECT"];
  "STATE4" -> "STATE3" [label="HIF_MODE_SET"];
  "STATE4" -> "STATE6" [label="HIF_MODE_SET"];
  "STATE3" -> "STATE4" [label="HIF_MODE_SET"];
  {rank=sink; "STATE4";}
  label = "power active";
  color=red;
 }

 subgraph cluster_2 {
//  ordering=out;
  "STATE8" [shape = "doublecircle"];
  "STATE8" -> "STATE9" [label="hoge"];
  "STATE9" -> "STATE10" [label="MAC_WAKEUP_ACK"];
  "STATE10" -> "STATE11" [label="HIF_hoge_REQ"];
  "STATE11" -> "STATE8" [label="WAIT_TIMEOUT"];
  {rank=source; "STATE8";}
  {rank=sink; "STATE11";}
  label = "power save";
  color=blue;
 }
 
 "STATE10" -> "STATE12" [label="HIF_MODE_SET"];
 "STATE11" -> "STATE12" [label="HIF_MODE_SET"];
  
 "STATE6" -> "STATE7" [label="HIF_POWER_SAVE_SET"];
 "STATE5" -> "STATE7" [label="HIF_POWER_SAVE_SET"];
 "STATE7" -> "STATE8" [label="SNOOSE_SET"];
 
 "STATE1" -> "STATE3" [label="HIF_POWER_ACTIVE_SET"];
 "STATE5" -> "STATE6" [label="HIF_POWER_ACTIVE_SET"];
 "STATE2" -> "STATE4" [label="HIF_POWER_ACTIVE_SET"];

// "STATE10" -> "STATE6" [label="HIF_POWER_ACTIVE_SET"];
// "STATE11" -> "STATE6" [label="HIF_POWER_ACTIVE_SET"];
// "STATE12" -> "STATE4" [label="HIF_POWER_ACTIVE_SET"];
 {rank=source; subgraph cluster_0;}
 {rank=same; subgraph cluster_1; "STATE7";}
 {rank=sink; subgraph cluster_2;}
}
}}
//#graphviz(showmacro)

**Beta 03 Release !! (2005-05-23) [#d087b7f4]
-[[ks2101-linux.beta03>http://wiki.wivicom.co.jp/cgi-bin/viewcvs.cgi/ks2101-linux/?only_with_tag=beta03]] 
-不具合の修正&要望の追加
--不具合
---WEPの設定 indexのみの変更可能に。
---essid any の時のsize=0の指定。
---Bssidの表示の不具合。
--要望
---MAC未対応の機能を無効化(retry,power,txpower,sens)
---WEPの設定データを表示するようにする。
---private commandのSetConnectの名前変更。(SetDetachに変更)
---private commandにWEP keyのASCII表示の機能を追加
---private commandにscan typeの取得&設定を追加
---iwlistのtxpowerの表示を-256dBmにする。

**Beta 02 Release !! (2005-05-17) [#y81b2d03]
-[[ks2101-linux.beta02>http://wiki.wivicom.co.jp/cgi-bin/viewcvs.cgi/ks2101-linux/?only_with_tag=beta02]] 
-新しいMAC firmware version 1.03に対応。古いfirmware(ver0.26)とは互換がないので注意!!
-- 変更点 mail from 浦澤@KSC &ref(host_if.txt);
 いつもお世話になっております。
 KSC 浦澤です。
 
 CFカードとSDK(PCMCIA)の最新ファームをお送りします。
  ks2916pc.rom --> SDK(PCMCIA)
  ks2970cf.rom --> CF
 
 今回お送りするものはver1.03です。ver0.26からのバージョンアップによる
 HOSTif関連の変更は以下のとおりです。
 (以前ご質問のノイズレベルの件です。)
 
 ・ホストi/fの変更(PHY_INFO、AP_LISTのNoiseエリア追加)
  - HIF_PHY_INFO_CONF_PRIに
    noiseエリア追加(BYTE)
    Tx_rate(LinkSpeed)をWORDからBYTEに変更
   -->windowsDriverではすでにこうなっていたかもしれません。
  - BssDscr(BSSList)に
    noise(BYTE)、pad_0(BYTE)を追加
   -->重要!
 
 詳しい構造体の情報は添付のhost_if.txtをご覧ください。
 
 また、CFとSDK(PCMCIA)の違いは以下のとおりです。
 
 LEDのON/OFFが逆
   - GPIOのLow/Highの扱いがCFとSDK(PCMCIA)で逆になります。
 PowerSaveでの起き上がり時間
  - ビーコン周期よりどれだけ早く起動するかがCFとSDK(PCMCIA)で異なります。

-[[KS2970 CF card を追加>http://wiki.wivicom.co.jp/cgi-bin/viewcvs.cgi/ks2101-linux/ks29xx.conf.diff?r1=1.2&r2=1.3&diff_format=h]]

**Beta 01 Release !! (2005-05-13) [#d0133045]
-[[ks2101-linux.beta01>http://wiki.wivicom.co.jp/cgi-bin/viewcvs.cgi/ks2101-linux/?only_with_tag=beta01]] 
-[[Wireless-tools>Linux/Wireless-tools]]ページ参照
--(金子)やったね。次の作業順としては、1)パワーセーブ、2)暗号、だそうです。
--(金子)KS2101は、組込み用途を狙って低消費電力だから、パワーセーブは先に欲しいらしいです。
**KS2970 (CF card) CIS 情報 [#ecdef70e]
manfid が前とちがっているじゃないか!ks29xx.confに追加しなければ… 
 # dump_cis
 Socket 0:
   no CIS present
  
 Socket 1:
   dev_info
     NULL 0ns, 512b
   vers_1 5.0, "KeyStream Corp.", "KS2970", "", ""
   manfid 0x005b, 0xf002
   funcid network_adapter
   lan_technology wireless
   lan_speed 1 mb/sec
   lan_speed 2 mb/sec
   lan_speed 5 mb/sec
   lan_speed 11 mb/sec
   lan_media 2.4_GHz
   config base 0x0200 mask 0x027f last_index 0x05
   cftable_entry 0x05 [default]
     Vcc Vmin 3130mV Vmax 3470mV Iavg 300mA Ipeak 300mA
     Idown 10mA
     io 0x0000-0x003f [lines=6] [16bit]
     irq mask 0xffff [level] [pulse]
追加したら、うごいた :)
 +card "KeyStream KS2970 Wireless LAN PC Card"
 +  manfid 0x005b, 0xf002
 +  bind "ks29xx_cs"

 cardmgr[1902]: socket 1: KeyStream KS2970 Wireless LAN PC Card
 kernel: cs: memory probe 0xa0000000-0xa0ffffff: clean.
 cardmgr[1902]: executing: 'modprobe ks29xx_cs'
 kernel: eth1: KeyStream KS2101 wireless.
 kernel: eth1: index 0x05: Vcc 3.3, irq 11, io 0x0100-0x013f
 cardmgr[1902]: executing: './network start eth1'
 kernel: ks29xx: MAC ADDRESS = 12:34:56:29:70:01
 kernel: ks29xx: firmware ver. = 2970-PCMCIA-0.26 [Feb 09 2005  14:35:09]
 /etc/hotplug/net.agent: invoke ifup eth1

**Beta 00 Release !! (2005-04-12) [#n7a9bbcd]
~一応できた?cheekyのkernel2.6だとOopsが出てるが…。他のマシン&kernel2.4は大丈夫みたい。
-[[ks2101-linux.beta00>http://wiki.wivicom.co.jp/cgi-bin/viewcvs.cgi/ks2101-linux/?only_with_tag=beta00]]
~kernel2.6でモジュールをインストールすると、no version for "struct_module" found: kernel tainted. とか言われる。大丈夫か?動くから…
-cheeky-kernel2.6 Oops message (driver load 直後) ちなみに毎回でます。大体メッセージはいつも同じ(多分)  (^^;
 ks29xx: MAC ADDRESS = 00:0b:e3:00:00:00
 ks29xx: firmware ver. = 2970-PCMCIA-0.26 [Feb 09 2005  14:35:09]
 Unable to handle kernel NULL pointer dereference at virtual address 00000058
 printing eip:
 c0221cf3
 *pde = 00000000
 Oops: 0000 [#3]
 PREEMPT
 Modules linked in: ks29xx_cs ks29xx ipv6 ds nfsd exportfs lockd su
 nrpc tsdev mousedev joydev psmouse parport_pc parport evdev pcspkr eth1394
 ohci1394 ieee1394 yenta_socket pcmcia_core snd_intel8x0m snd_intel8x0 snd_ac97_codec
 snd_pcm snd_timer snd_page_alloc gameport snd_mpu401_uart snd_rawmidi snd_seq_device
 snd shpchp pciehp pci_hotplug pl2303 usbserial intel_agp agpgart ehci_hcd uhci_hcd
 usbcore i810_audio ac97_codec soundcore nls_iso8859_1 nls_cp437 ide_cd cdrom b44 mii
 genrtc vfat fat ext3 jbd mbcache ide_generic piix ide_disk ide_core unix
 CPU:    0
 EIP:    0060:[dev_seq_printf_stats+35/240]    Not tainted
 EFLAGS: 00010246   (2.6.8)
 EIP is at dev_seq_printf_stats+0x23/0xf0
 eax: 00000000   ebx: d7ec0000   ecx: d7e17f4c   edx: dcc94280
 esi: dcc94280   edi: d7ec0000   ebp: 000002b4   esp: d7e17ed4
 ds: 007b   es: 007b   ss: 0068
 Process ifconfig (pid: 4077, threadinfo=d7e16000 task=de8e9220)
 Stack: d7ec0000 c02aa2a0 de395800 00000000 00000000 00000000 00000000 00000000
        00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
        00000000 00000000 00000000 00000000 dcc94280 c0221ddc dcc94280 d7ec0000
 Call Trace:
  [dev_seq_show+28/64] dev_seq_show+0x1c/0x40
  [seq_read+443/688] seq_read+0x1bb/0x2b0
  [vfs_read+237/352] vfs_read+0xed/0x160
  [sys_read+81/128] sys_read+0x51/0x80
  [syscall_call+7/11] syscall_call+0x7/0xb
 Code: 8b 50 58 89 54 24 48 8b 48 44 8b 50 40 01 ca 8b 48 50 01 ca
  <6>note: ifconfig[4077] exited with preempt_count 1
 bad: scheduling while atomic!
  [schedule+1221/1232] schedule+0x4c5/0x4d0
  [unmap_page_range+83/128] unmap_page_range+0x53/0x80
  [unmap_vmas+438/464] unmap_vmas+0x1b6/0x1d0
  [exit_mmap+133/368] exit_mmap+0x85/0x170
  [mmput+101/144] mmput+0x65/0x90
  [do_exit+348/1056] do_exit+0x15c/0x420
  [do_page_fault+0/1389] do_page_fault+0x0/0x56d
  [die+249/256] die+0xf9/0x100
  [do_page_fault+478/1389] do_page_fault+0x1de/0x56d
  [proc_read_inode+23/64] proc_read_inode+0x17/0x40
  [buffered_rmqueue+245/464] buffered_rmqueue+0xf5/0x1d0
  [buffered_rmqueue+245/464] buffered_rmqueue+0xf5/0x1d0
  [find_get_page+45/96] find_get_page+0x2d/0x60
  [__alloc_pages+784/880] __alloc_pages+0x310/0x370
  [vsnprintf+598/1232] vsnprintf+0x256/0x4d0
  [do_page_fault+0/1389] do_page_fault+0x0/0x56d
  [error_code+45/56] error_code+0x2d/0x38
  [dev_seq_printf_stats+35/240] dev_seq_printf_stats+0x23/0xf0
  [dev_seq_show+28/64] dev_seq_show+0x1c/0x40
  [seq_read+443/688] seq_read+0x1bb/0x2b0
  [vfs_read+237/352] vfs_read+0xed/0x160
  [sys_read+81/128] sys_read+0x51/0x80
  [syscall_call+7/11] syscall_call+0x7/0xb

~まーとりあえず<Kernel panic>ってのは出てないので、いきなり止まることはない。普通に操作できる。これがでても、ドライバは動く。
~なんか出なくなった?みたい…。spinlock初期化してない奴があったので、初期化するようにした(当たり前!)。NULL pointer渡してるじゃん… XD
**Firmware Debug Command [#k055c8e0]
-KSCのファームウェアに実装されてるデバッグコマンド。どのファームも機能は、だいたい同じ。結構なんでもできちゃいます。隠しコマンドもたくさんあるらしい…

 KS2970 11b MAC
 2970-PCMCIA-0.26 [Feb 09 2005  14:35:09]
 2970PC>?
         ?                                       help
         D(B/W/D) (start), (end)                 memory dump
         W(B/W/D) addr, data                     memory write
         R(B/W/D) addr                           memory read
         BB[R/W/D/I]                             Baseband access
         CH (number)                             RF ch(1..14)
         E[R/W/D/CL]  (addr), (data)             eeprom access
         HOST                                    Host i/f
         MAC                                     MAC inf
         MACADDR                                 mac address
         MPL                                     pool
         PHY                                     PHY inf
         RATE (1/2/5/11)                         Tx rate
         SM                                      staion inf
         TIM                                     timer
         TX                                      frame tx debug
         VER                                     version
-よく使うコマンド
--host : MAC-HOST I/F 部分の情報がみれる 
--hostt : MAC-HOST 間でやり取りしたデータの履歴がみれる(一部)
--sm : station management の情報がみれる
-シリアルポート設定 38400 8N1 flow-control none 

**Linux Network Device [#h57dd48b]
-今こんなです。MACアドレスこのままで大丈夫かな?
 # ifconfig eth1
 eth1      Link encap:Ethernet  HWaddr 12:FF:FF:FF:FF:FF
           BROADCAST MULTICAST  MTU:1500  Metric:1
           RX packets:0 errors:0 dropped:0 overruns:0 frame:0
           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
           collisions:0 txqueuelen:100
           RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
           Interrupt:11 Base address:0x100
                                                                                                  

**Linux Driver 設計 [#s101ca70]
~せっかく新規で書くので、きちんと設計したい。(時間ないけど…) やっぱ設計は大事ですよ。アホな設計のクサレcodeは、読みにくいし修正もしにくい。後々の自分自身の為にもキチンと設計したいね。KSCのドライバの場合、モジュールとして分けるなら、デバイス依存部分(MAC CHIPのI/F)、MAC-HOST I/F Protocol 部分、あと、network_device I/F 部分ってとこかな。愚痴なんですけど、いつもWindowsのNDISドライバとか提供してもらってるのだが、もうちょっと他のOSにポーティングすること、考えて書いてほしいよな…。あんまり参考になんないんだよね。そういう俺も思いっきりCPU依存なCODEを書いていますけど…。少なくともBigEndianなCPUじゃ絶対動かない…。
-Device I/F module
~今回は、KS2101というMACチップを仕様する。I/FはPCMCIA、デバイスとのI/F部分はもちろん、pcmcia-cs のI/Fもこのモジュールに含む。レイヤ的に言えば、最下層
 ks2101.h (KS2101のレジスタ定義、チップ固有の定数、マクロ等を定義)
 ks2101.c (基本的に、デバイスとのデータのやり取りを行う)
 ks29xx_cs.c (pcmcia-cs 関連のサービス処理)
-MAC-HOST I/F module
~MACとHOSTの通信仕様部分。デバイスに依存するわけではないので、できるだけ汎用性を持たせて作りたい。11a、11bでも基本的には、あまり変わらない。MACからのデータを解析し、上位にあげたり、MACへ送るデータを作成したりする。レイヤ的には、真ん中。
 ks_hostif.h
 ks_hostif.c
-Network I/F module
~ネットワークデバイスとしての処理を担当。socketからのデータを処理したり、ネットワークデバイスのUP/DOWN、ユーザーアプリケーションI/Fのioctlなんかの処理。レイヤ的には、最上位。
 ks29xx_net.c
 ks29xx_ioctl.h
-その他
 ks_debug.h (デバッグモジュール)
 ks_debug.c (デバッグモジュール)
 ks29xx.h (デバイスに依存しない部分の全体的な定義)

-make target(↓な感じで、2つとする。PCMCIAサービス部分とその他。なぜって他のdriver見るとこんな感じになってるので…)
 TARGET = ks29xx_cs.o ks29xx.o
 ks29xx.o: ks2101.o ks29xx_net.o ks29xx_ioctl.o ks_hostif.o ks_debug.o
	 $(LD) -r $^ -o $@
**Linux Driver Loading [#b47fe128]
~PC card service(cardmgr) にドライバをロードしてもらいたい場合、PCMCIA Card Configuration DataBase file の "/etc/pcmcia/config"に記述しておく。このファイルはadd-on driver用に"/etc/pcmcia/*.conf"も読み込むようになっているので、"/etc/pcmcia/hoge.conf"を作成し設定を記述しておいてもOK。DataBase fileを読み込ませるには、PC card serviceの再起動が必要。
-とりあえず実験
--ks29xx.conf
 #
 # PCMCIA Card Configuration Database
 # for ks29xx_cs
 # ks29xx.conf
 #
 
 #
 # Device driver definitions
 #
 
 device "ks29xx_cs"
   class "network" module "ks29xx_cs"
 
 #
 # Wireless network adapters
 #
  
 card "KeyStream KS2916 Wireless LAN PC Card"
   manfid 0x005b, 0xf000
   bind "ks29xx_cs"

--before log (なにも設定してない)
 cardmgr[544]: unsupported card in socket 1
 cardmgr[544]:   product info: "KeyStream Corp.", "KS2101", "", ""
 cardmgr[544]:   manfid: 0x005b, 0xf000  function: 6 (network)
--after log(/etc/pcmcia/ks29xx.conf作成&サービス再起動)
 cardmgr[1348]: socket 1: KeyStream KS2916 Wireless LAN PC Card
 cardmgr[1348]: executing: 'modprobe ks29xx_cs'
 cardmgr[1348]: + modprobe: Can't locate module ks29xx_cs
 cardmgr[1348]: modprobe exited with status 255
 cardmgr[1348]: module /lib/modules/2.4.20-31.9/pcmcia/ks29xx_cs.o not available
 cardmgr[1348]: get dev info on socket 1 failed: Resource temporarily unavailable
 cardmgr[1348]: executing: 'modprobe -r ks29xx_cs'
 moduleをloadしようとして失敗して止まっている。成功!!。
 ちゃんとDataBase file の内容が反映されてます。

**Linux Driver 検討項目 [#f872e1fb]
+"Hotplug firmware loading support (EXPERIMRNTAL)"のカーネルオプションでMAC firmwareのロードはできる?
 Hotplugは、USB,1394,PCI(CardBus)関係の機能なので、PCMCIAじゃ無理?
 このオプションがカーネルのコードに入ったのは、2.4.23以降。
 include/linux/firmware.h
 lib/firmware_class.c
+wireless-toolsについて
 wireless-toolsは、現在一部の機能しかサポートしていない。(iwconfig)
 iwconfig
 iwevent
 iwgetid
 iwlist
 iwpriv
 iwspy
+WPA(Wi-Fi Protected Access)について
 なんか仕様書読むと、この機能がはいっているみたいだなー。
 やっぱサポートしなきゃいけない?よね〜。
+サポートするカーネルバージョンについて
 CardBusのときは、CardBusデバイスのサポートが2.4以降だったから、
 あまり考えなかったが、PCMCIAの場合どうなのでしょ?
 PCカードのサポートが入ったのはいつ?
 2.4からだっけ?じゃ、2.4系と2.6系ってことでいいのかな?
 いまどき2.2系使ってますとかいう奴は、いないだろ…
-なんか急ぎ(3/20? 3末?)らしいので、基本的には現状維持!とする。 っていうかある程度でも動くものができるかも怪しい…。
-結論(時間がないし、β版でいいらしい)
--とりあえずfirmware&設定ファイル(hoge.cfg)は、いままで通りとする
--WPAは常に無効(サポートしない)。のちにサポートをすることを考えて書く。いつサポートするかわからんけど…
--ioctl関係の修正(wireless-tools関係)は、時間があったらやりたい。最低iwconfigでパラメータを変えれるようにする。特殊な、ioctlの実装は、後回しとする。(だってβ版だし…)
--カーネルは、2.4ベースで開発し、2.6でも動作の検証はする。
--もちろん通信ができることが前提。あと、無線パラメータを変えることができること。これで、十分でしょ!

** KS2916 [#b78590eb]
-KS2101を使ったIEEE802.11b無線LANシステム開発キット
--たくさんI/Fが付いてる。
 ボードインターフェース
 ・ KS2821/22/30RF モジュール用コネクタ
 ・ PC カード (34 ピン×4/Sycard 社PCC extend 120 対応)(16bit Slave 接続共用)
 ・ SD カード(16 ピン/Sycard 社SD extend 300 対応)
 ・ USB (Type-A コネクタ(メス)) (*2)
 ・ RS232-C (D-sub 9 ピン/オス)(高速UART)
 ・ PCM Codec/Stereo Codec インターフェース(I2S インターフェース共用)
 ・ I2C インターフェース
 ・ 機能拡張設計用コネクタ(AMP 5-179009-8/160 ピン) (*2)
 ・ JTAG(20 ピン)
 ・ 8bit-GPIO
 ・ KS2101 動作確認用テストピンパッド
 ・ 電源ON/OFF 確認用LED×3
 ・ 各部動作確認用LED×24
 ・ 各種設定用スイッチ 
 その他
 ・ 5V AC アダプタ電源 (ジャンパ設定によりPC カード、SD カードからの電源供給も可能。(*3))
 ・ Flash ROM(4Mbit)搭載
 ・ SRAM(4Mbit)搭載
 ・ EEPROM(I2S)搭載
 ・ USB ドライバIC(OKI ML60842)搭載 (*2)
 (*2) オプション。詳細はお問い合わせ下さい。
 (*3) ホスト側の電源容量にご注意下さい。

-CIS 情報
 # dump_cis
 Socket 0:
   no CIS present
  
 Socket 1:
   dev_info
     NULL 0ns, 512b
   vers_1 5.0, "KeyStream Corp.", "KS2101", "", ""
   manfid 0x005b, 0xf000
   funcid network_adapter
   lan_technology wireless
   lan_speed 1 mb/sec
   lan_speed 2 mb/sec
   lan_speed 5 mb/sec
   lan_speed 11 mb/sec
   lan_media 2.4_GHz
   config base 0x0200 mask 0x027f last_index 0x05
   cftable_entry 0x05 [default]
     Vcc Vmin 3130mV Vmax 3470mV Iavg 300mA Ipeak 300mA
     Idown 10mA
     io 0x0000-0x003f [lines=6] [16bit]
     irq mask 0xffff [level] [pulse]

** KS2101 [#ka28de73]
-KS2101
~IEEE802.11b対応の BaseBand&MAC チップ。16Bit PC Card I/F のほかに、SDIO I/F も持っている。ARM7内臓。低消費電力。
 ・ KS2101 BB/MAC (Base Band / Media Access Controller)
  ARM7TDMITM 搭載
  低消費電力
  44MHz/22MHz/5.5MHz/1.375MHz/32.768kHz クロック動的切り替え
  IEEE802.11b 準拠1/2/5.5/11Mbps 対応
  IEEE802.11b DSSS 準拠
  64bit/128bitWEP、TKIP、AES 対応
  Short プリアンブル対応
  アンテナダイバーシチ
  PC カードインターフェース搭載(16bit Slave 接続共用)
  SD カードインターフェース搭載
  高速UART インターフェース搭載
  PCM Codec/Stereo Codec インターフェース搭載(I2S インターフェース共用)
  I2C インターフェース搭載
  JTAG インターフェース搭載
  8bit-GPIO 搭載
  内蔵マスクROM (32kByte)
  内蔵SRAM (96kByte)
-KS2100
~IEEE802.11b対応の BaseBand&MAC チップ。KS2101と互換はないらしい。これにはSDIOはない。ARM7内臓。低消費電力。

-ついでにRFチップ情報
 ・ KS2022/23/30 RF (2.4GHz RF コンバータ/シンセサイザ)
  シングルチップ・トランシーバ
  高リニアリティー
  低雑音指数
  低消費電力
  リニアゲイン制御スロープ
  パワーマネージメント/スタンバイモード
  2.7〜3.3V 単一電源
  パワーアンプ用プリドライバ内蔵 (KS2023)
  RF VCO 内蔵 (KS2023/30)
  パワーアンプ内蔵 (KS2030)
  ダイレクト・ダウンコンバージョン方式 (KS2030)


トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS