2012-03-14 21 views
4

ARMチップ(STM32F2)の「ベアメタル」をプログラミングしています。具体的には、外部SRAMに保持されている値を読みたいと思います。 reference manualを読むこのようなメモリトランザクションはFSMC(Flexible Static Memory Controller)を介して行われることを理解します。SRAM読み出し動作の開始

私は、SRAMの読み書き操作のためにFSMCを初期化する方法を理解しています。 (適切な代替機能に適切なGPIOピンを設定し、制御レジスタの束を変更するなど)。しかし、私はどのように読み取り操作を開始するのかわかりません。

初期化後にSRAMを読み取る(または書き込む)ためにどのようなレジスタをタッチする必要がありますか?

答えて

4

私が理解している限り、FSMCコントローラを介して「メモリマップされた」アクセスが得られます。だからあなたがする必要があるのは、SRAMをマップするアドレス空間を決めてから、そこを指すように初期化されたポインタを通してアクセスするだけです。

+0

ああ、よく聞こえます!ありがとう。 – Randomblue

+0

@Randomblue:SRAMリージョンをリンクマップに追加すると、コンパイラは自動的に静的メモリを使用するか、そこにヒープを配置することができます。この場合、ランタイム起動時にSRAMを初期化し、Cコードで実行する場合(または外部RAMが初期化される前にCコードが実行されている場合)、スタックが外部メモリにマップされていないことを確認してください。 – Clifford

+0

@Clifford:ありがとう。リンクマップにSRAM領域を追加するにはどうすればよいですか?以前はリンカスクリプトに触れたことはありませんでした。どの行を書くべきですか? – Randomblue

関連する問題