R8C
Renesas M32C/R8C Microcontroller, C++ framework, Library, Sample
Install / Use
/learn @hirakuni45/R8CREADME
R8C/M120AN R8C/M110AN

R8C sources
R8C 各ディレクトリー、及び概要など
これは R8C と、そのコンパイラである m32c-elf-gcc,g++ によるプログラムです。
現在は、主に「R5F2M110ANDD」及び「R5F2M120ANDD」に対応した、ヘッダー、関連ライブラリーなどです。
※R8C/M110AN、R8C/M120AN
※M110AN、M120AN は通常、プログラムエリア2キロバイト、ワークエリア256バイトのデバイスですが、
実際は、プログラムエリア64キロバイト、ワークエリア1366バイトを保有していて、フラッシュライター
の制御ファイルを修正する事で、全領域を利用する事が可能です。(ロットにより異なる場合があると考えられる)
現在では、Windows、OS-X、Linux (Ubuntu-64) で動作確認が済んだ、専用書き込みプログラムも実装して
あり、色々な環境で、開発が出来るようになっています。
プロジェクトは、Makefile、及び、関連ヘッダー、ソースコードからなり、専用のスタートアップルーチン、
リンカースクリプトで構成されています。
その為、専用のブートプログラムやローダーは必要なく、作成したバイナリーをそのまま実行できます。
デバイスI/O操作では、C++ で構成されたテンプレートクラスライブラリーを活用出来るように専用のヘッダーを用意
してあり、各種デバイス用の小さなクラスライブラリーの充実も行っています。
R8C プロジェクト・リスト
|プロジェクト(DIR)|詳細| |---|---| |r8cprog|R8C フラッシュへのプログラム書き込みツール(Windows、OS-X、※Linux 対応)| |M120AN|M120AN,M110AN デバイス、I/Oポート定義テンプレートクラス| |chip|I2C、SPI、専用チップ、IC 固有テンプレートクラス| |common|R8C 共有クラス、小規模なクラスライブラリーなど| |pfatfs|ぷち FatFS 関係ソース、ヘッダー| |FIRST_sample|LED点滅サンプル| |UART_sample|シリアルインターフェースの送信、受信サンプル| |TIMER_sample|タイマーRBのサンプル(インターバルタイマー)| |SWITCH_sample|スイッチ入力テスト(チャタリング除去とトリガー判定)| |ENCODER_sample|ロータリーエンコーダー、カウント、サンプル| |ADC_sample|A/D変換のサンプル| |THERMISTOR_sample|サーミスターを使った温度検出、サンプル(A/D 利用)| |DATA_FLASH_sample|データフラッシュの初期化、リード、ライト| |PWM_sample|タイマーRCのサンプル(PWM出力)| |RC_SERVO_sample|ラジコン用サーボの動作テスト(PWM、2出力)| |PLUSE_OUT_sample|タイマーRJを使ったパルス出力テスト| |PLUSE_INP_sample|タイマーRJを使った周波数計測テスト| |COMP_sample|コンパレーターのサンプル| |DS1371_sample |I2C RTC デバイスのサンプル(DS1371)| |DS3231_sample |I2C RTC デバイスのサンプル(DS3231)| |EEPROM_sample |I2C EEPROM デバイスのテスト| |VL53L0X_sample |I2C VL53K0X レーザー距離センサのサンプル| |MPU6050_sample |I2C MPU6050 加速度、ジャイロ、センサー、サンプル| |BMP180_sample |I2C Bosh BMP180 温度、標高、センサー、サンプル | |TOUCH_sample |タッチスイッチのテスト| |PLUSE_OUT_LCD |タイマーRJ、LCD、エンコーダ| |MAX7219_sample |SPI LED ディスプレイ・ドライバー、サンプル| |MAX6675_sample |SPI 接続、k熱電対温度センサー、サンプル| |ARITH_sample |文字列による計算式、評価サンプル| |LCD_DOT_sample |128x32 mono color graphics のテスト| |SD_sample |pFatFS を使った、SD カードのテスト| |SD_monitor |pFatFS を使った、SD カードのモニター(未完)| |SD_WAV_play |SD カード上の WAV 形式ファイルの PWM 再生| |RC_SERVO_tester|ラジコン用サーボのテスター(JR、又はフタバPWM出力、1チャネル用)| |USB_CHECKER |USB 電流、電圧チェッカー| |AD9833_sample |SPI DDS デバイスのサンプル(AD9833)| |PSG_sample |PWM 出力を利用して、疑似 PSG で音楽演奏|
R8C 開発環境準備(Windows、MSYS2)
-
Windows では、事前に MSYS2 環境をインストールしておきます。
-
MSYS2 には、msys2、mingw32、mingw64 と3つの異なった環境がありますが、msys2 で行います。
-
msys2 のアップグレード
pacman -Sy pacman
pacman -Syu
- コンソールを開きなおす。(コンソールを開きなおすように、メッセージが表示されるはずです)
pacman -Su
-
アップデートは、複数回行われ、その際、コンソールの指示に従う事。
-
※複数回、コンソールを開きなおす必要がある。
-
gcc texinfo gmp mpfr mpc diffutils automake zlib tar make unzip, git コマンドなどをインストール
-
必ず、一つづつ行って下さい(念の為)
pacman -S gcc
pacman -S texinfo
pacman -S mpc-devel
pacman -S diffutils
pacman -S automake
pacman -S zlib
pacman -S tar
pacman -S make
pacman -S unzip
pacman -S zlib-devel
pacman -S git
- gcc のバージョン
- 時期により異なる
$ gcc --version
gcc (GCC) 13.2.0
Copyright (C) 2021 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.
VSCode のインストールをお勧め
- テキストエディターは、好みの問題があり、未だに古い手慣れた物を使っている人がいます
- それが悪いとは言いませんが「最高」だとは言えないと思います
- 新しい最新の環境は優れているものです
- vi、emacs 派など、非常に好み(キーバインドなど)が強いアプリケーションです
- C# や、Windows アプリのプログラミングで Visual Studio を好む人もいます
- Unity の editor が最高だと言う人もいます
- どれも、フリーで利用出来るアプリです
- 自分は、vscode が色々な意味で優れていると感じますので、お勧めしておきます
- R8C/RL78/RX マイコンのフレームワークを使った開発では、ある程度インテリセンスが利くので、便利です
- github のアーカイブには、vscode の環境ファイルも含まれます
- 拡張機能で、emacs のキーバインドを追加したり(自分は、emacs を愛用していました)
- マークダウンをプレビューしたり
- MSYS2 のコンソールを直接ドッキングして操作する出来ます(make を直接実行できます)
git 関係コマンドは何を使うべきか?
- windows に MSYS2 環境をインストールした場合、MSYS2 に git も入れると思います
- ですが、それとは別に、「Git For Windows」もあります
- MSYS2 の git と併用が可能です
- MSYS2 に敢えて git を入れずに、Git For Windows をメインに使う事も考えられます
- どの選択が正しいか、判断が出来ません、自分は併用しています
- 併用した場合の注意として、クローンしたり新規に作成したリポジトリの操作は、どちらかに統一する必要があります
- クローンを MSYS2 で行い、コミットを Git For Windows で行うなどは決してやっては駄目です
- Git For Windows をインストールすると、MSYS2 とは異なるコンソールも増えて多少複雑にもなります
- vscode を使う場合は、もれなく Git For Windows をインストールする必要があります
MSYS2 環境の修正
- 素の MSYS2 環境は、何かと使いづらい事もあるので、以下の修正を行うとより良く使えると思います
- 環境ファイルは、/c/msys64/home/xxxx にあります
- 'ls -a' コマンドによる秘密ファイルの表示
./ .bash_history .bash_profile .emacs .inputrc .profile
../ .bash_logout .bashrc .emacs.d/ .lesshst
-
テキストファイルの修正は、最近では VSCode で行っています
-
.bashrc の修正
-
コメントの '#' を外して有効にします
-
ls コマンドの出力をカラー化する
-
好みの環境を選択して下さい
# Some shortcuts for different directory listings
alias ls='ls -hF --color=tty' # classify files in colour
# alias dir='ls --color=auto --format=vertical'
# alias vdir='ls --color=auto --format=long'
# alias ll='ls -l' # long list
# alias la='ls -A' # all but . and ..
# alias l='ls -CF'
- .bash_profile の末尾に追加する
- カレントディレクトリが表示される
# prompt
PS1='\h.\w % '
R8C 開発環境準備(OS-X)
-
OS-X では、事前に macports をインストールしておきます。(brew は柔軟性が低いのでお勧めしません)
-
OS−X のバージョンによっては、事前にX−Code、Command Line Tools などのインストールが必要になるかもしれません)
-
macports のアップグレード
sudo port -d self update
- ご存知とは思いますが、OS−X では初期段階では、gcc の呼び出しで llvm が起動するようになっています。
- しかしながら、現状では llvm では、gcc のクロスコンパイラをビルドする事は出来ません。
- そこで、macports で gcc をインストールします、バージョンは5系を使う事とします。
sudo port install gcc5
sudo ln -sf /opt/local/bin/gcc-mp-5 /usr/local/bin/gcc
sudo ln -sf /opt/local/bin/g++-mp-5 /usr/local/bin/g++
sudo ln -sf /opt/local/bin/g++-mp-5 /usr/local/bin/c++
- 再起動が必要かもしれません。
- 一応、確認してみて下さい。
gcc --version
gcc (MacPorts gcc5 5.4.0_0) 5.4.0
Copyright (C) 2015 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.
- texinfo、gmp、mpfr、mpc、diffutils、automake コマンドなどをインストール
sudo port install texinfo
sudo port install gmp
sudo port install mpfr
sudo port install libmpc
sudo port install diffutils
sudo port install automake
R8C 開発環境準備(Ubuntu)
Linux 環境は、複数あるので、ここでは「Ubuntu 16.04 LTS」環境の場合を書いておきます。
- texinfo、gmp、mpfr、mpc、diffutils、automake コマンドなどをインストール(Ubuntu 22.04では、clangもインストール)
sudo apt-get install texinfo
sudo apt-get install libgmp-dev
sudo apt-get install libmpfr-dev
sudo apt-get install libmpc-dev
sudo apt-get install diffutils
sudo apt-get install automake
sudo apt-get install zlib1g-dev
sudo apt-get install clang (Ubuntu 22.04の場合)
R8C 開発環境構築
- R8C は M32C のサブセット版ですので、M32C 用 gcc を構築します。
- R8C 用コンパイラ(m32c-elf-gcc,g++)は gcc-4.9.4 を使います。
- binutils-2.28.1.tar.gz をダウンロードしておく
- gcc-6.4.0.tar.gz をダウンロードしておく
- newlib-2.4.0.tar.gz をダウンロードしておく
binutils-2.28.1 をビルド
cd
tar xfvz binutils-2.28.1.tar.gz
cd binutils-2.28.1
mkdir m32c_build
cd m32c_build
../configure --target=m32c-elf --prefix=/usr/local/m32c-elf --disable-nls --with-system-zlib
make
make install OS-X,Linux: (sudo make install)
- /usr/local/m32c-elf/bin へパスを通す(.bash_profile を編集して、パスを追加)
PATH=$PATH:/usr/local/m32c-elf/bin
- コンソールを開きなおす。
m32c-elf-as --version
- アセンブラコマンドを実行してみて、パスが有効か確かめる。
C コンパイラをビルド
cd
tar xfvz gcc-6.4.0.tar.gz
cd gcc-6.4.0
mkdir m32c_build
cd m32c_build
../configure --prefix=/usr/local/m32c-elf --target=m32c-elf --enable-languages=c --disable-libssp --with-newlib --disable-nls --disable-threads --disable-libgomp --disable-libmudflap --disable-libstdcxx-pch --disable-multilib --enable-lto --with-system-zlib
make
make install OS-X,Linux: (sudo make install)
newlib をビルド
cd
tar xfvz newlib-2.4.0.tar.gz
cd newlib-2.4.0
mkdir m32c_build
cd m32c_build
../configure --target=m32c-elf --prefix=/usr/local/m32c-elf
make
make install OS-X: (sudo make install)
- Linux 環境では、sudo コマンドで、ローカルで設定した binutils のパスを認識しないので、 「make install」が失敗する、その為、以下のようなスクリプトを書いて実行する。
#!/bin/sh
PATH=${PATH}:/usr/local/m32c-elf/bin
make install
sudo m32c_install.sh
C++ コンパイラをビルド
cd
cd gcc-6.4.0
cd m32c_build
../configure --prefix=/usr/local/m32c-elf --target=m32c-elf --enable-languages=c,c++ --disable-libssp --with-newlib --disable-nls --disable-threads --disable-libgomp --disable-libmudflap --disable-libstdcxx-pch --disable-multilib --enable-lto --with-system-zlib
make
make install OS-X,Linux: (sudo make install)
R8C フラッシュプログラマーの構築
Renesas R8C Series Programmer Version 0.82b
Copyright (C) 2015, Hiramatsu Kunihito (hira@rvf-rc45.net)
usage:
r8c_prog[options] [mot file] ...
Options :
-d, --device=DEVICE Specify device name
-e, --erase Perform a device erase to a minimum
--erase-all, --erase-chip Perform rom and data flash erase
--erase-rom Perform rom flash erase
--erase-data Perform data flash erase
-i, --id=xx:xx:xx:xx:xx:xx:xx Specify protect ID
-P, --port=PORT Specify serial port
-a, --area=ORG,END Specify read area
-r, --read Perform data read
-s, --speed=SPEED Specify serial speed
-v, --verify Perform data verify
--device-list Display device list
-V, --verbose Verbose output
-w, --
