TOPPERS/JSPカーネルとは

TOPPERS/JSPカーネルは、μITRON4.0仕様に準拠したリアルタイムカーネルで、TOPPERSプロジェクトの最初の開発成果です。 JSP(Just Standard Profile)の名前が示す通り、μITRON4.0仕様の スタンダードプロファイル規定に従って実装されています。

JSPカーネルの最新リリースはこちらからダウンロードできます。

JSPカーネルの主な特長は次の通りです。

  • 読みやすく改造しやすいソースコード
  • 研究・教育への利用を想定して開発したことから、ソースコードの読みやすさ や改造しやすさに重点を置いて実装しました。ただし、安易な読みやすさを追 求して、効率の悪い平易なアルゴリズムを採用することはしていません。むし ろ、タイムイベントの管理にヒープ構造を用いるなど、複雑であっても効率的 なアルゴリズムは積極的に採用しています。

  • 他のターゲットへのポーティングが容易な構造
  • カーネルのできる限り多くの部分をC言語で記述する、ターゲット独立部とター ゲット依存部を明確に分離するなど、他のターゲットプロセッサやシステムへ のポーティングが容易な構造となっています。実際、ターゲットプロセッサの アーキテクチャを熟知していれば、3日程度でポーティングできたという報告 もあります。

  • 高い実行性能と小さいRAM使用量
  • 大部分がC言語で記述されているカーネルとしては、高い実行性能と小さい RAM使用量を実現しました。

  • Linux上およびWindows上でのシミュレーション環境
  • JSPカーネルを、Linux上およびWindows上の動作させるためのシミュレーショ ン環境を用意しています。これらのシミュレーション環境は、Linuxおよび Windowsの一つのプロセスの中で複数のタスクを切り替えて動作させるもので、 組込みシステムのプロトタイプ開発やロジックレベルでの検証、リアルタイム OSの学習用途などに最適なものです。

  • 開発環境まで含めてフリーソフトウェアのみで構築可能
  • TOPPERS/JSPカーネルは、GCCなどのGNU開発環境を標準のソフトウェア開発環 境としています。そのためユーザは、カーネル本体のみならず開発環境もフリー で入手し、システム開発をおこなうことが可能です。

既知の問題

開発環境のバージョン(C++ライブラリの振舞い)によって,cfgが終了しな くなる不具合が報告されています。原因や修正方法について,以下のページ に情報がありますので,参考にしてください。
http://bfin.sakura.ne.jp/?p=213
http://www.toppers.jp/TOPPERS-USERS/2012-June/003802.html
http://www.toppers.jp/ETROBO-ML/2014-December/000023.html

ターゲットシステム

JSPカーネルは、リリース1.4.3の時点で、以下のターゲットプロセッサ/ターゲットシステ ムをサポートしています。リリース1.4.4以降は、配布キットのタイプにより対応ターゲットが異なります。詳細は、配布キットに含まれる文書をご参照ください。

最新のJSPカーネルには含まれていないターゲット依存部は、こちらにあります。

ディレクトリ名 開発環境

 
プロセッサ(型番) システム(メーカ名)
m68k GNU開発環境
  M68040(MC68LC040) DVE-68K/40(電産)
sh1 GNU開発環境
  SH1(SH7032) KZ-SH1-01(京都マイクロコンピュータ)
※ RISC評価キットSH-1(CQ出版)でも動作
SH1(SH7034) μITRON搭載SH1CPUボード((株)中央製作所)
sh2 GNU開発環境
  SH2(SH7145) AP_SH2F_6A(アルファプロジェクト)
SH2(SH7615) HSB7615IT (北斗電子)
sh3 GNU開発環境
  SH3(SH7709A) MS7709ASE01 (日立超LSIシステムズ)
SH3(SH7729R) MS7729RSE01 (日立超LSIシステムズ)
SH3(SH7727) MS7727CP01 (日立超LSIシステムズ)
SH4(SH7750) MS7750SE01 (日立超LSIシステムズ)
sh3-ghs GHS開発環境
  SH3(SH7709A) MS7709ASE01 (日立超LSIシステムズ)
SH3(SH7727) MS7727CP01 (日立超LSIシステムズ)
h8 GNU開発環境
  H8(H8/3052F) AKI-H8/3052F(秋月電子通商)
