(toppers-users 15) Re: TOPPERS/ASP3 Release3.5.0 ビルドエラー(fatal error)について

yasuo kominami(nifty) ykominami @ nifty.com
2019年 12月 6日 (金) 22:05:14 JST


金子様、高田先生、皆様

TOPPERSプロジェクト個人会員の小南です。

メールでのご質問には、TOPPERS/ASP3の3.5.0と3.4.0とだけ記述があり、具体的なターゲット
がわからない状態ですが、ASP3のARM向け簡易パッケージをDLして、私の環境でコンパイル
できるか試してみました。
結果は、3.5.0、3.4.0のどちらの場合も、コンパイルに成功し、コンフィギュレータによるチェック
もパスしました。

私の環境は以下の通りです。
OS: 64bit Windows10 Home Edition,
       cygwin(64bit),
クロスコンパイラ:  GNU ARM Embedded Toolchainの7-2018-q2-updateのWindows 32bit版
  (以下よりダウンロードしたファイルでインストール)
  gcc-arm-none-eabi-7-2018-q2-update-win32-sha1.exe

https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads

ターゲット:ARM Cotex-A9(RZ/A1)
これは私がGR-PEACHのボードを所有しており、コンパイルしたあとにボード上で実行
してみる場合も想定して選択しました。

ARM向け簡易パッケージ(ARM11 MPCore, ARM Cotex-A9(RZ/A1))の非依存部のバージョン3.5.0と3.4.0
の以下のアーカイブ
3.5.0  https://www.toppers.jp/download.cgi/asp3_arm_gcc-20191006.tar.gz
3.4.0  https://www.toppers.jp/download.cgi/asp3_arm_gcc-20190320.tar.gz

行った手順
1. それぞれのアーカイブファイルをダウンロード、展開
2. asp3/OBJディレクトリを作成して、asp3/OBJに移動
3. ruby ../configure.rb -T gr_peach_gcc
4. make

makeの実行結果の最後の部分は以下の通りでした。

> arm-none-eabi-ar -rcs libkernel.a objs/target_support.o
objs/gic_support.o objs/core_support.o objs/target_kernel_impl.o
objs/chip_kernel_impl.o objs/mpcore_kernel_impl.o objs/gic_kernel_impl.o
objs/pl310.o objs/chip_timer.o objs/core_kernel_impl.o objs/arm.o
objs/startup.o objs/task.o objs/taskhook.o objs/wait.o objs/time_event.o
objs/task_manage.o objs/task_refer.o objs/task_sync.o objs/task_term.o
objs/semaphore.o objs/eventflag.o objs/dataqueue.o objs/pridataq.o
objs/mutex.o objs/mempfix.o objs/time_manage.o objs/cyclic.o objs/alarm.o
objs/sys_manage.o objs/interrupt.o objs/exception.o
> arm-none-eabi-ranlib libkernel.a
> arm-none-eabi-gcc -c -o objs/tBannerMain.o -MD -MP -MF objs/tBannerMain.d
-O2 -Wall -g   -mlittle-endian -mcpu=cortex-a9  -DTOPPERS_EXECUTE_ON_RAM
-D__TARGET_ARCH_ARM=7  -I. -I../include  -I../target/gr_peach_gcc
-I../arch/arm_gcc/rza1 -I../arch/arm_gcc/common -I../arch/gcc -I..
-I../sample -I./gen -I../tecs_kernel  ../syssvc/tBannerMain.c

> arm-none-eabi-gcc -O2 -Wall -g   -mlittle-endian -mcpu=cortex-a9
 -DTOPPERS_EXECUTE_ON_RAM -D__TARGET_ARCH_ARM=7  -I. -I../include
 -I../target/gr_peach_gcc -I../arch/arm_gcc/rza1 -I../arch/arm_gcc/common
-I../arch/gcc -I.. -I../sample -I./gen -I../tecs_kernel -nostdlib
 -mlittle-endian -mcpu=cortex-a9
 -Wl,-T,../target/gr_peach_gcc/gr_peach_ram.ld  -L. -o asp.exe \

                                         objs/start.o  objs/sample1.o
