« 連休終了 | トップページ | stm32 Designe wave 基板 »

2008年5月 6日 (火)

stm32

stm32続き。

どうにも気になっていた所で、サンプルコードや、提供されているライブラリに、メモリアクセスのウエイトを設定する項目がある。
しかし、stm32のリファレンスマニュアルのどこを見ても記述が無い。

Cortex-M3のコアのほうなのか、と思い色々調べても出てこない。

------

今日、flash programming manualのほうに、記述があるのを見つけた。
こっちは、flash書き込みのほうの話かと思って、チェックしてなかった...

FLASH_ACRレジスタに、ウエイトサイクルを設定する項目がある。

SYSCLK 48~72MHz のときは、2ウエイト入れろとある。
こりゃ動かないはずだ。

ここを設定すると、安定するようになった。

ちょっとオーバークロックを試してみる。
96MHzなら起動するようだ。
この辺はlpcあたりと同じくらいかな。

------

stm32のメモリマップをみると、flashは0x08000000から始まるようになっている。
SRAMは0x20000000から。システムメモリ(シリアル書き込みブートローダー)は0x1FFFF000から始まるようになっている。

で、実際に実行されるコードの先頭0番地は、なにが見えるか?については、リセット時のMODE0,1端子によって決まるようだ。
MODE0端子は専用ピンだけれど、MODE1は共用ピンでブートローダー起動のためにはプルダウンしなければならない。

------

通常のフラッシュメモリで起動すると、0からと、0x08000000からとに、同じイメージが見える。
システムブートモードのときには、0番地にシステムブートプログラムが見える。
この時、シリアルでのFlash書き込みツールは、0x08000000から始まるエリアに、0番地に置かれて実行されるように作られたコードを書き込むようになっている。

それで、SフォーマットやHEXフォーマットではなく、バイナリを要求するのか...
アドレス情報が無くて、ベタつながりの実行ファイルのほうが、ツール的には扱いやすいのね。
リンカスクリプトで、0番地からのアドレスに配置されるように書いておけば、ちゃんとツール側で取り回して、書き込んでくれるようだ。

------

DFuを使う場合は、0x00003000から実行されるバイナリをつくって書き込み、PBのどれかをどうにかしてリセットすればいいのか。

まあ、大体分かったような気がする。

書き込み自体は、shやlpcに比べても、ずいぶん高速に感じる。
なんとか最低限、目処は立ったかも。

------

個人的には、SH7125がいいと思います。

いい点
・マニュアルが日本語
・電源が5V単一
・入手性
・位相計数カウンタが2個あるなど、周辺バランスがマウス向き。
・パッケージが小さくて、扱いやすい。

あまり良くない点
・メモリがちょっと少なめ(特にRAM)

外部バス無しなので、プログラムが置けるメモリが外部に増設できませんが、最近は外部データメモリはSPI接続で扱うことがほとんどで、使いやすいチップも大半そっちの線で出てきているようなので、個人的にはあまりデメリットに感じません。

|

« 連休終了 | トップページ | stm32 Designe wave 基板 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: stm32:

« 連休終了 | トップページ | stm32 Designe wave 基板 »