# output files
*.elf
+*.axf
*.bin
*.out
*.hex
# Hyper Operating System V4 Advance
# makefile for H8/300H
#
-# Copyright (C) 1998-2006 by Project HOS
+# Copyright (C) 1998-2011 by Project HOS
# http://sourceforge.jp/projects/hos/
# ----------------------------------------------------------------------------
-# %jp{ターゲット名}
+# --------------------------------------
+# %jp{各種設定}%en{setting}
+# --------------------------------------
+
+# %jp{ターゲットライブラリ名}%en{target library name}
TARGET ?= hosaplfw
-# %jp{ディレクトリ定義}
+
+# %jp{ディレクトリ定義}%en{directories}
TOP_DIR = ../../../../..
KERNEL_DIR = $(TOP_DIR)/kernel
KERNEL_MAKINC_DIR = $(KERNEL_DIR)/build/common/gmake
HOSAPLFW_DIR = $(TOP_DIR)/aplfw
HOSAPLFW_MKINK_DIR = $(HOSAPLFW_DIR)/build/common/gmake
-OBJS_DIR = objs_$(TARGET)
-# %jp{共通設定読込み}
+# %jp{共通定義読込み}%en{common setting}
include $(KERNEL_MAKINC_DIR)/common.inc
-# %jp{ã\82¤ã\83³ã\82¯ã\83«ã\83¼ã\83\89ã\83\91ã\82¹è¨å®\9a}
+# %jp{ã\83\91ã\82¹è¨å®\9a}%en{add source directories}
INC_DIRS += $(HOSAPLFW_DIR) $(KERNEL_DIR)/include
+SRC_DIRS +=
+
+
+# %jp{オプションフラグ}%en{option flags}
+CFLAGS = -CPu=300HA:24
+AFLAGS = -CPu=300HA:24
+ARFLAGS =
+# %jp{コンパイラ依存の設定読込み}%en{compiler dependent definitions}
+include $(KERNEL_MAKINC_DIR)/ch38_d.inc
+
+# %jp{ライブラリ生成用設定読込み}%en{definitions for library}
+include $(KERNEL_MAKINC_DIR)/maklib_d.inc
-# %jp{オプションフラグ}
-CFLAGS += -CPu=300HA:24
-AFLAGS += -CPu=300HA:24
-ARFLAGS +=
+# --------------------------------------
+# %jp{ソースファイル}%en{source files}
+# --------------------------------------
+
# %jp{リンク制御対象制御}
LINK_RENESASSCI = Yes
+# %jp{共通ソースの追加}%en{common sources}
+include $(HOSAPLFW_MKINK_DIR)/aplfwsrc.inc
+
+
+# --------------------------------------
+# %jp{ルール定義}%en{rules}
+# --------------------------------------
+# %jp{ALL}%en{all}
.PHONY : all
all: makelib_all
+# %jp{クリーン}%en{clean}
.PHONY : clean
clean: makelib_clean
$(RM) -f *.lst
srccpy: makelib_srccpy
+# %jp{ライブラリ生成用設定読込み}%en{rules for library}
+include $(KERNEL_MAKINC_DIR)/maklib_r.inc
-# %jp{ch38用の設定読込み}
-include $(KERNEL_MAKINC_DIR)/ch38_d.inc
+# %jp{ch38用のルール定義読込み}
+include $(KERNEL_MAKINC_DIR)/ch38_r.inc
-# %jp{共通設定読込み}
-include $(KERNEL_MAKINC_DIR)/makelib.inc
-include $(HOSAPLFW_MKINK_DIR)/aplfwsrc.inc
-# %jp{ch38用のルール定義読込み}
-include $(KERNEL_MAKINC_DIR)/ch38_r.inc
+# --------------------------------------
+# %jp{依存関係}%en{dependency}
+# --------------------------------------
-# %jp{依存関係定義読込み}
+# %jp{依存関係定義読込み}{dependency list of sources}
include $(HOSAPLFW_MKINK_DIR)/aplfwdep.inc
# Hyper Operating System V4 Advance Application Framework
# makefile for SH2
#
-# Copyright (C) 1998-2007 by Project HOS
+# Copyright (C) 1998-2011 by Project HOS
# http://sourceforge.jp/projects/hos/
# ----------------------------------------------------------------------------
# http://sourceforge.jp/projects/hos/
# ----------------------------------------------------------------------------
-# %jp{ターゲット名}
+
+# --------------------------------------
+# %jp{各種設定}%en{setting}
+# --------------------------------------
+
+# %jp{ターゲット名}%en{target name}
TARGET ?= sample
-# %jp{ツール定義}
+
+# %jp{ツール定義}%jp{tools}
GCC_ARCH ?= sh-elf-
CMD_CC ?= $(GCC_ARCH)gcc
CMD_ASM ?= $(GCC_ARCH)gcc
CMD_OBJCNV ?= $(GCC_ARCH)objcopy
-# %jp{ディレクトリ定義}
+# %jp{ディレクトリ定義}%en{directories}
TOP_DIR = ../../../../..
KERNEL_DIR = $(TOP_DIR)/kernel
KERNEL_CFGRTR_DIR = $(TOP_DIR)/cfgrtr/build/gcc
HOSAPLFW_DIR = $(TOP_DIR)/aplfw
HOSAPLFW_INC_DIR = $(HOSAPLFW_DIR)
HOSAPLFW_BUILD_DIR = $(HOSAPLFW_DIR)/build/sh/sh2/gcc
-OBJS_DIR = objs_$(TARGET)
-# %jp{カーネルフックの設定}
+# %jp{コンフィギュレータ定義}
+KERNEL_CFGRTR = $(KERNEL_CFGRTR_DIR)/h4acfg-sh2
+
+
+# %jp{カーネルフックの設定}%en{kernel hook}
KERNEL_HOK_TSK = Yes
KERNEL_HOK_ISR = Yes
-# %jp{共通定義読込み}
+# %jp{共通定義読込み}%en{common setting}
include $(KERNEL_MAKINC_DIR)/common.inc
-# %jp{コンフィギュレータ定義}
-KERNEL_CFGRTR = $(KERNEL_CFGRTR_DIR)/h4acfg-sh2
-
-
-# %jp{ライブラリ定義}
+# %jp{ライブラリ定義}%en{library}
HOSAPLFW_LIB = $(HOSAPLFW_BUILD_DIR)/hosaplfw.$(EXT_LIB)
-# %jp{メモリマップ}
+# %jp{デバッグ版の定義変更}%en{Debug}
+ifeq ($(DEBUG),Yes)
+TARGET := $(TARGET)dbg
+HOSAPLFW_LIB = $(HOSAPLFW_BUILD_DIR)/hosaplfwdbg.$(EXT_LIB)
+endif
+
+# %jp{メモリマップ}%en{memory map}
ifeq ($(MEMMAP),ext)
# %jp{外部メモリ(モニタプログラム利用を想定)}
TARGET := $(TARGET)ext
LINK_SCRIPT = link_ext.lds
else
-# %jp{ROM実行}
+# %jp{ROM実行}%en{rom}
LINK_SCRIPT = link_rom.lds
endif
-# %jp{デバッグ版の定義変更}
-ifeq ($(DEBUG),Yes)
-TARGET := $(TARGET)dbg
-HOSAPLFW_LIB = $(HOSAPLFW_BUILD_DIR)/hosaplfwdbg.$(EXT_LIB)
-endif
-
-
-# %jp{フラグ設定}
+# %jp{オプションフラグ}%en{option flags}
CFLAGS = -m2
AFLAGS = -m2
LNFLAGS = -m2 -nostartfiles -Wl,-Map,$(TARGET).map,-T$(LINK_SCRIPT)
-# %jp{出力ファイル名}
+# %jp{出力ファイル名}%en{output file}
TARGET_EXE = $(TARGET).$(EXT_EXE)
TARGET_MOT = $(TARGET).$(EXT_MOT)
+# %jp{パス設定}%en{add source directories}
+INC_DIRS += $(HOSAPLFW_INC_DIR)
+SRC_DIRS += . ..
+
+# %jp{ライブラリの追加}
+LIBS += $(HOSAPLFW_LIB)
+
+
# %jp{実行ファイル生成用の設定読込み}
include $(KERNEL_MAKINC_DIR)/makexe_d.inc
include $(KERNEL_MAKINC_DIR)/gcc_d.inc
-# %jp{インクルードディレクトリ}
-INC_DIRS += $(HOSAPLFW_INC_DIR)
-
-
-# %jp{ソースディレクトリ}
-SRC_DIRS += . ..
-
-# %jp{アセンブラファイルの追加}
-ASRCS += ./vector.S \
- ./crt0.S
+# --------------------------------------
+# %jp{ソースファイル}%en{source files}
+# --------------------------------------
-# %jp{C言語ファイルの追加}
-CSRCS += ../kernel_cfg.c \
- ../main.c \
- ../boot.c \
- ../ostimer.c
+# %jp{アセンブラファイルの追加}%en{assembry sources}
+ASRCS += ./vector.S
+ASRCS += ./crt0.S
-# %jp{ライブラリの追加}
-LIBS += $(HOSAPLFW_LIB)
+# %jp{C言語ファイルの追加}%en{C sources}
+CSRCS += ../kernel_cfg.c
+CSRCS += ../main.c
+CSRCS += ../boot.c
+CSRCS += ../ostimer.c
# --------------------------------------
-# %jp{ルール}
+# %jp{ルール定義}%en{rules}
# --------------------------------------
.PHONY : all
include $(KERNEL_MAKINC_DIR)/makexe_r.inc
-# %jp{shc用のルール定義読込み}
+# %jp{コンパイラ依存のルール定義読込み}%en{rules for compiler}
include $(KERNEL_MAKINC_DIR)/gcc_r.inc
# --------------------------------------
-# %jp{依存関係}
+# %jp{依存関係}%en{dependency}
# --------------------------------------
+$(TARGET_EXE): $(LINK_SCRIPT)
$(OBJS_DIR)/sample.$(EXT_OBJ): ../sample.c ../kernel_id.h
m_iDefaultMaxId = 0;
m_iMaxId = -1;
m_iObjs = 0;
- m_iResObj = 0;
+ m_iResObj = -1;
for ( i = 0; i < API_MAX_OBJS; i++ )
{
m_pParamPacks[i] = NULL;
iErr = CFG_ERR_SYNTAX;
break;
}
-
+
// ブロック切り出し
iErr = CAnalyze::SearchChar(szParamBlock, pszParams, '}');
if ( iErr != CFG_ERR_OK )
bool blUsedId[65536];
int iId;
int i;
-
+
if ( m_iObjs > 0 )
{
// 変数初期化
{
blUsedId[i] = false;
}
-
+
// 固定値指定のIDをサーチ
for ( i = 0; i < m_iObjs; i++ )
{
m_iMaxId = iId;
}
}
-
+
// 最大ID番号を予約オブジェクト数分増加
- if ( m_iResObj > 0 && m_iMaxId < m_iObjs + m_iResObj )
+ if ( m_iResObj >= 0 && m_iMaxId < m_iObjs + m_iResObj )
{
m_iMaxId = m_iObjs + m_iResObj;
}
-
+
// 指定が無い場合はデフォルト値に設定
if ( m_iMaxId < 0 )
{
// ---------------------------------------------------------------------------
// Hyper Operating System V4 Advance configurator
// CRE_ALM API
-//
+//
// Copyright (C) 1998-2010 by Project HOS
// http://sourceforge.jp/projects/hos/
// ---------------------------------------------------------------------------
{
// %jp{デフォルトの最大ID設定}
m_iDefaultMaxId = _KERNEL_DEF_TMAX_ALMID;
-
+
// パラメーター構文設定
m_iParamSyntax[0] = 0; // 単独パラメーター
m_iParamSyntax[1] = 3; // 3パラメーターのブロック
return CFG_ERR_DEF_CONFLICT;
}
- if ( (iId = atoi(pszParams)) <= 0 )
+ if ( (iId = atoi(pszParams)) < 0 )
{
return CFG_ERR_PARAM;
}
return CFG_ERR_DEF_CONFLICT;
}
- if ( (iId = atoi(pszParams)) <= 0 )
+ if ( (iId = atoi(pszParams)) < 0 )
{
return CFG_ERR_PARAM;
}
// ---------------------------------------------------------------------------
// Hyper Operating System V4 Advance configurator
// CRE_CYC API
-//
+//
// Copyright (C) 1998-2010 by Project HOS
// http://sourceforge.jp/projects/hos/
// ---------------------------------------------------------------------------
{
// %jp{デフォルトの最大ID設定}
m_iDefaultMaxId = _KERNEL_DEF_TMAX_CYCID;
-
+
// パラメーター構文設定
m_iParamSyntax[0] = 0; // 単独パラメーター
m_iParamSyntax[1] = 5; // 5パラメーターのブロック
{
int iId;
- if ( m_iMaxId > 0 )
+ if ( m_iMaxId >= 0 )
{
return CFG_ERR_MULTIDEF;
}
- if ( m_iResObj > 0 )
+ if ( m_iResObj >= 0 )
{
return CFG_ERR_DEF_CONFLICT;
}
- if ( (iId = atoi(pszParams)) <= 0 )
+ if ( (iId = atoi(pszParams)) < 0 )
{
return CFG_ERR_PARAM;
}
{
int iId;
- if ( m_iMaxId > 0 )
+ if ( m_iMaxId >= 0 )
{
return CFG_ERR_DEF_CONFLICT;
}
- if ( (iId = atoi(pszParams)) <= 0 )
+ if ( (iId = atoi(pszParams)) < 0 )
{
return CFG_ERR_PARAM;
}
+ if ( m_iResObj < 0 )
+ {
+ m_iResObj = 0;
+ }
m_iResObj += iId;
return CFG_ERR_OK;
m_iId[i]);
}
}
-
+
// %jp{ID最大値定義を出力}
fprintf( fp,
"\n"
fprintf(fp, "\t\tNULL,\n");
}
}
- fprintf(fp, "\t};\n");
+ fprintf(fp, "\t};\n");
}
#else
// %jp{ポインタ配列&統合CYCCB}
fprintf(fp, "\t\tNULL,\n");
}
}
- fprintf(fp, "\t};\n");
+ fprintf(fp, "\t};\n");
}
#endif
#endif
for ( int i = 0; i < m_iObjs; i++ )
{
fprintf(fp, "\t_kernel_cyccb_blk_%d.cyccb_ro = &_kernel_cyccb_ro_blk_%d;\n", m_iId[i], m_iId[i]);
- }
+ }
#endif
}
// ---------------------------------------------------------------------------
-// Hyper Operating System V4 コンフィギュレーター
-// CRE_DTQ API の処理
-//
-// Copyright (C) 1998-2003 by Project HOS
-// http://sourceforge.jp/projects/hos/
+// Hyper Operating System V4 コンフィギュレーター
+// CRE_DTQ API の処理
+//
+// Copyright (C) 1998-2003 by Project HOS
+// http://sourceforge.jp/projects/hos/
// ---------------------------------------------------------------------------
{
// %jp{デフォルトの最大ID設定}
m_iDefaultMaxId = _KERNEL_DEF_TMAX_DTQID;
-
+
// パラメーター構文設定
m_iParamSyntax[0] = 0; // 単独パラメーター
m_iParamSyntax[1] = 3; // 3パラメーターのブロック
{
int iId;
- if ( m_iMaxId > 0 )
+ if ( m_iMaxId >= 0 )
{
return CFG_ERR_MULTIDEF;
}
- if ( m_iResObj > 0 )
+ if ( m_iResObj >= 0 )
{
return CFG_ERR_DEF_CONFLICT;
}
- if ( (iId = atoi(pszParams)) <= 0 )
+ if ( (iId = atoi(pszParams)) < 0 )
{
return CFG_ERR_PARAM;
}
{
int iId;
- if ( m_iMaxId > 0 )
+ if ( m_iMaxId >= 0 )
{
return CFG_ERR_DEF_CONFLICT;
}
return CFG_ERR_PARAM;
}
+ if ( m_iResObj < 0 )
+ {
+ m_iResObj = 0;
+ }
m_iResObj += iId;
return CFG_ERR_OK;
}
-
+
return CFG_ERR_NOPROC;
}
// %jp{コメントを出力}
fputs("\n\n/* Data queue object ID definetion */\n\n", fp);
-
-
+
+
// %jp{ID定義を出力}
for ( i = 0; i < m_iObjs; i++ )
{
m_iId[i]);
}
}
-
+
// %jp{ID最大値定義を出力}
fprintf( fp,
"\n"
}
}
}
-
-
+
+
if ( m_iMaxId > 0 )
{
#if _KERNEL_DTQCB_ALGORITHM == _KERNEL_DTQCB_ALG_BLKARRAY
}
}
fprintf(fp, "\t};\n");
-
+
// %jp{ROM部出力}
fprintf(fp, "\nconst _KERNEL_T_DTQCB_RO _kernel_dtqcb_ro_tbl[%d] =\n\t{\n", m_iMaxId);
for ( i = 1; i <= m_iMaxId; i++ )
fprintf(fp, "\t\tNULL,\n");
}
}
- fprintf(fp, "\t};\n");
+ fprintf(fp, "\t};\n");
}
#else
// %jp{ポインタ配列&統合DTQCB}
fprintf(fp, "\t\tNULL,\n");
}
}
- fprintf(fp, "\t};\n");
+ fprintf(fp, "\t};\n");
}
#endif
#endif
}
else
{
- fprintf(fp, "(%s), ", m_pParamPacks[iObj]->GetParam(CREDTQ_DTQ));
+ fprintf(fp, "(%s), ", m_pParamPacks[iObj]->GetParam(CREDTQ_DTQ));
}
}
#endif
// ---------------------------------------------------------------------------
-// Hyper Operating System V4a コンフィギュレーター
-// CRE_FLG API の処理
-//
-// Copyright (C) 1998-2009 by Project HOS
-// http://sourceforge.jp/projects/hos/
+// Hyper Operating System V4a コンフィギュレーター
+// CRE_FLG API の処理
+//
+// Copyright (C) 1998-2009 by Project HOS
+// http://sourceforge.jp/projects/hos/
// ---------------------------------------------------------------------------
{
// %jp{デフォルトの最大ID設定}
m_iDefaultMaxId = _KERNEL_DEF_TMAX_FLGID;
-
+
// パラメーター構文設定
m_iParamSyntax[0] = 0; // 単独パラメーター
m_iParamSyntax[1] = 2; // 2パラメーターのブロック
{
int iId;
- if ( m_iMaxId > 0 )
+ if ( m_iMaxId >= 0 )
{
return CFG_ERR_MULTIDEF;
}
-
- if ( m_iResObj > 0 )
+
+ if ( m_iResObj >= 0 )
{
return CFG_ERR_DEF_CONFLICT;
}
{
int iId;
- if ( m_iMaxId > 0 )
+ if ( m_iMaxId >= 0 )
{
return CFG_ERR_DEF_CONFLICT;
}
- if ( (iId = atoi(pszParams)) <= 0 )
+ if ( (iId = atoi(pszParams)) < 0 )
{
return CFG_ERR_PARAM;
}
+ if ( m_iResObj < 0 )
+ {
+ m_iResObj = 0;
+ }
m_iResObj += iId;
return CFG_ERR_OK;
void CApiCreFlg::WriteId(FILE* fp)
{
int i;
-
+
if ( m_iMaxId <= 0 )
{
return;
fprintf(fp, "\t\tNULL,\n");
}
}
- fprintf(fp, "\t};\n");
+ fprintf(fp, "\t};\n");
}
#endif
// ---------------------------------------------------------------------------
-// Hyper Operating System V4 コンフィギュレーター
-// CRE_MBF API の処理
-//
-// Copyright (C) 1998-2003 by Project HOS
-// http://sourceforge.jp/projects/hos/
+// Hyper Operating System V4 コンフィギュレーター
+// CRE_MBF API の処理
+//
+// Copyright (C) 1998-2003 by Project HOS
+// http://sourceforge.jp/projects/hos/
// ---------------------------------------------------------------------------
{
int iId;
- if ( m_iMaxId > 0 )
+ if ( m_iMaxId >= 0 )
{
return CFG_ERR_MULTIDEF;
}
- if ( m_iResObj > 0 )
+ if ( m_iResObj >= 0 )
{
return CFG_ERR_DEF_CONFLICT;
}
{
int iId;
- if ( m_iMaxId > 0 )
+ if ( m_iMaxId >= 0 )
{
return CFG_ERR_DEF_CONFLICT;
}
- if ( (iId = atoi(pszParams)) <= 0 )
+ if ( (iId = atoi(pszParams)) < 0 )
{
return CFG_ERR_PARAM;
}
+ if ( m_iResObj < 0 )
+ {
+ m_iResObj = 0;
+ }
m_iResObj += iId;
return CFG_ERR_OK;
}
-
+
return CFG_ERR_NOPROC;
}
// ---------------------------------------------------------------------------
-// Hyper Operating System V4 コンフィギュレーター
-// CRE_MBX API の処理
-//
-// Copyright (C) 1998-2003 by Project HOS
-// http://sourceforge.jp/projects/hos/
+// Hyper Operating System V4 コンフィギュレーター
+// CRE_MBX API の処理
+//
+// Copyright (C) 1998-2003 by Project HOS
+// http://sourceforge.jp/projects/hos/
// ---------------------------------------------------------------------------
CApiCreMbx::CApiCreMbx()
{
// %jp{デフォルトの最大ID設定}
- m_iDefaultMaxId = _KERNEL_TMAX_MBXID;
-
+ m_iDefaultMaxId = _KERNEL_DEF_TMAX_MBXID;
+
// パラメーター構文設定
m_iParamSyntax[0] = 0; // 単独パラメーター
m_iParamSyntax[1] = 3; // 3パラメーターのブロック
{
int iId;
- if ( m_iMaxId > 0 )
+ if ( m_iMaxId >= 0 )
{
return CFG_ERR_MULTIDEF;
}
- if ( m_iResObj > 0 )
+ if ( m_iResObj >= 0 )
{
return CFG_ERR_DEF_CONFLICT;
}
{
int iId;
- if ( m_iMaxId > 0 )
+ if ( m_iMaxId >= 0 )
{
return CFG_ERR_DEF_CONFLICT;
}
- if ( (iId = atoi(pszParams)) <= 0 )
+ if ( (iId = atoi(pszParams)) < 0 )
{
return CFG_ERR_PARAM;
}
+ if ( m_iResObj < 0 )
+ {
+ m_iResObj = 0;
+ }
m_iResObj += iId;
return CFG_ERR_OK;
{
return;
}
-
+
// コメント出力
fputs(
"\n\n\n"
fprintf(fp, "\t\tNULL,\n");
}
}
- fprintf(fp, "\t};\n");
+ fprintf(fp, "\t};\n");
}
#else
// %jp{ポインタ配列&統合MBXCB}
fprintf(fp, "\t\tNULL,\n");
}
}
- fprintf(fp, "\t};\n");
+ fprintf(fp, "\t};\n");
}
#endif
#endif
// ---------------------------------------------------------------------------
-// Hyper Operating System V4 コンフィギュレーター
-// CRE_MPF API の処理
-//
-// Copyright (C) 1998-2003 by Project HOS
-// http://sourceforge.jp/projects/hos/
+// Hyper Operating System V4 コンフィギュレーター
+// CRE_MPF API の処理
+//
+// Copyright (C) 1998-2003 by Project HOS
+// http://sourceforge.jp/projects/hos/
// ---------------------------------------------------------------------------
CApiCreMpf::CApiCreMpf()
{
// %jp{デフォルトの最大ID設定}
- m_iDefaultMaxId = _KERNEL_TMAX_MPFID;
-
+ m_iDefaultMaxId = _KERNEL_DEF_TMAX_MPFID;
+
// パラメーター構文設定
m_iParamSyntax[0] = 0; // 単独パラメーター
m_iParamSyntax[1] = 4; // 4パラメーターのブロック
{
int iId;
- if ( m_iMaxId > 0 )
+ if ( m_iMaxId >= 0 )
{
return CFG_ERR_MULTIDEF;
}
- if ( m_iResObj > 0 )
+ if ( m_iResObj >= 0 )
{
return CFG_ERR_DEF_CONFLICT;
}
{
int iId;
- if ( m_iMaxId > 0 )
+ if ( m_iMaxId >= 0 )
{
return CFG_ERR_DEF_CONFLICT;
}
- if ( (iId = atoi(pszParams)) <= 0 )
+ if ( (iId = atoi(pszParams)) < 0 )
{
return CFG_ERR_PARAM;
}
+ if ( m_iResObj < 0 )
+ {
+ m_iResObj = 0;
+ }
m_iResObj += iId;
return CFG_ERR_OK;
}
-
+
return CFG_ERR_NOPROC;
}
"/* create fixed size memory-pool objects */\n"
"/* ------------------------------------------ */\n"
, fp);
-
+
// %jp{メモリプール領域出力}
for ( i = 0; i < m_iObjs; i++ )
{
m_pParamPacks[i]->GetParam(CREMPF_BLKSZ));
}
}
-
+
#if _KERNEL_MPFCB_ALGORITHM == _KERNEL_MPFCB_ALG_BLKARRAY
#if _KERNEL_MPFCB_SPLIT_RO
fprintf(fp, "\t\tNULL,\n");
}
}
- fprintf(fp, "\t};\n");
+ fprintf(fp, "\t};\n");
}
#else
// ポインタ配列&統合MPFCB
fprintf(fp, "\t\tNULL,\n");
}
}
- fprintf(fp, "\t};\n");
+ fprintf(fp, "\t};\n");
}
#endif
#endif
-
+
// %jp{タスク情報出力}
fprintf(
fp,
// ---------------------------------------------------------------------------
-// Copyright (C) 1998-2003 by Project HOS
+// Copyright (C) 1998-2003 by Project HOS
// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
-// Hyper Operating System V4a Advance configurator
-// CRE_MTX API の処理
-//
-// Copyright (C) 1998-2009 by Project HOS
-// http://sourceforge.jp/projects/hos/
+// Hyper Operating System V4a Advance configurator
+// CRE_MTX API の処理
+//
+// Copyright (C) 1998-2009 by Project HOS
+// http://sourceforge.jp/projects/hos/
// ---------------------------------------------------------------------------
{
// %jp{デフォルトの最大ID設定}
m_iDefaultMaxId = _KERNEL_DEF_TMAX_MTXID;
-
+
// %jp{パラメーター構文設定}
m_iParamSyntax[0] = 0; // %jp{単独パラメーター}
m_iParamSyntax[1] = 2; // %jp{2パラメーターのブロック}
{
int iId;
- if ( m_iMaxId > 0 )
+ if ( m_iMaxId >= 0 )
{
return CFG_ERR_MULTIDEF;
}
+ if ( m_iResObj >= 0 )
+ {
+ return CFG_ERR_DEF_CONFLICT;
+ }
+
if ( (iId = atoi(pszParams)) < 0 )
{
return CFG_ERR_PARAM;
return CFG_ERR_OK;
}
-
+ else if ( strcmp(pszApiName, "KERNEL_RSV_MTXID") == 0 )
+ {
+ int iId;
+
+ if ( m_iMaxId >= 0 )
+ {
+ return CFG_ERR_DEF_CONFLICT;
+ }
+
+ if ( (iId = atoi(pszParams)) < 0 )
+ {
+ return CFG_ERR_PARAM;
+ }
+
+ if ( m_iResObj < 0 )
+ {
+ m_iResObj = 0;
+ }
+ m_iResObj += iId;
+
+ return CFG_ERR_OK;
+ }
+
return CFG_ERR_NOPROC;
}
{
return;
}
-
+
// %jp{コメントを出力}
fputs("\n\n/* Mtxaphore object ID definetion */\n\n", fp);
-
+
// %jp{ID定義を出力}
for ( i = 0; i < m_iObjs; i++ )
{
m_iId[i]);
}
}
-
+
// %jp{ID最大値定義を出力}
fprintf( fp,
"\n"
return;
#endif
}
-
+
// %jp{コメント出力}
fputs(
"\n\n\n"
fprintf(fp, "\t\tNULL,\n");
}
}
- fprintf(fp, "\t};\n");
+ fprintf(fp, "\t};\n");
}
#else
// %jp{ポインタ配列&統合MTXCB}
fprintf(fp, "\t\tNULL,\n");
}
}
- fprintf(fp, "\t};\n");
+ fprintf(fp, "\t};\n");
}
#endif
#endif
for ( int i = 0; i < m_iObjs; i++ )
{
fprintf(fp, "\t_kernel_mtxcb_blk_%d.mtxcb_ro = &_kernel_mtxcb_ro_blk_%d;\n", m_iId[i], m_iId[i]);
- }
+ }
#endif
}
// ---------------------------------------------------------------------------
-// Hyper Operating System V4 Advance configurator
-// CRE_SEM API の処理
-//
-// Copyright (C) 1998-2006 by Project HOS
-// http://sourceforge.jp/projects/hos/
+// Hyper Operating System V4 Advance configurator
+// CRE_SEM API の処理
+//
+// Copyright (C) 1998-2006 by Project HOS
+// http://sourceforge.jp/projects/hos/
// ---------------------------------------------------------------------------
{
// %jp{デフォルトの最大ID設定}
m_iDefaultMaxId = _KERNEL_DEF_TMAX_SEMID;
-
+
// %jp{パラメーター構文設定}
m_iParamSyntax[0] = 0; // %jp{単独パラメーター}
m_iParamSyntax[1] = 3; // %jp{3パラメーターのブロック}
{
int iId;
- if ( m_iMaxId > 0 )
+ if ( m_iMaxId >= 0 )
{
return CFG_ERR_MULTIDEF;
}
- if ( m_iResObj > 0 )
+ if ( m_iResObj >= 0 )
{
return CFG_ERR_DEF_CONFLICT;
}
-
+
if ( (iId = atoi(pszParams)) < 0 )
{
return CFG_ERR_PARAM;
}
-
+
m_iMaxId = iId;
-
+
return CFG_ERR_OK;
}
else if ( strcmp(pszApiName, "KERNEL_RSV_SEMID") == 0 )
{
int iId;
- if ( m_iMaxId > 0 )
+ if ( m_iMaxId >= 0 )
{
return CFG_ERR_DEF_CONFLICT;
}
- if ( (iId = atoi(pszParams)) <= 0 )
+ if ( (iId = atoi(pszParams)) < 0 )
{
return CFG_ERR_PARAM;
}
-
+
+ if ( m_iResObj < 0 )
+ {
+ m_iResObj = 0;
+ }
m_iResObj += iId;
return CFG_ERR_OK;
}
-
+
return CFG_ERR_NOPROC;
}
void CApiCreSem::WriteId(FILE* fp)
{
int i;
-
+
if ( m_iMaxId <= 0 )
{
return;
// %jp{コメントを出力}
fputs("\n\n/* Semaphore object ID definetion */\n\n", fp);
-
-
+
+
// %jp{ID定義を出力}
for ( i = 0; i < m_iObjs; i++ )
{
m_iId[i]);
}
}
-
+
// %jp{ID最大値定義を出力}
fprintf( fp,
"\n"
fprintf(fp, "\t\tNULL,\n");
}
}
- fprintf(fp, "\t};\n");
+ fprintf(fp, "\t};\n");
}
#else
// %jp{ポインタ配列&統合SEMCB}
fprintf(fp, "\t\tNULL,\n");
}
}
- fprintf(fp, "\t};\n");
+ fprintf(fp, "\t};\n");
}
#endif
#endif
{
return;
}
-
+
#if _KERNEL_SEMCB_ALGORITHM == _KERNEL_SEMCB_ALG_PTRARRAY && _KERNEL_SEMCB_SPLIT_RO
if ( m_iObjs <= 0 )
{
for ( int i = 0; i < m_iObjs; i++ )
{
fprintf(fp, "\t_kernel_semcb_blk_%d.semcb_ro = &_kernel_semcb_ro_blk_%d;\n", m_iId[i], m_iId[i]);
- }
+ }
#endif
}
// ---------------------------------------------------------------------------
-// Hyper Operating System V4 Advance Configulator
-// CRE_TSK API
-//
-// Copyright (C) 1998-2006 by Project HOS
-// http://sourceforge.jp/projects/hos/
+// Hyper Operating System V4 Advance Configulator
+// CRE_TSK API
+//
+// Copyright (C) 1998-2006 by Project HOS
+// http://sourceforge.jp/projects/hos/
// ---------------------------------------------------------------------------
{
int iId;
- if ( m_iMaxId > 0 )
+ if ( m_iMaxId >= 0 )
{
return CFG_ERR_MULTIDEF;
}
- if ( m_iResObj > 0 )
+ if ( m_iResObj >= 0 )
{
return CFG_ERR_DEF_CONFLICT;
}
-
- if ( (iId = atoi(pszParams)) <= 0 )
+
+ if ( (iId = atoi(pszParams)) < 0 )
{
return CFG_ERR_PARAM;
}
-
+
m_iMaxId = iId;
-
+
return CFG_ERR_OK;
}
else if ( strcmp(pszApiName, "KERNEL_RSV_TSKID") == 0 )
{
int iId;
- if ( m_iMaxId > 0 )
+ if ( m_iMaxId >= 0 )
{
return CFG_ERR_DEF_CONFLICT;
}
- if ( (iId = atoi(pszParams)) <= 0 )
+ if ( (iId = atoi(pszParams)) < 0 )
{
return CFG_ERR_PARAM;
}
+ if ( m_iResObj < 0 )
+ {
+ m_iResObj = 0;
+ }
m_iResObj += iId;
return CFG_ERR_OK;
}
-
+
return CFG_ERR_NOPROC;
}
void CApiCreTsk::WriteId(FILE* fp)
{
int i;
-
+
// %jp{コメントを出力}
fputs("\n\n/* Task object ID definetion */\n\n", fp);
m_iId[i]);
}
}
-
+
// %jp{ID最大値定義を出力}
fprintf( fp,
"\n"
{
const char* pszParam;
int i;
-
+
// %jp{コメント出力}
fputs(
"\n\n\n"
"/* create task objects */\n"
"/* ------------------------------------------ */\n\n"
, fp);
-
-
+
+
// %jp{スタック領域出力}
for ( i = 0; i < m_iObjs; i++ )
{
m_pParamPacks[i]->GetParam(CRETSK_STKSZ));
}
}
-
+
#if _KERNEL_TCB_ALGORITHM == _KERNEL_TCB_ALG_BLKARRAY
#if _KERNEL_TCB_SPLIT_RO
fprintf(fp, "\t\tNULL,\n");
}
}
- fprintf(fp, "\t};\n");
+ fprintf(fp, "\t};\n");
}
#else
// ポインタ配列&統合TCB
fprintf(fp, "\t\tNULL,\n");
}
}
- fprintf(fp, "\t};\n");
+ fprintf(fp, "\t};\n");
}
#endif
#endif
-
+
// %jp{タスク情報出力}
fprintf(
fp,
fprintf(fp, "0, 0, "); /* %jp{キューに接続する為のオブジェクト} */
#endif
#endif
-
+
#if _KERNEL_TCB_TOQOBJ
fprintf(fp, "0, 0, 0, "); /* %jp{タイムアウトキュー} */
#endif
#endif
#if _KERNEL_TCB_MTXHDL
- fprintf(fp, "0, "); /* %jp{所有するミューテックスのリスト} */
+ fprintf(fp, "0, "); /* %jp{所有するミューテックスのリスト} */
#endif
#if _KERNEL_TCB_ERCD
for ( int i = 0; i < m_iObjs; i++ )
{
fprintf(fp, "\t_kernel_tcb_blk_%d.tcb_ro = &_kernel_tcb_ro_blk_%d;\n", m_iId[i], m_iId[i]);
- }
+ }
#endif
}
// ---------------------------------------------------------------------------
-// Copyright (C) 1998-2006 by Project HOS
+// Copyright (C) 1998-2006 by Project HOS
// ---------------------------------------------------------------------------
// %jp{cfgファイル定義部書き出し}
void CApiDefInh::WriteCfgDef(FILE* fp)
{
-#ifndef _KERNEL_PROCATR_ARM_CORTEX_M3
+#if !(defined(_KERNEL_PROCATR_ARM_ARMV6M) || defined(_KERNEL_PROCATR_ARM_ARMV7M))
int i, j;
// コメント出力
void CApiDefInh::WriteVecter(FILE* fp, CApiIntStack *pIntStack)
{
-#ifdef _KERNEL_PROCATR_ARM_CORTEX_M3
+#if defined(_KERNEL_PROCATR_ARM_ARMV6M) || defined(_KERNEL_PROCATR_ARM_ARMV7M)
int i, j;
// コメント出力
}
s_szIdFile = argv[i];
}
- else if ( strcmp(argv[i], "-vect") == 0 )
+ else if ( strcmp(argv[i], "-vct") == 0 )
{
i++;
if ( i >= argc )
{
- fprintf(stderr, "option error \"-vect\"\n");
+ fprintf(stderr, "option error \"-vct\"\n");
PrintUsage();
return 1;
}
fclose(fpCfg);
-#ifdef _KERNEL_PROCATR_ARM_CORTEX_M3
+#if defined(_KERNEL_PROCATR_ARM_ARMV6M) || defined(_KERNEL_PROCATR_ARM_ARMV7M)
// ベクタファイルオープン
FILE* fpVct;
if ( (fpVct = fopen(s_szVctFile, "w")) == NULL )
#define _KERNEL__arch__proc__arm__arm_v6m__procatr_h__
-#define _KERNEL_PROCATR_ARM_CORTEX_M3
+#define _KERNEL_PROCATR_ARM_ARMV6M
/* %jp{プロセッサアーキテクチャ定義のあるインクルードパス} */
#define _KERNEL_PROCATR_SPT_MULTINT TRUE /**< %jp{多重割込みに対応しているか?} */
#define _KERNEL_PROCATR_TMIN_INHNO 0 /**< %jp{割込みハンドラ番号の最小値} */
-#define _KERNEL_PROCATR_TMAX_INHNO 255 /**< %jp{割込みハンドラ番号の最大値} */
+#define _KERNEL_PROCATR_TMAX_INHNO 47 /**< %jp{割込みハンドラ番号の最大値} */
#define _KERNEL_PROCATR_TMIN_EXCNO 0 /**< %jp{CPU例外ハンドラ番号の最小値} */
#define _KERNEL_PROCATR_TMAX_EXCNO 15 /**< %jp{CPU例外ハンドラ番号の最大値} */
#define _KERNEL__arch__proc__arm__arm_v7m__procatr_h__
-#define _KERNEL_PROCATR_ARM_CORTEX_M3
+#define _KERNEL_PROCATR_ARM_ARMV7M
/* %jp{プロセッサアーキテクチャ定義のあるインクルードパス} */
# ----------------------------------------------------------------------------
-KERNEL_DEBUG ?= Yes
-DEBUG ?= Yes
-
-
# --------------------------------------
# %jp{各種設定}{setting}
# --------------------------------------
# %jp{C言語ファイルの追加}%en{C sources}
-CSRCS += ./kernel_vct.c
+CSRCS += ../kernel_vct.c
CSRCS += ../kernel_cfg.c
CSRCS += ../main.c
CSRCS += ../sample.c
# %jp{コンフィギュレータ実行}%en{configurator}
-../kernel_cfg.c ../kernel_id.h kernel_vct.c: ../system.cfg $(KERNEL_CFGRTR)
+../kernel_cfg.c ../kernel_id.h ../kernel_vct.c: ../system.cfg $(KERNEL_CFGRTR)
cpp -E ../system.cfg ../system.i
- $(KERNEL_CFGRTR) ../system.i -c ../kernel_cfg.c -i ../kernel_id.h
+ $(KERNEL_CFGRTR) ../system.i -c ../kernel_cfg.c -i ../kernel_id.h -vct ../kernel_vct.c
# %jp{実行ファイル生成用設定読込み}%en{rules for exection file}
MEMORY
{
- vector : o = 0x00000000, l = 0x00001000
- ro : o = 0x00001000, l = 0x00007000
+ vector : o = 0x00000000, l = 0x000000c0
+ ro : o = 0x000000c0, l = 0x00007f40
rw : o = 0x10000000, l = 0x00002000
}
void OsTimer_Initialize(VP_INT exinf)
{
/* %jp{タイマ動作開始} */
- *REG_SRVR = 1000000;
+ *REG_SRVR = 480000;
*REG_SCUVR = 0;
*REG_SCSR = 0x00000007;
KERNEL_HEP_MEM(256, NULL);
KERNEL_SYS_STK(256, NULL);
KERNEL_INT_STK(512, NULL);
-KERNEL_MAX_TSKID(5);
-KERNEL_MAX_SEMID(7);
-KERNEL_MAX_FLGID(0);
-KERNEL_MAX_MBXID(0);
-KERNEL_MAX_MPFID(0);
-KERNEL_MAX_MTXID(0);
+KERNEL_RSV_TSKID(0);
+KERNEL_RSV_SEMID(0);
+KERNEL_RSV_FLGID(0);
+KERNEL_RSV_DTQID(0);
+KERNEL_RSV_MBXID(0);
+KERNEL_RSV_MPFID(0);
+KERNEL_RSV_MTXID(0);
+KERNEL_RSV_CYCID(0);
/* %jp{OSタイマの設定}%en{OS timer} */