こんにちは専門家さん:
質問してもよろしいでしょうか?コードの実行速度はメモリの種類によって異なり、おおよそ TCM > RAM > FLASH の順で最速から最遅の順になることがわかっています。デフォルトでは、コードは FLASH で実行されます。関数の定義と宣言に TCM または RAM のセクション属性を追加して、コードを対応するメモリ内で実行すること CAN できます。ただし、Cache の実行速度は TCM の実行速度と似ていることに気付きました。私たちのプロジェクトではすでにキャッシュが有効になっていますが、キャッシュ サイズは 8k しかなく、そのアドレスは表示されません。ユーザーが自分でキャッシュ内でどのコードを実行するかを設定することは不可能で、有効または無効にすることしかできないのでしょうか?キャッシュ可能な領域を指定できる場合、どのように実装すればよいでしょうか?
そこにメモリ セグメント int_sram_no_cacheable が定義されています。使用できます
キャッシュされることが想定されていない関数の場合は、 __attribute__ ((section(".int_sram_no_cacheable"))) を参照してください。その他はデフォルトでキャッシュされます。
特定の地域の MPU ごとに設定することもできます。キャッシュを完全に無効にすることもCAN。
デモを提供していただきありがとうございます。実は、ITCM と DTCM のメモリを統合する方法を知っています。
私が知りたいのは、関数やデータを実行のためにキャッシュに配置する方法、つまり、メモリのどの部分をキャッシュし、どの部分をキャッシュしないかを指定する方法です。私のプロジェクトでは、キャッシュが有効になっていて、I-CACHE と D-CACHE はそれぞれ 8k になっていますが、その使い方がわかりません。
ここでのサンプルコードに注意してください:
キャッシュからの実行速度は TCM の場合と同じになると予想されることに注意してください。