Interface誌2010年6月号の付録のSH-2Aボードを試してみました。
とりあえず、本に書いてある通りの手順でLEDピカピカまで動かしました。
初期状態では、デバッグ実行時に、止めてないのにAbortとなって止まってしまう現象がありましたが、モニタプログラム(SH-2Aマイコン基板実装SPIシリアル接続フラッシュROM)を2010年5月17日版にアップデートしたところ直ったようです。
まだ、コネクタなど何もつけておらず、素のままです。
このSH-2Aはクロック:144MHzでRAM:1MBとのことで、過去の付録基盤でも最高レベルのスペックです。画像認識でも余裕でこなせそうです。OpenCVのようなライブラリがあると楽ですが。
SH-2AはフラッシュROMを内蔵しておらず、このボードではSPI接続の64KBのフラッシュROMを搭載しています。半分はモニタプログラムが入っているので、このモニタを使用する場合は使えるのは32KBまでとなります。足りなくなったら大容量のフラッシュROMに差し替えることもできるようです。
開発ツールは、とりあえずメーカー純正の開発ツールのHEWを使用する方向で考えています。使用期限は60日で、期限が切れるとコンパイル後のオブジェクトのサイズが256KBまでとなる制限があるようですが、当面はそこまでのサイズのプログラムは作らないと思うので問題はなさそうです。HEWの他にGCCが使用できるようですが、256KBの制限以外のメリット・デメリットが理解できていません。
モニタプログラムを使用すると少し面倒な設定がですが、JTAGなしでトレース実行できるのでかなり便利です。
次はROMに書き込んでPCなしで実行することを試してみたいと思います。
将来的には昨日のカメラロボのCPUをこのボードに換装することを考えています。ボードの作り替えは最小限ですませたいのですが、まだどうなるか分かりません。
あと、LEDピカピカはHelloWorldに相当するものだと思いますが、本文のサンプルは割り込みタイマーを使用した少し高度なものでしたので、割り込みを使わない簡単なバージョンを作ってみました。main()周辺に以下を記入します。
#include "iodefine.h" #include "machine.h" void main(void) { volatile int i; // 最適化しない // PCDR0設定 PC8のLEDを消灯 PORT.PCDR0.BYTE.H |= 0x01u; // PCIOR0設定 PC8のLEDを出力に設定 PORT.PCIOR0.WORD |= 0x0100u; // PCCR2設定 PC8の制御設定 PORT.PCCR2.WORD &= 0xFFF0; while(1) { // PCDR0設定 PC8のLEDを点灯 PORT.PCDR0.BYTE.H &= 0xFEu; // 時間待ち for (i=0; i<2000000; i++); // PCDR0設定 PC8のLEDを消灯 PORT.PCDR0.BYTE.H |= 0x01u; // 時間待ち for (i=0; i<2000000; i++); } }
シリアル接続HEWモニタを使用する場合は本文のサンプルと同じく、↓の設定が必要です。詳しくは本文を参照してください。
- resetprg.c のSR_Init を 0x000000F0から0x000000E0に変更
- スタックポインタの設定
- セクションの設定
- デバッグの設定