2016-12-13 5 views
1

私はエンジニアリング学生で、現在cortex m3プロセッサを研究しており、例外処理モデルです。 私は使用障害、バス障害、ハード障害を対応する障害ハンドラで生成してテストしました。cortex m3ベースのマイクロコントローラでメモリ管理フォルトを生成する方法

しかし、私は(コンテキストでMPUをとらずに)メモリ管理フォールト を生成する方法がわからない

は、メモリ管理フォールトを生成するための他の方法はありますか?事前

+0

低レベルでm3を使用している経験はありませんので、私は肯定的に答えることはできませんが、「不正アクセス」命令を実行するとMMフォールトが発生すると思います。デバッガでデバッグするか、実行時に命令を送信するコードを書くことができます。 – gelliott181

答えて

0

おかげでArchitecture Reference Manual(強調鉱山)を引用すると:

MemManageフォールトは、メモリ保護ユニットによって、または固定メモリ保護の制約によって決定されているメモリ保護違反を扱う、命令とデータの両方のメモリトランザクションに使用されます。

つまり、MPUをプログラムしたくない場合は、それらの固定制約の1つを検索する必要があります。見た目を開始する明白な場所はthe memory mapです。 Cortex-M3 TRMは少し曖昧ですが( "障害例外")、アーキテクチャは次のように言います:

XNはExecute Never領域を示します。 XN領域からコードを実行しようとすると、MemManage例外が生成されます。

ここに行きます。最も簡単な方法は、システム領域(0xE0000000 - 0xFFFFFFFF)にブランチすることです。これはMPUの設定に関係なく常にXNであるためです。

関連する問題