Avalon6

提供: tezos-wiki
2018年4月12日 (木) 16:42時点における153.213.63.107 (トーク)による版
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
移動先: 案内検索

目次

基本情報[編集]

  ハシレート:3.5Ths±5%   消費電力:≈1050ワット(90%の電力変換率を仮定)   オーバークロック:サポートは自動的に周波数を最適化し、手動でオーバークロックする必要はありません。   PSU出力ピン:4 x 6PIN PCIe電源コネクタ。   コントローラ:Raspberry Pi(バージョンBまたはB +)Raspberry Pi 2はまだサポートされていません。   AUC:各AUCは、最大6つのデバイスに接続できます。   寸法:340 mm x 136 mm x 150 mm   動作温度:-10℃〜38℃   ファン仕様:12038、電流2.4A未満   保護度:IP20   正味重量:4.8kg   総重量:5kg

写真[編集]

コントロールボード[編集]

なし| 640 px

  • NCは接続しないことを意味します

ファン&温度制御アルゴリズム[編集]

  • RPiファームウェア20160530

  なし| 640px

  • RPiファームウェア20160125

  なし| 640px

LED[編集]

Avalon6 LED[編集]

+ -

! LEDステータス !メモ

- valign = "top" 電源オン - valign = "top" 正常に働く - valign = "top" 黄色い点滅 正常にアイドル - valign = "top" 緑色の点滅 ファンとMCUを検出する - valign = "top" 白い点滅 LEDを手動でオンにする - valign = "top" 赤い点滅 Toohot / Loopback failed / PG failed / Coretest failed /電圧エラー/温度センサーエラー/ファンなし

AUC2 LED[編集]

+ -

! LEDステータス !メモ

- valign = "top" 通常の初期化またはアイドル - valign = "top" 正常に働く - valign = "top" 通信に失敗しました

IIC[編集]

File:IIC_Link_Avalon6.png

MMエラーコード[編集]

'ここにクエリ</ span>'

-

!コード !名 !タイプ !メモ !何をすべきか

- valign = "top" 1 CODE_IDLE 警告 アイドル ネットワークが正常かAUCが正常に動作しているかどうかを確認する - valign = "top" 2 CODE_TOOHOT 致命的 熱すぎる ファンが正常に接続されているかどうかを確認する - valign = "top" 4 CODE_LOOP0FAILED 致命的 チャネル0のループバックに失敗しました PG0が正常であれば、チャンネル0の新しいハッシュユニットを置き換える - valign = "top" 8 CODE_LOOP1FAILED 致命的 チャネル1のループバックに失敗しました PG1が正常であればチャンネル1の新しいハッシュユニットを置き換える - valign = "top" 16 CODE_INVALIDMCU 致命的 MCUを検出することはできません 新しいCTRLボードを交換する - valign = "top" 32 CODE_NOSTRATUM 警告 階層なし ネットワークが正常かAUCが正常に動作しているかどうかを確認する - valign = "top" 64 CODE_RBOVERFLOW 警告 Nonceリングバッファオーバーフロー それを無視してください、もしCGMinerが再起動すればOKです。 - valign = "top" 128 CODE_MMCRCFAILED 警告 それを無視してください、もしCGMinerが再起動すればOKです。 iic rx crcの不一致を見つける - valign = "top" 256 CODE_MCUCRCFAILED 警告 mcu rx irc mismatchを検索 それを無視してください、もしCGMinerが再起動すればOKです。 - valign = "top" 512 CODE_NOFAN 致命的 ファンが見つかりません ファンの接続を確認する - valign = "top" 1024 CODE_PG0FAILED 致命的 チャネル0パワーグッドが失敗しました チャネル0のPSUを確認する - valign = "top" 2048 CODE_PG1FAILED 致命的 チャネル1のパワーグッドが失敗しました チャネル1のPSUを確認する - valign = "top" 4096 CODE_CORETESTFAILED 致命的 チャネル0またはチャネル1で不良チップを検出する ハッシュレートが低すぎる場合は、新しいハッシュユニットを交換するか、それ以外の場合は無視してください。 - valign = "top" 8192 CODE_ADC0_ERR 致命的 チャンネル0で温度センサーを検出できません チャネル0の新しいハッシュユニットを置き換える - valign = "top" 16384 CODE_ADC1_ERR 致命的 チャンネル1で温度センサーを検出することはできません チャネル1の新しいハッシュユニットを置き換える - valign = "top" 32768 CODE_VOL_ERR 致命的 MMは安全のために電圧で動作することを許可されていません マシンの別のPSUを変更する - valign = "top" 65536 CODE_LOCK 致命的 MMは復号化せずに実行することは許可されていません サービスに助けを求める - valign = "top" 131072 CODE_HOTBEFORE 警告 ToohotはMM上にあります それはちょうどトホートのメモです - valign = "top" 262144 CODE_APIFIFIFOWERFLOW 警告 API FIFOオーバーフローフラグ それはapi fifoの単なるメモです

