# ----------------------------------------------------------------------------
# Hyper Operating System Application Framework
-# makefile for MN103S
+# makefile for Jelly
#
-# Copyright (C) 1998-2008 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{ツール定義}%jp{tools}
GCC_ARCH ?= mips-elf-
CMD_CC ?= $(GCC_ARCH)gcc
CMD_ASM ?= $(GCC_ARCH)gcc
CMD_LIBR ?= $(GCC_ARCH)ar
-# %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{パス設定}
+# %jp{パス設定}%en{add source directories}
INC_DIRS += $(HOSAPLFW_DIR) $(KERNEL_DIR)/include
SRC_DIRS += $(DRV_SERIAL_DIR)
-# %jp{オプションフラグ}
+# %jp{オプションフラグ}%en{option flags}
AFLAGS = -march=mips1 -msoft-float -G 0
CFLAGS = -march=mips1 -msoft-float -G 0
ARFLAGS =
+# %jp{コンパイラ依存の設定読込み}%en{compiler dependent definitions}
+include $(KERNEL_MAKINC_DIR)/gcc_d.inc
+
+# %jp{ライブラリ生成用設定読込み}%en{definitions for library}
+include $(KERNEL_MAKINC_DIR)/maklib_d.inc
+
+
-# アセンブラファイルの追加
+
+# --------------------------------------
+# %jp{ソースファイル}%en{source files}
+# --------------------------------------
+
+# %jp{アセンブラファイルの追加}%en{assembry sources}
ASRCS +=
-# C言語ファイルの追加
+# %jp{C言語ファイルの追加}%en{C sources}
CSRCS +=
+# %jp{共通ソース}
+include $(HOSAPLFW_MKINK_DIR)/aplfwsrc.inc
+
+
# %jp{リンク制御対象制御}
LINK_JELLYUART = Yes
LINK_JELLYI2C = Yes
+
+# --------------------------------------
+# %jp{ルール定義}%en{rules}
+# --------------------------------------
+
+# %jp{ALL}%en{all}
.PHONY : all
all: makelib_all
+# %jp{クリーン}%en{clean}
.PHONY : clean
clean: makelib_clean
$(RM) -f *.lst
+# %jp{依存関係更新}%en{make depend}
.PHONY : depend
depend: makelib_depend
+# %jp{ソース一括コピー}%en{source files copy}
.PHONY : srccpy
srccpy: makelib_srccpy
+# %jp{ライブラリ生成用設定読込み}%en{rules for library}
+include $(KERNEL_MAKINC_DIR)/maklib_r.inc
-# %jp{gcc用の設定読込み}
-include $(KERNEL_MAKINC_DIR)/gcc_d.inc
-
-# %jp{共通設定読込み}
-include $(KERNEL_MAKINC_DIR)/makelib.inc
+# %jp{コンパイラ依存のルール定義読込み}%en{rules for compiler}
+include $(KERNEL_MAKINC_DIR)/gcc_r.inc
-include $(HOSAPLFW_MKINK_DIR)/aplfwsrc.inc
+# --------------------------------------
+# %jp{依存関係}%en{dependency}
+# --------------------------------------
-# %jp{gcc用のルール定義読込み}
-include $(KERNEL_MAKINC_DIR)/gcc_r.inc
# %jp{依存関係定義読込み}
include $(HOSAPLFW_MKINK_DIR)/aplfwdep.inc
TARGET_HEX = $(TARGET).hex
+# %jp{\8eÀ\8ds\83t\83@\83C\83\8b\90¶\90¬\97p\82Ì\90Ý\92è\93Ç\8d\9e\82Ý}
+include $(KERNEL_MAKINC_DIR)/makexe_d.inc
+
# %jp{armcc\97p\82Ì\90Ý\92è\93Ç\8d\9e\82Ý}
include $(KERNEL_MAKINC_DIR)/armcc_d.inc
$(KERNEL_CFGRTR): kernel_make
-# %jp{\83\89\83C\83u\83\89\83\8a\90¶\90¬\97p\90Ý\92è\93Ç\8d\9e\82Ý}
-include $(KERNEL_MAKINC_DIR)/makeexe.inc
+# %jp{\8eÀ\8ds\83t\83@\83C\83\8b\90¶\90¬\97p\83\8b\81[\83\8b\93Ç\8d\9e\82Ý}
+include $(KERNEL_MAKINC_DIR)/makexe_r.inc
# %jp{armcc\97p\82Ì\83\8b\81[\83\8b\92è\8b`\93Ç\8d\9e\82Ý}
include $(KERNEL_MAKINC_DIR)/armcc_r.inc
TARGET_HEX = $(TARGET).hex
+# %jp{実行ファイル生成用の設定読込み}
+include $(KERNEL_MAKINC_DIR)/makexe_d.inc
+
# %jp{gcc用の設定読込み}
include $(KERNEL_MAKINC_DIR)/gcc_d.inc
-# %jp{ライブラリ生成用設定読込み}
-include $(KERNEL_MAKINC_DIR)/makeexe.inc
+# %jp{実行ファイル生成用ルール読込み}
+include $(KERNEL_MAKINC_DIR)/makexe_r.inc
# %jp{gcc用のルール定義読込み}
include $(KERNEL_MAKINC_DIR)/gcc_r.inc
TARGET_HEX = $(TARGET).hex
+# %jp{実行ファイル生成用の設定読込み}
+include $(KERNEL_MAKINC_DIR)/makexe_d.inc
+
# %jp{armcc用の設定読込み}
include $(KERNEL_MAKINC_DIR)/armcc_d.inc
-# %jp{ライブラリ生成用設定読込み}
-include $(KERNEL_MAKINC_DIR)/makeexe.inc
+# %jp{実行ファイル生成用ルール読込み}
+include $(KERNEL_MAKINC_DIR)/makexe_r.inc
# %jp{armcc用のルール定義読込み}
include $(KERNEL_MAKINC_DIR)/armcc_r.inc
TARGET_HEX = $(TARGET).hex
+# %jp{実行ファイル生成用の設定読込み}
+include $(KERNEL_MAKINC_DIR)/makexe_d.inc
+
# %jp{gcc用の設定読込み}
include $(KERNEL_MAKINC_DIR)/gcc_d.inc
-# %jp{ライブラリ生成用設定読込み}
-include $(KERNEL_MAKINC_DIR)/makeexe.inc
+# %jp{実行ファイル生成用ルール読込み}
+include $(KERNEL_MAKINC_DIR)/makexe_r.inc
# %jp{gcc用のルール定義読込み}
include $(KERNEL_MAKINC_DIR)/gcc_r.inc
TARGET_MOT = $(TARGET).$(EXT_MOT)
+# %jp{実行ファイル生成用の設定読込み}
+include $(KERNEL_MAKINC_DIR)/makexe_d.inc
+
# %jp{ch38用の設定読込み}
include $(KERNEL_MAKINC_DIR)/ch38_d.inc
-# %jp{ライブラリ生成用設定読込み}
-include $(KERNEL_MAKINC_DIR)/makeexe.inc
-
+# %jp{実行ファイル生成用ルール読込み}
+include $(KERNEL_MAKINC_DIR)/makexe_r.inc
# %jp{ch38用のルール定義読込み}
include $(KERNEL_MAKINC_DIR)/ch38_r.inc
TARGET_BIN = $(TARGET).bin
+# %jp{実行ファイル生成用設定読込み}
+include $(KERNEL_MAKINC_DIR)/makexe_d.inc
+
# %jp{gcc用の設定読込み}
include $(KERNEL_MAKINC_DIR)/gcc_d.inc
$(TARGET_EXE): $(LINK_SCRIPT)
-# %jp{ライブラリ生成用設定読込み}
-include $(KERNEL_MAKINC_DIR)/makeexe.inc
+# %jp{実行ファイル生成用ルール読込み}
+include $(KERNEL_MAKINC_DIR)/makexe_r.inc
-# %jp{gcc用のルール定義読込み}
+# %jp{gcc用のルール定ルール込み}
include $(KERNEL_MAKINC_DIR)/gcc_r.inc
TARGET_BIN = $(TARGET).$(EXT_BIN)
+# %jp{\8eÀ\8ds\83t\83@\83C\83\8b\90¶\90¬\97p\82Ì\90Ý\92è\93Ç\8d\9e\82Ý}
+include $(KERNEL_MAKINC_DIR)/makexe_d.inc
+
# %jp{\83R\83\93\83p\83C\83\89\88Ë\91¶\82Ì\90Ý\92è\93Ç\8d\9e\82Ý}
include $(KERNEL_MAKINC_DIR)/cc103_d.inc
-# %jp{\83\89\83C\83u\83\89\83\8a\90¶\90¬\97p\90Ý\92è\93Ç\8d\9e\82Ý}
-include $(KERNEL_MAKINC_DIR)/makeexe.inc
+# %jp{\8eÀ\8ds\83t\83@\83C\83\8b\90¶\90¬\97p\83\8b\81[\83\8b\93Ç\8d\9e\82Ý}
+include $(KERNEL_MAKINC_DIR)/makexe_r.inc
# %jp{\83R\83\93\83p\83C\83\89\88Ë\91¶\83\8b\81[\83\8b\92è\8b`\93Ç\8d\9e\82Ý}
include $(KERNEL_MAKINC_DIR)/cc103_r.inc
TARGET_MOT = $(TARGET).mot
TARGET_HEX = $(TARGET).hex
+# %jp{実行ファイル生成用の設定読込み}
+include $(KERNEL_MAKINC_DIR)/makexe_d.inc
# %jp{gcc用の設定読込み}
include $(KERNEL_MAKINC_DIR)/gcc_d.inc
-# %jp{ライブラリ生成用設定読込み}
-include $(KERNEL_MAKINC_DIR)/makeexe.inc
+# %jp{実行ファイル生成用ルール読込み}
+include $(KERNEL_MAKINC_DIR)/makexe_r.inc
# %jp{gcc用のルール定義読込み}
include $(KERNEL_MAKINC_DIR)/gcc_r.inc
TARGET_MOT = $(TARGET).$(EXT_MOT)
+# %jp{実行ファイル生成用の設定読込み}
+include $(KERNEL_MAKINC_DIR)/makexe_d.inc
+
# %jp{gcc用の設定読込み}
include $(KERNEL_MAKINC_DIR)/gcc_d.inc
$(KERNEL_CFGRTR) : kernel_make
-# %jp{ライブラリ生成用設定読込み}
-include $(KERNEL_MAKINC_DIR)/makeexe.inc
+# %jp{実行ファイル生成用ルール読込み}
+include $(KERNEL_MAKINC_DIR)/makexe_r.inc
# %jp{shc用のルール定義読込み}
TARGET_MOT = $(TARGET).$(EXT_MOT)
+# %jp{\8eÀ\8ds\83t\83@\83C\83\8b\90¶\90¬\97p\82Ì\90Ý\92è\93Ç\8d\9e\82Ý}
+include $(KERNEL_MAKINC_DIR)/makexe_d.inc
+
# %jp{shc\97p\82Ì\90Ý\92è\93Ç\8d\9e\82Ý}
include $(KERNEL_MAKINC_DIR)/shc_d.inc
-# %jp{\83\89\83C\83u\83\89\83\8a\90¶\90¬\97p\90Ý\92è\93Ç\8d\9e\82Ý}
-include $(KERNEL_MAKINC_DIR)/makeexe.inc
+# %jp{\8eÀ\8ds\83t\83@\83C\83\8b\90¶\90¬\97p\83\8b\81[\83\8b\93Ç\8d\9e\82Ý}
+include $(KERNEL_MAKINC_DIR)/makexe_r.inc
# %jp{shc\97p\82Ì\83\8b\81[\83\8b\92è\8b`\93Ç\8d\9e\82Ý}
include $(KERNEL_MAKINC_DIR)/shc_r.inc
TARGET_HEX = $(TARGET).hex
+# %jp{実行ファイル生成用の設定読込み}
+include $(KERNEL_MAKINC_DIR)/makexe_d.inc
+
# %jp{armcc用の設定読込み}
include $(KERNEL_MAKINC_DIR)/armcc_d.inc
$(KERNEL_CFGRTR) ../system.i -c ../kernel_cfg.c -i ../kernel_id.h
-# %jp{ライブラリ生成用設定読込み}
-include $(KERNEL_MAKINC_DIR)/makeexe.inc
+# %jp{実行ファイル生成用ルール読込み}
+include $(KERNEL_MAKINC_DIR)/makexe_r.inc
# %jp{armcc用のルール定義読込み}
include $(KERNEL_MAKINC_DIR)/armcc_r.inc
# %jp{gcc用の設定読込み}
include $(KERNEL_MAKINC_DIR)/gcc_d.inc
+# %jp{実行ファイル生成用設定読込み}%en{definitions for exection file}
+include $(KERNEL_MAKINC_DIR)/makexe_d.inc
+
# ソースディレクトリ
SRC_DIRS += . ..
$(KERNEL_CFGRTR) ../system.i -c ../kernel_cfg.c -i ../kernel_id.h
-# %jp{ライブラリ生成用設定読込み}
-include $(KERNEL_MAKINC_DIR)/makeexe.inc
+# %jp{実行ファイル生成用設定読込み}%en{rules for exection file}
+include $(KERNEL_MAKINC_DIR)/makexe_r.inc
# %jp{gcc用のルール定義読込み}
include $(KERNEL_MAKINC_DIR)/gcc_r.inc
#define REG_SSP1CLKDIV ((volatile UW *)0x4004809C)
#define REG_PDRUNCFG ((volatile UW *)0x40048238)
+#define REG_GPIO0DATA(mask) ((volatile UW *)(0x50000000 + (((mask) & 0xfff) << 2)))
+#define REG_GPIO0DIR ((volatile UW *)0x50008000)
/** %jp{メイン関数} */
int main()
*REG_UARTCLKDIV = 0x00000001;
*REG_SSP1CLKDIV = 0x00000001;
+ /* LEDをつけてみる */
+ *REG_GPIO0DIR |= 0x080;
+ *REG_GPIO0DATA(0x80) = 0x000;
/* %jp{カーネルの動作開始} */
vsta_knl();
--- /dev/null
+==========================================================
+ トランジスタ技術 増刊号 LPC114ボード(MARY MB)用サンプル
+
+ Copyright (C) 1998-2011 by Project HOS
+==========================================================
+
+
+哲学者の食事の問題
+
+
+<動かし方>
+ arm-none-eab-gcc などのツールのある環境で
+
+ hos-v4a/sample/arm/lpc1114/gcc
+
+ にて make
+
+ 出来上がった hex ファイルを Flash Magic などで焼く
+
+
+ UART に 115200bps 8bit ノンパリティー で結果を出力。
+
+
+ DTR/RTS 信号を開放しないと起動しないので注意。
+ TeraTerm の場合、以下のマクロを実行後にリセットボタン
+
+ setdtr 0
+ setrts 0
+
+
+==========================================================
+ end of file
+==========================================================
* @file sample.c
* @brief %jp{サンプルプログラム}%en{Sample program}
*
- * Copyright (C) 1998-2006 by Project HOS
+ * Copyright (C) 1998-2011 by Project HOS
* http://sourceforge.jp/projects/hos/
*/
Uart_PutChar(':');
Uart_PutChar(' ');
Uart_PutString(text);
+ Uart_PutChar('\r');
+ Uart_PutChar('\n');
sig_sem(SEMID_UART);
}
#include "kernel.h"
+#define REG_IOCON_PIO1_6 ((volatile UW *)0x400440A4)
+#define REG_IOCON_PIO1_7 ((volatile UW *)0x400440A8)
+
+#define REG_U0RBR ((volatile UW *)0x40008000) /* UART Receiver Buffer Register */
+#define REG_U0THR ((volatile UW *)0x40008000) /* UART Transmitter Holding Register */
+#define REG_U0DLL ((volatile UW *)0x40008000) /* UART Divisor Latch LSB and MSB Registers */
+#define REG_U0DLM ((volatile UW *)0x40008004) /* */
+#define REG_U0IER ((volatile UW *)0x40008004) /* UART Interrupt Enable Register */
+#define REG_U0IIR ((volatile UW *)0x40048008) /* UART Interrupt Identification Register */
+#define REG_U0FCR ((volatile UW *)0x40008008) /* UART FIFO Control Register */
+#define REG_U0LCR ((volatile UW *)0x4000800C) /* UART Line Control Register */
+#define REG_U0MCR ((volatile UW *)0x40008010) /* UART0 Modem Control Register */
+#define REG_U0LSR ((volatile UW *)0x40008014) /* UART Line Status Register */
+
+
/* %jp{UARTの初期化} */
void Uart_Initialize(void)
{
+ /* UART */
+ *REG_IOCON_PIO1_6 = ((*REG_IOCON_PIO1_6 & 0xfffffff8) | 0x00000001);
+ *REG_IOCON_PIO1_7 = ((*REG_IOCON_PIO1_6 & 0xfffffff8) | 0x00000001);
+
+ *REG_U0LCR = 0x83;
+ *REG_U0DLL = (12000000 * 4) / 16 / 115200;
+ *REG_U0DLM = 0;
+ *REG_U0LCR = 0x03; /* 8bit nonparity */
+ *REG_U0FCR = 0x07; /* FIFO reset & enable */
}
/* %jp{1文字出力} */
void Uart_PutChar(int c)
{
+ while ( !(*REG_U0LSR & 0x40) )
+ ;
+
+ *REG_U0THR = c;
}
TARGET_HEX = $(TARGET).hex
+# %jp{実行ファイル生成用の設定読込み}
+include $(KERNEL_MAKINC_DIR)/makexe_d.inc
+
# %jp{armcc用の設定読込み}
include $(KERNEL_MAKINC_DIR)/armcc_d.inc
+
# ソースディレクトリ
SRC_DIRS += . ..
$(KERNEL_CFGRTR) ../system.i -c ../kernel_cfg.c -i ../kernel_id.h
-# %jp{ライブラリ生成用設定読込み}
-include $(KERNEL_MAKINC_DIR)/makeexe.inc
+# %jp{実行ファイル生成用ルール読込み}
+include $(KERNEL_MAKINC_DIR)/makexe_r.inc
# %jp{armcc用のルール定義読込み}
include $(KERNEL_MAKINC_DIR)/armcc_r.inc
# %jp{ch38用の設定読込み}
include $(KERNEL_MAKINC_DIR)/ch38_d.inc
+# %jp{実行ファイル生成用設定読込み}%en{definitions for exection file}
+include $(KERNEL_MAKINC_DIR)/makexe_d.inc
# --------------------------------------
$(KERNEL_CFGRTR) ../system.i -c ../kernel_cfg.c -i ../kernel_id.h
-# %jp{実行ファイル生成用設定読込み}
-include $(KERNEL_MAKINC_DIR)/makeexe.inc
+# %jp{実行ファイル生成用設定読込み}%en{rules for exection file}
+include $(KERNEL_MAKINC_DIR)/makexe_r.inc
# %jp{ch38用のルール定義読込み}
include $(KERNEL_MAKINC_DIR)/ch38_r.inc
TARGET_MOT = $(TARGET).$(EXT_MOT)
+# %jp{実行ファイル生成用の設定読込み}
+include $(KERNEL_MAKINC_DIR)/makexe_d.inc
+
# %jp{gcc用の設定読込み}
include $(KERNEL_MAKINC_DIR)/gcc_d.inc
$(KERNEL_CFGRTR) ../system.i -c ../kernel_cfg.c -i ../kernel_id.h
-# %jp{実行ファイル生成用設定読込み}
-include $(KERNEL_MAKINC_DIR)/makeexe.inc
+# %jp{実行ファイル生成用ルール読込み}
+include $(KERNEL_MAKINC_DIR)/makexe_r.inc
# %jp{gcc用のルール定義読込み}
include $(KERNEL_MAKINC_DIR)/gcc_r.inc
$(KERNEL_CFGRTR) ../system.i -c ../kernel_cfg.c -i ../kernel_id.h
-# %jp{\8eÀ\8ds\83t\83@\83C\83\8b\90¶\90¬\97p\90Ý\92è\93Ç\8d\9e\82Ý}%en{setting for execute file}
-include $(KERNEL_MAKINC_DIR)/makeexe.inc
+# %jp{\8eÀ\8ds\83t\83@\83C\83\8b\90¶\90¬\97p\90Ý\92è\93Ç\8d\9e\82Ý}%en{rules for exection file}
+include $(KERNEL_MAKINC_DIR)/makexe_r.inc
# %jp{shc\97p\82Ì\83\8b\81[\83\8b\92è\8b`\93Ç\8d\9e\82Ý}
include $(KERNEL_MAKINC_DIR)/shc_r.inc
# %jp{armcc用の設定読込み}
include $(KERNEL_MAKINC_DIR)/armcc_d.inc
+# %jp{実行ファイル生成用設定読込み}%en{definitions for exection file}
+include $(KERNEL_MAKINC_DIR)/makexe_d.inc
+
+
# ソースディレクトリ
SRC_DIRS += . ..
$(KERNEL_CFGRTR) ../system.i -c ../kernel_cfg.c -i ../kernel_id.h
-# %jp{ライブラリ生成用設定読込み}
-include $(KERNEL_MAKINC_DIR)/makeexe.inc
+# %jp{実行ファイル生成用設定読込み}%en{rules for exection file}
+include $(KERNEL_MAKINC_DIR)/makexe_r.inc
# %jp{armcc用のルール定義読込み}
include $(KERNEL_MAKINC_DIR)/armcc_r.inc