hira4件のコメント100円で買えるマイコンとして、売られているR8Cですが、データシート上は、RAM256バイトフラッシュ2Kバイトですところが、実際は・・RAM1366バイトフラッシュ32Kバイトまで使えると判り、小躍りしていました~OS-Xでも、R8Cの開発環境を整える目的で、フラッシュ書き込みプログラムを開発していましたが、その過程で、R8Cのフラッシュ領域には、まだ拡張された領域があるのでは無いかと思い、良く調べてみました。すると・・・0x10000~0x17FFFに、さらに32Kバイトの領域があり、実際に使える事が判明しました。フラッシュ2キロバイトとは、見せ掛けの容量で、実際には64キロバイトの領域があります。?調べてみると、64KB以上のアドレスの関数をコールする為の仕組みがあり、それを使う事で、拡張領域を使う事が割と簡単に出来るようです。リンカースクリプトに拡張領域を追加します。40}次に、セクション領域を宣言しておきます。=0これで、ソースコードで拡張領域のセクション指定すれば、通常領域から押し出す事ができます。関数を押し出してみました。*argv[])コンパイル、リンクも普通に通り、出来上がったバイナリーをデバイスに書き込んでみましたが、普通に動きます。ビルド出来た事だし、フラュシュライターを実装する事にした。してリセットをかけると、ブートモードになりシリアル通信で、コマンドとデータを送る事で、内部フラッシュメモリーをプログラミング出来る。通信プロトコルは、以下のリンクから資料を取得した。最初のハードルは、OS−Xって、どうやって「シリアル通信」すんの?だった、でも、ちょっと調べたら、どうやらPOSIX準拠のシリアル通信APIをサポートしており、要はLinuxと同じコードで、大丈夫のようだったー、これは、MinGWでもサポートしているようなので、簡単にマルチプラットホームに出来るおまけ付きだ!※ただ、デバイスファイル名は、OS依存なのだと思う。FTDIのシリアルUSBブリッジを接続したら、/dev/tty*にそれらしいデバイスが認識される。/dev/tty.usbserial-A600e0xqこれを使って、簡単な通信を行いテストすると、普通に動作する〜「rs232c_io.hpp」に必要な機能を盛り込んだ〜それではと、色々ガリガリプログラムを作成して、とりあえず、出来上がった〜まだ機能追加中で、中途半端な状態ではあるけれども、一応動作しているようだ。GitHubで公開している。仕様的には、千秋ゼミで公開されているr8cprogを元にしている。※このプログラムをダウンロードするには、登録が必要。スクラッチから組んだものなので、動作は、オリジナルとは違うので注意。俺俺フレームワークとして、「file_io、string_utils、sjis2_utf16」など同梱している。uart_test.mot現在は、デバイス名は無視されています。ポートは、何も指定しないと、上記のデバイスパスが使われるようにしてあります。環境では、テストされていません。Msys2環境でコンパイル、実行を試しました。挙動が、OS−Xと違っていて、少し悩みましたが、とりあえず、問題無く動作するようになりました。hiraコメントするR8Cの機能を一通り実装、テストしている。今回は、コンパレータークラス。電圧比較をして、その結果、LEDの点滅速度が変わると言うもの。※実験では、REF側に、VCCを1/2に分圧し、COMP側にボリュームを接続、確認した。R8Cには2チャネルのコンパレーターがある、機能的には、単純な物だが、割り込みを使った時に、実行する処理をどのような構成にするか、考えてみた。(*task_)(void);実行ポインターを用意した、ところが、こんな事をすると、コンパイラは、「task_」で何が実行されるか不明な為、メイン側で利用しているライブラリーのワークを全てスタックに積むようコードを生成する。※タスク内で、メイン側と同じライブラリーを使った場合に備える為で、強引な方法だが、動作は正しい。これでは、スタックが直ぐに限界を超え深くなるのは容易に想像出来る、その為、「実行ポインター」でのタスク管理は不採用とした。そこで、コンパイル時に静的な関数が実行できるような仕組みを追加した。関数オブジェクトを使い。}};()オペレーター内に、実行したい手続きを実装して、それをテンプレートの引数とする。関数オブジェクト内の手続きが何も無い場合、コンパイラは、その部分一切を削除する。.....};これなら、コンパイラが、テンプレートクラスを展開する時に、割り込み内手続きを考慮するので、ライブラリーで使われる変数の退避も最小限となる。ソースコード—–そして、R8CのI/O定義は、ほぼ全てを網羅した。冗長な車の運転に少しでも面白みを見出してますwwwその過程で見つけた色々な事を記しておきます。立川間の一般道(新青梅街道の流れの悪さ)・レストラン倉井に寄れない全て下道で行くと、どうなるか?過去に、色々なルートを試してみました。そこで、淘汰され残ったルートで、最も合理的で最短時間なのが以下のルートです。茂木南ゲート※川越から国道354号までも多少複雑なようですが、ほぼ道なりです。※国道121号から、茂木までは、複雑のようですが、ほぼ道なりで(「はがグリーンコリドール」と呼ばれる広域農道です)良い点:・高速料金0・休憩ポイント、コンビニなど多く、ゆったりまったり行ける・ほぼ直線なので、距離が短く、ガソリンも少なくて済む問題点:・それなりに時間がかかる(深夜帯で3.5時間~4時間弱)・祭日の昼間など多少混む場所がある。下道でお勧めポイントレストラン倉井:※ここは、上のルートから少し離れていますが、帰りには是非寄りたいスポットです。!・ホルモン定食がクセになる!※注意:調子にのって、ニンニクのゴマ油漬けを沢山入れると、次の日に響くかもwww食べた夜は、ニオイが厳しく、奥さん、子供の不評を買う場合もあるようです・・(リア充の人は、彼女と一緒に食べれば問題無し)※倉井から国道50号に出るのは、農道を通るのがお勧め、信号無く、渋滞一切無し!※4号線を通るのは最悪で、昼間は凄く渋滞します。