さてー、M110AN、M120ANが、もの凄く使えるやつだって判ったのでー
まず、お決まりの gcc ビルドです。
色々調べると、R8Cは、M32Cマイコンのサブセットのようです、そこで、M32Cマイコン用 gcc をビルドします。
M110AN、M120AN は R8C の中でも(Tiny)と呼ばれる縮小セット版のようです。
※コンパイルオプションとして「-mcpu=r8c」などとします。
毎回、gcc のビルドは苦労します。
Windows7 MSYS(MinGW) の場合:
※ MSYS に、gcc ビルドに必要な、「gmp、mpfr、mpc」がインストールしてある事を前提とします。
・gmp-5.1.3 ・mpfr-3.1.2 ・mpc-1.0.1
OS-X の場合:
・mac brew を使ってするのが楽です。
※他に、「MacPorts」が同じようなシステムですが、こちらは、メインツリー以外のバージョンをインストールする
場合など、全く融通が利かないので、mac brew を推します。
※mac brew のインストールについては、詳しいサイトが沢山あるので、そちらを参照下さい。
OS-X では、標準コンパイラは clang で、gcc コマンドがオーバーライドされています、gcc をインストールしておき、シンボリックリンクを貼り直しておきます。
brew install gcc sudo ln -sf /usr/local/bin/gcc-4.9 /usr/local/bin/gcc sudo ln -sf /usr/local/bin/g++-4.9 /usr/local/bin/g++ brew install gmp brew install mpfr brew install mpc
※確認
gcc --version gcc (Homebrew gcc 4.9.2_1) 4.9.2 Copyright (C) 2014 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
まず、binutils-2.24 のビルド
binutils-2.24 のソースを展開したら、
※gcc-4.9 では途中でビルドを失敗するので、binutils-2.25 を使います。
cd binutils-2.24 # 直でビルドしないで、専用のディレクトリーで作業するのが普通です、失敗したらディレクトリーを削除してやり直せる。 mkdir m32c_build cd m32c_build ../configure --target=m32c-elf --prefix=/usr/local/m32c-elf --disable-nls make make install
アセンブラのパスを通して、パスを有効にする為コンソールを開きなおします、そして、最初のCコンパイラをビルドします。
※この段階では、C コンパイラのみビルドします、C++ は、後でビルドします。
gcc-4.7.4 のソースを展開したら、(とりあえず、C++11 完全対応の gcc4.8 系を使わずに枯れたバージョンで試します。)
※ gcc は 4.8 系でかなり大きく構造が変わったようで、メンテナンスがされていない CPU の場合、4.8 系ソースでは、コンパイルに失敗する事が多い為です。
※C++11 完全対応ではありませんが、C++0x オプションがありますから、ほぼ遜色無く C++11 の機能を使えます。
cd gcc-4.7.4 mkdir m32c_build cd m32c_build ../configure --prefix=/usr/local/m32c-elf --target=m32c-elf --enable-languages=c --disable-libssp --with-newlib --disable-nls make windows: make install OS-X: sudo make install
次に newlib をビルドします。
newlib-2.1.0 のソースを展開したら
cd newlib-2.1.0 mkdir m32c_build cd m32c_build ../configure --target=m32c-elf --prefix=/usr/local/m32c-elf make windows: make install OS-X: sudo make install
最後に C++ をビルドします。
cd gcc-4.7.4 cd m32c_build ../configure --prefix=/usr/local/m32c-elf --target=m32c-elf --enable-languages=c,c++ --disable-libssp --with-newlib --disable-nls --disable-libstdcxx-pch make windows: make install OS-X: sudo make install
とりあえず、C++ のビルド中、怪しい動作がありましたが、最後まで到達しました。(Windows)
簡単なテストは、とりあえずOKで、詳細なテストはこれからです。
スタートアップルーチンは、デバイスに合わせて書く事になる為、しばらくは、ハードウェアーマニュアル、ソフトウェアーマニュアルと「にらめっこ」です・・
また、R8C のアセンブラもある程度理解する必要があります・・
-cpu=r8c でR8C を選択した場合、「int」のサイズは16ビットのようです。
※この CPU によって int のサイズを16にしたり32にしたりする慣わしって誰が始めたのか知らないけど、ホントクズ仕様だよなぁー・・・
なので、int32_t、とかがあるんだけど、short があるんだから、int は32ビットで良くない!?
gcc のビルドは、手間もそうですが、時間もそれなりにかかるので、「めんどぃ」って人は、
今回ビルドしたバイナリーを以下のリンクに置いておきますので活用下さい~
MSYS(MinGW)版 M32C-gcc-elf
※通常は、「/usr/local/」で、アーカイブを解凍すれば、
「/usr/local/m32c-elf」が出来ますので、「/usr/local/m32c-elf/bin」にパスを通します。
これで、
m32c-elf-gcc m32c-elf-g++
などが利用可能です。
はじめまして。マイコン初心者なのですがgithubのサンプルプログラムの回路図を教えて頂けないでしょうか
ソースコードを見ると、どのポートを使っているか判りますので、シンプルな場合は、あえて回路図を添付していません。
例:
A/D コンバーターのテスト行う「ADC_test」の場合・・
main.cpp を見ると、以下のような記述があります。
これは、シリアルインターフェースの TXD、RXD 端子の設定で、P14、P15 を使っています。
また、これは、アナログ入力としてAN1、P11 を使っています。
PORT_MAP は、テンプレートクラスで、common にソースコード「port_map.hpp」がありますので、参考にして下さい。
少し複雑な、SDカードを扱うテスト、「SD_test」の場合・・
port_def.hpp に、どの端子を使っているかをコメントとして書いてあります。
また、このプロジェクトでは、KiCAD 用のファイルを用意してありますので、KiCAD で、開けば回路図を得られます。
※KiCADで使っている部品ライブラリーとして、KiCAD_lib も用意してあります。
※ただし、メンテナンスをしていない可能性もあり、ソースコードの記述が正解です。
当たり前ですが、電源、リセット端子、MODE 端子の処理をお忘れなく。
お返事ありがとうございます
ご回答の通りソースコードを見てやってみます