メモリマップデザイナ

概要

.smm (SolidMemoryMapDesigner 形式) ファイルを編集して、メモリ空間を設定・確認することができます。 SOLIDのMMU設定については ユーザーガイド メモリマップの設定 (MMUの設定) を参照してください。

参考

ここで指定するメモリ属性については メモリ領域種別 を参照してください。予約済みメモリ空間については 定義済みのメモリマップ名 を参照してください。

../../_images/memory-map-designer-overview.png

表示方法

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 を書き換えても、書き換える前の情報が使われてバグになる場合があります。

特定の領域だけ設定を無効にする

左端のチェックボックスで領域の有効無効を切り替えます。

../../_images/memory-map-designer-disabled.png

チェックを外した場合、その行はビルド時に無視されます。

属性を自由に設定する

属性のドロップダウンから SOLID_DIRECT を選択し、設定したい属性を有効にします。 属性名は先頭に SOLID_MEM_ATTR_ を付けたものに対応しています。(READONLY なら SOLID_MEM_ATTR_READONLY

属性の詳細については メモリ属性 を参照してください。

../../_images/memory-map-designer-direct-attribute.png

4GB以上の物理アドレスを設定する

上部のツールバーから Mappable Areas Table に切り替えます。

../../_images/memory-map-designer-table-switch.png

拡張したい領域を定義します。

../../_images/memory-map-designer-add-area.png

拡張したエリアにメモリを割り当てます。

../../_images/memory-map-designer-add-map.png

物理アドレス制限の設定

物理アドレスをあらかじめ設定しておくことで、設定したメモリ領域がはみ出ていないか確認できます。

../../_images/memory-map-designer-mappable-area-table-overview.png

上部のツールバーから Mappable Areas Table に切り替えます。

../../_images/memory-map-designer-table-switch.png

この表で設定したエリアの範囲外にメモリ空間が存在する場合、.smm ファイルの保存に失敗します。

../../_images/memory-map-designer-mappable-area-table-invalid-setting.png ../../_images/memory-map-designer-error-dialog.png

マルチ OS 環境等で、SOLID-OS では使えない物理アドレス領域を明示的に示す

マルチOS環境 (例えば、Linuxとの共存環境) 等で、SOLID-OSでは使ってはいけない物理メモリアドレスを明示的に指定するには、 Attribute の項目に、プルダウンメニューで表示される以外の文字列を入力します。これにより、メモリマップ編集中に 、誤って使ってはいいけない物理アドレス領域を指定したことを簡単に認識できます。

これらエントリは、.smm 形式ファイルにのみ追加され、ビルド時に出力されるソースには反映されません。 SOLID-OS管理外の領域ですので、 Virtual Address には、 NO_ADDRESS を指定します。

../../_images/memory-map-designer-reserved-for-otheros.png

領域名 Linux に Attribute LINUX を指定した例

アドレスサニタイザの設定

アドレスサニタイザの監視領域の設定もメモリマップデザイナで行うことができます。

SOLIDのアドレスサニタイザの詳細については ユーザーガイド アドレスサニタイザ を参照してください。