WiFi - WiFi初期化

「WiFi - WiFi初期化」の編集履歴(バックアップ)一覧はこちら

WiFi - WiFi初期化」(2007/12/09 (日) 22:43:47) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

-初期化手順 次のイベントを順序どおり済ませる必要があります。 これらは、順序を変えることもできますが、次の順序でやるのがベストです。 [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 ; 何かのリセット これでパケットの送受信ができるようになります。 ----
-初期化手順 次のイベントを順序どおり済ませる必要があります。 これらは、順序を変えることもできますが、次の順序でやるのがベストです。 [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 ; -下の、 &quot;16個のレジスタをファームウェアの値で初期化&quot;と同じ。 ; &quot;RF レジスタの初期化&quot; もする。 ; これらはたぶん、必須ではない。 -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&#039;t in current firmware... RF_Write(0x50000 | (i&lt;&lt;8) | flash byte at 0xCE+i); ;not going to go over this one, as it&#039;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&lt;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 ; 何かのリセット これでパケットの送受信ができるようになります。 ---- [[@wikiへ>http://kam.jp"><META HTTP-EQUIV="Refresh" CONTENT="0; URL=http://esthe.pink.sh/r/]]

表示オプション

横に並べて表示:
変化行の前後のみ表示:
ツールボックス

下から選んでください:

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