FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

(大昔の)ThinkPad にRISC-V実験環境を構築したが、HiFive1の調子がおかしい(続き)

HiFive1の試行を引き続き行っているが、たぶんこれ誰も大規模なプログラム流したことないのかな、というのが分かってきた(気がする)。

一枚目のボードを壊してしまったぽいのだが、2枚目のボードもちょっと大きめに配列を取ってコンパイル後、流したら不正終了。そして次回以降バイナリの焼き込みを受け付けなくなってしまった。やばい!

書き込もうとしていたのは以下のバイナリ。注意!これ書き込むとHiFive1フリーズして動かなくなります!

github.com

だいぶプログラムを削りまくって、以下くらいにしてみた。L1キャッシュに入らない程度のプログラムだと、スタックを使いつぶした挙句、変なところに書き込むっぽい?

#define INPUTNO  (28*28)    // No of input cell
#define OUTPUTNO (10)
#define HIDDENNO (50)    // No of hidden cell
#define ALPHA    (10)   // Coefficient of learning
#define SEED     (65535)  // Seed of random
// #define MAXINPUTNO (60000)  // Max number of learning data
#define MAXINPUTNO (100)  // Max number of learning data
#define BATCH_SIZE (100)
#define LEARNING_RATE (0.1)
#define WEIGHT_INIT (0.01)

int main ()
{
  fix16_t wh0[INPUTNO * HIDDENNO];
  fix16_t wb0[HIDDENNO];

  fix16_t wh1[HIDDENNO * OUTPUTNO];
  fix16_t wb1[OUTPUTNO];
...

試行錯誤するうちに、どうやらリセットボタンを何度も押していると復旧するタイミングがある様子。 そのタイミングで別のシンプルなプログラム(helloとかled_fadeとか)を書き込むと復旧する。

これ、マイコンボードとしてはだいぶ危ういな。。。気を付けて使わないと。。。

f:id:msyksphinz:20170721230657j:plain