IPアドレスを記憶する為にRX63N内蔵の
データフラッシュROMを使ってみる。
ルネサスのサンプルに
・仮想EEPROM
・シンプルフラッシュAPI
というものがあるので、こちらをなんとか実装してみる。
仮想EEPROM(以下VEE)を使うのに
シンプルフラッシュAPI(以下FlashAPI)が必要らしい。
アプリケーションノートを読みつつ
FlashAPIを実装
・r_flash_api_rxディレクトリをプロジェクトにコピー
・src\f_flash_api_rx.cをプロジェクトに追加
・r_flash_api_rxディレクトリをインクルードパスに追加
・r_flash_api_rx\srcディレクトリをインクルードパスに追加
・refディレクトリからコンフィグレーションをコピー
・システムに応じてr_flash_api_rx_config.hを変更
・利用プログラムにr_flash_api_rx_if.hをインクルード
BSPが必要になる・・・
とりあえずplatform.hを自作
必要になるdefineを追加していく
APIのコールバック関数を追加、
ソースファイルをflash_api_cb.cとする
BSP定義の関数を2つ追加、ソースファイルをplatform.cとする
とりあえずエラーが消えたところで
VEEを実装
・r_veeディレクトリをプロジェクトにコピー
・r_vee.cをプロジェクトに追加
・targets\rx63x\r_vee_rx63x.cをプロジェクトに追加
・r_veeディレクトリをインクルードパスに追加
・r_vee\srcディレクトリをインクルードパスに追加
・refディレクトリからコンフィグレーションをコピー
・システムに応じてr_vee_config.hを変更
・利用プログラムにr_vee_if.hをインクルード
BSPに追加定義が必要、platform.hにdefine追加
BSP定義の関数を2つ追加
FlashAPIのコールバック関数が実装されているので、
先に用意した関数を削除
APIのコールバック関数を追加、ソースファイルをvee_api_cb.cとする
いずれ動作が確認出来たらGR-SAKURA用BSPを公開しよう。
今まではサンプルプロジェクトを改造してきたけど
いよいよ物を仕上げる為に
CubeSuite+の新規プロジェクトを作成してみる。
既存のソースを追加、各種設定も合わせ
コンパイル、ビルド実行してみると、正常に動作せずpingが通らない。
2日間悩み続け、mapファイルに差異があることが判明
どうもROM-RAMセクションの設定が足りないようだ。
しかしCC-RXのプロパティで確認しても全く同じで違いが無い。
また悩み始めた時、ふとプロパティウィンドウの下を見ると
次のタブが並んでいる
「コンパイル・オプション」
「アセンブル・オプション」
「リンク・オプション」
「ヘキサ出力プション」
「ライブラリ・ジェネレート・オプション」
最初に表示されていたのは「共通オプション」で、これしか見ていなかった。
このうちリンクオプションにて
「ROMからRAMへマップするセクション」という項目があり
ここの値がデフォルトではなく
D=R
D_1=R_1
D_2=R_2
となっていた。
この項目は共通オプションには無い。
この値を入力して再度実行してみると、正常に動作しpingが通るようになった。
参考資料
・RX600&RX200シリーズ RX用シンプルフラッシュAPI アプリケーションノート
・RX600&RX200シリーズ RX用仮想EEPROM アプリケーションノート
本家Project-X RX62NをCSS化
3000行の手直しは大変だった。。