TYPEの意味:    'WARN' "' - 潜在的に有害な状況を指定しますが、無視することができます。    '致命的' - おそらくAvalon6をクラッシュさせる非常に重大なエラーイベントを指定します。

ファームウェア[編集]

RPiファームウェア[編集]

20160726[編集]

  • サポートラズベリーパイ3モデルB
  • OpenWrtマスターブランチとの同期(cac971da)

20160530[編集]

  • CGMiner:オハイオを開催する際にハッシュレートを最適化するオプションを追加しました。
  • CGMiner:iicでAV4マイナー検出をサポート
  • CGMiner:avalon4_auc_xferを使用するとデータサイズをダブルチェック
  • CGMiner:ファンのオーバーシュートを避けるためにadjust_fanを更新する、ckolivasのおかげで
  • CGMiner:AvalonMiner 6のデフォルト目標温度を更新します(68℃〜65℃)
  • CGMiner:AUCで最大6台のマシンをサポート

20160125[編集]

重複アドレスの修正

  • GHSカウンタを更新して、鉱夫とmmの間のギャップを修正する
  • 新しいスマートスピードオプション(モード3)を追加し、デフォルトに変更します。
  • スキャンハッシュ時のmmカウントの更新

20151225[編集]

  • OpenWrt:15.05へのアップデート
  • OpenWrt:ラズベリーパイ2モデルBをサポート
  • LuCI:for 15.05ブランチとの同期(ab31abd244979d1ff234a15a4a3cf69ac1b73688)
  • CGMiner:ckolivasのマスターとの同期(5a456afbfa028162060afd66636b7cb266b35a53)
  • CGMiner:スマートスピードのオプションを追加する(MMバージョン> = 601512-xxxxxxxxのみサポート)

20151111[編集]

  • CGMiner:Avalon4ドライバでゼロ除算を修正
  • CGMiner:プールAPIの階層難易度を追加する
  • CGMiner:Avalon6のアップデートオプション
  • CGMiner:Avalon6用Avalon4ドライバでVol apiの表示を更新する
  • CGMiner:Avalon6のファンのアップデートを修正

CGMiner:Avalon6のターゲット温度の設定を更新する

  • LuCI:Avalon6の表示情報を更新する
  • LuCI:Avalon6のデバイス名を更新
  • LuCI:Avalon6のCGMiner設定を更新する
  • LuCI:AvalonテーマのCGMiner設定を更新する

20151031[編集]

複数の鉱夫のナンスカウンタを修正

  • CGMinerステータスでASICカウントをTAとして表示
  • Avalon4とAvalon6の最大難易度を更新する
  • Avalon6の温度チェックを更新
  • ハッシュレート比較のためのGHSmmの追加
  • Avalon6のPLL情報を表示する
  • Avalon6のデフォルトとしてナンスチェックを有効にする
  • オン電圧デコードを修正
  • Avalon6のデフォルトとして周波数を自動的に調整する
  • Avalon6のデコード電圧と温度デコード
  • Avalon6のエラーコードをサポート

20151001[編集]

  • Avalon6ファームウェアの最初のバージョン

NEXT-TESTING[編集]

  • 注意:テスト目的のみ

MMファームウェア[編集]

[1][編集]

  • バージョン: '601608-6dffde40'
  • アップデート:リードステータス更新

[2][編集]

  • バージョン: '601607-2a78bc90'
  • 修正:ハッシュレートのバグを50%オフ

