覚え書きTOP
CS+

 統合環境(IDE)のCS+を使ってRL78のソフトを作る。CS+前準備 続き
 AP4とかApplilet3とか言うGUIツールがあるが、こいつらはCS+内蔵のコード生成ツール単品のことだ。
 HEWとかIARなんかを使っててコード生成させたい場合に出番があるようだ。
 ルネサスとしてはAP4をメインに進めていくようなので、他のツールPDGなどは無視して良い。。



注意事項

  1. 開始時にはこれこれを設定。
  2. CPUの選択を間違えるとロード時に起動時にフラッシュROMを消去しろ(E1202855)が出る。
  3. 納品時にはWDTの設定を確認してからRFPで焼き直す(E1ナシで動かないことがある)。



リンク
 ルネサスのリンクは相変わらず使い難いんで、よく使うものだけまとめた。 2016/11/09追記 ルネサス検索方法
 リンク切れも多発するんでマニュアルの番号が必須。
 なおリンク切れしたURLを書いたメールをルネサスに出すと、翌日に代替URLの返事が来る(ルネサスにログインしておいてここ弊社Webサイト関連)。


CC-RL 2016/10/24追記
 コンパイラをCC-RLに変更したので一部を書き直した。無償評価版はここからDL
 CS+にはRL78用のコンパイラが二種類有り、今回新しい方のコンパイラを入れた。

CC-RLでの開発開始時の設定
PWMしてみた
SPIのスレーブ
ILI9341+グラフィックLCD

この関数のコール元はどこ?
”E1202855 起動時にフラッシュROMを消去しろ”が出た
チョー便利なスマート・マニュアル


CA78K0R 2014/11/24開始(ここで使ってるコンパイラは古い方のCA78K0Rだ) 無償評価版はここからDL
 仕事がらみでCS+(旧CubeSuite)を使うことになったのであります。
 mbedの快適さを知ってしまった身にとって、この手のコード生成型のツールの使い心地はどんなものか?

前準備
CS+初体験
Stack見積もりツール
ウオッチドッグタイマの使い方
ROM/RAMの使用量を表示する
RAMの開始位置やサイズを変更する
CPUの変更
フラッシュ・プログラマを使う
RL78のデータフラッシュを使う(EEL)


前準備

無料のIDE
 オラが使ってるのはCS+3.0のRL78用の無料版。
 コード64K迄の制限有り。
 正式名称は「CS+ for CA,CX V3.00.00」。

 良く分からないけど、CS+はCPUの種類によって使うものが異なるらしい。
 MDK-ARMみたいに、IDEを一発DLすれば全部OKって訳にはいかないみたいだ.。
 ルネサスのHPは目的のページに行くのが難しくて、無償評価版のCS+をDLする場所を見つけるだけでもそれなりに面倒くさい。
 今回使うCPUはRL78の車載版で、RL78/F12だけど、この場合は「RL78用のCS+」をDLする必要があるようだ。
 あちこちさまよい歩いて見つけた
無料で使えるIDEはここ(ページ一番下の右にボタン有り)でDLする。


