Renesas Rulz
Renesas Rulz
  • User
    Join or sign in
  • Site
  • Search RenesasRulz.com
  • User
がじぇっとるねさすコミュニティ
がじぇっとるねさすコミュニティ
GR-KURUMI フォーラム ★ご意見ください!RL78/G13のライブラリ統合化したいと思います。
  • Forums
  • Files
  • がじぇっとるねさす ゆーざー会 - Wiki
  • Tags
  • More
  • Cancel
  • New

 

 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関連

 女子美コラボ

 その他

 ※プロデューサミーティング中

 作り方使い方資料

 イベント関連

 作品記事

 体験記事

 その他

 

 ライブラリ

 ツール

 その他・過去ファイル

  • Replies 176 replies
  • Subscribers 280 subscribers
  • Views 86731 views
  • Users 0 members are here
  • GR-COTTON
  • GR-KURUMI
  • GR-ADZUKI
Options
  • Share
  • More
  • Cancel
Related Tags
  • Arduino Pro-mini
  • E1
  • GPS
  • GR-ADZUKI
  • GR-COTTON
  • GR-KURUMI
  • GR-KURUMI 書き込み
  • gr-sakura
  • Guthub
  • I2c
  • JPEG
  • Kirin
  • PMT
  • RL78 レジスタバンク
  • rx
  • S/Wシリアル
  • sd card
  • Serial2
  • WDT
  • webコンパイラ
  • xbee
  • コンパイル
  • シリコンマイク
  • 誤差補正
  • 音源
Related

★ご意見ください!RL78/G13のライブラリ統合化したいと思います。

Okamiya Yuuki
Okamiya Yuuki over 5 years ago

がじぇるね岡宮です。

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用

 インポートしてビルドできます。

■ご意見、要望などまとめ

No. 内容 対応方針 コメント
1 シリアルバッファを任意に変更できるように 専用のクラスメソッドを用意する  
2

-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
 その通りに行う  
3

MsTimer2は標準ではないので、librariesフォルダに入れる

