* SUZAKU-VでTOPPERS/ASPを動かす#2 [#j59bcf84]
[[SUZAKU-VでTOPPERS/ASPを動かす#1]]の続きです。
ここよりTOPPERS/ASP TESC版の移植を進めます。

#contents
----
**TOPPERS/ASPの移植・その1 [#u0e4b71a]
今回はTECS対応版を使用します。~
コンポーネント対応をしておくと、今後の機能変更が容易になると期待できます。~
また、現在のASPは今後TECSに統合していくとのことですし。~
+TECS対応版のダウンロード~
[[ここ:http://www.toppers.jp/tecs.html]]からダウンロードします。~
今回はtecs_package-20090728.tar.gzをダウンロードし、/suzakuvに格納しました。~
~
+TOPPERS/ASPの移植準備
++アーカイブの展開~
アーカイブを展開します。
 $ cd /suzakuv
 $ tar xvfz tecs_package-20090728.tar.gz
++ターゲット依存部の仮準備~
SUZAKU-VのCPUがPowerPCであることから、当初ターゲット移植元としてMacOS X版で進めていましたが、これはMacOS上で動作するシミュレーション環境ということで、特に初期化周りが参考にならないようです。~
仕切り直しということで、CPUは異なりますがMindstormsNXT版を元に進めます。~
~
付属のMindstormsNXT版からsuzaku-v版を仮作成します。ついでにサンプルのコピーとtecsgenへのシンボリックリンクも作成しておきます。~
 $ cd /suzakuv/tecs_package/asp+tecs/target
 $ cp -r mindstorms_nxt_gcc suzakuv_gcc
 $ cd /suzakuv/tecs_package/asp+tecs
 $ cp -r sample sample_suzakuv
 $ ln -s ../bin/tecsgen.exe tecsgen.exe
++アーキテクチャ依存部の仮準備~
こちらも同様に付属のMindstormsNXT版からsuzaku-v版を仮作成します。~
 $ cd /suzakuv/tecs_package/asp+tecs/arch
 $ cp -r arm_gcc ppc_gcc
 $ cd ppc_gcc
 $ mv at91sam7s ppc405
~
+情報収集

(■■以下見直し中■■)

++Makefileの変更~
Makefileを一部変更します。~
対象ファイル: /suzakuv/tecs_package/asp+tecs/sample_suzakuv/Makefile
  105: #tecsgen.exeを利用する場合
 >106: #TECSGEN_CPP = 'gcc -E -D TECS'
  107: #cygwinのgccがシンボリックリンクの場合は、
  108: #下記のようにシンボリックリンク先(gcc-3,gcc-4など)を直接指定する必要がある.
  109: #TECSGEN_CPP = 'gcc-3 -E -D TECS'
  110: #TECSGEN_CPP = 'gcc-4 -E -D TECS'
 >111: TECSGEN_CPP = 'powerpc-suzakuv-elf-gcc -E -D TECS'
  112: TECSGEN = $(SRCDIR)/tecsgen -c $(TECSGEN_CPP) -k euc
       (省略)
  224 #
  225 #  ターゲットファイル(複数を同時に選択してはならない)
  226 #
 >227 #all: $(OBJFILE)
 >228 all: $(OBJNAME).bin
  229 #all: $(OBJNAME).srec
----
**TOPPERS/ASPの移植・その2 [#l249bb61]
+大まかに修正してみる~
++MANIFESTの修正~
対象ファイル: /suzakuv/tecs_package/asp+tecs/MANIFEST~
~
ターゲット依存部およびアーキテクチャ依存部のMANIFESTの定義を追加します。~
  114: INCLUDE target/macosx_gcc/MANIFEST
  115: INCLUDE target/at91skyeye_gcc/MANIFEST
 >116: INCLUDE target/suzakuv_gcc/MANIFEST
  117: INCLUDE arch/arm_gcc/MANIFEST
  118: INCLUDE arch/gcc/MANIFEST
  119: INCLUDE arch/logtrace/MANIFEST
 >120: INCLUDE arch/powerpc_gcc/MANIFEST
  121: # INCLUDE cfg/MANIFEST
  122: # INCLUDE test/MANIFEST
  123: # INCLUDE extension/MANIFEST
~
++ターゲット依存部の修正~
対象フォルダ: /suzakuv/tecs_package/asp+tecs/target/suzakuv_gcc~
~
まずはファイル名を変更します。MacOSXになっている所をすべてSuzakuVに変更します。~
~
【対象ファイル】
 macosx.h           → suzakuv.h
 tPutLogMacOSX.c    → tPutLogSuzakuV.c
 tPutLogMacOSX.cdl  → tPutLogSuzakuV.cdl
 tSIOPortMacOSX.c   → tSIOPortSuzakuV.c
 tSIOPortMacOSX.cdl → tSIOPortSuzakuV.cdl
 tSIOPortMacOSX.h   → tSIOPortSuzakuV.h
続いて各ファイルでmacosx,MacOSX,MACOSX,Mac OS Xになっている所を、それぞれsuzakuv,SuzakuV,SUZAKUV,Suzaku-Vに一括変換します。~
~
【対象ファイル】
 E_PACKAGE
 Makefile.target
 MANIFEST
 suzakuv.h
 target.tf
 target_check.tf
 target_config.c
 target_config.h
 target_kernel.h
 target_sil.h
 target_stddef.h
 target_syssvc.h
 target_syssvc_decl.cdl
 target_syssvc_inst.cdl
 target_test.h
 target_timer.c
 target_timer.h
 target_user.txt
 tPutLogSuzakuV.c
 tPutLogSuzakuV.cdl
 tSIOPortSuzakuV.c
 tSIOPortSuzakuV.cdl
 tSIOPortSuzakuV.h
++アーキテクチャ依存部の修正~
対象フォルダ: /suzakuv/tecs_package/asp+tecs/arch/suzakuv_gcc~
~
とりあえず変更せずにそのまま使用します。~
~
+サンプルプログラムのビルド~
エラー承知で試しにサンプルプログラムをビルドしてみます。
 $ export PATH=/suzakuv/bin:/suzakuv/gcc/bin:$PATH  ←Cygwin起動後に1回実行
 $ cd /suzakuv/tecs_package/asp+tecs
 $ mkdir obj
 $ cd obj
 $ perl ../configure -T suzakuv_gcc -A tSample1 -t sample_suzakuv
 $ make all
 ../tecsgen -c 'powerpc-suzakuv-elf-gcc -E -D TECS' -k euc -R -D TECS -D TECS_CPP \
                                                                         -I. -I./
 gen -I../tecs_kernel -I../include -I../arch -I..  -I../target/suzakuv_gcc tSample1.cdl
 tecsgen  version 1.0.0.6  copyright(c) 2008-2009, TOPPERS project
 warning: ../include/kernel.cdl: line 644 p_block pointer level mismatch
 warning: ../include/kernel.cdl: line 645 p_block pointer level mismatch
 warning: ../include/kernel.cdl: line 646 p_block pointer level mismatch
 warning: ../target/suzakuv_gcc/tSIOPortSuzakuV.cdl: line 35 char: obsolete type. use char_t
 4 warnings
 touch tecs.timestamp
 ../cfg/cfg/cfg --pass 1 --kernel asp -I. -I./gen -I../tecs_kernel -I../include -
 I../arch -I..  -I../target/suzakuv_gcc --api-table ../kernel/kernel_api.csv --cf
 g1-def-table ../kernel/kernel_def.csv  --cfg1-def-table ../target/suzakuv_gcc/ta
 rget_def.csv tSample1.cfg
 gcc -c  -Wall -g -O2  -I. -I./gen -I../tecs_kernel -I../include -I../arch -I..
 -I../target/suzakuv_gcc   -DALLFUNC  -I../kernel cfg1_out.c
 In file included from ../kernel/kernel_impl.h:82,
                  from ../kernel/kernel_int.h:53,
                  from cfg1_out.c:3:
 ../target/suzakuv_gcc/target_config.h:112:2: error: #error architecture not supported
 In file included from ../kernel/kernel_impl.h:82,
                  from ../kernel/kernel_int.h:53,
                  from cfg1_out.c:3:
 ../target/suzakuv_gcc/target_config.h: In function 'sense_context':
 ../target/suzakuv_gcc/target_config.h:195: error: 'stack_t' undeclared (first use in this function)
 ../target/suzakuv_gcc/target_config.h:195: error: (Each undeclared identifier is reported only once
 ../target/suzakuv_gcc/target_config.h:195: error: for each function it appears in.)
 ../target/suzakuv_gcc/target_config.h:195: error: expected ';' before 'ss'
 ../target/suzakuv_gcc/target_config.h:197: warning: implicit declaration of function 'sigaltstack'
 ../target/suzakuv_gcc/target_config.h:197: error: 'ss' undeclared (first use in this function)
 ../target/suzakuv_gcc/target_config.h:198: error: 'SA_ONSTACK' undeclared (first use in this function)
 ../target/suzakuv_gcc/target_config.h: In function 'x_probe_int':
 ../target/suzakuv_gcc/target_config.h:374: warning: implicit declaration of function 'sigpending'
 ../target/suzakuv_gcc/target_config.h: In function 'x_define_inh':
 ../target/suzakuv_gcc/target_config.h:504: error: 'SA_ONSTACK' undeclared (first use in this function)
 ../target/suzakuv_gcc/target_config.h:507: warning: implicit declaration of function 'sigaction'
 ../target/suzakuv_gcc/target_config.h: In function 'x_define_exc':
 ../target/suzakuv_gcc/target_config.h:525: error: 'struct sigaction' has no member named 'sa_sigaction'
 ../target/suzakuv_gcc/target_config.h:526: warning: 'struct __siginfo' declared inside parameter list
 ../target/suzakuv_gcc/target_config.h:526: warning: its scope is only this definition or declaration, which is probably not what you want
 ../target/suzakuv_gcc/target_config.h:527: error: 'SA_ONSTACK' undeclared (first use in this function)
 ../target/suzakuv_gcc/target_config.h:527: error: 'SA_SIGINFO' undeclared (first use in this function)
 ../target/suzakuv_gcc/target_config.h:527: error: 'SA_NODEFER' undeclared (first use in this function)
 ../target/suzakuv_gcc/target_config.h: In function 'exc_sense_context':
 ../target/suzakuv_gcc/target_config.h:581: error: 'ucontext_t' undeclared (first use in this function)
 ../target/suzakuv_gcc/target_config.h:581: error: expected expression before ')' token
 ../target/suzakuv_gcc/target_config.h: In function 'exc_get_sigmask':
 ../target/suzakuv_gcc/target_config.h:590: error: 'ucontext_t' undeclared (first use in this function)
 ../target/suzakuv_gcc/target_config.h:590: error: expected expression before ')' token
 gen/tecsgen.cfg: At top level:
 gen/tecsgen.cfg:5: error: 'SIGSTKSZ' undeclared here (not in a function)
 ../target/suzakuv_gcc/unix_sigio.cfg:13: error: 'SIGIO' undeclared here (not in a function)
 tSample1.cfg:15: error: 'SIGINFO' undeclared here (not in a function)
 make: *** [cfg1_out.o] Error 1
tecsgenとcfgは無事動作しているようです。この結果を元に修正していきます。~
~
+tecsgenエラーを修正~
次の警告については依存部ではないのでそのまま無視します。~
 warning: ../include/kernel.cdl: line 644 p_block pointer level mismatch
 warning: ../include/kernel.cdl: line 645 p_block pointer level mismatch
 warning: ../include/kernel.cdl: line 646 p_block pointer level mismatch
次の警告については修正します。~
 warning: ../target/suzakuv_gcc/tSIOPortSuzakuV.cdl: line 35 char: obsolete type. use char_t
/suzakuv/tecs_package/asp+tecs/target/suzakuv_gcc/tSIOPortSuzakuV.cdlを修正します。~
  34:    attr {
 >35:        char_t      *path;          /* ファイルのパス名 */
  36:    };
+cfgエラーを修正~
まずはこれを修正。~
 ../target/suzakuv_gcc/target_config.h:112:2: error: #error architecture not supported
target_config.h内でプロセッサを判定していますが、これは PowerPC Mac と Intel Mac の切り替えだと思われるので、ばっさり修正。~
++target_config.hの修正~
対象ファイル: /suzakuv/tecs_package/asp+tecs/target/suzakuv_gcc/target_config.h~
~
94行目から、次のように変更します。~
   94: /*
   95:  *  アーキテクチャ(プロセッサ)依存の定義
   96:  */
   97: #define JMPBUF_PC			21		/* jmp_buf中でのPCの位置 */
   98: #define JMPBUF_SP			0		/* jmp_buf中でのSPの位置 */
   99: #define TASK_STACK_MERGIN		4U
  100: #define DEFAULT_ISTKSZ		SIGSTKSZ	/* シグナルスタックのサイズ */
  101:
  102: /* 
  103:  *  標準の割込み管理機能の初期化を行わないための定義
  104:  */
~
([[SUZAKU-VでTOPPERS/ASPを動かす#3]]に続くかも)
~
----

 #comment
#comment

Total:&counter(total); Today:&counter(today); Yesterday:&counter(yesterday);

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS