ARMCortexM3
諸元
CPU | ARM Cortex-M3(Thumb2命令セットのみ。ARM32は実行できない) |
CPU CLOCK | 72MHz |
Flash ROM | 128kB |
SRAM | 20kB |
Peripheral | 12bitA/D,USB,CAN,PWM,SPI,I2C,USART |
ジャンパー設定
J6ジャンパー | 起動番地 | 備考 |
open | 0800_3000 | アプリケーション起動 |
close | 0800_0000 | DFU(USBブートローダー)起動 |
ブートモード
BOOT1 | BOOT0 | ブートモード | 備考 |
− | 0 | ユーザーFlash | 0800_0000ユーザーFlashからのブート(この基板ではこのモードになっている(両方PullDown)) |
0 | 1 | システムメモリー | 1fff_f000からのブート(シリアルブート?uart1から?) |
1 | 1 | 内蔵SRAM | 内蔵SRAMからのブート(内蔵SRAM?誰が書き込むんだろう?JTAGかな) |
メモリーマップ
0800_0000〜0801_ffff | 128kB | Flash領域 |
上記のうち、0800_0000〜0800_2fff | 12kB | DFU(ブートローダー)が使用 |
1fff_f000〜1fff_f7ff | 2kB | システムメモリー(Flashダウンローダー) |
2000_0000〜2000_4fff | 20kB | 内蔵SRAM |
その他
困った点:
- 開発環境はIARかKeil、いずれも有償。
- gccの開発環境は提供されていない(ように見受けられる)-->DWM6月号にgccの記事があるらしい。
で、もう2年も前の廃刊雑誌なので、開発環境をどうしようか思案中。
- たぶんWinARMが一番良いかな?
- USBフレームワークはどこにあるのだろう・・・。
アプリケーションノートはこのへん
DFUのプロトコルはこのへん
USBライブラリはこのへん
DFUのソースがないんだけど・・・
- --> 雑誌付属CDROMのsoft/ST/USB関連サンプル・マニュアル/STM32F10xUSBLib/USBLib/demos/Device_Firmware_Upgrade/project/ にあるらしい。
DFU馬鹿じゃね?
- HEXかmotorora-Sを *.dfuファイルに変換。
- DFuSe ツールから *.dfuをデバイスに転送。
- なんで普通にHEXを読まないのか意味不明。
実はDFUはUSB.orgで定義されている。*.dfuファイルのフォーマットもドキュメントされていた。
ここの STM32F10xxx USB-FS-Device development kit (UM0424)に最新版のDFUソースが含まれているらしい。
STM32F103の遊び方
- USB-FS-Device development kitというのが、まるでモスバーガー屋のUSB Application Library と同じような作りなのでびっくり。
遊び方としては、
- (1)Custom_HIDクラスを流用して、そのまんまPICmonを実装する。
- (2)Device_Firmware_Upgrade クラスをGeneric USBに書き換えて、高速版を実装する。
- (3)Virtual_COM_Port に見せかけたPICmonを実装する。
どれでもよいかも。
- しかし、Makefileが全く用意されていないところといい、コンパイラが複数ベンダーから供給されていて互換性がないところといい、安全玩具屋はモスバーガー屋そっくりだな。
CMSIS
Cortex Microcontroller Software Interface Standard (CMSIS)
- http://www.onarm.com/download/download395.asp
- チップメーカー毎にペリフェラル操作方法が異なるのはどうよってことで統一規格を作っているらしい。(旗振りはARM)
- しかし、Cortex-M0,M3限定だった。LPC2388用なんて無い
- USB関係がSTM32とLPC1xxxで共通化出来るのかと思って見に行ったら全然そんな風ではなかった---期待外れ。
とりあえず遊び方(1)からやってみる。
- これまた全然ビルドが通る気配がない。
- ヘッダーファイルが散らばりすぎ。
これはかなりの難物。手強さで言うとPICを遥かに超える。
- ARMって、もっと素直じゃなかったのか?
- 一応ビルドできた。
- さて、hexファイルはどこかな?
D:>dir main.* ドライブ O のボリューム ラベルは です ボリューム シリアル番号は 049D-0411 です
2010/04/13 23:13 25,503 main.elf 2010/04/13 23:13 36,811 main.map 2010/04/13 23:13 2,015 main.sym 2010/04/13 23:13 34 main.hex
- さすがはARMだ。仮想COMポートのファームウェアのHEXがたったの34バイトだなんて凄すぎ
- いやーThumb2命令は縮むなぁ・・・
- 念のため、HEXの中身をチェックだ。
D:>type main.hex
:0400000508002000CF :00000001FF
______ (・V・) ??
______ ??(・V・)
- だめだこりゃ。
原因判明。
- リンカーオプションのgc-sections(不要関数のガベコレ有効オプション)で全部削り取られていた。
- gc-sectionsを外してリンクすると、うじゃうじゃ未解決参照が出てくる。
- まず、スタートアップファイルを探して入れてみたが・・・うまくいかない <----今ここ
先は長そうだ。
- 思うに、これ(つまりgcc用の環境をわざと外してある)ってIARかKeilの有償コンパイラを売りたいがための嫌がらせにしか見えない。
- そんなことしなくったって、コンパイラの性能で競うべきなんじゃないのだろうか?
- PICコンパイラの世界にもいろいろあったけど、ARMのほうが酷いのか。
ダウンロード
ステータス:とりあえずビルドだけ通ります。
- hidとvcomはデバイス認識OKになりました。
- ただし、STmicroサンプルのままなので、ファームの内容はかなりやる気のないものです。
- hid(Custom_HID)のPC側appletというかexeファイルかそのソースが見当たりません。配布元ファイルのum0424.zipの中を探したのですが・・・。
- dfu.zipは、まだNVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x3000);を入れていないので0x8003000番地では動きません。
- というよりはdfuなので、0x8000000に置かないとだめなような気がします。
- 各zipファイルに含まれるHW/ディレクトリの内容は同一のはずです。(自分のLinux上ではシンボリックリンクにより共通場所を指す様にしています)
ビルド環境の構築方法
作りかけのHIDmon
- armon.zip --- PICmonみたいなやつ。
- armonは今のところ、STBEE , STBEE-Mini ,CQ-STARM , STM8S-DiscoveryのST-Link側, の4種類で動くようになりました。
read more : STM32ブートローダー
リンク
CQ出版DesignWave 5月号
若松通商Design Wave Magazine 5月号
ARMv7 Cortex-M3 Projects
CQ-STARM基板をいじる
TOPPERS/JSP for CORTEX-M3
(別室)ARMマイコンで遊ぼう