その通りに行う  
  • Reply
  • Cancel
  • Cancel
  • @chobichan
    @chobichan over 5 years ago
    ええ、もちろん賛成ですって!
    コンパイルオプションには「FULL]もよろしく。

    「RTOS用の記述は削除(動作検証できておらず、あまり使用した事例もみないため。)」
    って!、RTOS実装する為には別途カーネルを用意して、割り込みにフックを掛けて、オブジェクトの生成をどうすんの?って問題を解決していないので、根本的に現状の構成でどうやってRTOSを実現するのか全く見えてこないのだけれど。
    だからこそ、ノンプリエンプティブなマルチタスクでお茶を濁しているのだし。
    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
  • @chobichan
    @chobichan over 5 years ago
    シリアルのバッファサイズを、任意の値に設定できるようにして!
    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
  • Okamiya Yuuki
    Okamiya Yuuki over 5 years ago in reply to @chobichan
    chobichanさん、ありがとうございます。
    この移植作業は1日ぐらいで終わると思っていたら丸3日くらいかかり、別件のWAVP 3ピン5ピン片方対応が遅れています。これから取り掛かりますが、お急ぎでしたらご連絡ください。
    基本的に本ライブラリ統合に対して、WAVPは非依存のため後から追加でも動作します。
    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
  • Okamiya Yuuki
    Okamiya Yuuki over 5 years ago in reply to @chobichan
    シリアルバッファサイズの件、了解です。
    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
  • @chobichan
    @chobichan over 5 years ago in reply to Okamiya Yuuki
    いや、急いでいないです。
    ADZUKI用の基板が来るまであと1wくらい掛かりますから。
    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
  • kcd
    kcd over 5 years ago
    ピカリコ用のLED点灯ライブラリ(温度、数値、アルファベット)の存続と、カシオ様に、スマホ用の受信プログラムをクルミ用に開放してもらえると、うれしいのですが、よろしくお願いします。
    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
  • Okamiya Yuuki
    Okamiya Yuuki over 5 years ago in reply to kcd
    kcdさん、実際のところ半年くらい前?から水面下では存続のお願いを結構してきたのですが、要望受け入れていただけず撃沈してました。フリーといえどもメンテとか混在とか厄介とのことで、、悲しいです。
    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
  • fujita nozomu
    fujita nozomu over 5 years ago in reply to kcd
    > ピカリコ用のLED点灯ライブラリ(温度、数値、アルファベット)の存続と、カシオ様に、スマホ用の受信プログラムをクルミ用に開放して

    ああ、

    http://picalico.casio.com/ja/
    > スマートフォン用アプリ「Picalico Reader」配信終了のお知らせ
    > 2016年12月31日をもって、スマートフォン用アプリ「Picalico Reader」のGoogle play, App storeでの配信を終了いたします。

    終了してたんですか。
    無償を謳ってユーザーを釣ったあとで無償版を切り捨てるとは商モラル的にもどうかという感じですね。
    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
  • fujita nozomu
    fujita nozomu over 5 years ago

    > __RL78_G13__ をRL78/G13のGRボード共通マクロとして定義。コンパイルオプションで指定。

    web コンパイラで使用している KPIT GNU ELF v14.03 では

    $ rl78-elf-gcc -dM -E - </dev/null |grep RL78
    #define __RL78_G14__ 1
    #define __VERSION__ "4.9.2.201603-GNURL78 20140916 (prerelease (renesas-14r1-14)) (GNUPro 14r1) (Based on: GCC 4.9.2 GDB 7.8.2 Binutils 2.24 Newlib 2.1.0)"
    #define __RL78_MUL_NONE__ 1
    #define __RL78__ 1
    #define __RL78_32BIT_DOUBLES__ 1
    
    $
    

    CPU 指定をなんもしない条件で __RL78_G14__ が定義されるので、__RL78_G13__ を更に定義するのは筋が悪い気がします。

    $ rl78-elf-gcc -mcpu=g13 -mmul=none -dM -E - </dev/null |grep RL78
    #define __RL78_G13__ 1
    #define __VERSION__ "4.9.2.201603-GNURL78 20140916 (prerelease (renesas-14r1-14)) (GNUPro 14r1) (Based on: GCC 4.9.2 GDB 7.8.2 Binutils 2.24 Newlib 2.1.0)"
    #define __RL78_MUL_NONE__ 1
    #define __RL78__ 1
    #define __RL78_32BIT_DOUBLES__ 1
    
    $
    

    `-cpu=g13 -mmul=none' を指定するのが良いのでは。

    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
  • fujita nozomu
    fujita nozomu over 5 years ago
    > ・makeでarによるアーカイブ化してから、リンクするとなぜか不要なものがリンクされてしまうため、適用保留としてます。

    一旦アーカイブ化してからリンクする方法でなんか問題があるでしょうか? 問題があるようであれば条件を突き止めるべきでは。
    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
  • Okamiya Yuuki
    Okamiya Yuuki over 5 years ago in reply to fujita nozomu
    少し試してみましたが、この現象はV1.13でも発生しました。
    要因は以下の通りでstatic変数の初期化でstdc++のScope Guard関連がリンクされてしまうのですが、、自分、よく分かりません。
    ちなみにアーカイブ化しないとこの現象は発生しません。
    すみませんが、何かアドバイスいただくことできますでしょうか?

    (不要なものがリンクされない)
    void setup(){
    static int a = 0;
    }
    (不要なものががリンクされる)
    void setup(){
    static int a = millis();
    }
    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
  • Okamiya Yuuki
    Okamiya Yuuki over 5 years ago in reply to fujita nozomu
    なるほど、ありがとうございます。-mcpuの指定で自動的に__RL78_G13__が定義されるのですね。恐れ入ります。
    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
  • fujita nozomu
    fujita nozomu over 5 years ago

    > __RL78_G13__ をRL78/G13のGRボード共通マクロとして定義。

    RL78 用の GCC で標準で定義されるマクロ __RL78__ があるので、これで判定するのが良いのでは。

    __RL78_G13__ で判定すると将来的にRL78/G14 等、G13 以外のGR ボードが出た際に対応が面倒なことになりそうです。

    #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
    

    以上のような条件コンパイルを行えば良いと思います。

    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
  • fujita nozomu
    fujita nozomu over 5 years ago

    > ファイル構成変更をArduinoや既存のGR-SAKURAと同様にしたいと思います。

    MsTimer2 が gr_common/RLduino78/cores/ にありますが、Arduino では追加ライブラリなので gr_common/RLduino78/libraries/ 等に移動して欲しいです。GR-SAKURA でも同様に gr_common/core/ に MsTImer2 があるのが気に入らないです。

    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
  • Okamiya Yuuki
    Okamiya Yuuki over 5 years ago in reply to fujita nozomu
    Fujitaさん、了解です!
    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
>
サイト使用条件
プライバシーポリシー
お問い合わせ
© 2010-2022 Renesas Electronics Corporation. All rights reserved.