デバッグアダプタ
 デバッグアダプタとしてE1ってのを使う。これだ
 値段は1万2千円・・・ARMのuLink2が4千円、モドキが2千円で買えるのに比べたら高いよね。
 RL78とはTOOL0ってラインで接続してる。恐らくシリアルワイヤー接続と思うけどARMのSWDにそっくり。
 現地デバッグ中に壊れると恐ろしいんで2台入手。これでもうPALMICEは使わなくなりそうだ。
 ところでE1は接続に失敗すると電圧が出っぱなしになるそうな・・・電圧をかけたままでターゲットを抜き差しするの?
 なんだかいやなクセが隠れてるようだし、その情報を探すのもホント大変だし・・・早く終わりにしてmbedに戻りたい(^^;


ターゲットボード
 実物のハードが未だ出来てないんで、ソフト開発用にターゲットボードを購入。マルツで2千3百円ぐらい。マニュアル
 このボードにLINのコネクタと12Vのソケットを付け、PSoCとの通信用にI2Cラインも付け、おまけでUART0に秋月のFTDIケーブルを接続した。
 PSoCを5Vで動かしてるんで、このボードには5Vを外部電源で供給してる(E1から供給すると不足するみたいで動作が不安定)。
 故障を考えてこいつも2台購入。



CS+初体験
<2014/11/27 現時点での感想>
 慣れてきたらまぁまぁ使いやすいです。
 mbedのようなC++でのアクセスではなく、自動コード生成機能で予めCのコードを出力するタイプなんでコード効率は良いみたい。
 でも、おなじみの落とし穴が有るし、自動生成されたコードを読む必要もある。コードを読むためには例によってCPUマニュアルを読まなくてはならない。は〜〜
 mbedの5倍程度は面倒くさいかな?
 それでもルネサスにしちゃ随分簡単になったよ。
 ルネサスもアマチュアや零細企業の大事さに気が付いたか?

<入門用リンクページ>
コード生成プラグイン学習ガイド
 CS+を使うなら、一番初めに読むべきもの
 ※ポートへのアクセス方式がCC-RL向けじゃない。今はP4_bit.no6=0などと書く。
RL78/I1Eコード生成 コンフィギュラブル・アンプ使用例
 コード生成をもう少し使ってみましょうって感じ
 ※E1の初期設定方法や解析グラフの使い方があるP24
RL78/I1Eコード生成学習
 E1を使ってデバッグ開始P22〜


CS+起動 ← 2016/09/19 リンク切れが多発してるんで張り直した。
 最初の一歩はコード生成プラグイン学習ガイドを見ることから始めた。入門動画 体験ビデオ RL78ワークショップ
 しかしルネサスのHPは分かりにくいな〜
 一時間もあれば見終わるんで、早速コード生成を開始した。
 で、早速つまずいた(笑)
 端子配置とかコード生成のツリーが無い。
 諦めてもう一度学習ガイドを見直したらP24で説明されてた。
 だけどどうしてデフォルトで表示させるようにしないんだろ?意味不明。

 




 大注意:端子配置表でIOを変更しても、コード生成側には反映されない
 で、無事に端子配置図とコード生成のツリーが出てきたんで早速いじくった。
 これ、いじくる順番があるね。
 入門動画では「こうしてください。ああしてください。ほら簡単でしょ」って感じで説明してるけど、そりゃ知ってる人間には簡単だよ。
 でも知らないと痛い目をみる。
 説明するときには「こうやります。ああやります」の他に「こうすると痛い目に合います」ってのも言って欲しい。
 大事なのは痛みの避け方なんだからさ。

痛い目1
 端子配置図を出して、それぞれの端子にピン機能を割り当てたんだけど、せっかく40本近くやった作業がパー。
 なんじゃこりゃ?

 



 まだ良く分かってないから外してるかもだけど、手順としては・・・
  1:「コード生成(設計ツール)」ツリー内でポートなどの機能を指定してから
  2:「端子配置へ反映」をクリックする
 
つまり端子配置表/図は最後に目で見て確認するためだけに使うってこと。
 んじゃなんで端子配置表の中でIOの変更が出来るんだろ?意味不明??

 




黄色い帯
 端子配置図の黄色い帯。
 これはなんだ?
 「コード生成(設計ツール)」側で選択中のピンが黄色い帯で囲われるらしい。

 




痛い目2
 
コード生成をしたら、自分の書いたコードが消えちゃった。Youtube
 へ〜〜(@_@;)
 自分のコードは必ず指定コメント間に書かなくてはならないそうだ。
 それ以外の場所に書いたコードは綺麗さっぱり
前触れも無く確実に消えます
 それと
書いた後でCtrl+Sでソースを保存しておかないと消えることがある。
 「腹の据わった仕様だ」と言えば言えるけど、おっかねぇ仕様だ(笑)

  /* Start user code for pragma. Do not edit comment generated here */
    ここにかけば消えない・・・けど、やっぱりちょっと怖い(^^;
  /* End user code. Do not edit comment generated here */

 試しに割り込み処理内に↑このコメントをコピーして、間にコードを書いてみたけど、再生成したらやっぱり消えちゃった。
 で、かふぇルネで質問したらコードを書いたら再生成するなってのが基本姿勢らしい。
 まだ試してないけど、コードを再生成したいときは、プロジェクトをコピーしておいてそっちでコード生成してソースをコピーしてくるとかするかも。

  しかしあれだね、やっぱりmbedと比べると難しいよね。
 CS+を作る側の苦労も分かるけど、使う側からすると落とし穴が多すぎる。
 素人モードで使うならmbedの方が間違いなく良いよ。
 ま、納期の長い仕事で使うならどっちでも大差無いかな…仕事となればどうせCPUマニュアルを全部読むんだから。

 で、コードを書けるのは xxxx_user.c のように「_user_」の入ったソースのうち、上記の/*Start... と /*End... の間だけだ。
 で、本気を出すコードは別ソースにした方が良いよね。
 こんな感じにすればソースを分けられます。

 



 自動生成されたr_main.cに自分用のmainをコールする処理を追加してやる。
 関数プロトタイプ宣言用のヘッダファイルは自分で作っても良いし、r_cg_userdefine.h に書いてもどっちでもOK(こいつは空のソースだけど、自動生成された全部のソースがインクルードしてるそうだ)。

  r_main.c 
 
void main(void)
{
    R_MAIN_UserInit();
    /* Start user code. Do not edit comment generated here */
    my_main();  // 自分のmainに飛ばす
    while (1U)
    {
        ;
    }
    /* End user code. Do not edit comment generated here */
}

  _my_main.c  includeコードはr_main.cからコピーしてきたもの
 
#include "r_cg_macrodriver.h"
#include "r_cg_cgc.h"
#include "r_cg_port.h"
#include "r_cg_intc.h"
#include "r_cg_serial.h"
#include "r_cg_adc.h"
#include "r_cg_timer.h"
#include "r_cg_userdefine.h"

void my_main(void)
{

}

  r_cg_userdefine.h
 
/* Start user code for function. Do not edit comment generated here */
void my_main(void);
/* End user code. Do not edit comment generated here */
#endif



 ここまで来たら、最後にデバッグ時のデフォルト先頭関数を自分のmainに変更する。
 こうしておけば自動的に自分の関数まで飛んでくるんでラクチンなり(デバッグ時のWatchdogの停止方法はここ)。

 



 ついでに「コメントのネストを許可する」とかを入れておけば良いかも。

 



 E1を使うなら忘れずにこれもやっておく。
 これを忘れるとシミュレータで動いてしまうので「あれ?あれれ?」ってなるよ。

 
 



痛い目3
 この場所に赤マークが出たら、そいつを消す。
 なんだりいじくってると、ここに赤マークが出ることがある。
 設定が足りないかコード生成してないか矛盾があるってことらしいんで、ここの赤マークは無視しちゃアカンです。



Stack見積もりツールを使う
 Stack見積もりツール(CallWalkerみたいなもんか?)を使うときは、以下の赤枠部分を設定してからリビルドする。

 



 で、これを起動する。

 



 そうするとこうなる。

 



 スタックサイズを増やすときはこうする(まだ実際にはやってない)。

 


2015/03/06
 
ウオッチドッグタイマのON/OFF
 完成が近づいてからコード生成をさせるのはイヤなので、WDTはプロジェクト開始時に「使用する」でコード生成させる。
 デバッグ中のWDTの停止はオプション・バイトを変更する。参考1 参考2



 ところでCS+で関数名の先頭をアンダースコア”_”にすると、ローカル変数が見えなくなるバグあり(これはどう見ても仕様じゃないでしょ)。
 それとIDEの背景の色を暗くすると端子配置がチョー見にくい。端子配置画面の色の変更はできない”仕様”だそうな。
 それとstaticな関数には同一ファイル内からでもコンテキストメニューの関数ジャンプが効かない。これも”仕様”なんでしょう。  ← CC-RL V5.00.00で修正された
 一番凄いのが自動コード生成をすると自分の書いたコードが勝手に消えちゃう”恐怖の仕様”。
 せめてバックアップぐらいは残してくれればいいのにさ・・・コード生成するときにバックアップを生成して、生成後に差分を反映するとか出来ないのかな?そんな親切心は「お役所ルネサス」からは出てこないか。
 「消えて悪いか?そう言う仕様だ。文句があるなら使うな」って言われそう(笑)
 MDK-ARMやVisualStudio、AVRのAtmelStudioと比べるとCS+は・・・ですわ。
 なんだり文句をたれてるんだけど、コード生成やコンパイラやリンカなどの大事な根幹部分は信頼できるんで仕事(カネ稼ぎ)では安心して使える・・・これは強いよね。
 けど、仕事じゃなければ近寄らない(^^;



2015/03/07
 
ROM/RAMの使用量を表示する
 使用済みのCODEサイズとDATAサイズを知りたい場合は以下の部分を変更してからビルドする。
 どうしてデフォルトで表示するようにしてないのかは不明。



2015/03/07
 RAMの開始位置やサイズを変更する
 評価ボードでの開発が終わったら、実機に合わせてメモリマップを変更するんだけど、HEWのやり方とはちょい違う。
 変更したらリビルドしてMAPファイルの「RAM=...」を確認し、適当な変数をウオッチしてアドレスを確認する。



2015/03/08
 CPUの変更
 CPUを途中で変更できるんだね。良いじゃ〜ん。
 それを知らなかったんでRAMの開始アドレスやサイズで変更してたけど、CPU変更の方が忘れ事が少なくて良い。
 109GEを109GCに変更したけど、モニタROMの開始位置も変更する必要があるんだけど忘れてた。フォーラムで教えてもらった。
 CPU変更でやればこの辺も自動的に変更してくれるんで助かる。

2015/03/31 追記
 良いことばっかりじゃないね。
2016/10/21解決法を発見
 CPUを変更するとコード生成から端子配置まで全部やり直さないとならない。
 やり直さなくても動いてはいるけど、ポートを一カ所でも変更しようとか、ボーレートを変更しようとするとクロック設定(クロック発生回路)からやりなおしになる。
 で、クロック設定をやり直すと自動生成したコードがだだ〜っと消えちまう。おまけにピン配置もスッカラカンになる。


2016/10/21 追記
 解決法を見付けた。
 試したのはR5F104PJとPL(同じピン数でROM/RAMサイズが異なるCPU)。
 1:「マイクロコントローラを変更」でCPUを変更する。
   この時点で端子配置表はクリアされるが・・・
 2:続いてクロック発生回路とかを選んで、そこで「端子配置へ反映」をクリックする。
   これで端子配置表が復活する。なんと!
   ただし配置表に自分で書いておいた定義名部分は復活しない(消えたまんま)。
   事前に配置表をエクセル形式で出力しておけば少しは助かる。
 3:続いて「コード生成」をクリックする。
 これで変更したCPU用のコードが新たに生成される。

 想像するに、端子配置表は「コード生成(設計ツール)」を元に作られてるな。
 ただこのやり方は正式じゃない。
 ヘルプの「2.4.14 マイクロコントローラを変更する」の備考4にも引き継がれないと書いてある。
 ま、動いてるから良いや。
 しかしこの中途半端なツール。
 コード生成部を作成してる部署と、端子配置表を作成してる部署が異なり、これをまとめる人が居ないとかそんな感じ丸出し。
 ちなみに端子配置表でIOを変更しても、コード生成側には反映されないから気を付けてね・・・なんちゅう仕様じゃ。



2015/03/08
 フラッシュ・プログラマを使う
 CS+と一緒にインストールした「ルネサス・フラッシュ・プログラマ」の無料版。
 使うCPUの選択を間違えると、スタートボタンを押したときに「E1002006  シグネチャ・リード・エラー」ってのが出る。
 「あんた、CPUを選び間違えてるよ」って出してくれれば直ぐに分かるものをわざわざ偉そうに難しくしやがって・・・このヘッポコ役人 (^^;
 安定して焼ける。とても結構です。




覚え書きTOP