objs/log_output.o objs/vasyslog.o objs/t_perror.o objs/strerror.o
objs/tTask_tecsgen.o objs/tSemaphore_tecsgen.o
objs/tInterruptRequest_tecsgen.o objs/tISR_tecsgen.o
objs/tInitializeRoutine_tecsgen.o objs/tTerminateRoutine_tecsgen.o
objs/tSerialPortMain_tecsgen.o objs/tSerialAdapter_tecsgen.o
objs/tSysLog_tecsgen.o objs/tSysLogAdapter_tecsgen.o
objs/tLogTaskMain_tecsgen.o objs/tBannerMain_tecsgen.o
objs/tPutLogSIOPort_tecsgen.o objs/tSCIF_tecsgen.o
objs/tSIOPortRZA1Main_tecsgen.o objs/tTask.o objs/tISR.o
objs/tInitializeRoutine.o objs/tTerminateRoutine.o objs/tSerialPortMain.o
objs/tSerialAdapter.o objs/tSysLog.o objs/tSysLogAdapter.o
objs/tLogTaskMain.o objs/tBannerMain.o objs/tPutLogSIOPort.o objs/tSCIF.o
objs/init_tecs.o  objs/kernel_cfg.o \
                -lkernel -lc -lgcc
> arm-none-eabi-nm -n asp.exe > asp.syms
> arm-none-eabi-objcopy -O srec -S asp.exe asp.srec
> ruby ../cfg/cfg.rb --pass 3 --kernel asp -O -I. -I../include
 -I../target/gr_peach_gcc -I../arch/arm_gcc/rza1 -I../arch/arm_gcc/common
-I../arch/gcc -I.. -I../sample -I./gen -I../tecs_kernel -T
../target/gr_peach_gcc/target_check.trb \
                             --rom-symbol asp.syms --rom-image asp.srec
>
 /cygdrive/v/ASP/ASP3/asp3_arm_gcc-20190320.tar/asp3_arm_gcc-20190320/asp3/kernel/kernel_check.trb:94:
warning: assigned but unused variable - epar2
> configuration check passed


金子様のメールから時間がたっていますので、もう解決されたか、優先度が下がったなどで時間が取れない
状態なのかもしれません。

ただ、もしまだ原因を知りたいという段階であれば、以下の質問をさせてください。


質問1. 金子様の環境では、ASP3 3.5.0の金子様が利用されているターゲットの簡易パッケージの
アーカイブから展開したディレクトリに対して、asp3/doc/user.txtの「3.3 サンプルプログラムの
構築と実行」の示す手順では、makeはエラーは発生せずに終了しますか。

質問2. 質問1でエラーが発生せずに終了した場合、
  make realclean
で、いったん生成物をすべて削除した後、アーカイブを展開したディレクトリに、金子様が
バージョンアップされる前の、各プロジェクトに対して独自に追加・変更されたのをそのまま、
追加・変更してから、
  make
を実行すると、エラーは終了せずに終了しますか。



ASP3の3.5.0、3.4.0の簡易パッケージから、まっさらな状態のディレクトリで、
configureの生成するMakefile、objsディレクトリを利用してコンパイル、リンク
できることは、TOPPERSプロジェクトがパッケージを公開する前にチェックして
いることですし、現時点でも、私の環境で確認することは出来ました。

これは、3.5.0 の簡易パッケージ 、あるいは3.4.0の管理パッケージというひとまと
まりに対して確認したということです。

実は、asp3/doc/user.txtを確認しても、カーネルのバージョンアップの方法は記述さ
れていません。
「3.クイックスタートガイド」も、まっさらな状態で、アーカイブファイルから
構築する方法が述べられているだけです。

ですので、金子様が3.4.0から3.5.0にバージョンアップされたというのが、具体的に
どういう手順で行われたか、私には分かりません。

私が試した3.5.0の簡易パッケージと、3.4.0の簡易パッケージは、カーネルや
ライブラリのソースだけでなく、make中に呼び出される各種ツールの内部も
いろいろ変更が入っています。
(WinMergeというディレクトリ、ファイルの差分表示・マージをツールで確認しま
した。)

ですので、バージョンアップの作業の結果、TOPPERSプロジェクトで公開されている
パッケージの内容が、例えば異なるバージョンのものが混ざってしまっている状態に
なっていたならば、なんとも言いようがないです。



以下では、ASPとASP3の構築手順の違いについて述べます。

ASPの場合、
 make depend
でソースの依存関係のファイルを生成した後、
 make
を実行していました。

ASP3の場合
 make
を実行するだけです。
依存関係のファイルは、ソースファイルのコンパイル時に、同時に生成しています。
またTECSを使われている場合、tecsgenは最初に1回のみ実行されます。
tecsgenはCソースファイル、ヘッダファイル、Makefile.tecsgenをgenディレクトリに生成
します。
このgen/Makefile.tecsgenを読み込むために、新たにmakeを実行します。



