WiFi - WiFi初期化


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

  • 初期化手順

次のイベントを順序どおり済ませる必要があります。
これらは、順序を変えることもできますが、次の順序でやるのがベストです。

 [4000304h].Bit1 = 1 ;POWCNT2  ; WiFiシステムの電源を有効にする
 W_MACADDR = firmware[036h]    ; 48bit Mac アドレスのセット
 reg[012h] = 0000h   ;W_IE     ; 割り込み無効

  • ワイヤレスシステムの起動 :

 reg[036h] = 0000h ;W_POWER_US   ;パワーダウンビットのクリア
 delay 8 ms                      ; (ディレイを入れる ?)
 reg[168h] = 0000h ;W_BBSIOPOWER ; /
 temp=BB[01h]                  ;
 BB[01h]=temp AND 7Fh          ; BB[01h].Bit7 のリセットと、以前のBB[01h]の値からリストア
 BB[01h]=temp                  ; 
 delay 30 ms                   ; -(ディレイを入れる)
 call init_sub_functions       ; -下の、 "16個のレジスタをファームウェアの値で初期化"と同じ。
                               ;  "RF レジスタの初期化" もする。
                               ;  これらはたぶん、必須ではない。

  • Mac システムの初期化 :
 reg[004h] = 0000h   - W_MODE_RST       ; ハードウェアモードのセット
 reg[008h] = 0000h   - ?                ;
 reg[00Ah] = 0000h   - ?                ; (RX フィルタ関連)
 reg[012h] = 0000h   - W_IE             ; もう1度割り込み無効
 reg[010h] = FFFFh   - W_IF             ; 割り込みの設定
 reg[254h] = 0000h   - ?                ; このポートは存在するのかどうか不明 ???
 reg[0B4h] = FFFFh   - ?                ;
 reg[080h] = 0000h   - W_BEACONTRANS    ; 自動ビーコン送信無効
 reg[02Ah] = 0000h   - ?                ; W_AID 関連?
 reg[028h] = 0000h   - W_AID            ; W_AID
 reg[0E8h] = 0000h   - W_US_COUNTCNT    ; マイクロ秒カウンタ無効
 reg[0EAh] = 0000h   - W_US_COMPARECNT  ; マイクロ秒比較無効
 reg[0EEh] = 0001h   - ?                ;
 reg[0ECh] = 3F03h   - ?                ;
 reg[1A2h] = 0001h   - ?                ;
 reg[1A0h] = 0000h   - ?                ;
 reg[110h] = 0800h   - ?                ;
 reg[0BCh] = 0001h   - ?                ; disable short preamble
 reg[0D4h] = 0003h   - ?                ;
 reg[0D8h] = 0004h   - ?                ;
 reg[0DAh] = 0602h   - ?                ;
 reg[076h] = 0000h   - W_BUF_WR_SKIP    ; ギャップ/スキップの無効 (オフセット=0)

  • 16 個のレジスタを Firmware[044h~063h] の値で初期化
 reg[146h] = firmware[044h] ;W_CONFIG_146h
 reg[148h] = firmware[046h] ;W_CONFIG_148h
 reg[14Ah] = firmware[048h] ;W_CONFIG_14Ah
 reg[14Ch] = firmware[04Ah] ;W_CONFIG_14Ch
 reg[120h] = firmware[04Ch] ;W_CONFIG_120h
 reg[122h] = firmware[04Eh] ;W_CONFIG_122h
 reg[154h] = firmware[050h] ;W_CONFIG_154h
 reg[144h] = firmware[052h] ;W_CONFIG_144h
 reg[130h] = firmware[054h] ;W_CONFIG_130h
 reg[132h] = firmware[056h] ;W_CONFIG_132h
 reg[140h] = firmware[058h] ;W_CONFIG_140h
 reg[142h] = firmware[05Ah] ;W_CONFIG_142h
 reg[038h] = firmware[05Ch] ;W_POWER_TX
 reg[124h] = firmware[05Eh] ;W_CONFIG_124h
 reg[128h] = firmware[060h] ;W_CONFIG_128h
 reg[150h] = firmware[062h] ;W_CONFIG_150h

  • RFレジスタの初期化
 numbits = BYTE firmware[041h]    ;通常 18h
 numbytes = (numbits+7)/8         ;通常 3
 reg[0x184] = (numbits+80h) AND 017Fh  -- W_RFSIOCNT
 for i=0 to BYTE firmware[042h]-1 ;number of entries (usually 0Ch) (0..0Bh)
  if BYTE firmware[040h]=3 { -- doesn't in current firmware...
   RF_Write(0x50000 | (i<<8) | flash byte at 0xCE+i);
   ;not going to go over this one, as it's not the case in present firmware.
  else
   RF_Write(numbytes flash bytes, starting at 0xCE + i*numbytes);
  endif

  • ベースバンドシステムの初期化
 (Firmware ブートコードで既にセットされているので必須ではない)
 reg[160h] = 0100h  ;W_BBSIOMODE
 for(i=0;i<0x69;i++) BB_Write( i, flash byte 0x64+i );

  • Mac アドレスのセット
 0x04800018 から始まるMAC アドレスに flash[0x36] の6バイトをコピー (なぜもう一度やるのかは不明)

  • いくつかのデフォルト値のセット
 reg[02Ch]=0007h  ;W_RETRLIMIT -- actually, needs to be set for every transmit
 Set channel (see section on changing channels)
 Set Mode 2 -- sets bottom 3 bits of W_MODE_WEP to 2
 Set Wep Mode / key -- Wep mode is bits 3..5 of W_MODE_WEP
 BB[13h] = 00h  ;CCA operation (use only carrier sense, without ED)
 BB[35h] = 1Fh  ;Energy Detection Threshold (ED)

    • To further init wifi to the point that you can properly send
    • and receive data, there are some more variables that need to be set.

 reg[032h] = 8000h -- W_WEP_CNT     ;Enable WEP processing
 reg[134h] = FFFFh --         ;reset millisecond counter related to beacons
 reg[028h] = 0000h -- W_AID   ;clear W_AID value
 reg[02Ah] = 0000h -- ?       ;(they just like setting it when they set W_AID)
 reg[0E8h] = 0001h -- W_US_COUNTCNT ;enable microsecond counter
 reg[038h] = 0000h -- W_POWER_TX    ;disable transmit power save
 reg[020h] = 0000h -- W_BSSID_0     ;\
 reg[022h] = 0000h -- W_BSSID_1     ;  BSSIDのクリア
 reg[024h] = 0000h -- W_BSSID_2     ;/

    • TX 準備

 reg[0AEh] = 000Dh -- W_TXCNT  ; 送信待ちのものをフラッシュ

    • RX 準備

 reg[030h] = 8000h    W_RXCNT         ; RX システム有効 (下でもう一度実行)
 reg[050h] = 4C00h    W_BUF_RD_BEGIN  ; (サンプル値)
 reg[052h] = 5F60h    W_BUF_RD_END    ; (長さ = 4960 bytes)
 reg[056h] = 0C00h/2  W_WRITECSRLATCH ; FIFO ラッチアドレス開始
 reg[05Ah] = 0C00h/2  W_RXREADCSR     ; FIFO end, same as begin at start.
 reg[062h] = 5F5Eh        last element of fifo (unclear if this is necessary)
 reg[030h] = 8001h    W_RXCNT  ; 有効, and latch new FIFO values to hardware


 reg[030h] = 8000h    -- W_RXCNT       受信有効 (again?)
 reg[010h] = FFFFh    -- W_IF          割り込みフラグクリア
 reg[012h] = whatever -- W_IE          割り込み有効
 reg[1AEh] = 1FFFh    -- W_STAT_OVF_IE select desired STAT Overflow interrupts
 reg[1AAh] = 0000h    -- W_STAT_INC_IE select desired STAT Increase interrupts
 reg[0D0h] = 0181h    -- W_RXFILTER set to 0x581 when you successfully connect
                          to an access point and fill W_BSSID with a mac
                          address for it. (W_RXFILTER) [not sure on the values
                          for this yet]
 reg[0E0h] = 000Bh  -- ?               ;
 reg[008h] = 0000h  -- ?               ; (もう一度?)
 reg[00Ah] = 0000h  -- ?               ; (related to rx filter) (again?)
 reg[004h] = 0001h  -- W_MODE_RST      ; ハードウェアモード
 reg[0E8h] = 0001h  -- W_US_COUNTCNT   ; マイクロ秒カウンタ有効 (もう1度?)
 reg[0EAh] = 0001h  -- W_US_COMPARECNT ; マイクロ秒比較有効
 reg[048h] = 0000h  -- W_POWER_?    ; [パワーセーブ機能の無効]
 reg[038h].Bit1 = 0 -- W_POWER_TX   ; [これも]
 reg[048h] = 0000h  -- W_POWER_?    ; [もう一度。これは必要なのかどうか分からない]
 reg[0AEh] = 0002h  -- W_TXCNT      ;
 reg[03Ch].Bit1 = 1 -- W_POWERSTATE ; queue enable power (RX 電源…だと思う)
 reg[0ACh] = FFFFh  -- W_TXOPT      ; 何かのリセット


これでパケットの送受信ができるようになります。





ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。