2016-05-11[編集]

  • バージョン: '601605-256e0f00'
  • パフォーマンスを向上させるには、最低の階層プールの難易度は32以上にする必要があります
  • APIのオーバーフローをチェックする

ホット通知用にCODE_HOTBEFOREを追加する

  • 新しいパッケージAVA4_P_SET_FREQを追加する
  • サポートデバイスハードウェアエラー
  • 重複したシェアを修正
  • stratumファイルをlibに移動する
  • 更新時のチェック

2016-01-25[編集]

  • バージョン '601601-5d8a1270'
  • mmパッケージヘッダーの追加検証
  • 別のモジュール用に更新する
  • iicアドレスフリーメカニズムの更新
  • ファン回転数の更新を検出
  • 検出時に重複アドレスを修正
  • 固定周波数設定の原因がmmで失われた

[3][編集]

  • バージョン '601512-57532250'
  • 修正:mmが熱すぎるとファンがマイナーに触れないようにする
  • 修正:トホト検出、階層検出、および無効なMCU保護によるアイドルプロセスの更新
  • 修正:誤ったpll設定によってcoretestが失敗した原因を修正しました。
  • アップデート:API_TIMEOUT_CONSTを更新
  • 追加:mmが動作しているときにCGMinerで周波数を調整するサポート

[4][編集]

  • バージョン '601511-f4f59c70'
  • コアテストチェックルールを更新する
  • 入力電圧チェックルールを更新する(入力電圧は12.8Vを超えるべきではない)
  • テストスクリプトを実行したときの結果を修正

2015-11-11[編集]

  • バージョン '601511-e3d244c0'
  • 電圧レンジの検出を追加
  • ファンの極性を検出する際に最大回転数を確認する
  • 不良なntc抵抗の温度をチェック
  • MM起動時の電圧を確認する
  • パワーオン時のパワーグッド監視
  • 温度チェックの更新
  • ノンスプロセスの更新
  • 周波数テーブルを更新する
  • 競合アドレスを修正
  • デバッグ用に25MHzのクロックを有効にする
  • プロセスがFREQ_WORKのときにマイナーが無効な場合は、pllを無効にする

[5][編集]

  • バージョン '601510-afa837a0'
  • IICとUARTの通信を更新する
  • AVA4_P_TESTによるコアテストのサポート
  • ASIC_FREQMINを100MHzに更新
  • LOOPBACKでASICカウントを検出
  • i2c FIFOのオーバーフローによる修正の失敗
  • タイマー機能の更新
  • アドレスインジケータとしてGPIOを使用
  • PGまたはLOOPBACKが失敗した場合、常に無効なマイナーを無効にする
  • P_STATUS_MにPLLステータスを追加する
  • エラーコードを追加する
  • ADCキャプチャをサポート
  • MCUが検出できない場合はフリーランを保つ
  • リードステータスの更新
  • Cコードでブートローダを書き直す

[6][編集]

  • バージョン '601509-a2613610'

Avalon6.0 S用の最初のMMファームウェア

  • サポート2鉱夫
  • 起動時にasicカウントを検出する
  • ターゲットフィルターをサポート

NEXT-TESTING[編集]

  • 注意:テスト目的のみ

MCUファームウェア[編集]

[7][編集]

  • バージョン '6C1508-afa837a0'
  • adcおよび温度キャプチャ用には、MM protocal

AUC2ファームウェア[編集]

20151208[編集]

  • AUCバージョン: 'AUC-20151208'
  • 最初のリリース

[8][編集]

  • 注意:テストの場合のみ

ソフトウェア開発[編集]

コントローラーファームウェア[編集]

[9][編集]

Ubuntu 14.04でのCGMiner[編集]

  • ダウンロード&コンパイル

#git clone https://github.com/Canaan-Creative/cgminer #cd cgminer #git checkout origin / avalon4 -b avalon4 #./autogen.sh --enable-avalon4 #make -j 4

  • 実行
  1. AUCで実行