H8(H8/3069F) AKI-H8/3069F(秋月電子通商)
h8-renesas Renesas社の開発環境
  H8(HSB8F3048BF25) H8/3048F-ONEスタータキット((株)北斗電子)
h8s-renesas Renesas社の開発環境
  H8S(2339F) MiNET-H8S/2339F(ミスポ)
armv4 GNU開発環境
  ARM9 (ARM922T) KZ-ARM9EXPCI-01(京都マイクロコンピュータ)
  ARM9(ARM926EJ-S) AZ9360MB(YDK)
armv4-ghs GHS開発環境
  ARM9(ARM920T) Integrator/AP+CM920T(ARM)
ARM9E(ARM966E-S) Integrator/AP+CM966E-S(ARM)
m32r GNU開発環境
  M32R(M32102S6FP) M3A-2131G50(三菱電機)
  M32R(M32102S6FP) M3A-ZA36(三菱電機)
m32c-renesas Renesas社の開発環境
  M32C OAKS32(オークス電子)
microblaze GNU開発環境
  MicroBlaze MIREF(YDK)
MicroBlaze MIRE_MULTI3000(YDK)
MicroBlaze MultiMedia Board(Xilinx)
MicroBlaze Suzaku(アットマークテクノ)
tms320c54x TI社の開発環境
  TMS320C54x(TSM320C5402) TMS320VC5402 DSK(TI)
xstormy16 GNU開発環境
  xstormy16 三洋マイコン開発ツール(三洋半導体)
m16c-renesas Renesas社の開発環境
  M16C(M30620FCAFP-CPU) OASKS16(オークス電子)
M16C(M30262F8FG-CPU) OAKS16-MINI(オークス電子)
s1c33 GNU開発環境
  SC33 DMT33209(EPSON)
SC33 LUXUN2(EPSON)
s1c33-gnu33 GNU33開発環境
  SC33 DMT33209(EPSON)
SC33 LUXUN2(EPSON)
nios2 GNU開発環境
  Nios2 NiosII Development Board(アルテラ)
v850 GNU開発環境
  V850 TK-850/KJ1+(Application Corp.)
  V850 TK-850/SG2(Application Corp.)
tlcs900 東芝セミコンダクタ社の開発環境(TOSHIBA IDE)
  TMP91CY22-CPU Zup-F16拡張ボード(タマデン工業(株))

以下のターゲットは、以前のバージョン(1.4.1)のコードからアップデート されておらず、動作確認を行っていないため、1.4.2以降では、参考実装扱い としています。

ディレクトリ名 開発環境

 
プロセッサ(型番) システム(メーカ名)
h8 GNU開発環境
  H8(H8/3048F) AKI-H8/3048F(秋月電子通商)
H8(H8/3069F) NKEV-010H8(品川通信計装サービス)
h8s GNU開発環境
  H8S(2350) H8S/2350 評価ボード(ミスポ)
powerpc32 GNU開発環境
  PowerPC32(MPC860T) TB6102S(タンバック)
mips3 GNU開発環境
  MIPS3(VR4131) KZ-Vr4131PCI-01(京都マイクロコンピュータ)
MIPS3(VR5500) RTE-VR5500-CB(64)(マイダス・ラボ)

TOPPERS/JSPカーネル リリース1.3でサポートしているターゲットプロセッサ およびターゲットシステムは以下の通りです。

ターゲットプロセッサ ターゲットシステム
M68040(MC68LC040) DVE-68K/40(電産)
SH3(SH7709A) SH-CARD CARD-E09A(セイコーエプソン)
SH3(SH7709A) MS7709ASE01(日立超LSIシステムズ)
SH3(SH7709) MU-200-RSH3(三菱電機マイコン機器ソフトウエア)
SH3(SH7708) DVE-SH7700(電産)
SH4(SH7750) CQ RISC評価キット/SH-4(CQ出版)
SH1(SH7032) KZ-SH1-01(京都マイクロコンピュータ)
※ RISC評価キットSH-1(CQ出版)でも動作
SH1(SH7032) SH1/CPUB(常盤商行)
H8(H8/3048F) AKI-H8/3048F(秋月電子通商)
H8(H8/3067F) AKI-H8/3067F(秋月電子通商)
H8S(H8S/2350) MISPO H8S/2350 EVA(ミスポ)
ARM7TDMI(KS32C50100) Evaluator-7T(ARM)
V850(μPD703107) RTE-V850E/MA1-CB(マイダス・ラボ)
M32R(M32102S6FP) M3A-2131G50(三菱電機)
MicroBlaze Insight VirtexII V2MB1000(MEMEC)
TMS320C54x(TSM320C5402) TMS320VC5402 DSK(TI)
i386 PC/AT互換機

