CQ-STARMに232Cからプログラムを書き込む
DWM5月号付録の基盤はCQ-STARMと言うらしいです。
CQ-STARMを勉強中です。
今日は、CQ-STARMで6月号第4章のサンプルプログラムを入れて動作確認をしました。
このサンプルプログラムはUSART1を使ってPCと通信をするプログラムなのですが、CQ-STARMにはRS232CインタフェースICが付いておりません。そのままではPCと232Cで通信できないのです。仕方が無いのでADM3202と言うICをお昼ごろ購入してきました。それをDWMに載っている拡張ベースボードの回路図を参考にして結線し、ついでにCQ-STARMの電源も電源端子から取るように結線しました。CQ-STARMはUSBから電源を取ることも出来るのですが、ROBOTに乗せることを考えると電源端子から電源を供給する必要があります。電源端子から電源を供給する場合はUSBからの電源を遮断する必要があります。R7の0Ω抵抗を取り除くのを忘れないように。
とりあえず、サンプルプログラムは動きました。
しかし、CQ-STARMにプログラムを書き込むのはUSBで、デバックやモーションプロセッサとのやり取りはRS232Cでは、2本も線をつなぐ必要があり使いにくいのです。デバックやモープロとのやり取りをUSBでやればよいのですが、いまいちプログラムの作り方がわかりませんでした。となると、プログラムの書き込みを232Cでやる方向で解決しようと思います。
私はマイコンはど素人なので、自己責任でお願いします。
まずはUSBダウンローダの仕組みですが、
CQ-STARMは0x8000000番地から0x8003000番地にUSB用のUSBダウンローダプログラムが入っています。そしてUSBダウンローダプログラムを使って0x8003000番地からユーザープログラムを書き込んでいます。CQ-STARMのジャンパJ6(実際はPB9)をショートさせると、マイコンは0x8000000番地から動作するのでUSBダウンローダが起動し、ショートさせないとマイコンは0x8003000番地から動作するのでユーザプログラムが起動します。(推測ですが、USBダウンローダがPB9がLOWかHIGHかで、USBダウンローダを起動するかユーザプログラムを起動するかを切り分けているのだと思われます。)
ですから、間違って0x8000000番地にユーザプログラムを書き込んでしまうとUSBダウンローダが消えてしまうのでUSBでのプログラム書き込みは出来なくなってしまうのです。怖い怖い・・・
次に232Cダウンローダの仕組みですが、
CQ-STARMは0x1FFFF000番地から232C用の232Cダウンローダプログラムが入っています。232Cダウンローダプログラムは0x8000000番地からユーザプログラムを書き込んでいます。(正確には書き込む開始番地はmemory_thumb.defで指定します)CQ-STARMのBOOT0(11番ピン)をHIGHに短絡させるとマイコンは0x1FFF000番地から動作するので232Cダウンローダプログラムが起動し、短絡させないとマイコンは0x8000000番地から動作するのでユーザプログラムが起動します。
これで、USB経由でのプログラム書き込みはできなくなりますが、232C経由で書き込めますので、CQ-STARMとPC間の線は一本ですみます。すっきり。
さらにUSBダウンローダプログラム分の12KBをユーザプログラム領域として使用できるのでちょっと嬉しいです。さらに、232Cダウンローダではs19形式のファイルを扱えるのでわざわざDFU形式に変換する手間が省けてかなり嬉しいです。
232Cダウンローダプログラムでプログラムを書き込むときにPC側で使用するプログラムはFlash loader demonstratorと言います。
通信速度は57600BPS EvenParityでやってみたら問題なく動作しました。
サンプルプログラムは0x8003000番地から書き込む記述になっているので、memory_thumb.defファイルを修正して0x8000000番地から書き込むように変更しました。(4行目)
2008/07/20 追加
割り込みアドレスのBASEも変更の必要がありました。
gcc_sample.cの以下の行を修正してください。
#define __NVIC_VTOR_VAL 0x00003000
を
#define __NVIC_VTOR_VAL 0x00000000
に変更。
CQ-STARMを勉強中です。
今日は、CQ-STARMで6月号第4章のサンプルプログラムを入れて動作確認をしました。
このサンプルプログラムはUSART1を使ってPCと通信をするプログラムなのですが、CQ-STARMにはRS232CインタフェースICが付いておりません。そのままではPCと232Cで通信できないのです。仕方が無いのでADM3202と言うICをお昼ごろ購入してきました。それをDWMに載っている拡張ベースボードの回路図を参考にして結線し、ついでにCQ-STARMの電源も電源端子から取るように結線しました。CQ-STARMはUSBから電源を取ることも出来るのですが、ROBOTに乗せることを考えると電源端子から電源を供給する必要があります。電源端子から電源を供給する場合はUSBからの電源を遮断する必要があります。R7の0Ω抵抗を取り除くのを忘れないように。
とりあえず、サンプルプログラムは動きました。
しかし、CQ-STARMにプログラムを書き込むのはUSBで、デバックやモーションプロセッサとのやり取りはRS232Cでは、2本も線をつなぐ必要があり使いにくいのです。デバックやモープロとのやり取りをUSBでやればよいのですが、いまいちプログラムの作り方がわかりませんでした。となると、プログラムの書き込みを232Cでやる方向で解決しようと思います。
私はマイコンはど素人なので、自己責任でお願いします。
まずはUSBダウンローダの仕組みですが、
CQ-STARMは0x8000000番地から0x8003000番地にUSB用のUSBダウンローダプログラムが入っています。そしてUSBダウンローダプログラムを使って0x8003000番地からユーザープログラムを書き込んでいます。CQ-STARMのジャンパJ6(実際はPB9)をショートさせると、マイコンは0x8000000番地から動作するのでUSBダウンローダが起動し、ショートさせないとマイコンは0x8003000番地から動作するのでユーザプログラムが起動します。(推測ですが、USBダウンローダがPB9がLOWかHIGHかで、USBダウンローダを起動するかユーザプログラムを起動するかを切り分けているのだと思われます。)
ですから、間違って0x8000000番地にユーザプログラムを書き込んでしまうとUSBダウンローダが消えてしまうのでUSBでのプログラム書き込みは出来なくなってしまうのです。怖い怖い・・・
次に232Cダウンローダの仕組みですが、
CQ-STARMは0x1FFFF000番地から232C用の232Cダウンローダプログラムが入っています。232Cダウンローダプログラムは0x8000000番地からユーザプログラムを書き込んでいます。(正確には書き込む開始番地はmemory_thumb.defで指定します)CQ-STARMのBOOT0(11番ピン)をHIGHに短絡させるとマイコンは0x1FFF000番地から動作するので232Cダウンローダプログラムが起動し、短絡させないとマイコンは0x8000000番地から動作するのでユーザプログラムが起動します。
これで、USB経由でのプログラム書き込みはできなくなりますが、232C経由で書き込めますので、CQ-STARMとPC間の線は一本ですみます。すっきり。
さらにUSBダウンローダプログラム分の12KBをユーザプログラム領域として使用できるのでちょっと嬉しいです。さらに、232Cダウンローダではs19形式のファイルを扱えるのでわざわざDFU形式に変換する手間が省けてかなり嬉しいです。
232Cダウンローダプログラムでプログラムを書き込むときにPC側で使用するプログラムはFlash loader demonstratorと言います。
通信速度は57600BPS EvenParityでやってみたら問題なく動作しました。
サンプルプログラムは0x8003000番地から書き込む記述になっているので、memory_thumb.defファイルを修正して0x8000000番地から書き込むように変更しました。(4行目)
2008/07/20 追加
割り込みアドレスのBASEも変更の必要がありました。
gcc_sample.cの以下の行を修正してください。
#define __NVIC_VTOR_VAL 0x00003000
を
#define __NVIC_VTOR_VAL 0x00000000
に変更。

