コンパイラやリンカオプションなどを設定した後、ビルドを行います。ビルド中にエラーが発生すると、アウトプットウィンドウにエラーの内容が表示されます(リスト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のエラーでは、IOLIB.Cの394行目にあるシンボルdata1が、未定義エラーとなっています。
C:\Hew3\H8_Control Board\single\IOLIB.C(394) : C2225 (E) Undeclared name "data1"
ジャンプダイアログボックスで「394」を入力してOKをクリックすると、エラー発生個所(394行目)がエディタウィンドウに表示されます(図7)。
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
2007年1月現在でHEWの最新版は、「H8SX,H8S,H8ファミリ用C/C++コンパイラパッケージ V.6.01 Release 02」です。ユーザー登録すれば、HEWの無償評価版がルネサステクノロジ社のホームページからダウンロードできます。
無償評価版は、初めて評価版ソフトウェアをインストールした後、最初にビルドを行った日から60日間は製品版と同じ機能が試用できますので、興味のある方はダウンロードしてみてください。
今回まで、プログラム開発に最低限必要な知識を解説してきました。次回からは、実際のターゲットボード上に実装されたLEDやモータなどを駆動するためのプログラムについて解説します。(次回に続く)
Copyright © ITmedia, Inc. All Rights Reserved.