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 개발 환경을 표준 소프트웨어 개발 환경으로 하고 있습니다. 그 때문에 유저는 커널 본체뿐만 아니라 개발 환경도 무료로 입수하여 시스템 개발을 할 수 있습니다.

타겟 시스템

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(TANBAC)
mips3 GNU 개발 환경
  MIPS3(VR4131) KZ-Vr4131PCI-01(쿄토 마이크로 컴퓨터)
MIPS3(VR5500) RTE-VR5500-CB(64)(Midas Lab)

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(Midas Lab)
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의 1개의 프로세서에서 복수의 태스크를 전환하여 동작시키는 것으로 스레드 라이브러리로서 사용하는 것도 가능합니다.

또한 아래의 프로세서에서는 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 Hat, Ring 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에 이식하였습니다. 이식 순서의 소개와 커널의 배포를 href="http://www.spacesoft.co.jp/">여기에서 하고 있습니다.

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

※ 개발 스탭의 이름은 게재를 승낙한 분만 기재하고 있습니다.