メモリマップデザイナ¶
概要¶
smm (SolidMemoryMapDesigner 形式) ファイルを編集して、メモリ空間を設定・確認することができます。 SOLIDのMMU設定については ユーザーガイド メモリマップの設定 (MMUの設定) を参照してください。
参考
属性については メモリ空間 を参照してください。予約済みメモリ空間については 定義済みのメモリマップ名 を参照してください
表示方法¶
SOLID-IDEでsmmファイルを開きます。
smmファイルの置き場所¶
memory_map.smm ファイルの置き場所は、目的によって異なる2か所があります。
ターゲットボードで統一された共通メモリマップを使いたい場合¶
ターゲットボードの共通メモリマップを使う場合は solid-os/bsp/<ターゲットボードbsp名>/drivers/memory_map.smm に置きます。
そのボード向けの共通のファイルですので、一度作れば、他のアプリソリューションは参照するだけで便利です。 一方、書き換えると、ビルドツリー内で、そのボードのBSPを使っている全アプリソリューションが影響を受けることになります。
アプリソリューション固有のメモリマップを使いたい場合¶
特定のアプリソリューションで固有のメモリマップを使いたい場合は、solid-os/apps/<アプリソリューション名>/memory_map.smm に置きます。 また、アプリソリューションに _pre プロジェクト (solid-os/pre/pre.ptsln) が含まれている必要があります。
この場合は、アプリソリューション固有のファイルですので、修正しても他のアプリソリューションは影響を受けません。
_pre プロジェクトによる IDE の動作¶
_pre プロジェクトをアプリソリューションに含むことにより、IDE は、以下の動作をします。
memory_map.smm がアプリケーションフォルダに存在すると、アプリケーションフォルダのものを優先使用し、アプリケーションフォルダに無い場合は bsp フォルダにあるものが使用される。
その時点で使用されている memory_map.smm が _pre プロジェクト配下に表示されるので探しやすい。
注釈
memory_map.smm が更新された際に正しく反映されるよう、bsp プロジェクトが、_pre プロジェクトに依存するよう「ビルド依存関係」を設定するのを忘れないようにしてください。 依存関係が無いと、memory_map.smm を書き換えても、書き換える前の情報が使われてバグになる場合があります。
属性を自由に設定する¶
属性のドロップダウンから SOLID_DIRECT を選択し、設定したい属性を有効にします。
属性名は先頭に SOLID_MEM_ATTR_
を付けたものに対応しています。( READONLY なら SOLID_MEM_ATTR_READONLY
)
属性の詳細については メモリ属性値 を参照してください。
物理アドレス制限の設定¶
物理アドレスをあらかじめ設定しておくことで、設定したメモリ領域がはみ出ていないか確認できます。
上部のツールバーから Mappable Areas Table に切り替えます。
この表で設定したエリアの範囲外にメモリ空間が存在する場合、smmファイルの保存に失敗します。
マルチ OS 環境等で、SOLID-OS では使えない物理アドレス領域を明示的に示す¶
マルチOS環境(例えば、Linuxとの共存環境)等で、SOLID-OSでは使ってはいけない物理メモリアドレスを明示的に指定するには、
Attribute
の項目に、プルダウンメニューで表示される以外の文字列を入力します。これにより、メモリマップ編集中に
、誤って使ってはいいけない物理アドレス領域を指定したことを簡単に認識できます。
これらエントリは、smm 形式ファイルにのみ追加され、ビルド時に出力されるソースには反映されません。
SOLID-OS管理外の領域ですので、 Virtual Address
には、 NO_ADDRESS
を指定します。
領域名 "Linux" に Attribute "LINUX" を指定した例
アドレスサニタイザの設定¶
アドレスサニタイザの監視領域の設定もメモリマップデザイナで行うことができます。
SOLIDのアドレスサニタイザの詳細については ユーザーガイド アドレスサニタイザ を参照してください。