#; sudo ./cgminer --avalon4-freq 200 - avalon4-voltage 7125 -o http://stratum.pool:3333 -u work -p pass #;または #; sudo ./cgminer --avalon4-freq 200 - avalon4-voltage 7125 -o http://stratum.pool:3333 -u work -p pass --api-allow W:192.168.2、W:192.168。 2.1 --api-listen $ @ 2> ./ log #; #AUCとIICインタフェースで実行 #; sudo ./cgminer --avalon4-iic-detect - avalon4-freq 200 - avalon4-voltage 7125 -o http://stratum.pool:3333 -u work -p pass #;または #; sudo ./cgminer --avalon4-iic-detect - avalon4-freq 200 - avalon4-voltage 7125 -o http://stratum.pool:3333 -u work -p pass --api-allow W:192.168 .2、W:192.168.2.1 --api-listen $ @ 2> ./logA

周波数ステートチャート[編集]

  なし| 640px

MM[編集]

[10][編集]

Avalon6 TB2[編集]

 $ make -CファームウェアPLATFORM = MM60_TB2

Avalon6.0 S[編集]

 $ make -Cファームウェア

AUC2[編集]

[11][編集]

USBブートローダ[編集]

サポートUSB-DFUモード[編集]

 Ubuntu 14.04以降でdfu-utilを使用すると、AUC2の新しいファームウェアを更新することができます。

USB-DFUプロトコルの使用[編集]

+ DFUデバイス記述子</ big> </ big>

!オフセット!!フィールド!!サイズ!!値!!説明

- 0 bLength 1 12h この記述子のサイズ(バイト単位)。 - 1 bDescriptorType 1 01h DEVICE記述子タイプ。 - 2 bcdUSB 2 0100h バイナリコード10進数のUSB仕様リリース番号。 - 4 bDeviceClass 1 00h インターフェイスを参照してください。 - 5 bDeviceSubClass 1 00h インタフェースを参照 - 6 bDeviceProtocol 1 00h インターフェイスを参照してください。 - 7 bMaxPacketSize0 1 8,16,32,64 エンドポイントの最大パケットサイズ。 - 8 idVendor 2 ID ベンダーID。 USB-IFによって割り当てられます。 - 10 idProduct 2 ID 製品番号。製造元によって割り当てられます。 - 12 bcdデバイス 2 BCD バイナリコード10進数のデバイスリリース番号。 - 14 i製造業者 1 インデックス 文字列記述子のインデックス。 - 15 製品 1 インデックス 文字列記述子のインデックス。 - 16 iSerialNumber 1 インデックス 文字列記述子のインデックス。 - 17 bNumConfigurations 1 01h 1つの構成はDFU専用です。


+ DFUインターフェース記述子</ big> </ big>

!オフセット!フィールド!!サイズ!!価値!!記述

- 0 bLength 1 09h この記述子のサイズ(バイト単位)。 - 1 bDescriptorType 1 04h INTERFACE記述子タイプ。 - 2 bInterfaceNumber 1 番号 このインタフェースの番号。 - 3 bAlternateSetting 1 00h 代替設定。ゼロでなければなりません。 - 4 bNumEndpoints 1 00h コントロールパイプのみが使用されます。 - 5 bInterfaceClass 1 FEh アプリケーション固有のクラスコード。 - 6 bInterfaceSubClass 1 01h デバイスファームウェアアップグレードコード。 - 7 bInterfaceProtocol 1 01h ランタイムプロトコル。 - 8 iInterface 1 インデックス このインタフェースの文字列記述子のインデックス。


+ DFU機能記述子</ big> </ big>

!オフセット!フィールド!!サイズ!!価値!!記述

- 0 bLength 1 09h この記述子のサイズ(バイト単位)。 - 1 bDescriptorType 1 21h DFU FUNCTIONAL記述子タイプ。 - 2 bmAttributes 1 ビットマスク DFUの属性

ビット7 ...... 4:予約

ビット3:デバイスは、DFU_DETACH要求を受信したときにバス切り離しシーケンスを実行します。ホストはUSBリセットを発行してはいけません。 (bitWillDetach)

0 =いいえ

1 =はい

Bit 2:デバイスはUSB経由で通信できます。表示フェーズ(bitManifestationTolerant)

0 =いいえ、バスリセットが必要です。

1 =はい