またconfigure.rbが生成するファイル自体は1つのMakefileですが、このMakefileの4か所で
include命令を使って他のディレクトリに存在するMakefile、依存関係のファイルを読み込
んでいます。

* Makefielのincludeその1
#
#  ターゲット依存の定義のインクルード
#
include $(TARGETDIR)/Makefile.target

* Makefielのincludeその2
#
#  TECSが生成する定義のインクルード
#
ifndef OMIT_TECS
GEN_DIR = $(TECSGENDIR)
-include $(TECSGENDIR)/Makefile.tecsgen
endif

* Makefielのincludeその3
#
#  カーネルのファイル構成の定義
#
include $(SRCDIR)/kernel/Makefile.kernel

* Makefielのincludeその4
#
#  依存関係ファイルのインクルード
#
-include $(DEPDIR)/*.d

*.dが生成されていないとのことですが、2つ可能性が考えられます。

可能性1
make実行中にcompilerエラーが発生し、makeが中止されたため、期待するソースファイル
のコンパイルが実行されず、したがって*.dファイルも生成されなかった

可能性2
Makefileで定義される変数の値に基づき、makeはファイルの依存関係を解析するのですが、
なんらかの原因でその変数の値から、コンパイルしたいファイルがなくなってしまうと、
makeはそのファイルをコンパイルしません。
Makefileがincludeするファイルは、静的に存在するものだけでなく、ツールが生成するものも
あります。
includeするファイルが意図したものであるか否か、includeするファイルの内容が意図した通り
であるか否かにより、makeの依存関係の解析結果が変わってしまう可能性があります。
なんらかの原因で変数の値が干渉をうけ、期待したものとは、異なったものになることもありえます。


私がよく行うのは、以下のように標準エラー出力を標準出力にリダイレクトし、teeコマンドで
標準出力の内容をコンソールに出力しつつ、ファイルにも出力することです。
どこでどういう エラーが 発生したかを確認しやすくなります。
また正常な場合の出力結果と比較することで、単にエラー発生個所だけでなく、正常な出力結果との
差異を調べることで、エラーの原因の追究がしやすくなります。

正常な場合の出力結果をみる場合も、makeの挙動を把握することに役立ちます。

make 2>&1 | tee make.log

それから、
  make -d
または
  MAKEFLAGS=-d make
でmakeが依存関係をどのように判断しているかを出力させることが出来ます。

ただ大量に出力されるので、以下のマニュアルを参考に、出力内容を指定したほうが良いかもしれません。

http://www.quruli.ivory.ne.jp/document/make_3.79.1/make-jp_8.html#Options-Summary





On Fri, Nov 29, 2019 at 4:33 PM kaneko-nao <kaneko-nao @ numata.co.jp> wrote:

> 名古屋大学
> 高田広章 先生
>
> いつもお世話になります。株式会社ヌマタ 金子です。
>
>
> エラー箇所の依存関係ファイルが生成されていないようなので、3.4.0で作成した*.dを試験的にコピーし、ビルドを再実行したところ、以下のファイルでエラー(*.dが生成されない)となりました。これらファイルに何か共通することがあればご指摘願います。因みに、これら全てパスすれば、実行ファイルの生成まで行えます。
>
>
> ext_ker,tskterm,mtxhook,iniwque,sigtim,get_inf,ref_tsk,dly_tsk,ter_tsk,ref_sem,ref_flg,ref_dtq,ref_pdq,
> ref_mtx,ref_mpf,fch_hrt,cyccal,almcal,sns_ker,get_ipm,xsns_dpn
>
> 以上、よろしくお願いします。
>
>
>
>
>
>
> 名古屋大学
> 高田広章 先生
>
> いつもお世話になります。株式会社ヌマタ 金子です。
> 早々のご連絡、ありがとうございます。
>
>
> Makefileは、3.4.0で動作していたものをそのまま使用しています。該当箇所は、次の通りですが、もう一度、「sample」内のMakefileと付き合わせてみます。状況が変われば、またご相談させてください。因みに、該当箇所をsample通りに変えてみましたが、結果は同じでした。
>
> $(KERNEL_LCOBJS): %.o:
>     $(CC) -DTOPPERS_$(*F) -o $@ -c -MD -MP -MF $(DEPDIR)/$*.d \
>                                     $(CFLAGS) $(KERNEL_CFLAGS) $<
>
> 以上、よろしくお願いします。
>
>
>
>
> 金子様
> Cc: 皆様
>
> 名古屋大学の高田です。とりあえず,すぐにわかる範囲で回答します。
>
> エラーのログからわかる直接的な原因は,ext_ker.o をコンパイルする
> コマンドに,入力ファイルがないこと,具体的には,最後につくべき
> ../kernel/task_term.c がないことです。つまり,ビルドの問題です。
>
> このコンパイル指示は,Makefile の以下の記述で出しており,この辺
> りは,3.4.0 から 3.5.0 で変更していないはずです。
>
> $(KERNEL_LCOBJS): $(OBJDIR)/%.o:
>      $(CC) -c -o $@ -DTOPPERS_$(*F) -MD -MP -MF $(DEPDIR)/$*.d \
>                                      $(CFLAGS) $(KERNEL_CFLAGS) $<
>
> 御社の方で Makefile を変更されているということはないでしょうか?
>
> # こちらでは再現しません。
>
> 高田広章
> 名古屋大学
>
> On 2019/11/28 11:03, kaneko-nao wrote:
> > TOPPERSプロジェクト御中
> >
> > お世話になります。
> > 株式会社ヌマタ 金子と申します。
> >
> >
> この度、ASP3のバージョンアップ(3.4.0->3.5.0)を行っていますが、下記の通り「ext_ker」の部分でエラーとなってしまいます。弊社で設計する複数のプロジェクト全てで同じ現象です。何かお気付きの点があれば、ご指摘いただきたく、お願いいたします。
> >     CPU:RZA1L/H
> >     GNU Make Version :  3.81
> >
> > 以上、よろしくお願いいたします。
> >
> > 以下、エラー部の抜粋
> -------------------------------------------------------------------
> > arm-none-eabi-gcc -DTOPPERS_sta_ker -o sta_ker.o -c -MD -MP -MF
> > deps/sta_ker.d \
> >
>  -O0
> >  -Wall -g -DTOPPERS_OMIT_SYSLOG   -mlittle-endian -mcpu=cortex-a9
> -mfpu=vfpv3-d16
> >  -DTOPPERS_OMIT_TECS  -DTOPPERS_EXECUTE_ON_RAM -D__TARGET_ARCH_ARM=7
> -I.
> >  -I../include  -I../target/gr_peach_gcc -I../arch/arm_gcc/rza1
> -I../arch/arm_gcc/common
> >  -I../arch/gcc -I.. -I../J2_SRC -I../RZA1 -I../OSC -I../../common/VDC5
> -I../../common/VDC5/INC
> >  -I../../common/VDC5/iodefines -I../../common/VDC5/RenesasBSP/drv_inc
> -I../../common/VDC5/RenesasBSP/drv_src/display
> >  -I../../common/VDC5/RenesasBSP/drv_src/display/lcd
> -I../../common/VDC5/RenesasBSP/drv_src/display/lcd/include
> >  -I../../common/VDC5/RenesasBSP/drv_src/display/lcd/src
> -I../../common/VDC5/RenesasBSP/drv_src/display/vdc5/include
> >  -I../../common/VDC5/RenesasBSP/drv_src/display/vdc5/src
> -I../../common/VDC5/RenesasBSP/drv_src/display/vdec
> >  -I../../common/VDC5/RenesasBSP/drv_src/display/vdec/include
> -I../../common/VDC5/RenesasBSP/drv_src/display/vdec/src
> >  -I../../common/VDC5/RenesasBSP_example/Display/library/wrapper
> -I../../common
> >  -I../../common/FatFs -I../../common/eep -I../../common/sFlash
> -I../../common/sFlash/spibsc
> >  -I../../common/sFlash/spibsc/src -I../../common/sFlash/spibsc/inc
> -I../../common/uart
> >  -I../../common/USB -I../../common/USB/drivers\userdef
> -I../../common/USB/drivers/r_usb_basic
> >  -I../../common/USB/drivers/r_usb_basic/src/driver
> -I../../common/USB/drivers/r_usb_basic/src/driver/inc
> >  -I../../common/USB/drivers/r_usb_basic/src/hw
> -I../../common/USB/drivers/r_usb_basic/src/hw/inc
> >  -I../../common/USB/drivers/r_usb_pcdc
> -I../../common/USB/drivers/r_usb_pcdc/src
> >  -I../../common/USB/drivers/r_usb_pcdc/src/inc
> -I../../common/USB/drivers/r_usb_hmsc
> >  -I../../common/USB/drivers/r_usb_hmsc/ref
> -I../../common/USB/drivers/r_usb_hmsc/src
> >  -I../../common/USB/drivers/r_usb_hmsc/src/inc
> -I../../common/USB/drivers/r_usb_hmsc/src/ff11
> >  -I../../common/USB/drivers/r_usb_hmsc/src/ff11/src
> -I../../common/USB/drivers/r_usb_hmsc/src/ff11/src/option
> >  -I../../common/USB/drivers/intc/intc_driver
> -I../../common/USB/drivers/intc/inc
> >  -I./gen -I../tecs_kernel -D__RZA1L -DRZ -D_NORMAL  -I../kernel
> > ../kernel/startup.c
> > arm-none-eabi-gcc -DTOPPERS_ext_ker -o ext_ker.o -c -MD -MP -MF
> > deps/ext_ker.d \
> >
>  -O0
> >  -Wall -g -DTOPPERS_OMIT_SYSLOG   -mlittle-endian -mcpu=cortex-a9
> -mfpu=vfpv3-d16
> >  -DTOPPERS_OMIT_TECS  -DTOPPERS_EXECUTE_ON_RAM -D__TARGET_ARCH_ARM=7
> -I.
> >  -I../include  -I../target/gr_peach_gcc -I../arch/arm_gcc/rza1
> -I../arch/arm_gcc/common
> >  -I../arch/gcc -I.. -I../J2_SRC -I../RZA1 -I../OSC -I../../common/VDC5
> -I../../common/VDC5/INC
> >  -I../../common/VDC5/iodefines -I../../common/VDC5/RenesasBSP/drv_inc
> -I../../common/VDC5/RenesasBSP/drv_src/display
> >  -I../../common/VDC5/RenesasBSP/drv_src/display/lcd
> -I../../common/VDC5/RenesasBSP/drv_src/display/lcd/include
> >  -I../../common/VDC5/RenesasBSP/drv_src/display/lcd/src
> -I../../common/VDC5/RenesasBSP/drv_src/display/vdc5/include
> >  -I../../common/VDC5/RenesasBSP/drv_src/display/vdc5/src
> -I../../common/VDC5/RenesasBSP/drv_src/display/vdec
> >  -I../../common/VDC5/RenesasBSP/drv_src/display/vdec/include
> -I../../common/VDC5/RenesasBSP/drv_src/display/vdec/src
> >  -I../../common/VDC5/RenesasBSP_example/Display/library/wrapper
> -I../../common
> >  -I../../common/FatFs -I../../common/eep -I../../common/sFlash
> -I../../common/sFlash/spibsc
> >  -I../../common/sFlash/spibsc/src -I../../common/sFlash/spibsc/inc
> -I../../common/uart
> >  -I../../common/USB -I../../common/USB/drivers\userdef
> -I../../common/USB/drivers/r_usb_basic
> >  -I../../common/USB/drivers/r_usb_basic/src/driver
> -I../../common/USB/drivers/r_usb_basic/src/driver/inc
> >  -I../../common/USB/drivers/r_usb_basic/src/hw
> -I../../common/USB/drivers/r_usb_basic/src/hw/inc
> >  -I../../common/USB/drivers/r_usb_pcdc
> -I../../common/USB/drivers/r_usb_pcdc/src
> >  -I../../common/USB/drivers/r_usb_pcdc/src/inc
> -I../../common/USB/drivers/r_usb_hmsc
> >  -I../../common/USB/drivers/r_usb_hmsc/ref
> -I../../common/USB/drivers/r_usb_hmsc/src
> >  -I../../common/USB/drivers/r_usb_hmsc/src/inc
> -I../../common/USB/drivers/r_usb_hmsc/src/ff11
> >  -I../../common/USB/drivers/r_usb_hmsc/src/ff11/src
> -I../../common/USB/drivers/r_usb_hmsc/src/ff11/src/option
> >  -I../../common/USB/drivers/intc/intc_driver
> -I../../common/USB/drivers/intc/inc
> >  -I./gen -I../tecs_kernel -D__RZA1L -DRZ -D_NORMAL  -I../kernel
> > arm-none-eabi-gcc.exe: fatal error: no input files
> > compilation terminated.
> > make: *** [ext_ker.o] Error 1
> >
>
>
>
-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: <http://www.toppers.jp/pipermail/users/attachments/20191206/e740cdbf/attachment-0001.html>


More information about the USERS mailing list