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では応答が途絶えたままでパリティ設定による違いがありません。

  • NoMaYさん

    たぶん大丈夫だと思いますけども
    もし、オプションバイトC1h番地のビット4(PORTSELB)が0になっていると、
    電源投入後一度でもリセットが解除されるとリセットマスクが有効になって、再度リセットが掛けられなくなってモード引き込みができなくなります。

    その場合はE1エミュレーターでチップ消去する必要があります。

  • Kirinさん

    おはようございます。今のところ、私も、その可能性は低いように思います。悲観的になる

    のは少し早いですよ、とは書いたのですが、マイコンを壊してしまったとか、FT232RLを壊して

    しまったとか、あくまで可能性としての大小なら、そちらの方がありそうな気がしています。

    (一番ありそうなのは配線ミスですが、正しいと思って作った物のミスはなかなか気付かない。

    ソフトとOSの相性問題の可能性も捨て切れないですし。)

    でも、まだ買い直すことを勧めるには根拠が不十分な状況ですかね。(あと、もし買い直す

    ことを勧めることになったら、10pin版(ROM 2K)ではなくて16pin版(ROM 4K)を勧めようかとも

    思っています。昨夜Applilet EZ PL for RL78で遊ぼうとしていて、簡単なゲート回路でも

    1.5K程のROMを消費するので、ROM 2Kでは余裕が無いという感触がひしひしとしましたので。)

    ykさん

    もし、職場やサークルなど身近にE1を持っているひとがいらっしゃったら、ブランクチェック

    出来るかどうかだけでも確認させてもらうと良いかもしれません。(ついでに、正常動作時の

    オシロの波形画像を撮らせて貰って、、、)

  • わわいです

    動かない動かない、と時間を消費するより、あっさりCPU買ってきて交換して動かしてみる、ほうが手っ取り早いと思われます。

    交換して動かなければ、CPUが壊れてる、という可能性は排除できるのでそれはそれでいいんではないでしょうか

  • 新しいチップで書き込みできました。皆さんありがとうございました。

    新しいチップでRFP V2.05.03(無償版)でブランクチェックが成功し、そのチップでApplilet EZ PL for RL78で書き込みしようとしたら書き込み処理のまま応答しなくなり、、初めのチップと同じ状態になりました。

    Applilet EZ PL for RL78で生成したコードをRFP V2.05.03(無償版)で別のチップに書き込みに成功しました。

    書き込んだ後にチェック・サムを実行したら応答しなくなり1,2番目のチップと同じ症状に・・・というのもあります。

    (FlashProgrammerの使い方わかってません)

    余計なことはせず書き込みまでで終わりにして、4個めにして所望のものが手に入りました。

    (6ピンに信号出力しているのですが、6ピンの出力信号がなまった波形が10ピンに観測されるのがちょっと気になりますが・・・。今回は6ピンの出力のみあればいいので気にしません。)

    3個の書き込みできなくなったチップはエミュレータであれば復活できるのでしょうか?

    以下蛇足です。

    ブログの回路と同じです。トライステートバッファの1番目と2番目が入れ替わってます。

    はじめの転送シンボルのオシロ画像です。

  • こんにちは。

    それは良かったですね。試された手順を読む限りでは、物理的に壊れた訳では無さそうです

    ので、Kirinさんの直感が当たっているのでしょうね。(でも、どういうカラクリで?というのは

    私的には気になりますが、それは私の方の好奇心の話だけにして。) 何かすごいと思いました。

    あと、拡大画像ありがとうございました。(解決後にも関わらず貼り付けて頂いて申し訳ないです。)

  • すみません。先程は私の方の好奇心の話だけにしようと思ったのですが、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(無償版)でブランクチェックの正常終了を確認しました。

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

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

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