SUZAKU-VでTOPPERS/ASPを動かす#2

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


TOPPERS/ASPの移植・その1

今回はTECS対応版を使用します。
コンポーネント対応をしておくと、今後の機能変更が容易になると期待できます。
また、現在のASPは今後TECSに統合していくとのことですし。

  1. TECS対応版のダウンロード
    ここからダウンロードします。
    今回はtecs_package-20090728.tar.gzをダウンロードし、/suzakuvに格納しました。

  2. TOPPERS/ASPの移植準備
    1. アーカイブの展開
      アーカイブを展開します。
      $ cd /suzakuv
      $ tar xvfz tecs_package-20090728.tar.gz
    2. ターゲット依存部の仮準備
      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
    3. アーキテクチャ依存部の仮準備
      こちらも同様に付属のMindstormsNXT版からsuzaku-v版を仮作成します。
      $ cd /suzakuv/tecs_package/asp+tecs/arch
      $ cp -r arm_gcc ppc_gcc
      $ cd ppc_gcc
      $ mv at91sam7s ppc405

  3. 情報収集

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

  1. 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

  1. 大まかに修正してみる
    1. 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

    2. ターゲット依存部の修正
      対象フォルダ: /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
    3. アーキテクチャ依存部の修正
      対象フォルダ: /suzakuv/tecs_package/asp+tecs/arch/suzakuv_gcc

      とりあえず変更せずにそのまま使用します。

  2. サンプルプログラムのビルド
    エラー承知で試しにサンプルプログラムをビルドしてみます。
    $ 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は無事動作しているようです。この結果を元に修正していきます。

  3. 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:    };
  4. cfgエラーを修正
    まずはこれを修正。
    ../target/suzakuv_gcc/target_config.h:112:2: error: #error architecture not supported
    target_config.h内でプロセッサを判定していますが、これは PowerPC Mac と Intel Mac の切り替えだと思われるので、ばっさり修正。
    1. 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に続くかも)


Total:2504 Today:1 Yesterday:0


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2013-01-17 (木) 18:34:00