/** コンストラクタ */
-FILE_ERR SciFile_Create(HANDLE hFile, void *pParam)
+FILE_ERR SciFile_Create(HANDLE hFile, void *pParam, int iMode)
{
C_SCIFILE *self;
-
+
self = (C_SCIFILE *)hFile;
/* 親クラスコンストラクタ呼び出し */
#endif
/* SCI用デバイスドライバ */
-FILE_ERR SciFile_Create(HANDLE hFile, void *pParam); /**< コンストラクタ */
+FILE_ERR SciFile_Create(HANDLE hFile, void *pParam, int iMode); /**< コンストラクタ */
#ifdef __cplusplus
}
void OsTimer_Initialize(VP_INT exinf)
{
T_DINH dfinh;
+ return;
/* %jp{割り込みハンドラ定義} */
dfinh.inthdr = (FP)OsTimer_IrqHandler;
-/**
+/**
* Sample program for Hyper Operating System V4 Advance
*
* @file sample.c
#include <stdlib.h>
#include "kernel.h"
#include "kernel_id.h"
+#include "hosaplfw.h"
#include "system/sysapi/sysapi.h"
-#include "system/file/filesys.h"
+#include "system/file/file.h"
#include "system/file/confile.h"
-#include "system/sysapi/sysapi.h"
#include "system/process/process.h"
#include "system/command/command.h"
#include "system/shell/shell.h"
void Sample_Task(VP_INT exinf)
{
- T_SYSFILE_DEVINF DevInf;
+ T_FILE_DEVINF DevInf;
T_PROCESS_INFO ProcInfo;
HANDLE hTty;
HANDLE hCon;
/* システム初期化 */
System_Initialize(g_SystemHeap, sizeof(g_SystemHeap));
+ File_Initialize();
+ Command_Initialize();
+
/* SCIデバドラ生成 */
SciDrv_Create(&g_SciDrv[0], (void *)REG_SCI0_SMR, 128, 24000000L, 64); /* SCI0 */
DevInf.pfncCreate = SciFile_Create;
DevInf.ObjSize = sizeof(C_SCIFILE);
DevInf.pParam = &g_SciDrv[0];
- SysFile_AddDevice("/dev", &DevInf);
+ File_AddDevice(&DevInf);
/* SCI1 を /dev/com1 に登録 */
strcpy(DevInf.szName, "com1");
DevInf.pfncCreate = SciFile_Create;
DevInf.ObjSize = sizeof(C_SCIFILE);
DevInf.pParam = &g_SciDrv[1];
- SysFile_AddDevice("/dev", &DevInf);
+ File_AddDevice(&DevInf);
+
/*************************/
/* コマンド登録 */
/*************************/
- Command_Initialize();
Command_AddCommand("hsh", Shell_Main);
Command_AddCommand("hello", Hello_Main);
/*************************/
hTty = File_Open("/dev/com1", FILE_MODE_READ | FILE_MODE_WRITE);
+
strcpy(DevInf.szName, "con1");
DevInf.pfncCreate = ConsoleFile_Create;
DevInf.ObjSize = sizeof(C_CONSOLEFILE);
DevInf.pParam = hTty;
- SysFile_AddDevice("/dev", &DevInf);
+ File_AddDevice(&DevInf);
hCon = File_Open("/dev/con1", FILE_MODE_READ | FILE_MODE_WRITE);
ProcInfo.hTty = hTty;
/* システムプロセス */
int System_Boot(VPARAM Param)
{
+ StdIo_PutString("\n\n"
+ "-------------------------------------------------------------\n"
+ " HOS-V4 Advance\n"
+ " HOS Application Framework\n"
+ "\n"
+ " Copyright (C) 1996-2007 by Project HOS \n"
+ "-------------------------------------------------------------\n");
+
/* シェル起動 */
return Command_Execute("hsh", NULL);
}
+# ----------------------------------------------------------------------------
+# Hyper Operating System V4 Advance
+#
+# Copyright (C) 1998-2007 by Project HOS
+# http://sourceforge.jp/projects/hos/
+# ----------------------------------------------------------------------------
+# %jp{ターゲット名}
TARGET ?= sample
-ifeq ($(ROM),Yes)
-TARGET := $(TARGET)_rom
-ADDR_VECT ?= 000000000
-ADDR_ROM ?= 000000400
-ADDR_RAM ?= 000400000
-else
-ADDR_VECT ?= 000400000
-ADDR_ROM ?= 000400400
-ADDR_RAM ?= 000410000
-endif
+# %jp{ディレクトリ}
+OS_DIR = ../../../../..
+KERNEL_DIR = $(OS_DIR)/kernel
+KERNEL_CFGRTR_DIR = $(OS_DIR)/cfgrtr/build/gcc
+KERNEL_MAKINC_DIR = $(KERNEL_DIR)/build/common/gmake
+KERNEL_BUILD_DIR = $(KERNEL_DIR)/build/sh/sh2/shc
+APLFW_DIR = $(OS_DIR)/aplfw
+APLFW_INC_DIR = $(APLFW_DIR)
+APLFW_BUILD_DIR = $(APLFW_DIR)/build/sh/sh2/shc
+OBJS_DIR = objs_$(TARGET)
+
+
+# %jp{共通定義読込み}
+include $(KERNEL_MAKINC_DIR)/common.inc
+
+
+# %jp{コンフィギュレータ定義}
+KERNEL_CFGRTR = $(KERNEL_CFGRTR_DIR)/h4acfg-sh2
-# ディレクトリ
-OS_DIR = ../../../../..
-KERNEL_DIR = $(OS_DIR)/kernel
-APLFW_DIR = $(OS_DIR)/aplfw
-KERNEL_INC_DIR = $(KERNEL_DIR)/include
-APLFW_INC_DIR = $(APLFW_DIR)
+# %jp{ライブラリ定義}
+APLFW_LIB = $(APLFW_BUILD_DIR)/hosaplfw.$(EXT_LIB)
+STD_LIBS = stdlib.lib
-KERNEL_BUILD_DIR = $(KERNEL_DIR)/build/sh/sh2/shc
-APLFW_BUILD_DIR = $(APLFW_DIR)/build/sh/sh2/shc
+# %jp{メモリマップ}
+ifeq ($(MEMMAP),ext)
+# %jp{外部メモリ}
+TARGET := $(TARGET)ext
+SECTION_VECT ?= 00400000
+SECTION_ROM ?= 00400400
+SECTION_RAM ?= 00410000
+else
+# %jp{内蔵ROMメモリ}
+SECTION_VECT ?= 00000000
+SECTION_ROM ?= 00000400
+SECTION_RAM ?= 00400000
+endif
-KERNEL_CFG = $(OS_DIR)/cfgrtr/build/gcc/h4acfg-sh2.exe
-KERNEL_LIB = $(KERNEL_BUILD_DIR)/libhosv4a.lib
-APLFW_LIB = $(APLFW_BUILD_DIR)/hosaplfw.lib
+# %jp{デバッグ版の定義変更}
ifeq ($(DEBUG),Yes)
-KERNEL_LIB = $(KERNEL_BUILD_DIR)/libhosv4adbg.lib
-APLFW_LIB = $(APLFW_BUILD_DIR)/hosaplfwdbg.lib
+TARGET := $(TARGET)dbg
+APLFW_LIB = $(APLFW_BUILD_DIR)/hosaplfwdbg.$(EXT_LIB)
endif
-# Tools
-CC = shc
-ASM = asmsh
-LINK = optlnk
+# %jp{フラグ設定}
+CFLAGS = -CP=sh2 -DEBug -NOLOGO
+AFLAGS = -CP=sh2 -DEBug -NOLOGO
+LNFLAGS =
-CFLAGS = -CP=sh2 -DEBug -NOLOGO -I=$(KERNEL_INC_DIR),$(APLFW_INC_DIR)
-AFLAGS = -CP=sh2 -DEBug -NOLOGO
-LFLAGS =
-OBJS_DIR = objs
+# %jp{出力ファイル名}
+TARGET_EXE = $(TARGET).$(EXT_EXE)
+TARGET_MOT = $(TARGET).$(EXT_MOT)
-OBJS = $(OBJS_DIR)/vcttbl.obj \
- $(OBJS_DIR)/startup.obj \
- $(OBJS_DIR)/dbsct.obj \
- $(OBJS_DIR)/main.obj \
- $(OBJS_DIR)/kernel_cfg.obj \
- $(OBJS_DIR)/sample.obj \
- $(OBJS_DIR)/ostimer.obj \
+# %jp{shc用の設定読込み}
+include $(KERNEL_MAKINC_DIR)/shc_d.inc
-STD_LIBS = stdlib.lib
-VPATH = .:..:$(SRC_DIR)/driver/renesas
+# %jp{インクルードディレクトリ}
+INC_DIRS += $(APLFW_INC_DIR)
+# %jp{ソースディレクトリ}
+SRC_DIRS += . ..
-all: mkdir_objs mk_kernel mk_aplfw $(TARGET).abs
+# %jp{アセンブラファイルの追加}
+ASRCS += ./vcttbl.src \
+ ./startup.src \
-$(TARGET).abs: $(OBJS) $(STD_LIBS) $(OS_LIBS)
- echo rom D=R > $(OBJS_DIR)/subcmd.txt
- echo -OPtimize >> $(OBJS_DIR)/subcmd.txt
- echo list $(TARGET).map >> $(OBJS_DIR)/subcmd.txt
- echo -Input=$(OBJS) | sed "s/ /,/g" >> $(OBJS_DIR)/subcmd.txt
- echo -LIB=$(KERNEL_LIB),$(APLFW_LIB),$(STD_LIBS) >> $(OBJS_DIR)/subcmd.txt
- echo "-start=VECTTBL/$(ADDR_VECT),P,C,C\$$BSEC,C\$$DSEC,D/$(ADDR_ROM),B,R,S/$(ADDR_RAM)" >> $(OBJS_DIR)/subcmd.txt
- echo -output=$(TARGET).abs >> $(OBJS_DIR)/subcmd.txt
- echo end >> $(OBJS_DIR)/subcmd.txt
- echo -input=$(TARGET).abs >> $(OBJS_DIR)/subcmd.txt
- echo form stype >> $(OBJS_DIR)/subcmd.txt
- echo output $(TARGET).mot >> $(OBJS_DIR)/subcmd.txt
- echo -exit >> $(OBJS_DIR)/subcmd.txt
- $(LINK) -SU=$(OBJS_DIR)/subcmd.txt
-$(STD_LIBS):
- lbgsh -OUTPut=$(STD_LIBS) -CP=sh2 -REent
+# %jp{C言語ファイルの追加}
+CSRCS += ./dbsct.c \
+ ../kernel_cfg.c \
+ ../main.c \
+ ../sample.c \
+ ../ostimer.c \
+ ../debug.c
-mk_kernel:
- make -C $(KERNEL_BUILD_DIR) -f gmake.mak
-mk_aplfw:
- make -C $(APLFW_BUILD_DIR) -f gmake.mak
+# %jp{ライブラリファイルの追加}
+LIBS += $(APLFW_LIB) $(STD_LIBS)
-mkdir_objs:
- @mkdir -p $(OBJS_DIR)
-clean:
- rm -f $(OBJS) $(TARGET) ../kernel_cfg.c ../kernel_id.h
-clean-all: clean
- make -C $(KERNEL_BUILD_DIR) -f gmake.mak clean
- make -C $(APLFW_BUILD_DIR) -f gmake.mak clean
+# --------------------------------------
+# %jp{ルール}
+# --------------------------------------
+.PHONY : all
+all: make_aplfw makeexe_all $(TARGET_EXE) $(TARGET_MOT)
-$(OBJS_DIR)/sample.obj: sample.c ../kernel_id.h
+
+.PHONY : make_aplfw
+make_aplfw:
+ make -C $(APLFW_BUILD_DIR) -f gmake.mak
+
+
+.PHONY : clean
+clean: makeexe_clean
+ rm -f $(TARGET_EXE) $(TARGET_EXE) $(OBJS) ../kernel_cfg.c ../kernel_id.h
+
+
+$(STD_LIBS):
+ lbgsh -OUTPut=$(STD_LIBS) -CP=sh2 -REent
../kernel_cfg.c ../kernel_id.h: ../system.cfg
cpp -E ../system.cfg ../system.i
- $(KERNEL_CFG) ../system.i -c ../kernel_cfg.c -i ../kernel_id.h
+ $(KERNEL_CFGRTR) ../system.i -c ../kernel_cfg.c -i ../kernel_id.h
+
+
+
+# %jp{ライブラリ生成用設定読込み}
+include $(KERNEL_MAKINC_DIR)/makeexe.inc
+
+# %jp{shc用のルール定義読込み}
+include $(KERNEL_MAKINC_DIR)/shc_r.inc
-$(OBJS_DIR)/%.obj :: %.c
- $(CC) $(CFLAGS) $< -OB=$@ -List=$(@:%.obj=%.lst)
+# --------------------------------------
+# %jp{依存関係}
+# --------------------------------------
-$(OBJS_DIR)/%.obj :: %.src
- $(ASM) $(AFLAGS) $< -OB=$@
+$(OBJS_DIR)/sample.obj: ../sample.c ../kernel_id.h
+# end of file
include $(KERNEL_MAKINC_DIR)/common.inc
-# デバッグ版のターゲット名変更
+# %jp{デバッグ版のターゲット名変更}
ifeq ($(DEBUG),Yes)
TARGET := $(TARGET)dbg
endif
KERNEL_CFGRTR = $(KERNEL_CFGRTR_DIR)/h4acfg-aduc7000
-# 出力ファイル名
+# %jp{出力ファイル名}
TARGET_EXE = $(TARGET).axf
TARGET_MOT = $(TARGET).mot
TARGET_HEX = $(TARGET).hex
# %jp{armcc用の設定読込み}
include $(KERNEL_MAKINC_DIR)/armcc_d.inc
-# ソースディレクトリ
+
+# %jp{ソースディレクトリ}
SRC_DIRS += . ..
-# アセンブラファイルの追加
+
+# %jp{アセンブラファイルの追加}
ASRCS += ./vectors.s \
./startup.s \
./uish.s
-
# %jp{C言語ファイルの追加}
CSRCS += ../kernel_cfg.c \
../main.c \
void OsTimer_Initialize(VP_INT exinf)
{
T_DINH dfinh;
- return 0;
/* %jp{割り込みハンドラ定義} */
dfinh.inthdr = (FP)OsTimer_IrqHandler;
# Hyper Operating System V4 Advance
# makefile for sh2-sample
#
-# Copyright (C) 1998-2006 by Project HOS
+# Copyright (C) 1998-2007 by Project HOS
# http://sourceforge.jp/projects/hos/
# ----------------------------------------------------------------------------
-# %jp{ターゲット名}
+# %jp{ターゲット名}%en{Target name}
TARGET ?= sample
-# %jp{ディレクトリ定義}
+# %jp{ディレクトリ定義}%en{Directorys}
OS_DIR = ../../../..
KERNEL_DIR = $(OS_DIR)/kernel
KERNEL_CFGRTR_DIR = $(OS_DIR)/cfgrtr/build/gcc
KERNEL_BUILD_DIR = $(KERNEL_DIR)/build/sh/sh2/shc
OBJS_DIR = objs_$(TARGET)
-# %jp{共通定義読込み}
+# %jp{共通定義読込み}%en{common definition}
include $(KERNEL_MAKINC_DIR)/common.inc
-# デバッグ版のターゲット名変更
+# %jp{デバッグ版のターゲット名変更}%en{Debug mode}
ifeq ($(DEBUG),Yes)
TARGET := $(TARGET)dbg
endif
+
ifeq ($(RAM),Yes)
-# %jp{RAM実行(モニタプログラム利用を想定)}
-TARGET := $(TARGET)_ram
+# %jp{RAM実行(モニタプログラム利用を想定)}%en{execute on RAM}
+TARGET := $(TARGET)ram
SECTION_VECT ?= 000400000
SECTION_ROM ?= 000400400
SECTION_RAM ?= 000410000
else
-# %jp{ROM焼きする場合}
+# %jp{ROM焼きする場合}%en{execute on ROM}
TARGET := $(TARGET)
SECTION_VECT ?= 000000000
SECTION_ROM ?= 000000400
endif
-# %jp{フラグ設定}
+# %jp{フラグ設定}%en{compile options}
CFLAGS = -CPu=sh2
AFLAGS = -CPu=sh2
LNFLAGS =
-# %jp{コンフィギュレータ定義}
+# %jp{コンフィギュレータ定義}%en{configulator}
KERNEL_CFGRTR = $(KERNEL_CFGRTR_DIR)/h4acfg-sh2
-# Cライブラリ名の指定
+# %jp{Cライブラリ名の指定}%en{std library}
STD_LIBS = stdlib.lib
-# 出力ファイル名
+# %jp{出力ファイル名}%en{output file}
TARGET_EXE = $(TARGET).abs
TARGET_MOT = $(TARGET).mot
-# %jp{shc用の設定読込み}
+# %jp{shc用の設定読込み}%en{definition for shc}
include $(KERNEL_MAKINC_DIR)/shc_d.inc
-# ソースディレクトリ
+
+# %jp{ソースディレクトリ}%en{source directorys}
SRC_DIRS += . ..
-# アセンブラファイルの追加
+
+# %jp{アセンブラファイルの追加}%en{assembry sources}
ASRCS += ./vcttbl.src \
- ./startup.src \
+ ./startup.src
-# ./sim_io.src
-# %jp{C言語ファイルの追加}
+# %jp{C言語ファイルの追加}%en{C sources}
CSRCS += ./dbsct.c \
../kernel_cfg.c \
../main.c \
../ostimer.c \
../sci1.c
+
# %jp{ライブラリの追加}
LIBS += $(STD_LIBS)
# --------------------------------------
-# %jp{ルール}
+# %jp{ルール}%en{rule}
# --------------------------------------
.PHONY : all
all: makeexe_all $(TARGET_EXE) $(TARGET_MOT)
+.PHONY : clean
clean: makeexe_clean
rm -f $(TARGET_EXE) $(TARGET_EXE) $(OBJS) ../kernel_cfg.c ../kernel_id.h
$(KERNEL_CFGRTR) ../system.i -c ../kernel_cfg.c -i ../kernel_id.h
-# %jp{ライブラリ生成用設定読込み}
+# %jp{実行ファイル生成用設定読込み}%en{setting for execute file}
include $(KERNEL_MAKINC_DIR)/makeexe.inc
# %jp{shc用のルール定義読込み}
# --------------------------------------
-# %jp{依存関係}
+# %jp{依存関係}%en{dependency}
# --------------------------------------
$(OBJS_DIR)/sample.obj: ../sample.c ../kernel_id.h