Bit1:アップロード可能(bitCanUpload)

0 =いいえ

1 =はい

Bit0:ダウンロード可能(bitCanDnload)

0 =いいえ

1 =はい

- 3 wDetachTimeOut 2 番号 デバイスがDFU_DETACH要求の受信後に待機する時間(ミリ秒単位)。この時間がUSBリセットなしで経過すると、デバイスはリコンフィギュレーションフェーズを終了し、通常の動作に戻ります。これは、デバイスが待機できる最大時間(タイマーなどによる)を表します。ホストは、DFU_DETACH要求でより短いタイムアウトを指定することがあります。 - 5 wTransferSize 2 番号 デバイスが制御書き込みトランザクションごとに受け入れることができる最大バイト数。 - 7 bcdDFUVersion 2 BCD DFU仕様リリースのバージョンを識別する数値式。


+ DFUモードインタフェース記述子</ big> </ big>

!オフセット!フィールド!!サイズ!!価値!!記述

- 0 bLength 1 09h この記述子のサイズ(バイト単位)。 - 1 bDescriptorType 1 04h INTERFACE記述子タイプ。 - 2 bInterfaceNumber 1 番号 このインタフェースの番号。 - 3 bAlternateSetting 1 00h 代替設定。ゼロでなければなりません。 - 4 bNumEndpoints 1 00h コントロールパイプのみが使用されます。 - 5 bInterfaceClass 1 FEh アプリケーション固有のクラスコード。 - 6 bInterfaceSubClass 1 01h デバイスファームウェアアップグレードコード。 - 7 bInterfaceProtocol 1 02h DFUモードプロトコル。 - 8 iInterface 1 インデックス このインタフェースの文字列記述子のインデックス。

USB-DFU製品のUSBディスクリプタ[編集]

File:USB-DFU Descriptor.png

DFU Updataプロセス図[編集]

File:UpdataProcess.png

プログラムまたはアプリケーションプログラムの更新裁判官[編集]

 私は4バイトのワードであり、修正されたフラッシュアドレス(0x8000 - 4)で書かれたupdataフラグを使用しました。

 フラグの値は0xAABBCCDDです。

 ブートローダプログラムが実行されると、まずupdataフラグが判断され、updata falgが0xAABBCCDDでなければ、アプリケーションプログラムにジャンプします。  それ以外の場合は、updataプログラムに実行されます。

アプリケーションプログラムにジャンプ[編集]

 アプリケーションプログラムを更新したくない場合は、ブートローダープログラムをアプリケーションプログラムに実行する必要があります。

 この目標を達成するために、ブートローダープログラムにコードの下に追加することができます。

 0x4000は私のアプリケーションプログラムのMSPポイントですが、あなたはそれに合わせて変更する必要があります。 asm volatile( "ldr r0、= 0x4000"); </ font>あなたの "</ font>   asm volatile( "ldr r0、[r0]"); </ font>   asm volatile( "mov sp、r0"); </ font>        0x4004はアプリケーションプログラムのリセット機能エントリアドレスですが、変更する必要があります。 asm volatile( "ldr r0、= 0x4004"); </ font>それはあなたの "</ font>   asm volatile( "ldr r0、[r0]"); </ font>   asm volatile( "mov pc、r0"); </ font>

dfu-utilをUbuntu 14.04用に変更する[編集]

 #あなたのホームディレクトリの中で、dfu-utilをダウンロードしてください

 git clone git://git.openezx.org/dfu-util.git

 cd dfu-util

 wget https://raw.githubusercontent.com/Johnson-Fan/Avalon-USB-converter/master/patches/001-add-milli_sleep.patch

 パッチ-p0 <001-add-milli_sleep.patch

 ./autogen.sh

 ./configure

 作る

 結果のバイナリはdfu-util / src / dfu-utilです。

AUC2ファームウェアでDFUを追加[編集]

