連載
» 2007年01月23日 00時00分 公開

H8で学ぶマイコン開発入門(5):統合開発環境“HEW”をセットアップする (3/3)

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

プログラムのビルド

 コンパイラやリンカオプションなどを設定した後、ビルドを行います。ビルド中にエラーが発生すると、アウトプットウィンドウにエラーの内容が表示されます(リスト2)。


Building - H8_3048F_ONE - Debug
Phase H8S,H8/300 C/C++ Library Generator starting
Nothing to do - skipping
Phase H8S,H8/300 C/C++ Library Generator finished
Phase H8S,H8/300 C/C++ Compiler starting
C:\Hew3\H8_Control Board\single\IOLIB.C
C:\Hew3\H8_Control Board\single\IOLIB.C(394) :  C2225 (E) Undeclared 
name "data1"
Phase H8S,H8/300 C/C++ Compiler finished
Phase OptLinker starting
Error accessing file: C:\Hew3\H8_3048F_ONE\H8_3048F_ONE\Debug\IOLIB.
obj
Phase will not be executed
Phase OptLinker finished
Build Finished
2 Errors, 0 Warnings
リスト2 ビルド中に発生したエラーの表示

 エラーを修正する場合は、[編集]→[ジャンプ]を使うと便利です。

[編集]メニューから[ジャンプ]を選択 図6 [編集]メニューから[ジャンプ]を選択

 リスト2のエラーでは、IOLIB.Cの394行目にあるシンボルdata1が、未定義エラーとなっています。

C:\Hew3\H8_Control Board\single\IOLIB.C(394) : C2225 (E) Undeclared name "data1" 

 ジャンプダイアログボックスで「394」を入力してOKをクリックすると、エラー発生個所(394行目)がエディタウィンドウに表示されます(図7)。

エディタウィンドウにエラー発生個所(394行目)が表示された 図7 エディタウィンドウにエラー発生個所(394行目)が表示された

統合開発環境のメリットの1つ:makefile

 makefileを自作する場合、コンパイラオプションやリンカオプションなどをマニュアルで調べたり、依存関係なども注意深く記述したりする必要があります。プログラムの規模にもよりますが、makefileを書くだけで丸一日費やす場合もあります。これに対してHEWのような統合開発環境では、ビルドオプションがGUIにより対話的に設定できますので、これだけでも開発効率が向上します。

 参考のために、HEWから生成された素(?)のmakefileを以下に示します(リスト3)。見ただけでゾッとしませんか?

