2.5.4. ローカルメモリのセットアップに関する注意事項

多くの ARM コアには、MMU や MPU などのオンチップメモリシステムが搭載されています。通常、これらのデバイスは、システムの起動時にセットアップおよびイネーブルされます。そのため、ローカルメモリシステムを搭載するコアの初期化シーケンスには、特別な配慮が必要です。

本章で説明してきたように、__main の C ライブラリ初期化コードでは、イメージの実行時メモリマップがセットアップされます。そのため、プロセッサコアのランタイム時のメモリビューは、__main への分岐の前にセットアップする必要があります。つまり、MMU または MPU は、リセットハンドラ内でセットアップおよびイネーブルする必要があります。

また、一般的に、コードとデータは TCM にスキャッタローディングされるため、TCM も __main への分岐の前(通常は MMU または MPU のセットアップの前)にイネーブルする必要があります。TCM がイネーブルされている場合には、TCM によってマスクされるメモリにアクセスする必要がないということに注意する必要があります。

また、__main への分岐の前にキャッシュがイネーブルされた場合は、キャッシュコヒーレンシに関する問題も発生します。__main のコードは、実質的には命令をデータとして処理し、コード領域をロードアドレスから実行アドレスにコピーします。その結果、一部の命令はデータキャッシュ内にキャッシュされる可能性があり、その場合、これらの命令が命令パスから見えなくなります。

このようなコヒーレンシの問題を回避するには、C ライブラリ初期化シーケンスの実行が完了した後にキャッシュをイネーブルします。

Copyright © 2002-2006 ARM Limited. All rights reserved.ARM DUI 0203GJ
Non-Confidential