GR-SAKURA
GR-KURUMI
GR-COTTON
GR-CITRUS
GR-PEACH
GR-KAEDE
GR-ADZUKI
GR-LYCHEE
GR-ROSE
GR-MANGO(*)
SNShield
Web Compiler
IDE for GR
TOPPERS関連
女子美コラボ
その他
※プロデューサミーティング中
作り方使い方資料
イベント関連
作品記事
体験記事
ライブラリ
ツール
その他・過去ファイル
がじぇるね岡宮です。
RL78/G13のボードとしてGR-KURUMI、GR-COTTON、GR-ADZUKIの3つがありますが、これらのライブラリをマージしようと思います。
★3/13を目途にご要望や修正点などを締め切り、その後検証して3月末にWebコンパイラに反映、順次IDE for GRへ適用したいと思います。
■概要
ライブラリについて、これまで多くのご意見やご提案があり、それぞれを独立してライブラリアップデートを図っていましたが、マージすることでメンテナンス性の向上と、見やすさ・分かりやすさを向上するために、ファイル構成変更をArduinoや既存のGR-SAKURAと同様にしたいと思います。
・マージについて
__RL78_G13__ をRL78/G13のGRボード共通マクロとして定義。コンパイルオプションで指定。ちなみにArduinoでは__AVR_ATmega1280__という感じ。
ボードごとにGRKURUMI, GRADZUKIなどコンパイルオプションを付加することで、切り分けを行う。(テスト版ではまだ付加しておらず、GR-ADZUKIで動作確認してます)
・ファイル構成変更
・GR-SAKURAと同様に以下の構成に変更
Arduino\cores\
\libraries (階層変更なし)
\rl78\ (portableフォルダを廃止してrl78直下に変更)
・主な変更
・RLduino78_mcu_depend.hや、RLduino78_basic.cpp、RLduino78_timer.cなど、独自にArduinoライブラリが形成されていたものを以下のファイルに移植。
ただし、関数の中身変更は改善事項を除いて基本的に実施しません。比較的RL78ライブラリは安定しているためです。(microsの検証ですごい苦労したのがトラウマです)
\Arduino.h (標準ライブラリに広くインクルードされるヘッダ)
\pins_arduino.h (ボードごとのピンに関するヘッダ)
\wiring_private.h (wiring**や、W**などのArduino基本ライブラリから参照されるヘッダ)
\wiring.c (millis()やdelay())
\wiring_digital.c (digital系)
\wiring_analog.c (analog系)
\wiring_pulse.c (pulse系)
\wiring_shift.c (shift系)
\WMath.cpp (算数)
\WInterrupts.c (外部割込み)
\Tone.cpp (Tone関係)
\utilities.cpp (GRで独自のもの。例えば省電力やattachIntervalTimerとか)
\rl78\specific_instructions.h (Fujitaさんが作ってくれた高速化やお役立ち)
■その他
・標準以外のArduinoのライブラリでよく使われるdigitalPinToPortなどを実装
・RTOS用の記述は削除(動作検証できておらず、あまり使用した事例もみないため。)
・attachMicroIntervalTimer、MsTimer2の時間ずれ不具合は反映しました(Fujitaさんありがとうございます!)
・makeでarによるアーカイブ化してから、リンクするとなぜか不要なものがリンクされてしまうため、適用保留としてます。
■テストファイル
・makefile
※make用ですが、ActivePerlを組み込んでC:\Program Files (x86)\KPITにGNURL78v14.03-ELFをコピーし、コマンドプロンプトでbuild実行してもOKです。ちなみに.batを実行してもOKで、これがWebコンパイラのビルド実体でもあります。
・e2studio用
インポートしてビルドできます。
■ご意見、要望などまとめ
-mcpu=g13 -mmul=noneを指定
以下で分ける
#if __RL78__ /* 全ボード全RL78共通 */ #if GRKURUMI /* GR-KURUMI 固有 */ #elif GRCOTTON /* GR-COTTON 固有 */ #elif GRADZUKI /* GR-ADZUKI 固有 */ #endif #if __RL78_G13__ /* RL78/G13 固有 */ #elif __RL78_G14__ /* RL78/G14 固有 */ #elif __RL78_G10__ /* RL78/G10 固有 */ #endif #endif
MsTimer2は標準ではないので、librariesフォルダに入れる
GR-KURUMI, COTTON, ADZUKI のライブラリ V2.00 の web コンパイラが生成する makefile でターゲットが clean の箇所が
clean: $(OBJS) $(MAKEFILE) rm -f $(OBJFILES) rm -f ./gr_build/$(TARGET).x rm -f $(TARGET).bin rm -f ./gr_build/$(TARGET).mot rm -f ./gr_build/$(TARGET).map
となっていますが `clean:' の後のソースが不要です。
ソースに $(OBJS) があるために make clean した後に再度 make clean をすると $(OBJS) にある .o を一旦生成した後に削除するという動作となってしまいます。
確認に使用したプロジェクトを添付します。
adzuki_sketch.-fno-cprop-registers.bin
↑ `-fno-cprop-registers' ありでビルドしたもの
adzuki_sketch.-fcprop-registers.bin
↑ `-fno-cprop-registers' なしでビルドしたもの
同一のバイナリが作成されるかもご確認願います。
> 私の方でもGR-KURUMIで確認してみます。
その後どうなってますか?
Fujitaさん、滞ってしまい申し訳ありません。
KURUMIにして、SPI1で試してみましたが、-fno-cprop-registersをはずすと音がよどんでしまう現象は再現いたしました。
GNURL78のコミュニティから以下の回答があり、その後プロジェクトを提出しました。回答待ちです。
ーーーーー
これはコンパイラのバグであるように思えます。このオプション (-fno-cprop-registers) が渡されるか否かに関係なく、プログラムは同じように動作しなければなりません。
お使いのツールチェインのバージョンとデバイスの種類、および選択しているコンパイラオプションとテストケースをお知らせください。それで私たちでバグを再現できるか試してみて、正確なご回答を提供できるかと思います。
japan.renesasrulz.com/.../22624 の確認はしていただけたでしょうか? あるいは、そちらで確認されたプロジェクトをバイナリ含めて丸ごと公開して下さい。いつまで経っても埒が明きません。
Fujitaさん、失礼しました。確認していませんでした。
確認したところ、Fujitaさんの-f, -fnoのバイナリで音に違いはなかったです。以下、プロジェクトを添付いたします。
添付されたプロジェクトの kurumi_sketch/HardwareDebug/kurumi_sketch.map を見ると
C:\PROGRA~2\KPIT\GNURL7~1.03-\rl78-elf/lib/gcc/rl78-elf/4.8-GNURL78_v14.03\libgcc.a(_muldi3.o) C:\PROGRA~2\KPIT\GNURL7~1.03-\rl78-elf/rl78-elf/lib\libc.a(lib_a-rand.o) (__muldi3) C:\PROGRA~2\KPIT\GNURL7~1.03-\rl78-elf/lib/gcc/rl78-elf/4.8-GNURL78_v14.03\libgcc.a(_lshrdi3.o) C:\PROGRA~2\KPIT\GNURL7~1.03-\rl78-elf/rl78-elf/lib\libc.a(lib_a-rand.o) (__lshrdi3) C:\PROGRA~2\KPIT\GNURL7~1.03-\rl78-elf/lib/gcc/rl78-elf/4.8-GNURL78_v14.03\libgcc.a(_fixunssfsi.o) ./arduino/cores/Print.o (__fixunssfsi) C:\PROGRA~2\KPIT\GNURL7~1.03-\rl78-elf/lib/gcc/rl78-elf/4.8-GNURL78_v14.03\libgcc.a(_addsub_sf.o) ./arduino/cores/Print.o (__addsf3) C:\PROGRA~2\KPIT\GNURL7~1.03-\rl78-elf/lib/gcc/rl78-elf/4.8-GNURL78_v14.03\libgcc.a(_mul_sf.o) ./arduino/cores/Print.o (__mulsf3) C:\PROGRA~2\KPIT\GNURL7~1.03-\rl78-elf/lib/gcc/rl78-elf/4.8-GNURL78_v14.03\libgcc.a(_div_sf.o) ./arduino/cores/Print.o (__divsf3) C:\PROGRA~2\KPIT\GNURL7~1.03-\rl78-elf/lib/gcc/rl78-elf/4.8-GNURL78_v14.03\libgcc.a(_eq_sf.o) C:\PROGRA~2\KPIT\GNURL7~1.03-\rl78-elf/rl78-elf/lib\libc.a(lib_a-svfprintf.o) (__eqsf2) C:\PROGRA~2\KPIT\GNURL7~1.03-\rl78-elf/lib/gcc/rl78-elf/4.8-GNURL78_v14.03\libgcc.a(_ne_sf.o) C:\PROGRA~2\KPIT\GNURL7~1.03-\rl78-elf/rl78-elf/lib\libc.a(lib_a-svfprintf.o) (__nesf2) C:\PROGRA~2\KPIT\GNURL7~1.03-\rl78-elf/lib/gcc/rl78-elf/4.8-GNURL78_v14.03\libgcc.a(_gt_sf.o) ./arduino/cores/Print.o (__gtsf2) C:\PROGRA~2\KPIT\GNURL7~1.03-\rl78-elf/lib/gcc/rl78-elf/4.8-GNURL78_v14.03\libgcc.a(_ge_sf.o) ./arduino/cores/avr/avrlib.o (__gesf2) C:\PROGRA~2\KPIT\GNURL7~1.03-\rl78-elf/lib/gcc/rl78-elf/4.8-GNURL78_v14.03\libgcc.a(_lt_sf.o) ./arduino/cores/Print.o (__ltsf2) C:\PROGRA~2\KPIT\GNURL7~1.03-\rl78-elf/lib/gcc/rl78-elf/4.8-GNURL78_v14.03\libgcc.a(_le_sf.o) C:\PROGRA~2\KPIT\GNURL7~1.03-\rl78-elf/rl78-elf/lib\libc.a(lib_a-dtoa.o) (__lesf2) C:\PROGRA~2\KPIT\GNURL7~1.03-\rl78-elf/lib/gcc/rl78-elf/4.8-GNURL78_v14.03\libgcc.a(_si_to_sf.o) ./arduino/cores/Print.o (__floatsisf) C:\PROGRA~2\KPIT\GNURL7~1.03-\rl78-elf/lib/gcc/rl78-elf/4.8-GNURL78_v14.03\libgcc.a(_sf_to_si.o) ./arduino/cores/Print.o (__fixsfsi) C:\PROGRA~2\KPIT\GNURL7~1.03-\rl78-elf/lib/gcc/rl78-elf/4.8-GNURL78_v14.03\libgcc.a(_thenan_sf.o) C:\PROGRA~2\KPIT\GNURL7~1.03-\rl78-elf/lib/gcc/rl78-elf/4.8-GNURL78_v14.03\libgcc.a(_addsub_sf.o) (__thenan_sf)
リンクしているライブラリが明らかに KPIT の GNURL78v14.03 のものですが、使用されているツールチェーンが現在の web コンパイラのそれと違うのでは?
> 14.03から最新へのアップデートで-fno-cprop-registersと-fcprop-registersで差がなくなったということですかね? 以前 GR-KURUMI の SD ライブラリか何かの動作不良で明らかになった RL78版 GCC の最適化の不具合は最新よりずっと以前の 15.01 辺りで修正された筈です。 `-fno-cprop-registers' はその不具合対策として付加され、それ以降そのまゝとなっています。
添付されたプロジェクトの kurumi_sketch/HardwareDebug/kurumi_sketch.bin を GR-KURUMI に書き込んで動作を確認してみたのですが、問題の現象は確認できませんでした。
こちらの環境で、GNURL78v14.03 を使用して `-fno-cprop-registers' なしでビルドしたものでも同様の結果です。問題の現象が確認できるプロジェクトを公開して下さい。
いやー、前回添付したのがそれのはずなのですけどね。以下は私のローカルPCで出力したbinですが、Fujitaさんの環境で音がそうなるか試してみていただけませんか?
先ず http://japan.renesasrulz.com/gr_user_forum_japanese/f/gr-kurumi/4005/rl78-g13/22905#22905 に添付の kurumi_sketch.zip に格納された kurumi_sketch/HardwareDebug/kurumi_sketch.bin と http://japan.renesasrulz.com/gr_user_forum_japanese/f/gr-kurumi/4005/rl78-g13/22957#22957 に添付の kurumi_sketch.bin はファイルサイズからして異なる別の内容です。
$ ls -l kurumi_sketch.bin kurumi_sketch/HardwareDebug/kurumi_sketch.bin -rwx------+ 1 fujita なし 113863 Jun 15 22:12 kurumi_sketch.bin -rw-r--r-- 1 fujita なし 127678 Jun 14 14:39 kurumi_sketch/HardwareDebug/kurumi_sketch.bin
どちらも GR-KURUMI に書き込んで動作を確認してみましたが問題の現象は見られませんでした。
そちらでも同等の確認をされた上で、問題の現象の確認できるプロジェクトを公開して下さい。
Fujitaさん、何度もすみません。さきほど添付したbinはコンパイラを最新にしたものでした。コンパイラを14.03にして出力したbinを添付いたします。前回添付したプロジェクトのbinのサイズが同じことを確認しました。
そちらで現象が発生することと添付されたファイルが正しいかは別の話です。実際 japan.renesasrulz.com/.../22957 は明らかに間違ったものを添付されています。 そちらで japan.renesasrulz.com/.../22905 japan.renesasrulz.com/.../22957 japan.renesasrulz.com/.../22961 に添付されたファイルをそれぞれ GR-KURUMI で動作確認された上で仰って下さい。こちらはそれを行ったうえで発言しています。
確認内容が明記されていませんがどのような確認をされましたか?
このスレッドだけで
以上のミスが発生しており「こちらで確認した」と言われたところでそれを受け取ることはできません。
こちらは確認で行った内容は説明しているつもりです。同等程度の説明を求めます。
>japan.renesasrulz.com/.../22905 に添付の kurumi_sketch.zip に格納されたkurumi_sketch/HardwareDebug/kurumi_sketch.bin と >japan.renesasrulz.com/.../22961 に添付の 2570.kurumi_sketch.bin は同一の内容であり、再度 GR-KURUMI に書き込んで動作を確認しましたが(3回目)問題の現象は見られませんでした。
>上記に関してはこちらで確認した上で言ってます。
上記の確認は、binをGR-KURUMIに書き込み、音の乱れを聞きました。
以下のハードウェアをブレッドボード、ワイヤーを介して接続しています。なお、GR-ADZUKIでも発生するため、ブレッドボード、ワイヤー部分などの配線部分は音の乱れに影響はないものと考えています。
・GR-KURUMI
・マイクロSD DIP化キット
・マイクロSD
・ステレオミニジャックDIP化キット
・taotoronics スピーカー
Fujitaさんは音をどのように出力していますか?
> 上記の確認は、binをGR-KURUMIに書き込み、音の乱れを聞きました。
.binファイルはこのスレッドに投稿されたものをダウンロードした上で確認されていますか?
> Fujitaさんは音をどのように出力していますか?
以上の装置にて出力しています。PC に同じイヤホンを接続して https://www.youtube.com/watch?v=tPd4Le_YLtA の動画の音の違いは認識できており、装置に問題はないものと考えています。
テスト用のデータは
japan.renesasrulz.com/.../22580
に添付されている .wav ファイルをダウンロードし、マイクロ SD カードに格納して使用しています。
> binの動作確認はダウンロードして行いました(さすがに自分で自分が信じられなくなったので)。
公開したものの検証はやって当たり前のことであり、それを行わなかった結果が
japan.renesasrulz.com/.../22957
だと思います。