AUC2ファームウェアのフラッシュとRAMアドレスの変更[編集]

 1.ブートローダのサイズが0x4000であるため、フラッシュの開始アドレスを0x4000に変更します。
 2. RAMの開始アドレスを0x10000200に変更します。これは、NVICテーブルをRAM 0x10000000に再マップするためです。     NVICテーブルのサイズは0x200バイトです。
 3. * .ldファイルを変更します。私の* .ldファイルはavalon-usb-converter.ldです。あなたの* .ldファイルを見つけることができます。 :{| class = "wikitable" border = "1" | - ! 変更前</ big> ! 変更後</ big> | - |メモリ {     / *各メモリ領域を定義する* /

    MFlash32(rx):ORIGIN = 0x0、LENGTH = 0x8000 / * 32Kバイト* /     RamLoc4(rwx):ORIGIN = 0x10000000、LENGTH = 0x1000 / * 4Kバイト* /     RamUsb2(rwx):ORIGIN = 0x20004000、LENGTH = 0x800 / * 2Kバイト* / }     / *各メモリ領域の先頭のシンボルを定義する* /

__top_MFlash32 = 0x0 + 0x8000;     __top_RamLoc4 = 0x1000000 + 0x1000;     __top_RamUsb2 = 0x20004000 + 0x800; |メモリ {     / *各メモリ領域を定義する* /

    MFlash32(rx):ORIGIN = 0x4000、LENGTH = 0x4000 / * 16Kバイト* /     RamLoc4(rwx):ORIGIN = 0x10000200、LENGTH = 0xe00 / * 3.5Kバイト* /     RamUsb2(rwx):ORIGIN = 0x20004000、LENGTH = 0x800 / * 2Kバイト* / }     / *各メモリ領域の先頭のシンボルを定義する* /

    __top_MFlash32 = 0x4000 + 0x4000;     __top_RamLoc4 = 0x10000200 + 0xe00;     __top_RamUsb2 = 0x20004000 + 0x800; |}

NVICテーブルを再マップ[編集]

 1.プログラムの下に機能コードを追加します。

    / * nvicテーブルをramにコピーする* /     static void copy_nvic_to_ram(void)     {         volatile uint32_t * dst、size;         volatile const uint32_t * src;
        src =(volatile uint32_t *)APP_START_ADDR; // APP_START_ADDRアプリケーションプログラムの開始アドレスです。         dst =(volatile uint32_t *)RAM_START_ADDR; // RAM_START_ADDR RAM開始アドレスです。         size = NVIC_TABLE_LEN >> 2; // NVIC_TABLE_LENはNVICテーブルのサイズです。         行う {             * dst ++ = * src ++;         } while(--size);
        / * NVICがRAMにマップする* /         Chip_SYSCTL_Map(0x01);
    }

 2. NVICテーブルをRAMに再マップするためのレジスタの設定 :なし| 640px   詳細UM10462 LPC11U3x / 2x / 1xユーザーマニュアルを参照してください。</ big> </ big>

問題点[編集]

1。ブートローダUSBディスクリプタについて:</ big>  DFU機能記述子のwTransferSizeサイズに注意してください。これは、USBD_DFU_INIT_PARAM_TのwTransferSizeと等しくなければなりません。 2。 IAP送信データサイズについて</ big>  データサイズは、256または512または1024または4096バイトである必要があります。 3。 IAP送信データアドレスについて</ big>  データアドレスは256バイト境界でなければなりません。 3。時にはアップデータが失敗する理由</ big>  今、私は本当の理由を見つけませんでした。しかし、私は理由は、通信の時間が正しくないと思う。 3。なぜ時々updataは終了しましたが、プログラムは正常に動作しませんか?</ big>  私はフラッシュアドレスを確認していないと思うし、データアドレスは正しいです。
 私はプログラムで小切手を後で追加します。

参考文献とリンク[編集]

TODO[編集]

#OpenWrtブランチをマスタにアップグレードする #OpenWrtパッケージのcgminerパッケージをコミットする


CGMiner[編集]

MM[編集]

既知の問題[編集]

#MMは、不一致のファームウェアによってアップグレードできます。 #ローカルハッシュレート(GHS av)はプールのハッシュレートと一致しません

FAQ[編集]

1.赤い点滅機械をどう扱うか?   なし| 640px 2.マシンやハッシュボードを安全に起動するには?   なし| 640px 3. AUCは常にCGMinerの状態で表示され、消えますか?   恐らく破損しているかもしれない代わりに新しいものを取ってください。