Avalon6
目次
基本情報[編集]
ハシレート: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
写真[編集]
コントロールボード[編集]
- NCは接続しないことを意味します
ファン&温度制御アルゴリズム[編集]
- RPiファームウェア20160530
- RPiファームウェア20160125
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[編集]
MMエラーコード[編集]
-
!コード !名 !タイプ !メモ !何をすべきか |
- 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
- 実行
- 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
周波数ステートチャート[編集]
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ディスクリプタ[編集]
DFU Updataプロセス図[編集]
プログラムまたはアプリケーションプログラムの更新裁判官[編集]
私は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
パッチ-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>
私はフラッシュアドレスを確認していないと思うし、データアドレスは正しいです。
私はプログラムで小切手を後で追加します。
参考文献とリンク[編集]
- LPCXpress IDEダウンロード
- DFUプロトコルの詳細を見る
- [12]
- USBD ROM Stack
- LPC11U1Xユーザーズマニュアル
- LPCOpen sourcecode
- LPCOpen docs
- LPC11U14 Rev A回路図
- [13]
- [14]
TODO[編集]
#OpenWrtブランチをマスタにアップグレードする #OpenWrtパッケージのcgminerパッケージをコミットする
CGMiner[編集]
MM[編集]
既知の問題[編集]
#MMは、不一致のファームウェアによってアップグレードできます。 #ローカルハッシュレート(GHS av)はプールのハッシュレートと一致しません
FAQ[編集]
1.赤い点滅機械をどう扱うか? なし| 640px 2.マシンやハッシュボードを安全に起動するには? なし| 640px 3. AUCは常にCGMinerの状態で表示され、消えますか? 恐らく破損しているかもしれない代わりに新しいものを取ってください。