御無沙汰しております。
現在、78K0Rシリーズのマイコンを使用しています。
開発中は、CS+のプラットフォームを使用し、E1経由でターゲットマイコン(78K0R)のFlashにプログラムをロードしてその動作を
検証しておりました。
ここにきて、UART経由でセルフ書き込みを行ってほしいとの要求を頂戴いたしました。
そこで、WEBを検索し「アプリケーションノートR01AN0005JJ0100 78K0Rマイクロコントローラ フラッシュ・セルフ・プログラミング・ライブラリ Type03」を入手し、読んでいますが、どうにも、イメージができません。
どなたか、初心者HOWTO情報を御教授いただけませんでしょうか?
資料の在り処でも結構ですので、何とか、初心者でもできる情報提供をお願いいたします。
78K0R シリーズの何を使用されてるのかわかりませんが、78K0R/Kx3 なら『78K0R/Kx3 フラッシュ・メモリ・プログラミング(プログラマ編)』という資料で書き換えプロトコルが解説されてるので参考になるかと思います。
書き換えソフトの参考としては、78K0R シリーズではなく RL78 用ですが、『KURUMI Writer for Win V1.00 Source』や『GR-KURUMI書き込みTOOLベリーシンプルライターソース(暫定版)(転載)』、『rl78flash』等が参考になるのではないでしょうか。
チョコです。
書き込み方法としては、"セルフ書き込み"ですよね。
通常、セルフでのフラッシュ書き込みでは書き込むデータを外部から供給し、
そのデータをあらかじめ定められたフラッシュに書き込むことになります。
フラッシュのどこに書き込むかは前もって決めておくのが普通です。書き
込むためのセルフライブラリを含むプログラムの配置も、書き込み対象の
領域とは別にして、そこは書き換えしないようにする必要もあります。
(また、ブート領域のように書き込む領域によっては注意が必要です。)
セルフのライブラリは、フラッシュに書き込むデータはあらかじめRAMに
準備されているとして動作することになります。書き込むデータをUART
経由で受け取るとのことですが、そのための通信仕様をきちんと決めておく
必要があります。
RL78のANに"セルフ・プログラミング(UART 受信データ)CC-RL"が
あるので、これが参考になるのではないでしょうか。
(他にCSIやIICでデータを受信するANもありますが、単に通信手段の
違いだけだと思います。)
documentation.renesas.com/.../r01an2761jj0100_rl78.pdf
fujita nozomu さん
御回答ありがとうございます。
/LH3を使用しています。
因みに、RL78の記述を78K0Rシリーズに適用できるのでしょうか?
チョコさん
資料確認してみます。
RL78の出没で頓挫してしまい、また、セルフ・プログラミングは試さなかったのですが、78K0RKX3Aをスタディしたことがあります。ハードウエアマニュアルでイメージを掴むためには不十分なのでしょうか?弊社にはハードウエアマニュアルを読まない後輩が多いので、少し気になりました。
セルフ・プログラミング・ライブラリを使用させることで詳細は意図的に隠しているように感じてました。細かいことは気にしないで "セルフ・プログラミング(フラッシュ・メモリの書き換え)の流れ" の通りに組み込めば良いように思います。詳細を隠すのは旧NEC系に多い考え方のように感じます。確かに気持ち悪いですよね。
fujita nozomu さん、チョコさん
追記ですが、RL78と78K0RはFlash、RAMの構造は一緒なのでしょうか?
マイコンのコアシリーズが違うと、やり方の違う・・・・とかないものでしょうか?
に
対象デバイス
RL78/G13
と記載がありましたので、シリーズが違うと、やり方も違ってくるのか否か・・・・・
そこが、大変気になっております。
御回答いただきながら、再質問で申し訳ございません。
>RL78と78K0RはFlash、RAMの構造は一緒なのでしょうか?
メモリ構成の違いはハードウェア マニュアルで確認できるかと思います。
Flashの細かな違いは、ライブラリで吸収されるはずです。
RL78のANを紹介したのは、少なくとも、通信と書き込みの間の関係の
参考になるかと考えたからです。
RL78でどのようなことをやればいいかの大まかなことを理解して、その上で
78K0Rのライブラリを使ってください。
RL78のANはブート領域の書き換えになっていますが、場合によっては、
それは無視して、それ以外のアドレスを対象に書き換えを行った方が簡単
です。
どちらにしても、Jinさんがどのような書き換えを行いたいかをはっきり
させる必要があります。
> RL78の記述を78K0Rシリーズに適用できるのでしょうか?
78K0R/LH3 のハードウェアマニュアル『78K0R/Lx3 ユーザーズマニュアル ハードウェア編』に書かれているフラッシュメモリ書き換えの方法は単線UART通信であるのに対し先に挙げた RL78 の書き込みツールは 2線UART通信によるものなのでそのまゝでは使えません。
また、78K0R/LH3 に対しては『78K0R/Kx3 フラッシュ・メモリ・プログラミング(プログラマ編)』のようなプロトコル内容を解説した資料が見当たらないため、その点については確認する必要があります。
公開されているかわからない資料を探すよりはチョコさんの書かれている"セルフ書き込み"の方法を独自に実装するのが早いと思います。
kijo さん、チョコさん、fujita nozomu さん
皆様、お忙しい処、御回答ありがとうございます。
どうにも、私の知識レベルでは、難解な箇所が多々ございます・・・・・
以前使用していたFlashマイコンは、専用ツールで書き込むか、JTAGで書き込む程度の事しか経験がないので、
セルフ書き込みがピンときていないのが、正直な処です。
ブートクラスタをスワップして・・・・・・・
イメージはできているのですが、ブート領域(4k)にライブラリー含め、書き込み用プログラムを置くその方法は???
セクションコードの宣言は?・・・・・・割り込みが途中で発生した場合の対処は?
???がいっぱいで、何から手を出せばいいのか・・・・・・・
この手のデバイスをいじるには、経験不足か・・・・・・
どうにも、質問するにもポイントが整理出来ていないのか・・・・・・
もう少し、勉強してから、お聞きした方がよさそうですね・・・・・お忙しい処、ご対応ありがとうございます。
しばらく、殻に閉じこもり、勉強・検討・実験を重ねてみます。
セルフ書き込みは、実際のアプリの中でプログラムが自分自身の一部を書き換えるものです。
自分自身=セルフという意味です。
専用ツールやJTAGは外部のプログラマで書き換えると言えるかと思います(JTAGは使った
ことがないので確実ではありません)がこれとは根本的に異なります。
この2つの方法には大きなギャップがあるので、最初のコメントの頭でセルフかと確認しました。
ちなみに、fujita nozomu さんが触れている内容はライタを使った書き込みの手順を公開
しているものになります(セルフではありません)。
どちらにしても、何をやるべきかを確認し直す必要があります。
資料を読み漁り、概要・仕組み・手法を何とか理解しました。
いまは、それをもとに、実験中です。
色々とありがとうございました。