1ヶ月ほど間を更新期間を開けてしまいました。けんきうしつの中間発表に必死だったもので、忙しさのあまり更新できずにいました。
昨日その中間発表が終わったので晴れて更新再開ですね!!!!!ネタはないけど。
本記事ではひとまず近況報告やら思うところやらを述べたいと思います。
ネタになると思って色々やってみてた
実は空き時間で色々やっていました。まぁ結果はお察しといった感じなんですが、以下に状況をつらつらと。
RXマイコンをgccで動かす際の%f問題
RX220 において、gccのビルドオプションをいろいろ変えてみたり、newlibも変えたりして試行錯誤しましたが、結果解決せず。printf
系で %f
を使おうとするとフリーズしてしまいます。これはどうやっても無理でした。誰か氏〜〜解決策教えて〜〜
なお、RX600 シリーズでもこれは無理。FPU 搭載の有無はあまり関係なかったようだ。
そこで、「%f
はダメだったが、それ以外で FPU 命令は吐けるのか?」と不安になったので試してみた。
volatile float f = 2.0f;
f = f / 2.0f;
この記述で割り算ができるか確認したい。コンパイルをし逆アセンブルしてみると...
fmul #0x3f000000, r14
と浮動小数の乗算命令で実装されていたので、出来ている!
ということで、RX631 の FPU 命令自体は吐けているので、%f
が使えないという制約があるだけで gcc は十分に使えそう。
PIC32MXをMicrochipのツールチェインに頼らずビルドしたかった
今月はじめから再び PIC32MX マイコンをいじり始めていて、タイトルの通りのことを目指していたわけですよ。ターゲットは例によって秋月のやつです。
プロジェクトの雛形、及び Configuration Bytes の設定用ファイルを他のサイト様から頂いて動作は確認しました。
ちなみにそのプロジェクトの素材を以下のリンクに示します。
- PIC32 GCCの導入
- プロジェクトの雛形。内部オシレータで動かしたい場合はコレのみでは動作はできない。
- PIC32MXcust - AVR etc
config.h
等々を拝借。
ちなみにこれらをまとめ、リンカスクリプトや一部レジスタマクロの自作を行ったものを公開します。こちらからダウンロード
ひとまず Lチカは出来たし、次は割り込み... としたかったのですが、どうやらコプロセッサの設定や例外ベクタの設定が面倒臭すぎるということで、精魂尽きて終了です。皆さん、Microchip のツールチェインに頼りましょう。
PIC32MX 用の XC32 コンパイラを野良ビルドしたかった
XC32 コンパイラは IDE によるリンカスクリプト生成等無しでも、コマンドラインでササッっとコンパイルができる非常に便利なツールチェインです。しかしながら、Micochip 社が配布しているビルド済みバイナリを使うと、最適化オプションに制限があるのです。今時お金を払ってコンパイラの機能制限を解除なんて古臭いビジネスだなぁとは思いますねぇ。これではコードサイズがすぐ膨れ上がってしまって、かつ精神衛生上良くありません。どうやら自分でビルドした場合は制限がなくなるとのことなのでやってみてはいます。
とりあえず XC32 のソースはここから持ってきています。MPLAB XC32 v2.05 のクロスビルド。 - Attribute Systemには正常にビルドできるよう改変したスクリプトがあるのですが、Mac に対してはノータッチのようで、エラーが出まくります。
色々やってみても最終的に「ディレクトリがないぞ」という構造的などうしようもないエラーが出てきてしまっているので今のところは諦めています。。。
そろそろ過去の記事を直し始めたい
最近、200PV/日 を記録するようになってきています。しかもそのほとんどすべてが検索エンジンからの訪問。閲覧してくださっている皆様、ありがとうございます。
ということで、大昔に書いた記事を見返していたのですが、言葉遣いのクセが強すぎるとかちょっと言っていることが間違っていると感じることがままありましてー。このままじゃいかんな〜と思うところがあるので、これまでのように「追記: 」とか言うのを書かずにちょくちょく直していきたいと思います。そのせいで更新ペースが落ちるかもしれませんが、許してください。
何の記事書いて欲しい?
上記のように色々やっているのですが、うまくいかないこともあり、そして最近はネタ切れ気味です。ですので皆さん何を取り扱ってほしいのでしょうか。完全な私見で構いませんので、コメントにて助言をいただきたいです。「〜〜マイコン安いからやってみなよ」とか「〜〜マイコンのこのペリフェラル設定記事まだ?」とかよろしくです。
以上、雑記でした