PIC32用 Harmony がバグ祭りについて

PIC32

harmony Ver2.0bを使ってみました。べータまでできているので、いまさらVer1.xx系を試してみる気はおきません。

xc32-gcc.exe: error: ../../../../framework/driver/sdcard/src/dynamic/drv_sdcard.c: No such file or directory

初めてのコード生成で「No such file or directory」が出まくりです。使い物になりません。ネットワークドライブを使っているせいでしょうか?

nbproject/Makefile-default.mk:315: recipe for target ‘build/default/production/_ext/185269848/drv_tmr.o’ failed
周辺機能すらエラーです。

ちなみに、Harmonyはインストールは他に作ったプログラムフォルダにインストールします。インストールした中にプロジェクトを作ります。別の場所に作ると「../../../../framework/driver/」の「../../../../」が大変なことになるか、プロジェクト自体を作る事が出来ません。

結局未だに全部フルスクラッチして、古いMLAのサンプルを書き換えてSD-CARDなのプログラムを書くことになります。


PIC32MX470F512L-I/PFを買いました。

とりあえずプログラムキャッシュの設定が分からなかったのでHarmonyを使ってみました。

当初16本のピンが並んだポートが無いと勘違いして(実は1つありました。更にもう一つありますが、PICKIT3を繋ぐので使えません。)「PARALLEL MASTER PORT (PMP)」を使うようにプログラムをジェネレートしてみました。

16ビットバスで更にWrite StrobeとRead Strobeを使えます。

ここで自動生成したプログラムにバグがあります。2つの機能ピンのactive-highとactive-lowの設定が入れ代わっています。なので、Write Strobeピンだけを使う設定にするとRead Strobeのコードが生成されないため、初期化コードのWrite Strobeの引数が有りません。

手動で書き換えてもダメです。もう1回ジェネレートすると、消えてなくなります。

次、キャッシュウェイトステートの設定。120MHzで動くのですが、80MHzまでしか対応していないコードが生成されます。

次、SDカードのプログラムジェネレート。何故かタイマーが有効になります。何に使っているのかバグだらけで追いかけていませんが、コードが生成されています。更にタイマーは5個しかないのに、9個の中から選べます。

SDカードの構造体初期化コードにはSPIが2つあるのでどれを使うか引き数が入りますが、ここも空欄でエラーです。

次、SDカードのCD(カードディテクト)。対応していません。多分ソフトウェアでコマンドを送ってみて反応があれば有りと判断するのでしょう。ですが、構造体にはCDビットを入力するポートが配列に実装されています。作りかけでリリースしたと思われます。

次、「Peripheral Pin Select」使えない場所を設定できてエラーです。

次、ハードウェア初期化とドライバ初期化2つに分かれていますが、生成されたコードにはドライバ初期化が2回されています。

次、何をしたらバグるのか、何度かプロジェクトを作り直して調べていたのですが、自動ジェネレートしたとき1度だけどこが変化したかdiffが出ました。1回だけです。基本的には実装されているが、ほとんどの場合機能しないと言う事でしょうか。

その他一杯ありましたが、忘れました。

要するに全部バグが出て、書き直しても機能を追加でジェネレートしたら、全部消えて元に戻ります。

PIC32MZの話の記事にも書きましたが、このHarmonyって世界で何人使っているんでしょう。バグだらけですが使っている人口は殆どいないと思われるのでMicrochipの設計者しか情報を集める事が出来ませんねぇ。作っている本人も何が何だか分からなくなっていると思います。初期コードでいきなりバグだらけでよくリリースしたものです。

そしてこのバグ祭りの中、XC32には今までひたしまれていたplib.hはなくなりました。アセンブラも駆使して全部のレジスタを手書きです。作りました。

PIC32&XC32のplib.hを自作する

PIC32


PAGE TOP
Top