OSDN Git Service

debug MicroBlaze
authorryuz <ryuz@users.sourceforge.jp>
Wed, 29 Jun 2011 16:40:02 +0000 (01:40 +0900)
committerryuz <ryuz@users.sourceforge.jp>
Wed, 29 Jun 2011 16:40:02 +0000 (01:40 +0900)
.gitignore
kernel/build/mb/mb_v8_smm/gcc/Makefile [new file with mode: 0644]
kernel/source/arch/proc/mb/mb_v8/gcc/kint_hdr.S
sample/mb/smm/gcc/Makefile [new file with mode: 0644]
sample/mb/smm/ostimer.c

index 79dfd0a..779714f 100644 (file)
@@ -32,6 +32,9 @@ objs_*/
 *.obj
 *.ro
 
+# disasm
+*.dis
+
 # VC++ file
 *.vcxproj.*
 !*.vcxproj.filters
@@ -51,6 +54,10 @@ tools/make_release/hos-v4a
 *.tgz
 *.tar.gz
 
+# etc
+*.bmm
+*.v
+
 # setting
 .*
 !.gitignore
diff --git a/kernel/build/mb/mb_v8_smm/gcc/Makefile b/kernel/build/mb/mb_v8_smm/gcc/Makefile
new file mode 100644 (file)
index 0000000..bff005d
--- /dev/null
@@ -0,0 +1,155 @@
+# ----------------------------------------------------------------------------
+# Hyper Operating System V4 Advance
+#  makefile for XILINX Microblaze v8.0 AXI
+#
+# Copyright (C) 1998-2011 by Project HOS
+# http://sourceforge.jp/projects/hos/
+# ----------------------------------------------------------------------------
+
+
+
+# --------------------------------------
+#  %jp{各種設定}%en{setting}
+# --------------------------------------
+
+# %jp{ターゲットライブラリ名}%en{target library name}
+TARGET ?= libhosv4a
+
+
+# %jp{ツール定義}%jp{tools}
+GCC_ARCH ?= mb-
+CMD_CC   ?= $(GCC_ARCH)gcc
+CMD_ASM  ?= $(GCC_ARCH)gcc
+CMD_LIBR ?= $(GCC_ARCH)ar
+
+
+# %jp{アーキテクチャ定義}%en{architecture}
+ARCH_NAME ?= mb_v8
+ARCH_PROC ?= mb/mb_v8
+ARCH_IRC  ?= none
+ARCH_CC   ?= gcc
+
+
+# %jp{ディレクトリ定義}%en{directories}
+TOP_DIR           = ../../../../..
+KERNEL_DIR        = $(TOP_DIR)/kernel
+KERNEL_MAKINC_DIR = $(KERNEL_DIR)/build/common/gmake
+INC_PROC_DIR      = $(KERNEL_DIR)/include/arch/proc/$(ARCH_PROC)
+INC_IRC_DIR       = $(KERNEL_DIR)/include/arch/irc/$(ARCH_IRC)
+SRC_PROC_DIR      = $(KERNEL_DIR)/source/arch/proc/$(ARCH_PROC)
+SRC_PROC_CC_DIR   = $(KERNEL_DIR)/source/arch/proc/$(ARCH_PROC)/$(ARCH_CC)
+SRC_IRC_DIR       = $(KERNEL_DIR)/source/arch/irc/$(ARCH_IRC)
+SRC_IRC_CC_DIR    = $(KERNEL_DIR)/source/arch/irc/$(ARCH_IRC)/$(ARCH_CC)
+CFGRTR_DIR        = $(TOP_DIR)/cfgrtr/build/gcc
+
+
+# %jp{コンフィギュレータ定義}%en{kernel configurator}
+CFGRTR = h4acfg-$(ARCH_NAME)
+
+
+# %jp{カーネル指定}%en{kernel flag}
+KERNEL = Yes
+
+
+# %jp{共通定義読込み}%en{common setting}
+include $(KERNEL_MAKINC_DIR)/common.inc
+
+
+# %jp{パス設定}%en{add source directories}
+INC_DIRS += $(INC_PROC_DIR) $(INC_IRC_DIR)
+SRC_DIRS += $(SRC_PROC_DIR) $(SRC_PROC_DIR) $(SRC_PROC_CC_DIR) $(SRC_IRC_DIR) $(SRC_IRC_CC_DIR)
+
+
+# %jp{オプションフラグ}%en{option flags}
+AFLAGS  = -mcpu=v7.30.a -mbig-endian
+CFLAGS  = -mcpu=v7.30.a -mbig-endian
+ARFLAGS = 
+
+
+# %jp{コンパイラ依存の設定読込み}%en{compiler dependent definitions}
+include $(KERNEL_MAKINC_DIR)/$(ARCH_CC)_d.inc
+
+# %jp{ライブラリ生成用設定読込み}%en{definitions for library}
+include $(KERNEL_MAKINC_DIR)/maklib_d.inc
+
+
+
+
+# --------------------------------------
+#  %jp{ソースファイル}%en{source files}
+# --------------------------------------
+
+# %jp{アセンブラファイルの追加}%en{assembry sources}
+ASRCS += $(SRC_PROC_CC_DIR)/kdis_int.S
+ASRCS += $(SRC_PROC_CC_DIR)/kena_int.S
+ASRCS += $(SRC_PROC_CC_DIR)/kcre_ctx.S
+ASRCS += $(SRC_PROC_CC_DIR)/krst_ctx.S
+ASRCS += $(SRC_PROC_CC_DIR)/kswi_ctx.S
+ASRCS += $(SRC_PROC_CC_DIR)/kwai_int.S
+ASRCS += $(SRC_PROC_CC_DIR)/kint_hdr.S
+ASRCS += $(SRC_PROC_CC_DIR)/kexc_hdr.S
+ASRCS += $(SRC_PROC_CC_DIR)/kbrk_hdr.S
+ASRCS += $(SRC_PROC_CC_DIR)/khwe_hdr.S
+
+
+# %jp{C言語ファイルの追加}%en{C sources}
+CSRCS += $(SRC_PROC_DIR)/val_int.c
+
+
+# %jp{カーネル共通ソースの追加}%en{kernel common sources}
+include $(KERNEL_MAKINC_DIR)/knlsrc.inc
+
+
+
+
+# --------------------------------------
+#  %jp{ルール定義}%en{rules}
+# --------------------------------------
+
+# %jp{ALL}%en{all}
+.PHONY : all
+all: makelib_all
+       $(MAKE) -C $(CFGRTR_DIR) TARGET=$(CFGRTR) ARCH_PROC=$(ARCH_PROC) ARCH_IRC=$(ARCH_IRC)
+
+# %jp{クリーン}%en{clean}
+.PHONY : clean
+clean: makelib_clean
+       $(MAKE) -C $(CFGRTR_DIR) TARGET=$(CFGRTR) ARCH_PROC=$(ARCH_PROC) ARCH_IRC=$(ARCH_IRC) 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{コンパイラ依存のルール定義読込み}%en{rules for compiler}
+include $(KERNEL_MAKINC_DIR)/$(ARCH_CC)_r.inc
+
+
+
+
+# --------------------------------------
+#  %jp{依存関係}%en{dependency}
+# --------------------------------------
+
+# %jp{カーネル依存関係読込み}{dependency list of kernel sources}
+include $(KERNEL_MAKINC_DIR)/knldep.inc
+
+
+$(OBJS_DIR)/val_int.$(EXT_OBJ) :       $(COMMON_HEADERS)
+$(OBJS_DIR)/kini_irc.$(EXT_OBJ)        :       $(COMMON_HEADERS)
+$(OBJS_DIR)/kexe_irc.$(EXT_OBJ)        :       $(COMMON_HEADERS)
+$(OBJS_DIR)/ena_int.$(EXT_OBJ) :       $(COMMON_HEADERS)
+$(OBJS_DIR)/dis_int.$(EXT_OBJ) :       $(COMMON_HEADERS)
+$(OBJS_DIR)/vclr_int.$(EXT_OBJ)        :       $(COMMON_HEADERS)
+
+
+
+# end of file
index 8abff91..ae69aa3 100644 (file)
@@ -53,7 +53,7 @@ _kernel_int_hdr:
                                
                /* ---- 割り込み実行処理呼び出し */
                                brlid   r15, _kernel_exe_inh