################################################
# Make file generated by HEW
#
############################
# Toolchain directory define
# If incorrect, change to the location of the H8S,H8/300 Standard Toolchain toolchain
TC_INSTALL_DIR = c:\\PROGRA~1\\renesas\\hew\\tools\\renesas\\h8\\6_1_2
###############################################################################
# The following environment variables are for building the makefile inside HEW:
# CH38TMP=C:\DOCUME~1\workpc\LOCALS~1\Temp
# PATH=c:\program files\renesas\hew\tools\renesas\h8\6_1_2\bin
# CH38=c:\program files\renesas\hew\tools\renesas\h8\6_1_2\include
#
#####################################################
#
# Details:
#   Project: test
#   Configuration: Debug
#   Toolchain: Hitachi H8S,H8/300 Standard Toolchain
#
#####################################################
################
# Main Defines
# Hitachi H8S,H8/300 C/C++ Library Generator01 phase
TEST_DEBUG_H8SH8300_CC_LIBRARY_GENERATOR01_EXE=lbg38.exe
TEST_DEBUG_H8SH8300_CC_LIBRARY_GENERATOR01_EXEDIR=$(TC_INSTALL_DIR)\\bin
TEST_DEBUG_H8SH8300_CC_LIBRARY_GENERATOR01_OUTFILESC0=C:\\work\\test\\test\\Debug\\test.lib
TEST_DEBUG_H8SH8300_CC_LIBRARY_GENERATOR01_DEPFILESC0=$(TC_INSTALL_DIR)\\bin\\asm.pak
# Hitachi H8S,H8/300 C/C++ Compiler02 phase
TEST_DEBUG_H8SH8300_CC_COMPILER02_EXE=ch38.exe
TEST_DEBUG_H8SH8300_CC_COMPILER02_OUTFILESC0=C:\\work\\test\\test\\Debug\\dbsct.obj
TEST_DEBUG_H8SH8300_CC_COMPILER02_DEPFILESC0=C:\\work\\test\\test\\typedefine.h
TEST_DEBUG_H8SH8300_CC_COMPILER02_OUTFILESC1=C:\\work\\test\\test\\Debug\\lowsrc.obj
TEST_DEBUG_H8SH8300_CC_COMPILER02_DEPFILESC1=$(TC_INSTALL_DIR)\\include\\string.h $(TC_INSTALL_DIR)\\include\\stddef.h $(TC_INSTALL_DIR)\\include\\stdio.h \
C:\\work\\test\\test\\typedefine.h C:\\work\\test\\test\\lowsrc.h
TEST_DEBUG_H8SH8300_CC_COMPILER02_OUTFILESC2=C:\\work\\test\\test\\Debug\\sbrk.obj
TEST_DEBUG_H8SH8300_CC_COMPILER02_DEPFILESC2=$(TC_INSTALL_DIR)\\include\\stdio.h $(TC_INSTALL_DIR)\\include\\stddef.h C:\\work\\test\\test\\typedefine.h \
C:\\work\\test\\test\\sbrk.h
TEST_DEBUG_H8SH8300_CC_COMPILER02_OUTFILESC3=C:\\work\\test\\test\\Debug\\intprg.obj
TEST_DEBUG_H8SH8300_CC_COMPILER02_DEPFILESC3=$(TC_INSTALL_DIR)\\include\\machine.h
TEST_DEBUG_H8SH8300_CC_COMPILER02_OUTFILESC4=C:\\work\\test\\test\\Debug\\resetprg.obj
TEST_DEBUG_H8SH8300_CC_COMPILER02_DEPFILESC4=$(TC_INSTALL_DIR)\\include\\machine.h $(TC_INSTALL_DIR)\\include\\_h_c_lib.h C:\\work\\test\\test\\typedefine.h \
C:\\work\\test\\test\\stacksct.h
TEST_DEBUG_H8SH8300_CC_COMPILER02_OUTFILESC5=C:\\work\\test\\test\\Debug\\hwsetup.obj
TEST_DEBUG_H8SH8300_CC_COMPILER02_DEPFILESC5=C:\\work\\test\\test\\iodefine.h
TEST_DEBUG_H8SH8300_CC_COMPILER02_OUTFILESC6=C:\\work\\test\\test\\Debug\\test.obj
# Hitachi H8S,H8/300 Assembler03 phase
TEST_DEBUG_H8SH8300_ASSEMBLER03_EXE=asm38.exe
TEST_DEBUG_H8SH8300_ASSEMBLER03_OUTFILESC0=C:\\work\\test\\test\\Debug\\lowlvl.obj
# Hitachi OptLinker04 phase
TEST_DEBUG_OPTLINKER04_EXE=LnkSpawn.exe
TEST_DEBUG_OPTLINKER04_INFILESC0=C:\\work\\test\\test\\Debug\\dbsct.obj C:\\work\\test\\test\\Debug\\hwsetup.obj C:\\work\\test\\test\\Debug\\intprg.obj \
C:\\work\\test\\test\\Debug\\lowlvl.obj C:\\work\\test\\test\\Debug\\lowsrc.obj C:\\work\\test\\test\\Debug\\resetprg.obj \
C:\\work\\test\\test\\Debug\\sbrk.obj C:\\work\\test\\test\\Debug\\test.lib C:\\work\\test\\test\\Debug\\test.obj
TEST_DEBUG_OPTLINKER04_OUTFILESC0=C:\\work\\test\\test\\Debug\\test.mot C:\\work\\test\\test\\Debug\\test.abs
#######################
# nmake "all" statement
ALL: $(TEST_DEBUG_H8SH8300_CC_LIBRARY_GENERATOR01_OUTFILESC0) \
$(TEST_DEBUG_H8SH8300_CC_COMPILER02_OUTFILESC0) \
$(TEST_DEBUG_H8SH8300_CC_COMPILER02_OUTFILESC1) \
$(TEST_DEBUG_H8SH8300_CC_COMPILER02_OUTFILESC2) \
$(TEST_DEBUG_H8SH8300_CC_COMPILER02_OUTFILESC3) \
$(TEST_DEBUG_H8SH8300_CC_COMPILER02_OUTFILESC4) \
$(TEST_DEBUG_H8SH8300_CC_COMPILER02_OUTFILESC5) \
$(TEST_DEBUG_H8SH8300_CC_COMPILER02_OUTFILESC6) \
$(TEST_DEBUG_H8SH8300_ASSEMBLER03_OUTFILESC0) \
$(TEST_DEBUG_OPTLINKER04_OUTFILESC0)
####################
# Description blocks
#
# Executing Hitachi H8S,H8/300 C/C++ Library Generator01 phase
#
$(TEST_DEBUG_H8SH8300_CC_LIBRARY_GENERATOR01_OUTFILESC0) : $(TEST_DEBUG_H8SH8300_CC_LIBRARY_GENERATOR01_DEPFILESC0)
$(TEST_DEBUG_H8SH8300_CC_LIBRARY_GENERATOR01_EXEDIR)\\$(TEST_DEBUG_H8SH8300_CC_LIBRARY_GENERATOR01_EXE) -ws=C:\\work\\test\\make\\lib0001.sub
#
# Executing Hitachi H8S,H8/300 C/C++ Compiler02 phase
#
$(TEST_DEBUG_H8SH8300_CC_COMPILER02_OUTFILESC0) : C:\\work\\test\\test\\dbsct.c $(TEST_DEBUG_H8SH8300_CC_COMPILER02_DEPFILESC0)
$(TEST_DEBUG_H8SH8300_CC_LIBRARY_GENERATOR01_EXEDIR)\\$(TEST_DEBUG_H8SH8300_CC_COMPILER02_EXE) -ws=C:\\work\\test\\make\\cmp0001.sub
$(TEST_DEBUG_H8SH8300_CC_COMPILER02_OUTFILESC1) : C:\\work\\test\\test\\lowsrc.c $(TEST_DEBUG_H8SH8300_CC_COMPILER02_DEPFILESC1)
$(TEST_DEBUG_H8SH8300_CC_LIBRARY_GENERATOR01_EXEDIR)\\$(TEST_DEBUG_H8SH8300_CC_COMPILER02_EXE) -ws=C:\\work\\test\\make\\cmp0002.sub
$(TEST_DEBUG_H8SH8300_CC_COMPILER02_OUTFILESC2) : C:\\work\\test\\test\\sbrk.c $(TEST_DEBUG_H8SH8300_CC_COMPILER02_DEPFILESC2)
$(TEST_DEBUG_H8SH8300_CC_LIBRARY_GENERATOR01_EXEDIR)\\$(TEST_DEBUG_H8SH8300_CC_COMPILER02_EXE) -ws=C:\\work\\test\\make\\cmp0003.sub
$(TEST_DEBUG_H8SH8300_CC_COMPILER02_OUTFILESC3) : C:\\work\\test\\test\\intprg.c $(TEST_DEBUG_H8SH8300_CC_COMPILER02_DEPFILESC3)
$(TEST_DEBUG_H8SH8300_CC_LIBRARY_GENERATOR01_EXEDIR)\\$(TEST_DEBUG_H8SH8300_CC_COMPILER02_EXE) -ws=C:\\work\\test\\make\\cmp0004.sub
$(TEST_DEBUG_H8SH8300_CC_COMPILER02_OUTFILESC4) : C:\\work\\test\\test\\resetprg.c $(TEST_DEBUG_H8SH8300_CC_COMPILER02_DEPFILESC4)
$(TEST_DEBUG_H8SH8300_CC_LIBRARY_GENERATOR01_EXEDIR)\\$(TEST_DEBUG_H8SH8300_CC_COMPILER02_EXE) -ws=C:\\work\\test\\make\\cmp0005.sub
$(TEST_DEBUG_H8SH8300_CC_COMPILER02_OUTFILESC5) : C:\\work\\test\\test\\hwsetup.c $(TEST_DEBUG_H8SH8300_CC_COMPILER02_DEPFILESC5)
$(TEST_DEBUG_H8SH8300_CC_LIBRARY_GENERATOR01_EXEDIR)\\$(TEST_DEBUG_H8SH8300_CC_COMPILER02_EXE) -ws=C:\\work\\test\\make\\cmp0006.sub
$(TEST_DEBUG_H8SH8300_CC_COMPILER02_OUTFILESC6) : C:\\work\\test\\test\\test.c
$(TEST_DEBUG_H8SH8300_CC_LIBRARY_GENERATOR01_EXEDIR)\\$(TEST_DEBUG_H8SH8300_CC_COMPILER02_EXE) -ws=C:\\work\\test\\make\\cmp0007.sub
#
# Executing Hitachi H8S,H8/300 Assembler03 phase
#
$(TEST_DEBUG_H8SH8300_ASSEMBLER03_OUTFILESC0) : C:\\work\\test\\test\\lowlvl.src
$(TEST_DEBUG_H8SH8300_CC_LIBRARY_GENERATOR01_EXEDIR)\\$(TEST_DEBUG_H8SH8300_ASSEMBLER03_EXE) -subcommand=C:\\work\\test\\make\\asm0001.sub
#
# Executing Hitachi OptLinker04 phase
#
$(TEST_DEBUG_OPTLINKER04_OUTFILESC0) : $(TEST_DEBUG_OPTLINKER04_INFILESC0)
$(TEST_DEBUG_H8SH8300_CC_LIBRARY_GENERATOR01_EXEDIR)\\$(TEST_DEBUG_OPTLINKER04_EXE) -subcommand=C:\\work\\test\\make\\lnk0001.sub
リスト3 HEWから生成されたmakefile

HEWをダウンロードする

 2007年1月現在でHEWの最新版は、「H8SX,H8S,H8ファミリ用C/C++コンパイラパッケージ V.6.01 Release 02」です。ユーザー登録すれば、HEWの無償評価版がルネサステクノロジ社のホームページからダウンロードできます。

 無償評価版は、初めて評価版ソフトウェアをインストールした後、最初にビルドを行った日から60日間は製品版と同じ機能が試用できますので、興味のある方はダウンロードしてみてください。



 今回まで、プログラム開発に最低限必要な知識を解説してきました。次回からは、実際のターゲットボード上に実装されたLEDやモータなどを駆動するためのプログラムについて解説します。(次回に続く)


前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.