TOPPERSの環境構築
 
&counter([total|today|yesterday]); - 0 - 0 - 20
 



TOPPERS概論

main()とコンフィギュレータ

そもそも組込みソフトでmain()は意味が無い。
最初のタスクの起動は、静的に(コンパイル時に)行う。
静的に行うのは面倒なので、コンフィギュレータが導入された。 コンフィギュレーションファイル(.cfg)の記述は静的APIを使う。
sample1.cfgを参照すると良い。

/*
 *  @(#) $Id: sample1.cfg,v 1.7 2003/01/06 08:08:26 hiro Exp $
 */

/*
 *  サンプルプログラム(1)のシステムコンフィギュレーションファイル
 */

#define _MACRO_ONLY
#include "sample1.h"

INCLUDE("\"sample1.h\"");
CRE_TSK(TASK1, { TA_HLNG, (VP_INT) 1, task, MID_PRIORITY, STACK_SIZE, NULL });
CRE_TSK(TASK2, { TA_HLNG, (VP_INT) 2, task, MID_PRIORITY, STACK_SIZE, NULL });
CRE_TSK(TASK3, { TA_HLNG, (VP_INT) 3, task, MID_PRIORITY, STACK_SIZE, NULL });
CRE_TSK(MAIN_TASK, { TA_HLNG|TA_ACT, 0, main_task, MAIN_PRIORITY,
			STACK_SIZE, NULL });
DEF_TEX(TASK1, { TA_HLNG, tex_routine });
DEF_TEX(TASK2, { TA_HLNG, tex_routine });
DEF_TEX(TASK3, { TA_HLNG, tex_routine });
CRE_CYC(CYCHDR1, { TA_HLNG, 0, cyclic_handler, 2000, 0 });
#ifdef CPUEXC1
DEF_EXC(CPUEXC1, { TA_HLNG, cpuexc_handler} );
#endif /* CPUEXC1 */

#include "../systask/timer.cfg"
#include "../systask/serial.cfg"
#include "../systask/logtask.cfg"

周期起動タスク

メールボックスの使い方

割込みハンドラからタスクへの情報通知

コンパイル方法

高橋メモ

FDAU TOPPERS memo 2004/9/29 takahashi

  1. target
    AKI-H8/3069F-LAN
    CPU: H8-3069F CLK20MHz MODE5
    ROM: 内蔵512KB 000000h-007FFFh
    RAM: 内蔵 16KB FFBF20h-FFFF1Fh
    RAM: 外部DRAM 8bit幅 CS2 2MB 400000h-5FFFFFh
    RS232C: SCI0(JP1、線を引き出しDsub9を半田付け), SCI1(Dsub9)
    LAN: RTL8019AS 8bit幅 CS1 32B 200000h-20001Fh
  2. tool-chains
    elf形式の、CとC++のコンパイラをつくろうとしたが、 コンパイルできなかったので、あきらめる。 coff形式のCコンパイラを作成する。 TOPPERS/JSP kernel をコンパイルするには、これがあればいいらしい。 Cygwin環境にて構築
     binutils-2.13.2.tar.bz2
     gcc-3.2.1-core.tar.bz2
     h8300-hms-gcc-3.1-1.patch	http://h8300-hms.sourceforge.net/
     newlib-1.11.0.tar.gz
     gdb-5.2.1.tar.bz2
    1. binutils
      オプション --disable-nls (国際化メッセージ無効)はTOPPERS/JSPのカーネルの コンパイルに必要。
      tar xfj binutils-2.13.2.tar.bz2
      cd binutils-2.13.2
      mkdir objdir
      cd objdir
      ../configure --prefix=/usr/local --target=h8300-hms --disable-nls
      make CFLAGS="-O2 -fomit-frame-pointer" all
      make install
    2. gcc and newlib
      Cコンパイラ以外は必要ないのでgcc-coreを使う。 newlibは組み込み用ライブラリ コンパイルには、かなり時間がかかる。
      export PATH=$PATH:/usr/local/bin
      tar xfj gcc-3.2.1-core.tar.bz2
      tar xfz newlib-1.11.0.tar.gz
      cd gcc-3.2.1
      ln -s ../newlib-1.11.0/newlib .
      patch -p1 < ../h8300-hms-gcc-3.1-1.patch
      mkdir objdir
      cd objdir
      ../configure \
              --prefix=/usr/local --target=h8300-hms \
              --enable-languages=c --with-newlib
      make CFLAGS="-O2 -fomit-frame-pointer" all
      make install
    3. gdb
      TOPPERS/JSPカーネル構築に必要ないので後回しにしてよい。
       
      GDBのソースコードを展開したディレクトリ以下の ./gdb/config/h8300/tm-h8300.h を以下のように修正
      L62	#define TARGET_INT_BIT  32
      L155	#define ARGLAST_REGNUM	1
       
      tar xfj gdb-5.2.1.tar.bz2
      cd gdb-5.2.1
      mkdir objdir
      cd objdir
      ../configure --prefix=/usr/local --target=h8300-hms
      make CFLAGS="-O2 -fomit-frame-pointer" all
      make install
  3. TOPPERS/JSP kernel
    jsp-1.4.tar.gzを入手する。 http://www.toppers.jp/jsp-download.html documentはjsp/docにある。
    とりあえずコンパイルしてみる。
    最初にjsp/cfgに移動し、make cfg(.exe) と chk(.exe) を生成する。
    cd ../
    mkdir akih83hms
    cd akih83hms
    ../configure -C h8 -S akih8_3069f
    でコンフィグレーションされる。 configureはperlスクリプトなのでperlつかえないとダメ。
    make depend
    make
    で、カーネル(jsp.exeとjsp.srec)がmakeされる。
  4. TOPPERS/JSP-tinet
    tinet-1.2.tar.gzを入手する。

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS