はじめまして。
ブログ「なんとかなるさね」の記事
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では応答が途絶えたままでパリティ設定による違いがありません。
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が応答するにはどうしたらよいのでしょうか。
こんにちは。
それは良かったですね。試された手順を読む限りでは、物理的に壊れた訳では無さそうです
ので、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が印加
されていないようにする為)というのを書き忘れていました。ですので、繋がないように
お願いします。すみません。
ご回答ありがとうございます。
バイナリエディタでなくテキストエディタによる作成でよかったのですね。
3個のうち1個は前回と変わりありませんが、2個はエラーメッセージが表示されることなくコマンド終了を確認し、
RFP V2.05.03(無償版)でブランクチェックの正常終了を確認しました。
私がダメにしたという可能性もありますが、ダメな一個が一番初めのチップだった可能性もあります。
(目印などつけておらず定かでありません。)
大変お世話になりありがとうございました。
みなさん、ありがとうございました。
1個めのチップで書き込みできなかったときにすぐに2個目で確認しなかった事に関して言い訳させてください。
3個のチップを犠牲(?)にして4個目にして書き込みが上手く行きましたが、実際に使用するのは5個目になります。
5個目はDIP基板にジャンパーピンをはんだ付けせず、ブレッドボードに挿したジャンパーピンにDIP基板を押し付けて書き込みを行いました。
ジャンパーピンをはんだ付けしてしまっては本来使いたいところに使えず無駄になってしまうと考えたのと、書き込みに失敗してもアプリ上で何度でもリトライできるものと軽く考えていたために2個目を試すのが遅れてしまいました。
いきなり動作不良(の可能性あり)とも考えられませんでした。
なぜ、DIP基板のままジャンパーピンをはんだ付けしたくないかと言うと、ICを実装した裏側に実装したいためです。→自作ボード部分図添付
ジャンパーピン→IC→DIP基板
の順ではんだ付けしたいと考えました。
LCDドライバLSIのためのクロック(50Hz)生成において、小さく,安くクロック生成できる手段として活用させていただきました。
(マイコンの機能をほとんど使っていなくて申し訳ありません。使い込むスキルもありません。)
みなさん大変お世話になりありがとうございました。
G10を50Hz生成部品として使う手もあったのですね。(画像は真似して作ってみた時の画面です。)
やりたかったことが出来るようになったとのことで、もうRulzを見ていないかも知れませんが、
もしまだ見ていたら、私の2016/7/16 21:20の投稿の中で知りたいと思っていた、Applilet EZ PL
for RL78が生成したソースのopt_byte.asmのOPTIONのデータがどうなっているか教えて頂けると
うれしいです。(すみません。オシロの波形の件とは違って、こちらの方は私の中のモヤモヤとした
感覚が今もまだ落ち着いてくれなくて、、、) あるいは、書き込んだHEXファイルの以下の部分を
教えて頂けるだけでも構いませんので。
ソースなら:
OPTIONデータの部分
一例を挙げるなら
DB 11110011B
HEXファイルなら:
行頭 :0400C000 に続く部分
:0400C000 ここから→ EEF3F9055D
とかです。
以下は真似した時のApplilet EZ PL for RL78の画面です。コンパイラはCubeSuite+/IAR/GNUを
選択出来るのですが、製品に含まれているCA78K0R V1.70でビルドしたものです。(あっ。しまった。
投稿後に気付いたのですが、周期はパルス幅の2倍になるとの説明文がヘルプにありました、、、)
:0400C000EEE3FB056B
でよろしいでしょうか。
マイコンはユーザー経験がほとんどないのでなにがどこにあるのかわかってません。
どこにあるどのファイルのどの部分か指定していただければ開示いたします。
(opt_byte.asmとは?)
クロックは0.01秒パルスで生成しました。
コンパイラはCubeSuite+を選択してます。
Applilet EZ PL for RL78による書き込みの再挑戦はやっていません。
返信ありがとうございました。以前よりも状況が理解出来てきました。実は、外部リセット端子を
「使用しない」(「P125/KR1として使用する」)にしてしまうと、今回の件は知っている人からすると、
且つ分かってしまえば、「G10のあるあるネタですね」みたいな感じ(ちょっと良く無い表現をすると
「そりゃ当たり前でしょ」という言い方をする人もいるかも?)なトラブルでした。推測ですが、多分、
Applilet EZ PL for RL78を試した最初の1回目で書けていたのだと思います。ただ、そちらは書けた
のに対し、(私の手元でも)RenesasFlashProgrammer V3.01が変な動きをしたので、(私の方も含めて)
混乱が深まって行ってしまったような気がします。すみません。
Applilet EZ PL for RL78はマイコンを知らない人でもG10を使える(or 楽しめる?)ようにする為の製品
だと思うのですが、このマイクロコントローラ設定ダイアログはマイコン(というよりG10そのもの)を
それなりに知っている人でないと意味が分からない上(ここはルネサスさんの気が利かなかった?)、
USBシリアル変換モジュールによる自作書き込み回路(ここは自己責任になるかな?)では面倒なことを
起こしてしまう外部リセット端子機能の選択を設定出来てしまうようになっていました。(少ない
ピン数でなるべく多くの機能を持たせようとした結果、ちょっと厄介な仕様になっている部分です。)
色々どうもすみませんでした。私からの問い合わせはもう無いです。情報ありがとうございました。
リセット端子の制御にRTSなどを使っていると、USBがコネクションしないと操作できないため電源投入時にマイコンが走ってしまうことがあるので FTDIが動き出すまで、リセットをLOWに固定できる仕組みがあるとオプションバイトを気にせずプログラムを書き込むことができるんですよねー。
返信ありがとうございます。
「あるあるネタ」の内容が理解できていません。
ろくにマニュアルも読んでいなくて気軽に質問をして申し訳ないのですが教えてください。
「リセット端子動作:リセット端子の選択 使用しない」にしてコード書き込みを実施した場合、
USBシリアル変換モジュールによる自作書き込み回路(ここは自己責任になるかな?)と
RenesasFlashProgrammerの組み合わせでは一度書き込みを行った後はマイコンにアクセスできなくなるという事でしょうか。
今回に関していえば、2個目以降はブランクチェックを確認できていますのではじめの1個目が運悪く不良動作のチップだったと考えますが、早くに2個目以降にチャレンジしていれば騒ぐ必要もなかったのかもしれませんがワンチャンスと言う認識はなかったのでやはりはまっていたのでしょうね。
一応web検索したつもりですが詳しい情報がみつからず、親切に教えて頂き助かりました。
私のような人がこのスレを見つけて問題解決に役立つ事を祈ります。
そうです。USBシリアル変換モジュールを使用した場合には、ワンチャンス、ということになります。
ただ、PICやAVRにある(と記憶しているのですが)以後のプログラム書き換えを全面的に禁止するような
ヒューズビットとは違い、あるちょっとしたシーケンスに従えば何事も無くそれ以後も書き換え操作
(ブランクチェック等も)出来るようになっていて、それに従っている(メーカー製の商品である)E1では、
ワンチャンスではない、ということになります。実は、この「あるちょっとしたシーケンス」というのに
USBシリアル変換モジュールを使用した自作書き込み回路では従うことが出来ないのです。(その結果、
先日紹介したrl78g10flashによる復旧手順のように人手による操作が必要になってしまうのです。)
「あるちょっとしたシーケンス」というのは、「P125/KR1として使用する」ことにした(元々は外部リセット
端子だった)端子をVDD供給開始時点からずっとLowに固定しておき、書き換えモードに引き込む
時に初めてHighにする、というものです。この(元々は外部リセット端子だった)端子の制御には、USB
シリアル変換モジュールのRTS(ものによってはDTR)から作られた信号(あるいはそのもの)が接続され
ていますが、Windowsとの絡みでRTS(あるいはDTR)をずっと固定しておくことが出来ず、パタパタして
しまうのです。(少し前にCarcon999という方のブログにDTRの場合ですがオシロの波形がありました。)
その結果、書き換えモードに引き込むことが出来なくなり、書き換え操作(ブランクチェック等も)出来なく
なってしまうのです。
また、これが「あるある」だということがweb検索しても出てこないのは、G10を使うのは初めてでも
マイコン経験値としては高い人が試している場合が殆どで、外部リセット端子をポートとして使うのは
色々厄介なことになりそうだと皆さん無意識に避けてしまっていて、表に出て来ていないのではないか
という気がします。(私の方はと言えば、一応知識としてあるにはあったのですが、Kirinさんに指摘
されるまで、それが原因である可能性/そのことの危険性、については気が回っていませんでした。)
ykさんが尋ねたかったことは技術+αのような気がしますが、私はうまく回答出来ているでしょうか?
Kirinさん
WindowsとFTDIのデバイスドライバの進化と書き込みソフトの改良で出来ると良いのですが、、、ハードで
となると、例えばrl78g10flashを開発された人のGitHubの回路図(Mode3)を少し変更(RTSとRESETを
直結してTOOL0をプルアップ)すればダイオード1本と抵抗1本(とFT232RL)で作れてしまう程(その代わり
ルネサス純正ツールで使うことは諦める)ですので、そのことを知ってしまうとハードの複雑化に関しては
二の足を踏んでしまいそうです。それより、いっそ、書き込みソフト側で今回の設定をブロックしてしまうのも
ありなのかもという気がします。(ヘルプでAdvanced User Onlyみたいな説明のあるコマンドオプションを
用意して、それを指定された場合だけ許可するとか。) 仕事以外であれば、どうしても10pinにしないと
いけない制約は強くは無いと思うからです。(もっとも、16pinで同じ話になると、その上はG12/G13になって
そこで困ってしまうので、問題の先送りにしかなっていないかもしれませんが。あと、KRxとして必要なら
代替出来ないですね。) (独り言ですが、GitHubの回路図のTOOL0にプルアップ抵抗が無いことに気付いた
ばかりですが、省略されているだけなのだろうか?)
わわいです
ちょっと補足情報を。。
USB-シリアル変換ケーブルのRTS信号というのは、アプリ側から操作できる信号としては便利なものなのですが、こいつは本来、通信のフロー制御のコントロール端子のため、シリアル通信を行うとその状態が(勝手に)変わってしまいます
んで、その変わるタイミングってのは、通信の制御の機能が満足すればいいので厳密には決められていません
#ということは、シリアル変換チップにより変わるタイミングが変わってしまう
ということで、こういう用途にこういう信号を使うというのは筋が悪い、と言わざるを得ません。
#むかしこれでハマったことがあったらしい。。
コメントありがとうございます。
ハード,ソフトで対応して何も考えなくても問題なく使えるのが一番ですね。
USBシリアル変換モジュールによる自作書き込み回路は自己責任として、こんな使い方をしたら当然こうなるというのが分かる方には自明としても、私のような考えの及ばない者が気付くきっかけとしてその辺を明示した情報が検索で参照できればよいなと思いました。
今回のスレがそれに該当するものになると考えます。
USB接続できるAudiuno互換マイコンモジュールでは今回と同様の事が瞬時にできましたが、自作のPCB基板(50㎜□)に実装するのと今後リピートの可能性もあるという事で小さく,安くという基準でRL78/G10 10pinDIP基板を選びました。Applilet EZ PL for RL78を使ったことも1チップマイコンをユーザーとして使ったこともなく、「できるはず」ぐらいで始めていきなりはまってしまいましたが、みなさんのご協力のおかげで何とかなりました。
インターネットを活用してものづくりが身近になっていますので、1チップマイコンが活用される機会は増えるものと思います。(Ardiunoを使い捨てにするのはちょっと・・・)
エミュレータなしで使い始められるという敷居の低さと検討段階から初歩的で必要な情報が参照できればもっと普及するのではないでしょうか。
web検索して保証のない情報で試行錯誤するのに比べてかふぇルネのようにスキルのある方に直接相談できるのは画期的と思います。ルネサスマイコンとかふぇルネが普及するか一般の人がたどり着けるかが問題ですね。
ちなみに私はもともとRL78寄りのバイアスがありました。つかう側の経験はないのですが1チップマイコンの中身は知っていた方のはずなのにこの体たらくです。