RL78マイコン基板(RL78/G10)|秋月のRL78/G10 10pin DIP基板に自作回路でフラッシュ書き込み

はじめまして。

ブログ「なんとかなるさね」の記事

http://mon80.blog.fc2.com/blog-entry-543.html 

を参考にRL78/G10 10pinDIP基板にFT232RL USBシリアル変換モジュール+3ステートバッファ74HC125N経由でPCからプログラムを書き込もうとしましたが、接続なりません。

Applilet EZ PL for RL78から直接書き込めると考えたのですが、

コンパイルが終了し、「コンパイルが完了しました。プログラムをフラッシュに書き込みます。」でOKを押した後は応答がなくなります。USBの端子を抜いてエラーを出さないと復帰できないようです。

RenesasFlashProgrammerを試してみたところ、「デバイスから応答がありません。」と表示されエラーとなります。

オシロで波形を見たところ、TOOL0がH→L→HのLの間に_RESETがL→Hとなり、その後TOOL0がバタバタして何かシンボルは転送されているようです。その後はTOOL0=H,_RESET=Hのままとなります。

フラッシュ・メモリ・プログラミング・モード引き込みのモード引き込みバイト・データは転送されているようですが、

そのあとのマイコンチップからの応答がないという事でしょうか。(プロトコルがわかっていません。)

TOOL0の波形はDIP変換基盤だけでなく、マイコンチップのリード上で確認しました。

FT232RLからのUSB経由での電流供給が十分でないのかとも考え、RL78/G10 10pinDIP端子のVDD,GNDに直接5V供給もしましたが改善しません。

ご教授の程よろしくお願い申し上げます。

COMデバイスドライバ設定のパリティは「なし」でよろしいでしょうか。「奇数」にするとRenesasFlashProgrammerではパリティエラーとなります。Applilet EZ PL for RL78では応答が途絶えたままでパリティ設定による違いがありません。

