RL78/G13(R5F100MF) にて、データフラッシュライブラリ Type4を使用しています。
データフラッシュの容量が、8K のマイコンです。
仕様としては、ブロックイレース⇒データ書き込みを、1ブロック分のデータ書き込み完了時次のブロックを消去して順次書き込みする形としています。
問題は、0(相対アドレス0)と1(相対アドレス0x400)の2ブロックまではうまくいくのですが、ブロック#2 相対アドレス0x800 のブロック消去(PFDL_OK)し、書き込みコマンドを実行すると、なぜか”PFDL_ERR_PARAMETER”(パラメータのエラー) が返ってきてしまいます。
ブロック0/1がうまくいっているので、何か 2ブロック以降の相対アドレスが書き込めない状況になっていると思われます。API引数が、アドレスとバイト数、配列だけなので、0x800以降が無視されるような根本的な問題のような気もします。
設定など、思い当たるところがないので、行き詰っています。アドバイスをいただきたいと思い、投稿していますのでよろしくお願いします。
e2studio + CCRL で、データフラッシュを使用するまでのまとめ
<必要資料とその概要>
★RL78G13_データフラッシュType4_アプリケーションノート
(ファイル名)REN_r01an2827jj0100_rl78_APN_20150528_1.pdf
⇒データフラッシュ使用時のハードソフトの全体像がつかめる資料
★RL78セルフRAMリスト
(ファイル名)REN_r20ut2943jj0305_rl78_MAH_20210205.pdf
⇒マイコン種類ごとの設定要不要と必要なセルフRAMのアドレスを参照できます
★RL78データフラッシュライブラリType04ユーザーズマニュアル
(ファイル名)REN_r01us0049jj0106_rl78_MAT_20181031.pdf
⇒ソフト実装に必要な情報:実装フローや実行サイクル、注意事項などの詳細
★V2.00モジュールダウンロード資料:FDL_RL78_Type04_Installer_V200-doc-j
(ファイル名)r20ut0749jj0105_rl78.pdf
⇒モジュールのインストール方法とプロジェクトの設定
※プロジェクトはCS+とかCubesuiteベースなので、e2studioとは差異があります
<モジュールのダウンロードとインストール>
★RL78 データフラッシュライブラリ Type04 V2.00
[概要]
CC-RLコンパイラ用パッケージ Ver.1.05とCA78K0Rコンパイラ用パッケージVer.1.05が、一つのファイルに統合されてV2.00としているだけ
[ダウンロード]
FDL_RL78_Type04_Installer_V200-doc-j
[解凍]
⇒RENESAS_RL78_FDL_T04_2V00.exe を実行すると、以下ファイル群が解凍される
・pfdl_types.h
・pfdl.h
・pfdl.inc ※アセンブラで記述しない場合は不要
・pfdl.lib
[インストール]
⇒これらのファイルを、プロジェクトファイルのフォルダに入れるだけ
E2studioでは、フォルダに入れるとプロジェクト読み込み時自動でプロジェクトに組み込まれる
⇒プロパティ⇒C/C++ビルド⇒設定⇒ツール設定⇒Linker⇒入力 にて、ライブラリに.lib ファイル追加 ※ワークスペース相対登録要
<プロジェクト上の設定>
[プロパティ設定]
⇒プロパティ⇒C/C++ビルド⇒設定⇒Linker⇒セクションの自動セクションのチェックをつけてると自動でセクション設定される ※リンクディレクティブ不要
⇒その他は、r20ut0749jj0105_rl78.pdf の記述を参考に設定する
プロパティ⇒C/C++ビルド⇒設定⇒ツール設定⇒Linker⇒デバイス内の以下の項目設定する
⇒ ビルド後に、できる map にて、生成アドレスが正しいかを確認しておく
[自動生成]
⇒コード生成⇒クロック発生回路⇒データフラッシュにて、アクセス許可と使用するをチェックする。コードを生成するを実行すると、r_cg_pfdl.c/h ができる
<実装>
サンプルがモジュール解凍時に入っている(r_pfdl_sample_c.c)ので、参考に前述資料を見ながら実装