今後のリリースに含まれる予定のターゲットシステム

TOPPERS/JSPカーネルRelease 1.4.3対応
Lattice製LatticeMico32依存部パッケージ

本パッケージは、TOPPERS/JSPカーネルに対応したLattice製LatticeMico32依 存部です。TOPPERS/JSPカーネルRelease 1.4.3に本パッケージに含まれるファイルをマージすることで、下記ターゲットボードにてTOPPERS/JSPカーネルを動作させることができます。

  • Lattice社製Lattice ECP2 LatticeMico32/DSP 開発ボード(FPGA LatticeECP2-50 搭載)
LatticeMico32依存部パッケージ
(最終更新:2008年3月16日)

シミュレーション環境

JSPカーネルのシミュレーション環境として、Linux上で動作する環境と Windows上で動作する環境を用意しています。これらのシミュレーション環境 は、Linux および Windows の一つのプロセスの中で複数のタスクを切り替え て動作させるもので、スレッドライブラリとして使うこともできます。

また、以下のプロセッサでは、GNUで提供されるプログラムやメーカーが提供 する開発ツール環境を用いることで、組込み用マイコンの動作をパソコン上で シミュレーションすることができ、評価用ボード等を用意することなく、JSP カーネルを動作させることができます。各シミュレーションツールについては、 JSPカーネル リリースパッケージに含まれるドキュメントを参照してください。

プロセッサ シミュレーションツール
Xstormy16 三洋マイコン開発ツール

開発環境

TOPPERS/JSPカーネルは、GCCなどのGNU開発環境を標準のソフトウェア開発環 境としています。インライン関数やインラインアセンブラ機能など、GCCの拡 張機能を用いている部分があります。ただし、GNU開発環境がサポートしてい ないターゲットプロセッサなどに対しては、他の種類のコンパイラを用いてい ます。例えば、Windows上のシミュレーション環境には、Visual C++を用いて います。

GCCへのパッチ

JSPカーネル1.4で、C++バインディングを使用する場合、パッチが必要となり ます。以下は、Cygwin上でGCC 3.2.3のmake時に発生する障害を回避するため のパッチです。

以下は、GCCをTOPPERS/JSPカーネルに対応させるためのパッチです。

詳細は、JSPカーネルの配布キットに含まれるドキュメントや、 ユーザズメーリングリストでの回答をご覧ください。

GNU開発環境

GNU開発環境の中で、具体的には、BINUTILS、GCC-CORE、GDBが必要です。また、 アプリケーションプログラムで標準ライブラリを必要とする場合には、NEWLIB を用いることができます。開発環境を Windows上に構築する場合には、Cygwin が必要です。これらのソースコードは、以下からダウンロードすることができ ます。

GNU開発環境:
GNUプロジェクトRing Server
NEWLIB:
Red Hat
Cygwin:
Red HatRing Server

Cygwin用のSHのBINUTILS,GCC-CORE,GDBのバイナリが、以下にあります。 /usr/local/で展開して、/usr/local/sh/binにパスを通して使用してください。

開発環境バイナリパッケージ(SH、Cygwin)

ホストマシンとターゲットシステムをシリアルインタフェースで接続し、GDB (GNUデバッガ)を用いてリモートデバッグを行う場合には、ターゲットシス テム上にスタブと呼ばれるプログラムが必要です。TOPPERS/JSPカーネルと一 緒に使えるように改造したスタブのソースプログラムは、以下にあります。

SH3用スタブ(約30KB)
68040用スタブ(約24KB)
H8 用簡易モニタ