Parents
  • RL78/G10 の書き込みプロトコルについては下記の投稿が参考になると思います。

    RL78/G10の外部UARTによる書き込み

    japan.renesasrulz.com/.../2163.aspx

    タイミング等にも言及されているので通信内容を確認されてはいかがでしょうか。

  • ご教示ありがとうございます。

    ●消去後書き込み

     モード引き込み

    TX:3AH

    RX:06H

    マイコンチップ側からの06Hが返っていないと思うのですが、その対処方法が分かりません。

    信号のタイミングに関しては私にどうこう出来る話ではないと思うのですが、_RESET

    立ち上がり前後のTOOL0に関するtSU,tHD,tSUINITは満たしています。

    RL78/G10のPIN1,2,4,5(TOOL0,_RESET,VDD,GND)以外は接続なしで問題ないのですよね?

    RL78/G10が応答するにはどうしたらよいのでしょうか。

  • すみません。先程は私の方の好奇心の話だけにしようと思ったのですが、1点だけ教えて下さい。

    Applilet EZ PL for RL78で生成したソースのopt_byte.asmのOPTIONのデータがどうなっているか

    知りたいです。例えば、私の設定で生成したソースでは以下のようになっていました。

    OPTION:     DB  11101110B

                DB  11110011B ← ここのb4がKirinさんが指摘されていたPORTSELBビットです

                DB  11111001B

                DB  00000101B

    以下は私がソースを生成したときのApplilet EZ PL for RL78の設定画面です。

    試しにApplilet EZ PL for RL78を再インストールしたところ初期設定は以下でした。

  • Kirinさん、ykさん
    こんにちは。
    >もし、オプションバイトC1h番地のビット4(PORTSELB)が0になっていると、・・・
    >その場合はE1エミュレーターでチップ消去する必要があります。・・・
    この件ですが、E1エミュレータ無しでも復旧できました。以下のツールを使いました。
    https://github.com/msalau/rl78flash/releases/ の rl78flash-0.5.2-win32.zip
    (1)ダウンロードして解凍した後、以下の1行だけの内容でrecover.hexを作成します。
    S2080000C0FFFFFFFF3B
    (2)FT232RLのRTSとG10のRESETを直結します。(RxD/TxD/TOOL0側はそのまま74HC125を使用。)
    (3)パソコンとUSBシリアル変換モジュールを接続します。
    (4)コマンドプロンプトを開き、解凍したフォルダへ移動し、以下のコマンドを入力します。
    rl78g10flash -m 2 -wdv com4 recover.hex 2k
    (5)以下のメッセージが表示されたらG10のVDDのジャンパワイヤーを抜き差しして何かキーを押します。
    Turn MCU's power on and press any key...
    抜き差しする意味はG10の電源をOn→Off→Onするということです。(この時、RESETはLowです。TOOL0も。)
    (6)エラーメッセージが表示されることなくコマンドが終了すれば復旧完了です。
    (7)パソコンとUSBシリアル変換モジュールを切り離します。
    (8)FT232RLのRTSとG10のRESETの結線を元の74HC125を使用するものに戻します。

  • NoMaYさん

    ツールならびに詳しいご教示ありがとうございます。

    3個のうち1個は壊れているのかもしれませんが、2個はhexファイルのリードでエラーになります。

    バイナリディタでテキスト入力してセーブしましがファイルの作成方法に条件などありますでしょうか。

    テキスト入力時の文字エンコードタイプが指定できますが、今回に関しては違いがでないですよね。

    (Shift-JIS,ASCII,EUCと試してみましたが結果同じでした。)

  • ykさん

    こんにちは。

    hexファイルのリードでエラーになるとのことですが、もしやと思い、行末に改行が無い

    ファイルを新規に作成して試したところ、私の手元でも同じエラーになりました。ですので、

    行末に改行(バイナリでは CR,LF(0D,0A) または LF(0A) のみ)を入れて試して頂けますか?

    あと、復旧手順を読み返していて気付いたのですが、G10のVDD/GND/TOOL0/RESET以外の

    端子には何も繋がないようにしておく(VDDのジャンパワイヤを抜いたときにHighが印加

    されていないようにする為)というのを書き忘れていました。ですので、繋がないように

    お願いします。すみません。

  • NoMaYさん

    ご回答ありがとうございます。

    バイナリエディタでなくテキストエディタによる作成でよかったのですね。

    3個のうち1個は前回と変わりありませんが、2個はエラーメッセージが表示されることなくコマンド終了を確認し、

    RFP V2.05.03(無償版)でブランクチェックの正常終了を確認しました。

    私がダメにしたという可能性もありますが、ダメな一個が一番初めのチップだった可能性もあります。

    (目印などつけておらず定かでありません。)

    大変お世話になりありがとうございました。

  • みなさん、ありがとうございました。

    1個めのチップで書き込みできなかったときにすぐに2個目で確認しなかった事に関して言い訳させてください。

    3個のチップを犠牲(?)にして4個目にして書き込みが上手く行きましたが、実際に使用するのは5個目になります。

    5個目はDIP基板にジャンパーピンをはんだ付けせず、ブレッドボードに挿したジャンパーピンにDIP基板を押し付けて書き込みを行いました。

    ジャンパーピンをはんだ付けしてしまっては本来使いたいところに使えず無駄になってしまうと考えたのと、書き込みに失敗してもアプリ上で何度でもリトライできるものと軽く考えていたために2個目を試すのが遅れてしまいました。

    いきなり動作不良(の可能性あり)とも考えられませんでした。

    なぜ、DIP基板のままジャンパーピンをはんだ付けしたくないかと言うと、ICを実装した裏側に実装したいためです。→自作ボード部分図添付

    ジャンパーピン→IC→DIP基板

    の順ではんだ付けしたいと考えました。

    LCDドライバLSIのためのクロック(50Hz)生成において、小さく,安くクロック生成できる手段として活用させていただきました。

    (マイコンの機能をほとんど使っていなくて申し訳ありません。使い込むスキルもありません。)

    みなさん大変お世話になりありがとうございました。

  • ykさん

    こんにちは。

    G10を50Hz生成部品として使う手もあったのですね。(画像は真似して作ってみた時の画面です。)

    やりたかったことが出来るようになったとのことで、もうRulzを見ていないかも知れませんが、

    もしまだ見ていたら、私の2016/7/16 21:20の投稿の中で知りたいと思っていた、Applilet EZ PL

    for RL78が生成したソースのopt_byte.asmのOPTIONのデータがどうなっているか教えて頂けると

    うれしいです。(すみません。オシロの波形の件とは違って、こちらの方は私の中のモヤモヤとした

    感覚が今もまだ落ち着いてくれなくて、、、) あるいは、書き込んだHEXファイルの以下の部分を

    教えて頂けるだけでも構いませんので。

    ソースなら:

    OPTIONデータの部分

    一例を挙げるなら

    OPTION:     DB  11101110B

                DB  11110011B

                DB  11111001B

                DB  00000101B

    HEXファイルなら:

    行頭 :0400C000 に続く部分

    一例を挙げるなら

    :0400C000 ここから→ EEF3F9055D

    とかです。

    以下は真似した時のApplilet EZ PL for RL78の画面です。コンパイラはCubeSuite+/IAR/GNUを

    選択出来るのですが、製品に含まれているCA78K0R V1.70でビルドしたものです。(あっ。しまった。

    投稿後に気付いたのですが、周期はパルス幅の2倍になるとの説明文がヘルプにありました、、、)

  • NoMaYさん

    こんにちは。

    :0400C000EEE3FB056B

    でよろしいでしょうか。

    マイコンはユーザー経験がほとんどないのでなにがどこにあるのかわかってません。

    どこにあるどのファイルのどの部分か指定していただければ開示いたします。

    (opt_byte.asmとは?)

    クロックは0.01秒パルスで生成しました。

    コンパイラはCubeSuite+を選択してます。

    Applilet EZ PL for RL78による書き込みの再挑戦はやっていません。

  • ykさん

    返信ありがとうございました。以前よりも状況が理解出来てきました。実は、外部リセット端子を

    「使用しない」(「P125/KR1として使用する」)にしてしまうと、今回の件は知っている人からすると、

    且つ分かってしまえば、「G10のあるあるネタですね」みたいな感じ(ちょっと良く無い表現をすると

    「そりゃ当たり前でしょ」という言い方をする人もいるかも?)なトラブルでした。推測ですが、多分、

    Applilet EZ PL for RL78を試した最初の1回目で書けていたのだと思います。ただ、そちらは書けた

    のに対し、(私の手元でも)RenesasFlashProgrammer V3.01が変な動きをしたので、(私の方も含めて)

    混乱が深まって行ってしまったような気がします。すみません。

    Applilet EZ PL for RL78はマイコンを知らない人でもG10を使える(or 楽しめる?)ようにする為の製品

    だと思うのですが、このマイクロコントローラ設定ダイアログはマイコン(というよりG10そのもの)を

    それなりに知っている人でないと意味が分からない上(ここはルネサスさんの気が利かなかった?)、

    USBシリアル変換モジュールによる自作書き込み回路(ここは自己責任になるかな?)では面倒なことを

    起こしてしまう外部リセット端子機能の選択を設定出来てしまうようになっていました。(少ない

    ピン数でなるべく多くの機能を持たせようとした結果、ちょっと厄介な仕様になっている部分です。)

    色々どうもすみませんでした。私からの問い合わせはもう無いです。情報ありがとうございました。

  • NoMaYさん

    リセット端子の制御にRTSなどを使っていると、USBがコネクションしないと操作できないため電源投入時にマイコンが走ってしまうことがあるので
    FTDIが動き出すまで、リセットをLOWに固定できる仕組みがあるとオプションバイトを気にせずプログラムを書き込むことができるんですよねー。

Reply
  • NoMaYさん

    リセット端子の制御にRTSなどを使っていると、USBがコネクションしないと操作できないため電源投入時にマイコンが走ってしまうことがあるので
    FTDIが動き出すまで、リセットをLOWに固定できる仕組みがあるとオプションバイトを気にせずプログラムを書き込むことができるんですよねー。

Children
No Data