猫又です、宜しくおねがいします。
古くなってきたCA78K0RからCCRLへの移植を検討しております。その中で、セクションの割り当てがよくわからず困っております。
具体的にやりたいことは、たとえば64kBのF13マイコンを使うとしてCS+ for CCで以下のようにセクション配置をする方法をご教示いただけませんか?
CS+のリンクオプションのセクション(-STARt)を設定すると予想しているのですが、恥ずかしながらアプリケーションノート等を読んでも使い方がわかりませんでした。
ご教示何卒宜しくお願い致します。
猫又さん、こんにちは。NoMaYです。cstart.asmとstkinit.asmは以下のようにしてブートクラスタ0に配置してみました。cstart.asm
;;;;;;;;.SECTION .text, TEXT.SECTION .text_BCL0, TEXT
stkinit.asm
;;;;;;;;.textf .CSEG TEXTF.text_BCL0 .CSEG TEXT
*** Mapping…
猫又さん、こんにちは。NoMaYです。プロジェクトを1つ作ってみました。(すみません、本件に直接関係無い細かい設定は、単に私の好みです。)issue_RL78F13_64K_20230128.zipRL78F13_64K.map
Renesas Optimizing Linker (W3.05.00 ) …
猫又さん、こんにちは。NoMaYと申します。ちなみに、どのアプリケーションノートを参照されましたか?それを知りたいです。そして、そもそもセクション設定のことだけでは済みませんので、ファームウェアアップデートのアプリケーションノートを見ることになると思います。URLについては、過去、以下のスレッドにまとめたことがあります。ですが、ちょっと古いです。記憶では、最近のトピックスとしては、RL78/G23等の世代向けに暗号化対応のアプリケーションノートが公開されていたように思います。フラッシュ書き換えについてcommunity-ja.renesas.com/cafe_rene/forums-groups/tools/f/forum21/5700/thread
猫又さん、こんにちは。NoMaYです。すみません、リンク切れ、とか、検索機能の仕様変更?、とか、まともにURLを辿れませんね。調べ直してみます。
NoMaYさん< ありがとうございます。返信が遅れてもうしわけありません。
CA78K0R(以下CCCA)ではブートスワップを使ってアップデート機能を実装しているのでそれと同じことをCCRLでやりたいと考えています。
また、分割ではなく、1つのプログラムでBCL0領域にアップデート機能をセクション指定で配置してBCL0以外をブロック消去してもプログラムは動作するようにしたいと考えています。
CCCAの場合は、DRファイルでMEMORY BCL0:(0H,2000H)MEMORY ROM:(4000H,BC00H)として領域を切り、あとはセクションをMERGE SAM_CODE :=BCL0などのようにして割り当てた上で、プログラムコード上で#pragma section @@CODEL SAM_CODEとして上手くいっていたのですが、CCRLでセクションをCS+で4000h,APLとしてから#pragma section text APLvoid application(void){...}としても、この関数は4000h番地以降に配置されずBCL0に配置されました。(MAPファイルも観ましたし、実際にデバッガでロードしてメモリ上で配置されないことを確認しています)
このとき、ビルドのログにW0561100:Cannot find ".BCL0" specified in option "start"のように定義したセクションを使っていないというワーニングが出ています。色々資料をご紹介下さりありがとうございました。読んだことのない資料も多いので確認してみます。