以下では、H8 用簡易モニタを配布しています。(株)ルネサステクノロジー 製 H8 のフラッシュ ROM の書込み回数には制限があるため、 デバッグ用モ ジュールをフラッシュ ROM に書込んでデバックするのは、あまりよい方法で はありません。この H8 簡易モニタは、デバッグ用モジュールを RAM にロー ドして実行するためのプログラムです。

フラッシュ ROM には、 この H8 簡易モニタをは書込んでおき、デバッグ用モ ジュールを H8 の内蔵 RAM、または外部に増設した RAM にロードし、 デバッ グを行いますので、H8 のフラッシュ ROM の書込み回数制限の問題を回避する ことができます。

H8 用簡易モニタの概要を以下に示します。

  • ターゲットシステムは、(株)秋月電子通商製の AKI-H8/3048F、3052F、 3068F、3069F です。
  • H8 用 TOPPERS/JSP カーネルに対応しており、 H8 用 TOPPERS/JSP カー ネルを組込んだデバッグモジュールを RAM にロードし実行することができま す。
  • H8 の内蔵 RAM に仮想割込みベクタを設定可能で、H8/3048F 用は(株) 秋月電子通商製のモニタ・デバッガと互換性があります。
  • メモリの内容を表示・変更する機能があります。
H8用簡易モニタ(72KB)

その他のターゲットシステム


SH

宮城県産業技術総合センターでは、CQ出版RISC評価キットSH-1に付属するデバッ ガに対応したバージョンを、 こちらから配付しています。

Solution Engine MS7751RSE01

(有)スペースソフトが、(株)日立超LSIシステムズ製Solution Engine MS7751RSE01へ移植されました。移植手順の紹介とカーネルの配布をこちらから行っています。

Blackfin
酔漢さんが、Analog Devices社のDSPであるBlackfinへ移植されました。 この件に関するページが、 こちらにあります。移植したシステムに関する文書もこのページから辿ることができます。また、このページでは、JSPカーネルのターゲット依存部の解析メモも公開されています。
Xtensa
(株)ソフィアシステムズが、 テンシリカ(株)のプロセッサXtensaへの移植とサポートを行っています。

その他のシミュレーション環境


Plamo Linux
岸田昌巳さんが、i386 Plamo Linux 2.1 でコンパイル・実行するため に必要だった修正について報告されたメールが、こちらにあります。
PPCのLinux
やまぐちたかゆきさんが、Linuxのシミュレーション環境をPPCのLinux で構築されました。若干問題はあるようですが、基本的には使えるとのことで す。この件に関するメールが、こちらこちらにあります。
Free BSD
船田悟史さんが、FreeBSDのLinuxエミュレータ上で動かされた際のロ グが こちらにあります。
Cygwin
ma2takさんが、Linuxのシミュレーション環境をCygwinで動作するよう にされました。動作は不安定ということです。この件に関するメールが、こちらにあります。

開発スタッフ

TOPPERSプロジェクトのメンバとして、TOPPERS/JSPカーネルの開発に参加 している開発スタッフは次の通りです(所属は参加した時点のもの)。

名前 所属 時期 担当
高田広章 豊橋技術科学大学 情報工学系(現在、名古屋大学 情報科学研究科) 2000年〜 JSPカーネル本体, M68040
若林隆行 豊橋技術科学大学 情報工学系 2000年〜 Windowsシミュレーション環境, コンフィギュレータ, V850(JSPカーネル1.3), M32R
本田晋也 豊橋技術科学大学 情報工学系(現在、名古屋大学 情報科学研究科) 2000年〜 SH3, SH4, ARMV4, MicroBlaze, Nios2
Linuxシミュレーション環境
今井和彦 宮城県産業技術総合センター 2000年〜 SH1,PowerPC
阿部司 苫小牧工業高等専門学校 情報工学科 2001年〜 H8
邑中雅樹 (資)もなみソフトウェア 2001年〜 i386
西山零士 豊橋技術科学大学 情報工学系 2001年〜
2004年
TMS32054x
- 宮城県産業技術総合センター 2002年〜 H8S
松川竜彦 三洋半導体(株) 2003年〜 Xstormy16
- 宮城県産業技術総合センター 2003年〜 MIPS3
- (株)ヴィッツ 2006年〜 TLCS900

※ 開発スタッフの名前は、掲載を了承された方のみ記載しています。