連載
» 2006年12月19日 00時00分 公開

H8で学ぶマイコン開発入門(4):OSが起動する以前のスタートアップルーチン (4/4)

[山本 繁寿 ソフィアシステムズ,@IT MONOist]
前のページへ 1|2|3|4       

スタートアップルーチンの記述例

 リスト5は、H8マイコン用の最も単純なスタートアップルーチンです。


  .CPU 300HA:20
  .SECTION A,DATA,LOCATE=H'000000
  .IMPORT  _init
  .DATA.L  H'00100    ;リセットベクタ
  
  .ORG   H'000100
  MOV.L  #H'FFF10,ER7 ;スタックポインタ設定
  jmp    @_init
  
  .END
リスト5 H8マイコン用のスタートアップルーチン

 この例では、リセットベクタとスタックポインタの初期値を設定しています。それ以外のハードウェア初期化ルーチンは、先に示したようにCで記述できます。

 また、ルネサス テクノロジが提供する統合開発環境であるHEW(High-performance Embedded Workshop)を使うと、スタートアップルーチンの大部分はHEWから自動生成されます。リスト6、リスト7は、HEWから生成されたスタートアップルーチンの一部です。

//  vector 7 NMI
__interrupt(vect=7) void INT_NMI(void) {/* sleep(); */}
//  vector 8 User breakpoint trap
__interrupt(vect=8) void INT_TRAP0(void) {/* sleep(); */}
//  vector 9 User breakpoint trap
__interrupt(vect=9) void INT_TRAP1(void) {/* sleep(); */}
//  vector 10 User breakpoint trap
__interrupt(vect=10) void INT_TRAP2(void) {/* sleep(); */}
//  vector 11 User breakpoint trap
__interrupt(vect=11) void INT_TRAP3(void) {/* sleep(); */} 
リスト6 HEWによる組み込み関数を使った割り込みベクタ設定

void HardwareSetup()
{
  SCI0.SMR.BYTE = 0;
  SCI0.SMR.BIT.CA   = 1;
  SCI0.SMR.BIT.CHR  = 1;
  SCI0.SMR.BIT.PE   = 1;
  SCI0.SMR.BIT.OE   = 1;
  SCI0.SMR.BIT.STOP = 1;
  SCI0.SMR.BIT.MP   = 1;
  SCI0.SMR.BIT.CKS  = 3;
  SCI0.BRR = 0;
  SCI0.SCR.BYTE = 0;
  SCI0.SCR.BIT.TIE  = 1;
  SCI0.SCR.BIT.RIE  = 1;
  SCI0.SCR.BIT.TE   = 1;
  SCI0.SCR.BIT.RE   = 1;
  SCI0.SCR.BIT.MPIE = 1;
  SCI0.SCR.BIT.TEIE = 1;
  SCI0.SCR.BIT.CKE  = 3;
  SCI0.TDR = 0;
  SCI0.SSR.BYTE = 0;
  SCI0.SSR.BIT.TDRE = 1;
  SCI0.SSR.BIT.RDRF = 1;
  SCI0.SSR.BIT.ORER = 1;
  SCI0.SSR.BIT.FER  = 1;
  SCI0.SSR.BIT.PER  = 1;
  SCI0.SSR.BIT.TEND = 1;
  SCI0.SSR.BIT.MPB  = 1;
  SCI0.SSR.BIT.MPBT = 1;
  SCI0.RDR = 0;
  SCI0.SCMR.BYTE = 0;
  SCI0.SCMR.BIT.SDIR = 1;
  SCI0.SCMR.BIT.SINV = 1;
  SCI0.SCMR.BIT.SMIF = 1;
}
リスト7 HEWによる内蔵レジスタ初期化



 次回は、開発環境の使い方と簡単なH8プログラムについて解説します。(次回に続く)


前のページへ 1|2|3|4       

Copyright © ITmedia, Inc. All Rights Reserved.