こんにちは。memoraです。e2 studio ccrx(V3.02)を使ってRX65N用プログラムを作っています。
FlashROM上に格納されてあるライブラリを起動時にBootがRAM上に展開し、複数のアプリから参照させるのが目的ですが、RAM上に作った指定セクションにライブラリを配置する方法が分からず困っています。ARM用uVisionではスキャットファイルに指定領域に入れるファイル(ABC*.o)を指定しリンク時に参照させれば配置可能でしたが、e2 studio ccrxではいかがでしょうか?ご教授、よろしくお願いします。
memoraさん、こんにちは。NoMaYと申します。> FlashROM上に格納されてあるライブラリを起動時にBootがRAM上に展開し、複数のアプリから参照させるのが目的これは何を意味していますか?ライブラリの頻繁に呼び出されるような共通関数をRAM上に配置してアプリの実行速度を向上させるような(Cortex-Rで行われているような?)ことでしょうか?
はい。そうです。
ライブラリ側で暗号化処理などを行っている為、スピードが必要ですね。
memoraさん、こんにちは。NoMaYです。そうでしたか。実は、RXマイコンでは動作速度向上の為にRAM実行させることは誰も行っていないです。(と私は思います。) たぶんですけれども、むしろ、動作速度が低下するように思います。なぜなら、以下の設定をしてキャッシュヒットしている場合には、FlashROMからの実行でも120MHzノーウェイトで動作する上、FlashROMのバスとRAMのバスは独立していて並列同時動作することが出来る回路設計になっている、ということからです。RX65Nで動作速度向上の為に必要なこと・FlashROMキャッシュを有効にする 私の記憶では、RX65Nの場合、RXスマートコンフィグレータの初期設定がFlashROMキャッシュを無効にする設定、だったと記憶しています。
NoMaYさん
ご教授、大変、有難う御座いました。
但し、狙いは、スピード向上のみではない為、FlashROM上での実行が出来ません。またライブラリの修正も出来ないので関数毎の配置も出来ません。linkerScript.ldが使えれば出来ると思いましたが、ccrxでは参照設定できるところが見つかりませんでした。「設定」‐「リンク」-「入力」に設定する方法などありましたらご教授、よろしくお願いします。
memoraさん、こんにちは。NoMaYです。> ライブラリの修正も出来ないので関数毎の配置も出来ません。これは、ソースが開示されていない、という意味ですか?つまり、objファイルもしくはlibファイルしか提供されていないので以下の2つの方法も不可能である、ということでしょうか?(1) ソースに#pragma section ○○○を記述する(2) コンパイルオプションでセクション名を変更する> 狙いは、スピード向上のみではない為どのような理由ですか?もし、ファームウェアアップデート機能を実装する為、というのであれば、FlashROMが2面あるデュアルバンクFlashROM品を選択する手もありますよ。これであれば、ファームウェアアップデート機能を実装する場合も、暗号化機能ライブラリ(objファイル and/or libファイル)をRAMに配置することなく実現出来ますよ。最近のトレンドとして、今回のような事情が無くても、TCP/IPライブラリのような高度な処理を必要とするようなファームウェアアップデート機能は、ちゃちゃっとデュアルバンクFlashROM品でやってしまう、ぐらいのことは皆さんされていますよ。