-                               addik   r3, r0, 0
+                               addik   r5, r0, 0
                                
                                
                /* ---- 割込み終了処理呼び出し */
diff --git a/sample/mb/smm/gcc/Makefile b/sample/mb/smm/gcc/Makefile
new file mode 100644 (file)
index 0000000..f3e22be
--- /dev/null
@@ -0,0 +1,153 @@
+# ----------------------------------------------------------------------------
+# Hyper Operating System V4 Advance
+#
+# Copyright (C) 1998-2011 by Project HOS
+# http://sourceforge.jp/projects/hos/
+# ----------------------------------------------------------------------------
+
+
+
+# --------------------------------------
+#  %jp{各種設定}{setting}
+# --------------------------------------
+
+# %jp{ターゲット名}%en{target name}
+TARGET ?= sample
+
+
+# %jp{ツール定義}%en{tools}
+GCC_ARCH   ?= mb-
+CMD_CC     ?= $(GCC_ARCH)gcc
+CMD_ASM    ?= $(GCC_ARCH)gcc
+CMD_LINK   ?= $(GCC_ARCH)gcc
+CMD_OBJCNV ?= $(GCC_ARCH)objcopy
+
+
+# %jp{アーキテクチャ定義}%en{architecture}
+ARCH_NAME ?= mb_v8
+ARCH_CC   ?= gcc
+EXT_EXE   ?= elf
+
+
+# %jp{ディレクトリ定義}%en{directories}
+TOP_DIR           = ../../../..
+KERNEL_DIR        = $(TOP_DIR)/kernel
+KERNEL_CFGRTR_DIR = $(TOP_DIR)/cfgrtr/build/gcc
+KERNEL_MAKINC_DIR = $(KERNEL_DIR)/build/common/gmake
+KERNEL_BUILD_DIR  = $(KERNEL_DIR)/build/mb/mb_v8_smm/gcc
+
+
+# %jp{コンフィギュレータ定義}
+KERNEL_CFGRTR = $(KERNEL_CFGRTR_DIR)/h4acfg-$(ARCH_NAME)
+
+
+# %jp{共通定義読込み}%jp{common setting}
+include $(KERNEL_MAKINC_DIR)/common.inc
+
+
+# %jp{リンカスクリプト}%en{linker script}
+LINK_SCRIPT = link.lds
+
+
+
+# %jp{パス設定}%en{add source directories}
+INC_DIRS += . ..
+SRC_DIRS += . ..
+
+
+# %jp{オプションフラグ}%en{option flags}
+AFLAGS  = -mcpu=v7.30.a -mbig-endian
+CFLAGS  = -mcpu=v7.30.a -mbig-endian
+LNFLAGS = -mcpu=v7.30.a -mbig-endian -nostartfiles -Wl,-Map,$(TARGET).map,-T$(LINK_SCRIPT)
+
+
+# %jp{コンパイラ依存の設定読込み}%en{compiler dependent definitions}
+include $(KERNEL_MAKINC_DIR)/$(ARCH_CC)_d.inc
+
+# %jp{実行ファイル生成用設定読込み}%en{definitions for exection file}
+include $(KERNEL_MAKINC_DIR)/makexe_d.inc
+
+
+# %jp{出力ファイル名}%en{output files}
+TARGET_EXE = $(TARGET).$(EXT_EXE)
+TARGET_MOT = $(TARGET).$(EXT_MOT)
+TARGET_HEX = $(TARGET).$(EXT_HEX)
+TARGET_BIN = $(TARGET).$(EXT_BIN)
+TARGET_V   = $(TARGET).v
+
+
+# --------------------------------------
+#  %jp{ソースファイル}%en{source files}
+# --------------------------------------
+
+# %jp{アセンブラファイルの追加}%en{assembry sources}
+ASRCS += ./vectors.S
+ASRCS += ./crt0.S
+
+
+# %jp{C言語ファイルの追加}%en{C sources}
+CSRCS += ../main.c
+CSRCS += ../kernel_cfg.c
+CSRCS += ../sample.c
+CSRCS += ../uart.c
+CSRCS += ../ostimer.c
+
+
+
+# --------------------------------------
+#  %jp{ルール定義}%en{rules}
+# --------------------------------------
+
+# %jp{ALL}%en{all}
+.PHONY : all
+all: kernel_make makeexe_all $(TARGET_EXE) $(TARGET_MOT) $(TARGET_HEX) $(TARGET_BIN) $(TARGET_V)
+       mb-objdump -D $(TARGET_EXE) > $(TARGET).dis
+
+$(TARGET_V) : $(TARGET_EXE)
+       data2mem.exe -bm smm.bmm -bd $(TARGET_EXE) -o v $(TARGET_V)
+
+# %jp{クリーン}%en{clean}
+.PHONY : clean
+clean: makeexe_clean
+       rm -f $(TARGET_EXE) $(TARGET_EXE) $(OBJS) ../kernel_cfg.c ../kernel_id.h
+
+# %jp{依存関係更新}%en{depend}
+.PHONY : depend
+depend: makeexe_depend
+
+# %jp{ソース一括コピー}%en{source files copy}
+.PHONY : srccpy
+srccpy: makeexe_srccpy
+
+# %jp{カーネルごとクリーン}%en{mostlyclean}
+.PHONY : mostlyclean
+mostlyclean: clean kernel_clean
+
+
+# %jp{コンフィギュレータ実行}%en{configurator}
+../kernel_cfg.c ../kernel_id.h: ../system.cfg $(KERNEL_CFGRTR)
+       cpp -E ../system.cfg ../system.i
+       $(KERNEL_CFGRTR) ../system.i -c ../kernel_cfg.c -i ../kernel_id.h
+
+
+# %jp{実行ファイル生成用設定読込み}%en{rules for exection file}
+include $(KERNEL_MAKINC_DIR)/makexe_r.inc
+
+# %jp{コンパイラ依存のルール定義読込み}%en{rules for compiler}
+include $(KERNEL_MAKINC_DIR)/$(ARCH_CC)_r.inc
+
+
+
+
+# --------------------------------------
+#  %jp{依存関係}%en{dependency}
+# --------------------------------------
+
+$(TARGET_EXE): $(LINK_SCRIPT)
+
+$(OBJS_DIR)/sample.$(EXT_OBJ) : ../kernel_id.h
+
+
+
+# end of file
+
index 3fb9d40..df882f1 100644 (file)
 #include "ostimer.h"
 
 
