µITRON4.0 Specification
https://www.ertl.jp/ITRON/SPEC/mitron4-e.html
TOPPERS/SSP
https://www.toppers.jp/ssp-kernel.html
Drags files here, to add them to your repository
Yowza, that’s a lot of files. Try uploading fewer than 100 at a time.
Github
https://github.com/kaizen-nagoya/toppersssp
toppers/ssp upload
https://qiita.com/kaizen_nagoya/items/cffa0aaf2c029cef7334
arch /arm_m_gcc/
MANIFEST
Makefile.prc
arm_m.h
prc.tf
prc_cfg1_out.h
prc_check.tf
prc_config.c
prc_config.h
prc_def.csv
prc_design.txt
prc_insn.h
prc_kernel.h
prc_rename.def
prc_rename.h
prc_sil.h
prc_stddef.h
prc_support.S
prc_test.h
prc_timer.c
prc_timer.cfg
prc_timer.h
prc_unrename.h
prc_user.txt
start.S
MANIFEST
PACKAGE ssp
MANIFEST
Makefile.prc
arm_m.h
prc.tf
prc_cfg1_out.h
prc_check.tf
prc_config.c
prc_config.h
prc_def.csv
prc_design.txt
prc_insn.h
prc_kernel.h
prc_rename.def
prc_rename.h
prc_sil.h
prc_stddef.h
prc_support.S
prc_test.h
prc_timer.cfg
prc_timer.c
prc_timer.h
prc_unrename.h
prc_user.txt
start.S
Makefile.prc
#
# @(#) $Id: Makefile.prc 1304 2008-08-27 07:28:36Z ertl-honda $
#
#
# Makefile のプロセッサ依存部(ARM-M用)
#
#
# コンパイルオプション
#
COPTS := $(COPTS) -mthumb
INCLUDES := $(INCLUDES) -I$(SRCDIR)/arch/$(PRC)_$(TOOL)/
LDFLAGS := -nostdlib $(LDFLAGS)
CDEFS := $(CDEFS) -DTOPPERS_LABEL_ASM
LIBS := $(LIBS) -lgcc
#
# カーネルに関する定義
#
KERNEL_DIR := $(KERNEL_DIR) $(SRCDIR)/arch/$(PRC)_$(TOOL)
KERNEL_ASMOBJS := $(KERNEL_ASMOBJS) prc_support.o
KERNEL_COBJS := $(KERNEL_COBJS) prc_config.o prc_timer.o
#
# コンフィギュレータ関係の変数の定義
#
CFG_TABS := $(CFG_TABS) --cfg1-def-table $(SRCDIR)/arch/$(PRC)_$(TOOL)/prc_def.csv
#
# 依存関係の定義
#
cfg1_out.c: $(SRCDIR)/arch/$(PRC)_$(TOOL)/prc_def.csv
kernel_cfg.timestamp: $(SRCDIR)/arch/$(PRC)_$(TOOL)/prc.tf
arm_m.h
/*
* TOPPERS/SSP Kernel
* Smallest Set Profile Kernel
*
* Copyright (C) 2008 by Embedded and Real-Time Systems Laboratory
* Graduate School of Information Science, Nagoya Univ., JAPAN
*
* 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
* ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
* 変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
* (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
* 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
* スコード中に含まれていること.
* (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
* 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
* 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
* の無保証規定を掲載すること.
* (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
* 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
* と.
* (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
* 作権表示,この利用条件および下記の無保証規定を掲載すること.
* (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
* 報告すること.
* (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
* 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
* また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
* 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
* 免責すること.
*
* 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
* よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
* に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
* アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
* の責任を負わない.
*
* @(#) $Id: arm_m.h 1304 2008-08-27 07:28:36Z ertl-honda $
*/
/*
* ARMVx-Mのハードウェア資源の定義
*/
#ifndef ARM_M_H
#define ARM_M_H
/*
* EPSRのTビット
*/
#define EPSR_T 0x01000000
/*
* IPSRの ISR NUMBER
*/
#define IPSR_ISR_NUMBER 0x1ff
/*
* 例外・割込み発生時にスタック上に積まれる保存領域のサイズ
* 本カーネルでは例外フレームと呼ぶ
*/
#define EXC_FRAME_SIZE (8*4)
/*
* 例外・割込み発生時にLRに設定されるEXC_RETURNの値
*/
#define EXC_RETURN_HANDLER 0x0
#define EXC_RETURN_THREAD 0x8
#define EXC_RETURN_MSP 0x0
#define EXC_RETURN_PSP 0x4
/*
* CONTROLレジスタ
*/
#define CONTROL_PSP 0x02
#define CONTROL_MSP 0x00
/*
* 例外番号
*/
#define EXCNO_NMI 2
#define EXCNO_HARD 3
#define EXCNO_MPU 4
#define EXCNO_BUS 5
#define EXCNO_USAGE 6
#define EXCNO_SVCALL 11
#define EXCNO_DEBUG 12
#define EXCNO_PENDSV 14
/*
* 例外番号の最小値と最大値
*/
#define TMIN_EXCNO 2
#define TMAX_EXCNO 14
/*
* 割込み番号
*/
#define IRQNO_SYSTICK 15
/*
* 割込み番号の最小値
*/
#define TMIN_INTNO 15
/*
* 例外フレームのオフセット
*/
#define P_EXCINF_OFFSET_EXC_RETURN 0x00
#define P_EXCINF_OFFSET_BASEPRI 0x01
#define P_EXCINF_OFFSET_XPSR 0x09
#define P_EXCINF_OFFSET_PC 0x08
/*
* NVIC関連
*/
/*
* コントロールレジスタ
*/
#define NVIC_INT_CTRL 0xe000ed04
#define NVIC_PENDSVSET 0x10000000
/*
* システムハンドラーコントロールレジスタ
*/
#define NVIC_SYS_HND_CTRL 0xE000ED24
/*
* 各例外の許可ビット
*/
#define NVIC_SYS_HND_CTRL_USAGE 0x00040000
#define NVIC_SYS_HND_CTRL_BUS 0x00020000
#define NVIC_SYS_HND_CTRL_MEM 0x00010000
/*
* 優先度設定レジスタ
*/
#define NVIC_SYS_PRI1 0xE000ED18 // Sys. Handlers 4 to 7 Priority
#define NVIC_SYS_PRI2 0xE000ED1C // Sys. Handlers 8 to 11 Priority
#define NVIC_SYS_PRI3 0xE000ED20 // Sys. Handlers 12 to 15 Priority
#define NVIC_PRI0 0xE000E400 // IRQ 0 to 3 Priority Register
/*
* 割込み許可レジスタ
*/
#define NVIC_SETENA0 0xE000E100 // IRQ 0 to 31 Set Enable Register
/*
* 割込み禁止レジスタ
*/
#define NVIC_CLRENA0 0xE000E180 // IRQ 0 to 31 Set Disable Register
/*
* ベクタテーブルオフセットレジスタ
*/
#define NVIC_VECTTBL 0xE000ED08
/*
* SYSTIC関連レジスタ
*/
#define SYSTIC_CONTROL_STATUS 0xE000E010
#define SYSTIC_RELOAD_VALUE 0xE000E014
#define SYSTIC_CURRENT_VALUE 0xE000E018
#define SYSTIC_CALIBRATION 0xE000E01C
#define SYSTIC_ENABLE 0x01
#define SYSTIC_TICINT 0x02
#define SYSTIC_CLKSOURCE 0x04
#define SYSTIC_COUNTFLAG 0x10000
#define SYSTIC_SKEW 0x40000000
#define SYSTIC_NOREF 0x80000000
#define SYSTIC_TENMS 0x00ffffff
#endif /* ARM_M_H */
prc.tf
prc_cfg1_out.h
prc_check.tf
prc_config.c
prc_config.h
prc_def.csv
prc_design.txt
prc_insn.h
prc_kernel.h
prc_rename.def
prc_rename.h
prc_sil.h
prc_stddef.h
prc_support.S
prc_test.h
prc_timer.c
prc_timer.cfg
prc_timer.h
prc_unrename.h
prc_user.txt
start.S
/*
* TOPPERS Software
* Toyohashi Open Platform for Embedded Real-Time Systems
*
* Copyright (C) 2008 by Embedded and Real-Time Systems Laboratory
* Graduate School of Information Science, Nagoya Univ., JAPAN
* Copyright (C) 2015 by Naoki Saito
* Nagoya Municipal Industrial Research Institute, JAPAN
*
* 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
* ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
* 変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
* (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
* 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
* スコード中に含まれていること.
* (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
* 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
* 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
* の無保証規定を掲載すること.
* (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
* 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
* と.
* (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
* 作権表示,この利用条件および下記の無保証規定を掲載すること.
* (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
* 報告すること.
* (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
* 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
* また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
* 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
* 免責すること.
*
* 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
* よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
* に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
* アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
* の責任を負わない.
*
* @(#) $Id: start.S 1304 2008-08-27 07:28:36Z ertl-honda $
*/
/*
* カーネル用のスタートアップモジュール(ARM-M用)
*/
#define TOPPERS_MACRO_ONLY
#define UINT_C(val) (val) /* uint_t型の定数を作るマクロ */
#define ULONG_C(val) (val) /* ulong_t型の定数を作るマクロ */
#define CAST(type, val) (val) /* 型キャストを行うマクロ */
#include "kernel_impl.h"
#include "arm_m.h"
/*
* スタートアップルーチン
*
* Threadモードで呼び出されることを前提としてる.
*/
.text
.align 2
.code 16
.syntax unified
.globl _start
.type _start, function
_start:
cpsid f /* 割込みロック状態へ */
#ifdef INIT_MSP
/*
* MSPの設定
*/
mov r0, #CONTROL_MSP /* MSPを有効に */
msr control, r0
isb /* control の操作後に必要 */
ldr r0,=_kernel_istkpt
ldr r1,[r0]
msr msp, r1
#endif /* INIT_MSP */
/*
* hardware_init_hookの呼び出し (0でない場合)
*
* ターゲットハードウェアに依存して必要な初期化処理がある場合
* は,hardware_init_hook という関数を用意する
*/
ldr r0, =hardware_init_hook
cbz r0, start_1
blx r0
start_1:
#ifndef OMIT_BSS_INIT
/*
* BSSセクション初期化
*/
mov r0, #0
ldr r1, =__bss_start
ldr r2, =__bss_end
cmp r1, r2
bhs start_3
start_2:
str r0, [r1]
add r1,r1, #4
cmp r1, r2
blo start_2
#endif /* OMIT_BSS_INIT */
start_3:
#ifndef OMIT_DATA_INIT
/*
* DATAセクション初期化
* __idata_start から __idata_end までを,__data_start 以降に
* コピーする
*/
ldr r1, =__idata_start
ldr r2, =__idata_end
cmp r1, r2
bhs start_5
ldr r3, =__data_start
start_4:
ldr r0, [r1]
str r0, [r3]
add r1, #4
add r3, #4
cmp r1, r2
blo start_4
#endif /* OMIT_DATA_INIT */
/*
* software_init_hook を呼出し(0 でない場合)
*
* ソフトウェア環境(特にライブラリ)に依存して必要な初期化処
* 理がある場合は,software_init_hook という関数を用意すれば
* よい.
*/
start_5:
ldr r0, =software_init_hook
cbz r0, start_6
blx r0
start_6:
bl sta_ker
l_end:
b l_end