RX26T の PLL ベースクロック
は、ハードウェアーマニュアルでは、120 ~ 240MHz となっている。
しかし、240MHz を設定すると動作しない状況だった。
120MHz なら動作するので、まぁ問題無いかと思っていたが、やはり気になるので、ルネサス社のサポートに問い合わせていた。
色々、やりとりをした結果、スマートコンフィギュレーターでプログラムを生成して試して下さいとの事だった・・
まぁ、そうなるよなぁーと思っていたが、やはり原因は究明しておかないとと思った。
しかし、オレオレフレームワークがある程度動作する環境だと、結構億劫で、門外漢が強く後回しになっていたが、ようやく作業を始めた。
※E2Studio は起動が遅いし、プロジェクト全体の構成などが複雑で、出来れば触りたく無い。
スマートコンフィギュレーターが生成したプログラムを眺めていて、以下の部分に気がついた。
/* b19 to b16 should be set the same value as the ICK bit. */
tmp2_clock = tmp_clock;
tmp2_clock &= 0x0F000000;
tmp2_clock >>= 8;
tmp_clock |= tmp2_clock;
あっ・・・
ハードウェアーマニュアルを確認すると、予約ビットの扱いがひっそり書かれていた・・・
これは、罠だよなぁー・・・、そういえば、RX631でも同じような事があったよなぁー・・・
まぁ、自分のミスではあるのだが・・・
何でそこに気がつかなかったのか悔やまれる。
今回は、PLL ベースクロックが、228MHz なら動作していたもので、微妙な不具合で、デバイスの不良なのかと、ハードウェアーの問題だと思ってしまい、ソフトの問題に気が回らなかった。
今後、予約ビットの扱いは、最新の注意が必要だと痛感した・・・
※予約ビットに特定の値を設定する必要があるなら、「----」にしないで、特定の名称を割り当てるべきと思う。
GNU-RX 8.3.0 202305 バージョンの不具合?
RX26T では、TFUv2 が採用されている。
このサポートには、新しいコンパイラが必要と思われ、GNU-RX ツールチェインを最新にしておいた。
しかし、以下のオプションを使って、「cmath」 をインクルードした状態でコンパイルすると、エラーが出る・・・
-mtfu-version=v2 -mtfu=intrinsic,mathlib
※「mathlib」の部分
※「-mtfu-version」が追加されている。
c:\programdata\gcc for renesas rx 8.3.0.202305-gnurx-elf\rx-elf\rx-elf\rx-elf\include\c++\8.3.0.202305-gnurx\cmath:1122:11: error: ‘::hypotf’ has not been declared
using ::hypotf;
GNU-RX 8.3.0 202004 とか一つ前のバージョンだと発生しない。
これは、現在、問い合わせ中だ。
mathlib は、通常の数学関数が、TFU を利用した高速版に置き換えられるものと思う。
まとめ
今回の騒動、素直に「スマートコンフィギュレーターを使ったらどうですか?」と言われそうだが、本当にそれが素晴らしいものなら初めから使っている。
色々と、ハードルがあっても、自分の信念は貫きたい、より一層の注意力が必要と思う一件だった。