-#define INTNO_TIMER                    0
+#define INHNO_TIMER                    0
 
-#define REG_TIMER_BASE         0x41c00000
-#define REG_TIMER_TCSR0                ((volatile unsigned long *)(REG_TIMER_BASE + 0x00))
-#define REG_TIMER_TLR0         ((volatile unsigned long *)(REG_TIMER_BASE + 0x04))
-#define REG_TIMER_TCR0         ((volatile unsigned long *)(REG_TIMER_BASE + 0x08))
-#define REG_TIMER_TCSR1                ((volatile unsigned long *)(REG_TIMER_BASE + 0x10))
-#define REG_TIMER_TLR1         ((volatile unsigned long *)(REG_TIMER_BASE + 0x14))
-#define REG_TIMER_TCR1         ((volatile unsigned long *)(REG_TIMER_BASE + 0x18))
 
-
-static void OsTimer_Isr(VP_INT exinf);         /**< %jp{タイマ割込みサービスルーチン} */
+static void OsTimer_Inh(void);         /**< %jp{タイマ割込みハンドラ} */
 
 
 /** %jp{OS用タイマ初期化ルーチン} */
 void OsTimer_Initialize(VP_INT exinf)
 {
-       T_CISR cisr;
-       
-       /* %jp{割込みサービスルーチン生成} */
-       cisr.isratr = TA_HLNG;
-       cisr.exinf  = 0;
-       cisr.intno  = INTNO_TIMER;
-       cisr.isr    = (FP)OsTimer_Isr;
-       acre_isr(&cisr);
+       T_DINH dinh;
        
-       /* 開始 */
-       *REG_TIMER_TLR0  = 100000 - 1;          /* 1ms 100MHz */
-       *REG_TIMER_TCSR0 = 0x0132;                      /* clear int, load counter */
-       *REG_TIMER_TCSR0 = 0x00d2;                      /* start */
-       
-       /* 割込み許可 */
-       ena_int(INTNO_TIMER);
+       /* %jp{割込みハンドラ定義} */
+       dinh.inhatr = TA_HLNG;
+       dinh.inthdr = OsTimer_Inh;
+       def_inh(INHNO_TIMER, &dinh);
 }
 
 
 /** %jp{タイマ割込みハンドラ} */
-void OsTimer_Isr(VP_INT exinf)
+void OsTimer_Inh(void)
 {
-       *REG_TIMER_TCSR0 |= 0x0100;                     /* clear int */
-       vclr_int(INTNO_TIMER);
-       
        /* %jp{タイムティック供給} */
        isig_tim();
 }